From 24f02757c9966ddc05871e6bd49226b752f183e4 Mon Sep 17 00:00:00 2001 From: Anton Schubert Date: Mon, 13 Apr 2020 19:31:07 +0200 Subject: use voc-player for relive, update clappr plugins, remove old assets, clean up dash/relive player embeds --- .../clapprio/38861cba61c66739c1452c3a71e39852.ttf | Bin 32652 -> 0 bytes .../clapprio/4b76590b32dab62bc95c1b7951efae78.swf | Bin 3204 -> 0 bytes .../clapprio/8fa12a459188502b9f0d39b8a67d9e6c.swf | Bin 63532 -> 0 bytes .../clapprio/a8c874b93b3d848f39a71260c57e3863.cur | Bin 326 -> 0 bytes assets/clapprio/audio-selector.min.js | 19 - assets/clapprio/clappr-playback-rate-plugin.js | 108 - assets/clapprio/clappr-playback-rate-plugin.min.js | 16 - assets/clapprio/clappr-thumbnails-plugin.js | 1 - assets/clapprio/clappr.js | 33082 ------------------- assets/clapprio/clappr.min.js | 1 - assets/clapprio/dash-shaka-playback.min.js | 1 - assets/clapprio/level-selector.min.js | 19 - assets/css/_relive.less | 23 - assets/css/_structure.less | 1 + assets/css/_voc_player.less | 33 + assets/js/lustiges-script.js | 80 +- assets/js/player.js | 1451 - assets/js/player.js.map | 1 - .../38861cba61c66739c1452c3a71e39852.ttf | Bin 0 -> 32652 bytes assets/voc-player/clappr-playback-rate-plugin.js | 2 + assets/voc-player/clappr-thumbnails-plugin.js | 280 + assets/voc-player/player.js | 1431 + assets/voc-player/player.js.map | 1 + template/assemblies/player/dash.phtml | 36 +- template/assemblies/player/relive.phtml | 6 +- template/page.phtml | 7 +- 26 files changed, 1808 insertions(+), 34791 deletions(-) delete mode 100644 assets/clapprio/38861cba61c66739c1452c3a71e39852.ttf delete mode 100644 assets/clapprio/4b76590b32dab62bc95c1b7951efae78.swf delete mode 100644 assets/clapprio/8fa12a459188502b9f0d39b8a67d9e6c.swf delete mode 100644 assets/clapprio/a8c874b93b3d848f39a71260c57e3863.cur delete mode 100644 assets/clapprio/audio-selector.min.js delete mode 100644 assets/clapprio/clappr-playback-rate-plugin.js delete mode 100644 assets/clapprio/clappr-playback-rate-plugin.min.js delete mode 100644 assets/clapprio/clappr-thumbnails-plugin.js delete mode 100644 assets/clapprio/clappr.js delete mode 100644 assets/clapprio/clappr.min.js delete mode 100644 assets/clapprio/dash-shaka-playback.min.js delete mode 100644 assets/clapprio/level-selector.min.js create mode 100644 assets/css/_voc_player.less delete mode 100644 assets/js/player.js delete mode 100644 assets/js/player.js.map create mode 100644 assets/voc-player/38861cba61c66739c1452c3a71e39852.ttf create mode 100644 assets/voc-player/clappr-playback-rate-plugin.js create mode 100644 assets/voc-player/clappr-thumbnails-plugin.js create mode 100644 assets/voc-player/player.js create mode 100644 assets/voc-player/player.js.map diff --git a/assets/clapprio/38861cba61c66739c1452c3a71e39852.ttf b/assets/clapprio/38861cba61c66739c1452c3a71e39852.ttf deleted file mode 100644 index 7b25f3c..0000000 Binary files a/assets/clapprio/38861cba61c66739c1452c3a71e39852.ttf and /dev/null differ diff --git a/assets/clapprio/4b76590b32dab62bc95c1b7951efae78.swf b/assets/clapprio/4b76590b32dab62bc95c1b7951efae78.swf deleted file mode 100644 index 30bdf3d..0000000 Binary files a/assets/clapprio/4b76590b32dab62bc95c1b7951efae78.swf and /dev/null differ diff --git a/assets/clapprio/8fa12a459188502b9f0d39b8a67d9e6c.swf b/assets/clapprio/8fa12a459188502b9f0d39b8a67d9e6c.swf deleted file mode 100644 index 1c40719..0000000 Binary files a/assets/clapprio/8fa12a459188502b9f0d39b8a67d9e6c.swf and /dev/null differ diff --git a/assets/clapprio/a8c874b93b3d848f39a71260c57e3863.cur b/assets/clapprio/a8c874b93b3d848f39a71260c57e3863.cur deleted file mode 100644 index 41aaa62..0000000 Binary files a/assets/clapprio/a8c874b93b3d848f39a71260c57e3863.cur and /dev/null differ diff --git a/assets/clapprio/audio-selector.min.js b/assets/clapprio/audio-selector.min.js deleted file mode 100644 index d79ebdf..0000000 --- a/assets/clapprio/audio-selector.min.js +++ /dev/null @@ -1,19 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("Clappr")):"function"==typeof define&&define.amd?define(["Clappr"],t):"object"==typeof exports?exports.AudioSelector=t(require("Clappr")):e.AudioSelector=t(e.Clappr)}(this,function(e){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="<%=baseUrl%>/",t(0)}([/*!******************!*\ - !*** ./index.js ***! - \******************/ -function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=n(/*! ./src/main.js */1),e.exports=t.default},/*!*********************!*\ - !*** ./src/main.js ***! - \*********************/ -function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n1);return t}},{key:"render",value:function(){if(this.shouldRender()){var e=s.Styler.getStyleFor(h.default,{baseUrl:this.core.options.baseUrl});this.$el.html(this.template({title:this._getTitle(),languages:this.languages})),this.$el.append(e),this.core.mediaControl.$(".media-control-right-panel").append(this.el),this._highlightCurrentElement()}return this}},{key:"_setLanguage",value:function(e){var t=this.core.getCurrentPlayback();this._startTrackSwitch(),t.selectAudioLanguage(e)}},{key:"_getAudioTrack",value:function(e){for(var t=0;tul{list-style-type:none;position:absolute;bottom:25px;border:1px solid #000;display:none;background-color:#e6e6e6}.audio_selector[data-audio-selector] li{font-size:12px}.audio_selector[data-audio-selector] li[data-title]{background-color:#c3c2c2;padding:5px}.audio_selector[data-audio-selector] li a{color:#444;padding:2px 12px;display:block;text-decoration:none}.audio_selector[data-audio-selector] li a:hover{background-color:#555;color:#fff}.audio_selector[data-audio-selector] li a:hover a{color:#fff;text-decoration:none}.audio_selector[data-audio-selector] li.current a{color:red}@-webkit-keyframes pulse{0%{color:#fff}50%{color:#ff0101}to{color:#b80000}}",""])},/*!**************************************!*\ - !*** ./~/css-loader/lib/css-base.js ***! - \**************************************/ -function(e,t){"use strict";e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t\"><%= playbackRates[i].label %>\n <% }; %>\n\n"; - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - exports = module.exports = __webpack_require__(4)(); - // imports - - - // module - exports.push([module.id, ".playback_rate[data-playback-rate-select] {\n float: right;\n margin-top: 5px;\n position: relative; }\n .playback_rate[data-playback-rate-select] button {\n background-color: transparent;\n color: #fff;\n font-family: Roboto,\"Open Sans\",Arial,sans-serif;\n -webkit-font-smoothing: antialiased;\n border: none;\n font-size: 10px;\n cursor: pointer; }\n .playback_rate[data-playback-rate-select] button:hover {\n color: #c9c9c9; }\n .playback_rate[data-playback-rate-select] button.changing {\n -webkit-animation: pulse 0.5s infinite alternate; }\n .playback_rate[data-playback-rate-select] > ul {\n display: none;\n list-style-type: none;\n position: absolute;\n bottom: 25px;\n border: 1px solid black;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0.7); }\n .playback_rate[data-playback-rate-select] li {\n position: relative;\n font-size: 10px; }\n .playback_rate[data-playback-rate-select] li[data-title] {\n padding: 5px; }\n .playback_rate[data-playback-rate-select] li a {\n color: #aaa;\n padding: 2px 10px 2px 15px;\n display: block;\n text-decoration: none; }\n .playback_rate[data-playback-rate-select] li a.active {\n background-color: black;\n font-weight: bold;\n color: #fff; }\n .playback_rate[data-playback-rate-select] li a.active:before {\n content: '\\2713';\n position: absolute;\n top: 2px;\n left: 4px; }\n .playback_rate[data-playback-rate-select] li a:hover {\n color: #fff;\n text-decoration: none; }\n\n@-webkit-keyframes pulse {\n 0% {\n color: #fff; }\n 50% {\n color: #ff0101; }\n 100% {\n color: #B80000; } }\n", ""]); - - // exports - - -/***/ }, -/* 4 */ -/***/ function(module, exports) { - - /* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra - */ // css base code, injected by the css-loader - "use strict";module.exports = function(){var list=[]; // return the list of modules as css string - list.toString = function toString(){var result=[];for(var i=0;i < this.length;i++) {var item=this[i];if(item[2]){result.push("@media " + item[2] + "{" + item[1] + "}");}else {result.push(item[1]);}}return result.join("");}; // import a list of modules into the list - list.i = function(modules,mediaQuery){if(typeof modules === "string")modules = [[null,modules,""]];var alreadyImportedModules={};for(var i=0;i < this.length;i++) {var id=this[i][0];if(typeof id === "number")alreadyImportedModules[id] = true;}for(i = 0;i < modules.length;i++) {var item=modules[i]; // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]){if(mediaQuery && !item[2]){item[2] = mediaQuery;}else if(mediaQuery){item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";}list.push(item);}}};return list;}; - -/***/ } -/******/ ]) -}); -; \ No newline at end of file diff --git a/assets/clapprio/clappr-playback-rate-plugin.min.js b/assets/clapprio/clappr-playback-rate-plugin.min.js deleted file mode 100644 index 152b6e2..0000000 --- a/assets/clapprio/clappr-playback-rate-plugin.min.js +++ /dev/null @@ -1,16 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("Clappr")):"function"==typeof define&&define.amd?define(["Clappr"],e):"object"==typeof exports?exports.PlaybackRatePlugin=e(require("Clappr")):t.PlaybackRatePlugin=e(t.Clappr)}(this,function(t){return function(t){function e(n){if(a[n])return a[n].exports;var o=a[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var a={};return e.m=t,e.c=a,e.p="<%=baseUrl%>/",e(0)}([/*!*********************!*\ - !*** ./src/main.js ***! - \*********************/ -function(t,e,a){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var a=0;aul{display:none;list-style-type:none;position:absolute;bottom:25px;border:1px solid #000;border-radius:4px;background-color:rgba(0,0,0,.7)}.playback_rate[data-playback-rate-select] li{position:relative;font-size:10px}.playback_rate[data-playback-rate-select] li[data-title]{padding:5px}.playback_rate[data-playback-rate-select] li a{color:#aaa;padding:2px 10px 2px 15px;display:block;text-decoration:none}.playback_rate[data-playback-rate-select] li a.active{background-color:#000;font-weight:700;color:#fff}.playback_rate[data-playback-rate-select] li a.active:before{content:'\\2713';position:absolute;top:2px;left:4px}.playback_rate[data-playback-rate-select] li a:hover{color:#fff;text-decoration:none}@-webkit-keyframes pulse{0%{color:#fff}50%{color:#ff0101}to{color:#b80000}}",""])},/*!**************************************!*\ - !*** ./~/css-loader/lib/css-base.js ***! - \**************************************/ -function(t,e){"use strict";t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e0&&e._renderPlugin()})})}},{key:"removeThumbnail",value:function(t){var e=this,n=t.constructor===Array?t:[t];return this._onThumbsLoaded.then(function(){var t=!0,o=!1;return n.forEach(function(n){var i=e._thumbs.some(function(t,o){return t.src===n&&(e._thumbs.splice(o,1),e._getOptions().backdropHeight&&(e._$backdropCarouselImgs[o].remove(),e._$backdropCarouselImgs.splice(o,1)),!0)});i?o=!0:t=!1}),o&&e._renderPlugin(),c.Promise.resolve(t)})}},{key:"_init",value:function(){this._thumbsLoaded&&(this._$backdropCarouselImgs=[],this._createElements(),this._loadBackdrop(),this._renderPlugin())}},{key:"_getOptions",value:function(){if(!("scrubThumbnails"in this.core.options))throw"'scrubThumbnails property missing from options object.";return this.core.options.scrubThumbnails}},{key:"_appendElToMediaControl",value:function(){this.core.mediaControl.$el.find(".media-control-background").first().after(this.el)}},{key:"_onMouseMove",value:function(t){this._calculateHoverPosition(t),this._show=!0,this._renderPlugin()}},{key:"_onMouseLeave",value:function(){this._show=!1,this._renderPlugin()}},{key:"_calculateHoverPosition",value:function(t){var e=t.pageX-this.core.mediaControl.$seekBarContainer.offset().left;this._hoverPosition=Math.min(1,Math.max(e/this.core.mediaControl.$seekBarContainer.width(),0))}},{key:"_buildThumbsFromOptions",value:function(){var t=this,e=this._getOptions().thumbs,n=e.map(function(e){return t._addThumbFromSrc(e)});return c.Promise.all(n)}},{key:"_addThumbFromSrc",value:function(t){var e=this;return new c.Promise(function(e,n){var o=new Image;o.onload=function(){e(o)},o.onerror=n,o.src=t.url}).then(function(n){var o=t.time,i=null;e._thumbs.some(function(t,e){return o0?e._thumbs[i-1]:null;u&&(u.duration=o-u.time);var s=r?r.time-t.time:null,a=n.width,c=n.height,l={imageW:a,imageH:c,x:t.x||0,y:t.y||0,w:t.w||a,h:t.h||c,url:t.url,time:o,duration:s,src:t};return e._thumbs.splice(i,0,l),l})}},{key:"_buildImg",value:function(t,e){var n=e/t.h,o=(0,a.$)("").addClass("thumbnail-img").attr("src",t.url),i=(0,a.$)("
").addClass("thumbnail-container");return i.css("width",t.w*n),i.css("height",e),o.css({height:t.imageH*n,left:-1*t.x*n,top:-1*t.y*n}),i.append(o),i}},{key:"_loadBackdrop",value:function(){if(this._getOptions().backdropHeight)for(var t=this._$carousel,e=0;e=0;n--){var o=e[n];if(o.time<=t)return n}return 0}},{key:"_renderPlugin",value:function(){this._thumbsLoaded&&(this._show&&this._thumbs.length>0?(this.$el.removeClass("hidden"),this._updateCarousel(),this._updateSpotlightThumb()):this.$el.addClass("hidden"))}},{key:"_createElements",value:function(){this.$el.html(this.template({backdropHeight:this._getOptions().backdropHeight,spotlightHeight:this._getOptions().spotlightHeight})),this.$el.append(a.Styler.getStyleFor(d["default"])),this._$spotlight=this.$el.find(".spotlight"),this._$backdrop=this.$el.find(".backdrop"),this._$carousel=this._$backdrop.find(".carousel"),this.$el.addClass("hidden"),this._appendElToMediaControl()}}]),e}(a.UICorePlugin);e["default"]=p,t.exports=e["default"]},function(t,e,n){(function(t,o){"use strict";function i(t,e){this._id=t,this._clearFn=e}var r=n(4).nextTick,u=Function.prototype.apply,s=Array.prototype.slice,a={},c=0;e.setTimeout=function(){return new i(u.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new i(u.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate="function"==typeof t?t:function(t){var n=c++,o=!(arguments.length<2)&&s.call(arguments,1);return a[n]=!0,r(function(){a[n]&&(o?t.apply(null,o):t.call(null),e.clearImmediate(n))}),n},e.clearImmediate="function"==typeof o?o:function(t){delete a[t]}}).call(e,n(1).setImmediate,n(1).clearImmediate)},function(t,e){"use strict";t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e1)for(var n=1;n 240, 1 => 480, 2 => 720) - */ -Events.PLAYBACK_BITRATE = 'playback:bitrate'; -/** - * Fired when the playback has its levels - * - * @event PLAYBACK_LEVELS_AVAILABLE - * @param {Array} levels - * the ordered levels, each one with the following format `{id: 1, label: '500kbps'}` ps: id should be a number >= 0 - * @param {Number} initial - * the initial level otherwise -1 (AUTO) - */ -Events.PLAYBACK_LEVELS_AVAILABLE = 'playback:levels:available'; -/** - * Fired when the playback starts to switch level - * - * @event PLAYBACK_LEVEL_SWITCH_START - * - */ -Events.PLAYBACK_LEVEL_SWITCH_START = 'playback:levels:switch:start'; -/** - * Fired when the playback ends the level switch - * - * @event PLAYBACK_LEVEL_SWITCH_END - * - */ -Events.PLAYBACK_LEVEL_SWITCH_END = 'playback:levels:switch:end'; - -/** - * Fired when playback internal state changes - * - * @event PLAYBACK_PLAYBACKSTATE - * @param {Object} state Data - * state object - * @param {String} [state.type] - * the playback type - */ -Events.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate'; -/** - * Fired when DVR becomes enabled/disabled. - * - * @event PLAYBACK_DVR - * @param {boolean} state true if dvr enabled - */ -Events.PLAYBACK_DVR = 'playback:dvr'; -// TODO doc -Events.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable'; -// TODO doc -Events.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable'; -/** - * Fired when the media for a playback ends. - * - * @event PLAYBACK_ENDED - * @param {String} name the name of the playback - */ -Events.PLAYBACK_ENDED = 'playback:ended'; -/** - * Fired when user requests `play()` - * - * @event PLAYBACK_PLAY_INTENT - */ -Events.PLAYBACK_PLAY_INTENT = 'playback:play:intent'; -/** - * Fired when the media for a playback starts playing. - * This is not necessarily when the user requests `play()` - * The media may have to buffer first. - * I.e. `isPlaying()` might return `true` before this event is fired, - * because `isPlaying()` represents the intended state. - * - * @event PLAYBACK_PLAY - */ -Events.PLAYBACK_PLAY = 'playback:play'; -/** - * Fired when the media for a playback pauses. - * - * @event PLAYBACK_PAUSE - */ -Events.PLAYBACK_PAUSE = 'playback:pause'; -/** - * Fired when the media for a playback is seeked. - * - * @event PLAYBACK_SEEKED - */ -Events.PLAYBACK_SEEKED = 'playback:seeked'; -/** - * Fired when the media for a playback is stopped. - * - * @event PLAYBACK_STOP - */ -Events.PLAYBACK_STOP = 'playback:stop'; -/** - * Fired if an error occurs in the playback. - * - * @event PLAYBACK_ERROR - * @param {Object} error An object containing the error details - * @param {String} name Playback name - */ -Events.PLAYBACK_ERROR = 'playback:error'; -// TODO doc -Events.PLAYBACK_STATS_ADD = 'playback:stats:add'; -// TODO doc -Events.PLAYBACK_FRAGMENT_LOADED = 'playback:fragment:loaded'; -// TODO doc -Events.PLAYBACK_LEVEL_SWITCH = 'playback:level:switch'; -/** - * Fired when subtitle is available on playback for display - * - * @event PLAYBACK_SUBTITLE_AVAILABLE - */ -Events.PLAYBACK_SUBTITLE_AVAILABLE = 'playback:subtitle:available'; -/** - * Fired when playback subtitle track has changed - * - * @event CONTAINER_SUBTITLE_CHANGED - * @param {Object} track Data - * track object - * @param {Number} [track.id] - * selected track id - */ -Events.PLAYBACK_SUBTITLE_CHANGED = 'playback:subtitle:changed'; - -// Core Events -/** - * Fired when the containers are created - * - * @event CORE_CONTAINERS_CREATED - */ -Events.CORE_CONTAINERS_CREATED = 'core:containers:created'; -/** - * Fired when the options were changed for the core - * - * @event CORE_OPTIONS_CHANGE - */ -Events.CORE_OPTIONS_CHANGE = 'core:options:change'; -/** - * Fired after creating containers, when the core is ready - * - * @event CORE_READY - */ -Events.CORE_READY = 'core:ready'; -/** - * Fired when the fullscreen state change - * - * @event CORE_FULLSCREEN - * @param {Boolean} whether or not the player is on fullscreen mode - */ -Events.CORE_FULLSCREEN = 'core:fullscreen'; -/** - * Fired when the screen orientation has changed. - * This event is trigger only for mobile devices. - * - * @event CORE_SCREEN_ORIENTATION_CHANGED - * @param {Object} screen An object with screen orientation - * screen object - * @param {Object} [screen.event] - * window resize event object - * @param {String} [screen.orientation] - * screen orientation (ie: 'landscape' or 'portrait') - */ -Events.CORE_SCREEN_ORIENTATION_CHANGED = 'core:screen:orientation:changed'; - -// Container Events -/** - * Fired when the container internal state changes - * - * @event CONTAINER_PLAYBACKSTATE - * @param {Object} state Data - * state object - * @param {String} [state.type] - * the playback type - */ -Events.CONTAINER_PLAYBACKSTATE = 'container:playbackstate'; -Events.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr'; -/** - * Fired when the container updates its bitrate - * - * @event CONTAINER_BITRATE - * @param {Object} bitrate Data - * bitrate object - * @param {Number} [bitrate.bandwidth] - * bitrate bandwidth when it's available - * @param {Number} [bitrate.width] - * playback width (ex: 720, 640, 1080) - * @param {Number} [bitrate.height] - * playback height (ex: 240, 480, 720) - * @param {Number} [bitrate.level] - * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720) - */ -Events.CONTAINER_BITRATE = 'container:bitrate'; -Events.CONTAINER_STATS_REPORT = 'container:stats:report'; -Events.CONTAINER_DESTROYED = 'container:destroyed'; -/** - * Fired when the container is ready - * - * @event CONTAINER_READY - */ -Events.CONTAINER_READY = 'container:ready'; -Events.CONTAINER_ERROR = 'container:error'; -/** - * Fired when the container loaded its metadata - * - * @event CONTAINER_LOADEDMETADATA - * @param {Object} metadata Data - * settings object - * @param {Number} [metadata.duration] - * the playback duration - * @param {Object} [metadata.data] - * extra meta data - */ -Events.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata'; - -/** - * Fired when subtitle is available on container for display - * - * @event CONTAINER_SUBTITLE_AVAILABLE - */ -Events.CONTAINER_SUBTITLE_AVAILABLE = 'container:subtitle:available'; -/** - * Fired when subtitle track has changed - * - * @event CONTAINER_SUBTITLE_CHANGED - * @param {Object} track Data - * track object - * @param {Number} [track.id] - * selected track id - */ -Events.CONTAINER_SUBTITLE_CHANGED = 'container:subtitle:changed'; - -/** - * Fired when the time is updated on container - * - * @event CONTAINER_TIMEUPDATE - * @param {Object} progress Data - * progress object - * @param {Number} [progress.current] - * current time - * @param {Number} [progress.total] - * total time - */ -Events.CONTAINER_TIMEUPDATE = 'container:timeupdate'; -/** - * Fired when the container is downloading the media - * - * @event CONTAINER_PROGRESS - * @param {Object} progress Data - * progress object - * @param {Number} [progress.start] - * initial downloaded content - * @param {Number} [progress.current] - * current dowloaded content - * @param {Number} [progress.total] - * total content to be downloaded - */ -Events.CONTAINER_PROGRESS = 'container:progress'; -Events.CONTAINER_PLAY = 'container:play'; -Events.CONTAINER_STOP = 'container:stop'; -Events.CONTAINER_PAUSE = 'container:pause'; -Events.CONTAINER_ENDED = 'container:ended'; -Events.CONTAINER_CLICK = 'container:click'; -Events.CONTAINER_DBLCLICK = 'container:dblclick'; -Events.CONTAINER_CONTEXTMENU = 'container:contextmenu'; -Events.CONTAINER_MOUSE_ENTER = 'container:mouseenter'; -Events.CONTAINER_MOUSE_LEAVE = 'container:mouseleave'; -/** - * Fired when the container seeks the video - * - * @event CONTAINER_SEEK - * @param {Number} time the current time in seconds - */ -Events.CONTAINER_SEEK = 'container:seek'; -/** - * Fired when the container was finished the seek video - * - * @event CONTAINER_SEEKED - * @param {Number} time the current time in seconds - */ -Events.CONTAINER_SEEKED = 'container:seeked'; -Events.CONTAINER_VOLUME = 'container:volume'; -Events.CONTAINER_FULLSCREEN = 'container:fullscreen'; -/** - * Fired when container is buffering - * - * @event CONTAINER_STATE_BUFFERING - */ -Events.CONTAINER_STATE_BUFFERING = 'container:state:buffering'; -/** - * Fired when the container filled the buffer - * - * @event CONTAINER_STATE_BUFFERFULL - */ -Events.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull'; -/** - * Fired when the container changes any settings (volume, seek and etc) - * - * @event CONTAINER_SETTINGSUPDATE - */ -Events.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate'; -/** - * Fired when container updates its video quality - * - * @event CONTAINER_HIGHDEFINITIONUPDATE - * @param {Boolean} isHD - * true when is on HD, false otherwise - */ -Events.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate'; - -/** - * Fired when the media control shows - * - * @event CONTAINER_MEDIACONTROL_SHOW - */ -Events.CONTAINER_MEDIACONTROL_SHOW = 'container:mediacontrol:show'; -/** - * Fired when the media control hides - * - * @event CONTAINER_MEDIACONTROL_HIDE - */ -Events.CONTAINER_MEDIACONTROL_HIDE = 'container:mediacontrol:hide'; - -Events.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable'; -Events.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable'; -Events.CONTAINER_STATS_ADD = 'container:stats:add'; -/** - * Fired when the options were changed for the container - * - * @event CONTAINER_OPTIONS_CHANGE - */ -Events.CONTAINER_OPTIONS_CHANGE = 'container:options:change'; - -// MediaControl Events -Events.MEDIACONTROL_RENDERED = 'mediacontrol:rendered'; -/** - * Fired when the player enters/exit on fullscreen - * - * @event MEDIACONTROL_FULLSCREEN - */ -Events.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen'; -/** - * Fired when the media control shows - * - * @event MEDIACONTROL_SHOW - */ -Events.MEDIACONTROL_SHOW = 'mediacontrol:show'; -/** - * Fired when the media control hides - * - * @event MEDIACONTROL_HIDE - */ -Events.MEDIACONTROL_HIDE = 'mediacontrol:hide'; -/** - * Fired when mouse enters on the seekbar - * - * @event MEDIACONTROL_MOUSEMOVE_SEEKBAR - * @param {Object} event - * the javascript event - */ -Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar'; -/** - * Fired when mouse leaves the seekbar - * - * @event MEDIACONTROL_MOUSELEAVE_SEEKBAR - * @param {Object} event - * the javascript event - */ -Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar'; -/** - * Fired when the media is being played - * - * @event MEDIACONTROL_PLAYING - */ -Events.MEDIACONTROL_PLAYING = 'mediacontrol:playing'; -/** - * Fired when the media is not being played - * - * @event MEDIACONTROL_NOTPLAYING - */ -Events.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying'; -/** - * Fired when the container was changed - * - * @event MEDIACONTROL_CONTAINERCHANGED - */ -Events.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged'; -module.exports = exports['default']; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DomRecycler = exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.QueryString = exports.Config = exports.Fullscreen = undefined; - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _defineProperty = __webpack_require__(70); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -var _getOwnPropertyDescriptor = __webpack_require__(126); - -var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor); - -exports.extend = extend; -exports.formatTime = formatTime; -exports.seekStringToSeconds = seekStringToSeconds; -exports.uniqueId = uniqueId; -exports.isNumber = isNumber; -exports.currentScriptUrl = currentScriptUrl; -exports.getBrowserLanguage = getBrowserLanguage; -exports.now = now; -exports.removeArrayItem = removeArrayItem; - -__webpack_require__(129); - -var _browser = __webpack_require__(13); - -var _browser2 = _interopRequireDefault(_browser); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function assign(obj, source) { - if (source) { - for (var prop in source) { - var propDescriptor = (0, _getOwnPropertyDescriptor2.default)(source, prop); - propDescriptor ? (0, _defineProperty2.default)(obj, prop, propDescriptor) : obj[prop] = source[prop]; - } - } - return obj; -} // Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. -/*jshint -W079 */ - -function extend(parent, properties) { - var Surrogate = function (_parent) { - (0, _inherits3.default)(Surrogate, _parent); - - function Surrogate() { - (0, _classCallCheck3.default)(this, Surrogate); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var _this = (0, _possibleConstructorReturn3.default)(this, _parent.call.apply(_parent, [this].concat(args))); - - if (properties.initialize) properties.initialize.apply(_this, args); - - return _this; - } - - return Surrogate; - }(parent); - - assign(Surrogate.prototype, properties); - return Surrogate; -} - -function formatTime(time, paddedHours) { - if (!isFinite(time)) return '--:--'; - - time = time * 1000; - time = parseInt(time / 1000); - var seconds = time % 60; - time = parseInt(time / 60); - var minutes = time % 60; - time = parseInt(time / 60); - var hours = time % 24; - var days = parseInt(time / 24); - var out = ''; - if (days && days > 0) { - out += days + ':'; - if (hours < 1) out += '00:'; - } - if (hours && hours > 0 || paddedHours) out += ('0' + hours).slice(-2) + ':'; - out += ('0' + minutes).slice(-2) + ':'; - out += ('0' + seconds).slice(-2); - return out.trim(); -} - -var Fullscreen = exports.Fullscreen = { - isFullscreen: function isFullscreen() { - return !!(document.webkitFullscreenElement || document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement); - }, - requestFullscreen: function requestFullscreen(el) { - if (el.requestFullscreen) el.requestFullscreen();else if (el.webkitRequestFullscreen) el.webkitRequestFullscreen();else if (el.mozRequestFullScreen) el.mozRequestFullScreen();else if (el.msRequestFullscreen) el.msRequestFullscreen();else if (el.querySelector && el.querySelector('video') && el.querySelector('video').webkitEnterFullScreen) el.querySelector('video').webkitEnterFullScreen();else if (el.webkitEnterFullScreen) el.webkitEnterFullScreen(); - }, - cancelFullscreen: function cancelFullscreen() { - var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; - - if (el.exitFullscreen) el.exitFullscreen();else if (el.webkitCancelFullScreen) el.webkitCancelFullScreen();else if (el.webkitExitFullscreen) el.webkitExitFullscreen();else if (el.mozCancelFullScreen) el.mozCancelFullScreen();else if (el.msExitFullscreen) el.msExitFullscreen(); - }, - fullscreenEnabled: function fullscreenEnabled() { - return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled); - } -}; - -var Config = exports.Config = function () { - function Config() { - (0, _classCallCheck3.default)(this, Config); - } - - Config._defaultConfig = function _defaultConfig() { - return { - volume: { - value: 100, - parse: parseInt - } - }; - }; - - Config._defaultValueFor = function _defaultValueFor(key) { - try { - return this._defaultConfig()[key].parse(this._defaultConfig()[key].value); - } catch (e) { - return undefined; - } - }; - - Config._createKeyspace = function _createKeyspace(key) { - return 'clappr.' + document.domain + '.' + key; - }; - - Config.restore = function restore(key) { - if (_browser2.default.hasLocalstorage && localStorage[this._createKeyspace(key)]) return this._defaultConfig()[key].parse(localStorage[this._createKeyspace(key)]); - - return this._defaultValueFor(key); - }; - - Config.persist = function persist(key, value) { - if (_browser2.default.hasLocalstorage) { - try { - localStorage[this._createKeyspace(key)] = value; - return true; - } catch (e) { - return false; - } - } - }; - - return Config; -}(); - -var QueryString = exports.QueryString = function () { - function QueryString() { - (0, _classCallCheck3.default)(this, QueryString); - } - - QueryString.parse = function parse(paramsString) { - var match = void 0; - var pl = /\+/g, - // Regex for replacing addition symbol with a space - search = /([^&=]+)=?([^&]*)/g, - decode = function decode(s) { - return decodeURIComponent(s.replace(pl, ' ')); - }, - params = {}; - while (match = search.exec(paramsString)) { - // eslint-disable-line no-cond-assign - params[decode(match[1]).toLowerCase()] = decode(match[2]); - } - return params; - }; - - (0, _createClass3.default)(QueryString, null, [{ - key: 'params', - get: function get() { - var query = window.location.search.substring(1); - if (query !== this.query) { - this._urlParams = this.parse(query); - this.query = query; - } - return this._urlParams; - } - }, { - key: 'hashParams', - get: function get() { - var hash = window.location.hash.substring(1); - if (hash !== this.hash) { - this._hashParams = this.parse(hash); - this.hash = hash; - } - return this._hashParams; - } - }]); - return QueryString; -}(); - -function seekStringToSeconds() { - var paramName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 't'; - - var seconds = 0; - var seekString = QueryString.params[paramName] || QueryString.hashParams[paramName] || ''; - var parts = seekString.match(/[0-9]+[hms]+/g) || []; - if (parts.length > 0) { - (function () { - var factor = { 'h': 3600, 'm': 60, 's': 1 }; - parts.forEach(function (el) { - if (el) { - var suffix = el[el.length - 1]; - var time = parseInt(el.slice(0, el.length - 1), 10); - seconds += time * factor[suffix]; - } - }); - })(); - } else if (seekString) { - seconds = parseInt(seekString, 10); - } - - return seconds; -} - -var idsCounter = {}; - -function uniqueId(prefix) { - idsCounter[prefix] || (idsCounter[prefix] = 0); - var id = ++idsCounter[prefix]; - return prefix + id; -} - -function isNumber(value) { - return value - parseFloat(value) + 1 >= 0; -} - -function currentScriptUrl() { - var scripts = document.getElementsByTagName('script'); - return scripts.length ? scripts[scripts.length - 1].src : ''; -} - -var requestAnimationFrame = exports.requestAnimationFrame = (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) { - window.setTimeout(fn, 1000 / 60); -}).bind(window); - -var cancelAnimationFrame = exports.cancelAnimationFrame = (window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout).bind(window); - -function getBrowserLanguage() { - return window.navigator && window.navigator.language; -} - -function now() { - if (window.performance && window.performance.now) return performance.now(); - - return Date.now(); -} - -// remove the item from the array if it exists in the array -function removeArrayItem(arr, item) { - var i = arr.indexOf(item); - if (i >= 0) arr.splice(i, 1); -} - -// Simple Zepto element factory with video recycle feature. -var videoStack = []; - -var DomRecycler = exports.DomRecycler = function () { - function DomRecycler() { - (0, _classCallCheck3.default)(this, DomRecycler); - } - - DomRecycler.configure = function configure(options) { - this.options = _clapprZepto2.default.extend(this.options, options); - }; - - DomRecycler.create = function create(name) { - if (this.options.recycleVideo && name === 'video' && videoStack.length > 0) return videoStack.shift(); - - return (0, _clapprZepto2.default)('<' + name + '>'); - }; - - DomRecycler.garbage = function garbage($el) { - // Expect Zepto collection with single element (does not iterate!) - if (!this.options.recycleVideo || $el[0].tagName.toUpperCase() !== 'VIDEO') return; - $el.children().remove(); - videoStack.push($el); - }; - - return DomRecycler; -}(); - -DomRecycler.options = { recycleVideo: false }; - -exports.default = { - Config: Config, - Fullscreen: Fullscreen, - QueryString: QueryString, - DomRecycler: DomRecycler, - extend: extend, - formatTime: formatTime, - seekStringToSeconds: seekStringToSeconds, - uniqueId: uniqueId, - currentScriptUrl: currentScriptUrl, - isNumber: isNumber, - requestAnimationFrame: requestAnimationFrame, - cancelAnimationFrame: cancelAnimationFrame, - getBrowserLanguage: getBrowserLanguage, - now: now, - removeArrayItem: removeArrayItem -}; - -/***/ }), -/* 6 */ -/***/ (function(module, exports) { - -/* Zepto v1.2.0 - zepto ajax callbacks deferred event ie selector - zeptojs.com/license */ - - -var Zepto = (function() { - var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice, - document = window.document, - elementDisplay = {}, classCache = {}, - cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 }, - fragmentRE = /^\s*<(\w+|!)[^>]*>/, - singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rootNodeRE = /^(?:body|html)$/i, - capitalRE = /([A-Z])/g, - - // special attributes that should be get/set via method calls - methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'], - - adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ], - table = document.createElement('table'), - tableRow = document.createElement('tr'), - containers = { - 'tr': document.createElement('tbody'), - 'tbody': table, 'thead': table, 'tfoot': table, - 'td': tableRow, 'th': tableRow, - '*': document.createElement('div') - }, - readyRE = /complete|loaded|interactive/, - simpleSelectorRE = /^[\w-]*$/, - class2type = {}, - toString = class2type.toString, - zepto = {}, - camelize, uniq, - tempParent = document.createElement('div'), - propMap = { - 'tabindex': 'tabIndex', - 'readonly': 'readOnly', - 'for': 'htmlFor', - 'class': 'className', - 'maxlength': 'maxLength', - 'cellspacing': 'cellSpacing', - 'cellpadding': 'cellPadding', - 'rowspan': 'rowSpan', - 'colspan': 'colSpan', - 'usemap': 'useMap', - 'frameborder': 'frameBorder', - 'contenteditable': 'contentEditable' - }, - isArray = Array.isArray || - function(object){ return object instanceof Array } - - zepto.matches = function(element, selector) { - if (!selector || !element || element.nodeType !== 1) return false - var matchesSelector = element.matches || element.webkitMatchesSelector || - element.mozMatchesSelector || element.oMatchesSelector || - element.matchesSelector - if (matchesSelector) return matchesSelector.call(element, selector) - // fall back to performing a selector: - var match, parent = element.parentNode, temp = !parent - if (temp) (parent = tempParent).appendChild(element) - match = ~zepto.qsa(parent, selector).indexOf(element) - temp && tempParent.removeChild(element) - return match - } - - function type(obj) { - return obj == null ? String(obj) : - class2type[toString.call(obj)] || "object" - } - - function isFunction(value) { return type(value) == "function" } - function isWindow(obj) { return obj != null && obj == obj.window } - function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE } - function isObject(obj) { return type(obj) == "object" } - function isPlainObject(obj) { - return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype - } - - function likeArray(obj) { - var length = !!obj && 'length' in obj && obj.length, - type = $.type(obj) - - return 'function' != type && !isWindow(obj) && ( - 'array' == type || length === 0 || - (typeof length == 'number' && length > 0 && (length - 1) in obj) - ) - } - - function compact(array) { return filter.call(array, function(item){ return item != null }) } - function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array } - camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) } - function dasherize(str) { - return str.replace(/::/g, '/') - .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') - .replace(/([a-z\d])([A-Z])/g, '$1_$2') - .replace(/_/g, '-') - .toLowerCase() - } - uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) } - - function classRE(name) { - return name in classCache ? - classCache[name] : (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)')) - } - - function maybeAddPx(name, value) { - return (typeof value == "number" && !cssNumber[dasherize(name)]) ? value + "px" : value - } - - function defaultDisplay(nodeName) { - var element, display - if (!elementDisplay[nodeName]) { - element = document.createElement(nodeName) - document.body.appendChild(element) - display = getComputedStyle(element, '').getPropertyValue("display") - element.parentNode.removeChild(element) - display == "none" && (display = "block") - elementDisplay[nodeName] = display - } - return elementDisplay[nodeName] - } - - function children(element) { - return 'children' in element ? - slice.call(element.children) : - $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node }) - } - - function Z(dom, selector) { - var i, len = dom ? dom.length : 0 - for (i = 0; i < len; i++) this[i] = dom[i] - this.length = len - this.selector = selector || '' - } - - // `$.zepto.fragment` takes a html string and an optional tag name - // to generate DOM nodes from the given html string. - // The generated DOM nodes are returned as an array. - // This function can be overridden in plugins for example to make - // it compatible with browsers that don't support the DOM fully. - zepto.fragment = function(html, name, properties) { - var dom, nodes, container - - // A special case optimization for a single tag - if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1)) - - if (!dom) { - if (html.replace) html = html.replace(tagExpanderRE, "<$1>") - if (name === undefined) name = fragmentRE.test(html) && RegExp.$1 - if (!(name in containers)) name = '*' - - container = containers[name] - container.innerHTML = '' + html - dom = $.each(slice.call(container.childNodes), function(){ - container.removeChild(this) - }) - } - - if (isPlainObject(properties)) { - nodes = $(dom) - $.each(properties, function(key, value) { - if (methodAttributes.indexOf(key) > -1) nodes[key](value) - else nodes.attr(key, value) - }) - } - - return dom - } - - // `$.zepto.Z` swaps out the prototype of the given `dom` array - // of nodes with `$.fn` and thus supplying all the Zepto functions - // to the array. This method can be overridden in plugins. - zepto.Z = function(dom, selector) { - return new Z(dom, selector) - } - - // `$.zepto.isZ` should return `true` if the given object is a Zepto - // collection. This method can be overridden in plugins. - zepto.isZ = function(object) { - return object instanceof zepto.Z - } - - // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and - // takes a CSS selector and an optional context (and handles various - // special cases). - // This method can be overridden in plugins. - zepto.init = function(selector, context) { - var dom - // If nothing given, return an empty Zepto collection - if (!selector) return zepto.Z() - // Optimize for string selectors - else if (typeof selector == 'string') { - selector = selector.trim() - // If it's a html fragment, create nodes from it - // Note: In both Chrome 21 and Firefox 15, DOM error 12 - // is thrown if the fragment doesn't begin with < - if (selector[0] == '<' && fragmentRE.test(selector)) - dom = zepto.fragment(selector, RegExp.$1, context), selector = null - // If there's a context, create a collection on that context first, and select - // nodes from there - else if (context !== undefined) return $(context).find(selector) - // If it's a CSS selector, use it to select nodes. - else dom = zepto.qsa(document, selector) - } - // If a function is given, call it when the DOM is ready - else if (isFunction(selector)) return $(document).ready(selector) - // If a Zepto collection is given, just return it - else if (zepto.isZ(selector)) return selector - else { - // normalize array if an array of nodes is given - if (isArray(selector)) dom = compact(selector) - // Wrap DOM nodes. - else if (isObject(selector)) - dom = [selector], selector = null - // If it's a html fragment, create nodes from it - else if (fragmentRE.test(selector)) - dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null - // If there's a context, create a collection on that context first, and select - // nodes from there - else if (context !== undefined) return $(context).find(selector) - // And last but no least, if it's a CSS selector, use it to select nodes. - else dom = zepto.qsa(document, selector) - } - // create a new Zepto collection from the nodes found - return zepto.Z(dom, selector) - } - - // `$` will be the base `Zepto` object. When calling this - // function just call `$.zepto.init, which makes the implementation - // details of selecting nodes and creating Zepto collections - // patchable in plugins. - $ = function(selector, context){ - return zepto.init(selector, context) - } - - function extend(target, source, deep) { - for (key in source) - if (deep && (isPlainObject(source[key]) || isArray(source[key]))) { - if (isPlainObject(source[key]) && !isPlainObject(target[key])) - target[key] = {} - if (isArray(source[key]) && !isArray(target[key])) - target[key] = [] - extend(target[key], source[key], deep) - } - else if (source[key] !== undefined) target[key] = source[key] - } - - // Copy all but undefined properties from one or more - // objects to the `target` object. - $.extend = function(target){ - var deep, args = slice.call(arguments, 1) - if (typeof target == 'boolean') { - deep = target - target = args.shift() - } - args.forEach(function(arg){ extend(target, arg, deep) }) - return target - } - - // `$.zepto.qsa` is Zepto's CSS selector implementation which - // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`. - // This method can be overridden in plugins. - zepto.qsa = function(element, selector){ - var found, - maybeID = selector[0] == '#', - maybeClass = !maybeID && selector[0] == '.', - nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked - isSimple = simpleSelectorRE.test(nameOnly) - return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById - ( (found = element.getElementById(nameOnly)) ? [found] : [] ) : - (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] : - slice.call( - isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName - maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class - element.getElementsByTagName(selector) : // Or a tag - element.querySelectorAll(selector) // Or it's not simple, and we need to query all - ) - } - - function filtered(nodes, selector) { - return selector == null ? $(nodes) : $(nodes).filter(selector) - } - - $.contains = document.documentElement.contains ? - function(parent, node) { - return parent !== node && parent.contains(node) - } : - function(parent, node) { - while (node && (node = node.parentNode)) - if (node === parent) return true - return false - } - - function funcArg(context, arg, idx, payload) { - return isFunction(arg) ? arg.call(context, idx, payload) : arg - } - - function setAttribute(node, name, value) { - value == null ? node.removeAttribute(name) : node.setAttribute(name, value) - } - - // access className property while respecting SVGAnimatedString - function className(node, value){ - var klass = node.className || '', - svg = klass && klass.baseVal !== undefined - - if (value === undefined) return svg ? klass.baseVal : klass - svg ? (klass.baseVal = value) : (node.className = value) - } - - // "true" => true - // "false" => false - // "null" => null - // "42" => 42 - // "42.5" => 42.5 - // "08" => "08" - // JSON => parse if valid - // String => self - function deserializeValue(value) { - try { - return value ? - value == "true" || - ( value == "false" ? false : - value == "null" ? null : - +value + "" == value ? +value : - /^[\[\{]/.test(value) ? $.parseJSON(value) : - value ) - : value - } catch(e) { - return value - } - } - - $.type = type - $.isFunction = isFunction - $.isWindow = isWindow - $.isArray = isArray - $.isPlainObject = isPlainObject - - $.isEmptyObject = function(obj) { - var name - for (name in obj) return false - return true - } - - $.isNumeric = function(val) { - var num = Number(val), type = typeof val - return val != null && type != 'boolean' && - (type != 'string' || val.length) && - !isNaN(num) && isFinite(num) || false - } - - $.inArray = function(elem, array, i){ - return emptyArray.indexOf.call(array, elem, i) - } - - $.camelCase = camelize - $.trim = function(str) { - return str == null ? "" : String.prototype.trim.call(str) - } - - // plugin compatibility - $.uuid = 0 - $.support = { } - $.expr = { } - $.noop = function() {} - - $.map = function(elements, callback){ - var value, values = [], i, key - if (likeArray(elements)) - for (i = 0; i < elements.length; i++) { - value = callback(elements[i], i) - if (value != null) values.push(value) - } - else - for (key in elements) { - value = callback(elements[key], key) - if (value != null) values.push(value) - } - return flatten(values) - } - - $.each = function(elements, callback){ - var i, key - if (likeArray(elements)) { - for (i = 0; i < elements.length; i++) - if (callback.call(elements[i], i, elements[i]) === false) return elements - } else { - for (key in elements) - if (callback.call(elements[key], key, elements[key]) === false) return elements - } - - return elements - } - - $.grep = function(elements, callback){ - return filter.call(elements, callback) - } - - if (window.JSON) $.parseJSON = JSON.parse - - // Populate the class2type map - $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase() - }) - - // Define methods that will be available on all - // Zepto collections - $.fn = { - constructor: zepto.Z, - length: 0, - - // Because a collection acts like an array - // copy over these useful array functions. - forEach: emptyArray.forEach, - reduce: emptyArray.reduce, - push: emptyArray.push, - sort: emptyArray.sort, - splice: emptyArray.splice, - indexOf: emptyArray.indexOf, - concat: function(){ - var i, value, args = [] - for (i = 0; i < arguments.length; i++) { - value = arguments[i] - args[i] = zepto.isZ(value) ? value.toArray() : value - } - return concat.apply(zepto.isZ(this) ? this.toArray() : this, args) - }, - - // `map` and `slice` in the jQuery API work differently - // from their array counterparts - map: function(fn){ - return $($.map(this, function(el, i){ return fn.call(el, i, el) })) - }, - slice: function(){ - return $(slice.apply(this, arguments)) - }, - - ready: function(callback){ - // need to check if document.body exists for IE as that browser reports - // document ready when it hasn't yet created the body element - if (readyRE.test(document.readyState) && document.body) callback($) - else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false) - return this - }, - get: function(idx){ - return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length] - }, - toArray: function(){ return this.get() }, - size: function(){ - return this.length - }, - remove: function(){ - return this.each(function(){ - if (this.parentNode != null) - this.parentNode.removeChild(this) - }) - }, - each: function(callback){ - emptyArray.every.call(this, function(el, idx){ - return callback.call(el, idx, el) !== false - }) - return this - }, - filter: function(selector){ - if (isFunction(selector)) return this.not(this.not(selector)) - return $(filter.call(this, function(element){ - return zepto.matches(element, selector) - })) - }, - add: function(selector,context){ - return $(uniq(this.concat($(selector,context)))) - }, - is: function(selector){ - return this.length > 0 && zepto.matches(this[0], selector) - }, - not: function(selector){ - var nodes=[] - if (isFunction(selector) && selector.call !== undefined) - this.each(function(idx){ - if (!selector.call(this,idx)) nodes.push(this) - }) - else { - var excludes = typeof selector == 'string' ? this.filter(selector) : - (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector) - this.forEach(function(el){ - if (excludes.indexOf(el) < 0) nodes.push(el) - }) - } - return $(nodes) - }, - has: function(selector){ - return this.filter(function(){ - return isObject(selector) ? - $.contains(this, selector) : - $(this).find(selector).size() - }) - }, - eq: function(idx){ - return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1) - }, - first: function(){ - var el = this[0] - return el && !isObject(el) ? el : $(el) - }, - last: function(){ - var el = this[this.length - 1] - return el && !isObject(el) ? el : $(el) - }, - find: function(selector){ - var result, $this = this - if (!selector) result = $() - else if (typeof selector == 'object') - result = $(selector).filter(function(){ - var node = this - return emptyArray.some.call($this, function(parent){ - return $.contains(parent, node) - }) - }) - else if (this.length == 1) result = $(zepto.qsa(this[0], selector)) - else result = this.map(function(){ return zepto.qsa(this, selector) }) - return result - }, - closest: function(selector, context){ - var nodes = [], collection = typeof selector == 'object' && $(selector) - this.each(function(_, node){ - while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))) - node = node !== context && !isDocument(node) && node.parentNode - if (node && nodes.indexOf(node) < 0) nodes.push(node) - }) - return $(nodes) - }, - parents: function(selector){ - var ancestors = [], nodes = this - while (nodes.length > 0) - nodes = $.map(nodes, function(node){ - if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) { - ancestors.push(node) - return node - } - }) - return filtered(ancestors, selector) - }, - parent: function(selector){ - return filtered(uniq(this.pluck('parentNode')), selector) - }, - children: function(selector){ - return filtered(this.map(function(){ return children(this) }), selector) - }, - contents: function() { - return this.map(function() { return this.contentDocument || slice.call(this.childNodes) }) - }, - siblings: function(selector){ - return filtered(this.map(function(i, el){ - return filter.call(children(el.parentNode), function(child){ return child!==el }) - }), selector) - }, - empty: function(){ - return this.each(function(){ this.innerHTML = '' }) - }, - // `pluck` is borrowed from Prototype.js - pluck: function(property){ - return $.map(this, function(el){ return el[property] }) - }, - show: function(){ - return this.each(function(){ - this.style.display == "none" && (this.style.display = '') - if (getComputedStyle(this, '').getPropertyValue("display") == "none") - this.style.display = defaultDisplay(this.nodeName) - }) - }, - replaceWith: function(newContent){ - return this.before(newContent).remove() - }, - wrap: function(structure){ - var func = isFunction(structure) - if (this[0] && !func) - var dom = $(structure).get(0), - clone = dom.parentNode || this.length > 1 - - return this.each(function(index){ - $(this).wrapAll( - func ? structure.call(this, index) : - clone ? dom.cloneNode(true) : dom - ) - }) - }, - wrapAll: function(structure){ - if (this[0]) { - $(this[0]).before(structure = $(structure)) - var children - // drill down to the inmost element - while ((children = structure.children()).length) structure = children.first() - $(structure).append(this) - } - return this - }, - wrapInner: function(structure){ - var func = isFunction(structure) - return this.each(function(index){ - var self = $(this), contents = self.contents(), - dom = func ? structure.call(this, index) : structure - contents.length ? contents.wrapAll(dom) : self.append(dom) - }) - }, - unwrap: function(){ - this.parent().each(function(){ - $(this).replaceWith($(this).children()) - }) - return this - }, - clone: function(){ - return this.map(function(){ return this.cloneNode(true) }) - }, - hide: function(){ - return this.css("display", "none") - }, - toggle: function(setting){ - return this.each(function(){ - var el = $(this) - ;(setting === undefined ? el.css("display") == "none" : setting) ? el.show() : el.hide() - }) - }, - prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') }, - next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') }, - html: function(html){ - return 0 in arguments ? - this.each(function(idx){ - var originHtml = this.innerHTML - $(this).empty().append( funcArg(this, html, idx, originHtml) ) - }) : - (0 in this ? this[0].innerHTML : null) - }, - text: function(text){ - return 0 in arguments ? - this.each(function(idx){ - var newText = funcArg(this, text, idx, this.textContent) - this.textContent = newText == null ? '' : ''+newText - }) : - (0 in this ? this.pluck('textContent').join("") : null) - }, - attr: function(name, value){ - var result - return (typeof name == 'string' && !(1 in arguments)) ? - (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) : - this.each(function(idx){ - if (this.nodeType !== 1) return - if (isObject(name)) for (key in name) setAttribute(this, key, name[key]) - else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name))) - }) - }, - removeAttr: function(name){ - return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){ - setAttribute(this, attribute) - }, this)}) - }, - prop: function(name, value){ - name = propMap[name] || name - return (1 in arguments) ? - this.each(function(idx){ - this[name] = funcArg(this, value, idx, this[name]) - }) : - (this[0] && this[0][name]) - }, - removeProp: function(name){ - name = propMap[name] || name - return this.each(function(){ delete this[name] }) - }, - data: function(name, value){ - var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase() - - var data = (1 in arguments) ? - this.attr(attrName, value) : - this.attr(attrName) - - return data !== null ? deserializeValue(data) : undefined - }, - val: function(value){ - if (0 in arguments) { - if (value == null) value = "" - return this.each(function(idx){ - this.value = funcArg(this, value, idx, this.value) - }) - } else { - return this[0] && (this[0].multiple ? - $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') : - this[0].value) - } - }, - offset: function(coordinates){ - if (coordinates) return this.each(function(index){ - var $this = $(this), - coords = funcArg(this, coordinates, index, $this.offset()), - parentOffset = $this.offsetParent().offset(), - props = { - top: coords.top - parentOffset.top, - left: coords.left - parentOffset.left - } - - if ($this.css('position') == 'static') props['position'] = 'relative' - $this.css(props) - }) - if (!this.length) return null - if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0])) - return {top: 0, left: 0} - var obj = this[0].getBoundingClientRect() - return { - left: obj.left + window.pageXOffset, - top: obj.top + window.pageYOffset, - width: Math.round(obj.width), - height: Math.round(obj.height) - } - }, - css: function(property, value){ - if (arguments.length < 2) { - var element = this[0] - if (typeof property == 'string') { - if (!element) return - return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property) - } else if (isArray(property)) { - if (!element) return - var props = {} - var computedStyle = getComputedStyle(element, '') - $.each(property, function(_, prop){ - props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop)) - }) - return props - } - } - - var css = '' - if (type(property) == 'string') { - if (!value && value !== 0) - this.each(function(){ this.style.removeProperty(dasherize(property)) }) - else - css = dasherize(property) + ":" + maybeAddPx(property, value) - } else { - for (key in property) - if (!property[key] && property[key] !== 0) - this.each(function(){ this.style.removeProperty(dasherize(key)) }) - else - css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';' - } - - return this.each(function(){ this.style.cssText += ';' + css }) - }, - index: function(element){ - return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0]) - }, - hasClass: function(name){ - if (!name) return false - return emptyArray.some.call(this, function(el){ - return this.test(className(el)) - }, classRE(name)) - }, - addClass: function(name){ - if (!name) return this - return this.each(function(idx){ - if (!('className' in this)) return - classList = [] - var cls = className(this), newName = funcArg(this, name, idx, cls) - newName.split(/\s+/g).forEach(function(klass){ - if (!$(this).hasClass(klass)) classList.push(klass) - }, this) - classList.length && className(this, cls + (cls ? " " : "") + classList.join(" ")) - }) - }, - removeClass: function(name){ - return this.each(function(idx){ - if (!('className' in this)) return - if (name === undefined) return className(this, '') - classList = className(this) - funcArg(this, name, idx, classList).split(/\s+/g).forEach(function(klass){ - classList = classList.replace(classRE(klass), " ") - }) - className(this, classList.trim()) - }) - }, - toggleClass: function(name, when){ - if (!name) return this - return this.each(function(idx){ - var $this = $(this), names = funcArg(this, name, idx, className(this)) - names.split(/\s+/g).forEach(function(klass){ - (when === undefined ? !$this.hasClass(klass) : when) ? - $this.addClass(klass) : $this.removeClass(klass) - }) - }) - }, - scrollTop: function(value){ - if (!this.length) return - var hasScrollTop = 'scrollTop' in this[0] - if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset - return this.each(hasScrollTop ? - function(){ this.scrollTop = value } : - function(){ this.scrollTo(this.scrollX, value) }) - }, - scrollLeft: function(value){ - if (!this.length) return - var hasScrollLeft = 'scrollLeft' in this[0] - if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset - return this.each(hasScrollLeft ? - function(){ this.scrollLeft = value } : - function(){ this.scrollTo(value, this.scrollY) }) - }, - position: function() { - if (!this.length) return - - var elem = this[0], - // Get *real* offsetParent - offsetParent = this.offsetParent(), - // Get correct offsets - offset = this.offset(), - parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset() - - // Subtract element margins - // note: when an element has margin: auto the offsetLeft and marginLeft - // are the same in Safari causing offset.left to incorrectly be 0 - offset.top -= parseFloat( $(elem).css('margin-top') ) || 0 - offset.left -= parseFloat( $(elem).css('margin-left') ) || 0 - - // Add offsetParent borders - parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0 - parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0 - - // Subtract the two offsets - return { - top: offset.top - parentOffset.top, - left: offset.left - parentOffset.left - } - }, - offsetParent: function() { - return this.map(function(){ - var parent = this.offsetParent || document.body - while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css("position") == "static") - parent = parent.offsetParent - return parent - }) - } - } - - // for now - $.fn.detach = $.fn.remove - - // Generate the `width` and `height` functions - ;['width', 'height'].forEach(function(dimension){ - var dimensionProperty = - dimension.replace(/./, function(m){ return m[0].toUpperCase() }) - - $.fn[dimension] = function(value){ - var offset, el = this[0] - if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] : - isDocument(el) ? el.documentElement['scroll' + dimensionProperty] : - (offset = this.offset()) && offset[dimension] - else return this.each(function(idx){ - el = $(this) - el.css(dimension, funcArg(this, value, idx, el[dimension]())) - }) - } - }) - - function traverseNode(node, fun) { - fun(node) - for (var i = 0, len = node.childNodes.length; i < len; i++) - traverseNode(node.childNodes[i], fun) - } - - // Generate the `after`, `prepend`, `before`, `append`, - // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods. - adjacencyOperators.forEach(function(operator, operatorIndex) { - var inside = operatorIndex % 2 //=> prepend, append - - $.fn[operator] = function(){ - // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings - var argType, nodes = $.map(arguments, function(arg) { - var arr = [] - argType = type(arg) - if (argType == "array") { - arg.forEach(function(el) { - if (el.nodeType !== undefined) return arr.push(el) - else if ($.zepto.isZ(el)) return arr = arr.concat(el.get()) - arr = arr.concat(zepto.fragment(el)) - }) - return arr - } - return argType == "object" || arg == null ? - arg : zepto.fragment(arg) - }), - parent, copyByClone = this.length > 1 - if (nodes.length < 1) return this - - return this.each(function(_, target){ - parent = inside ? target : target.parentNode - - // convert all methods to a "before" operation - target = operatorIndex == 0 ? target.nextSibling : - operatorIndex == 1 ? target.firstChild : - operatorIndex == 2 ? target : - null - - var parentInDocument = $.contains(document.documentElement, parent) - - nodes.forEach(function(node){ - if (copyByClone) node = node.cloneNode(true) - else if (!parent) return $(node).remove() - - parent.insertBefore(node, target) - if (parentInDocument) traverseNode(node, function(el){ - if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' && - (!el.type || el.type === 'text/javascript') && !el.src){ - var target = el.ownerDocument ? el.ownerDocument.defaultView : window - target['eval'].call(target, el.innerHTML) - } - }) - }) - }) - } - - // after => insertAfter - // prepend => prependTo - // before => insertBefore - // append => appendTo - $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){ - $(html)[operator](this) - return this - } - }) - - zepto.Z.prototype = Z.prototype = $.fn - - // Export internal API functions in the `$.zepto` namespace - zepto.uniq = uniq - zepto.deserializeValue = deserializeValue - $.zepto = zepto - - return $ -})() - -window.Zepto = Zepto -window.$ === undefined && (window.$ = Zepto) - -;(function($){ - var jsonpID = +new Date(), - document = window.document, - key, - name, - rscript = /)<[^<]*)*<\/script>/gi, - scriptTypeRE = /^(?:text|application)\/javascript/i, - xmlTypeRE = /^(?:text|application)\/xml/i, - jsonType = 'application/json', - htmlType = 'text/html', - blankRE = /^\s*$/, - originAnchor = document.createElement('a') - - originAnchor.href = window.location.href - - // trigger a custom event and return false if it was cancelled - function triggerAndReturn(context, eventName, data) { - var event = $.Event(eventName) - $(context).trigger(event, data) - return !event.isDefaultPrevented() - } - - // trigger an Ajax "global" event - function triggerGlobal(settings, context, eventName, data) { - if (settings.global) return triggerAndReturn(context || document, eventName, data) - } - - // Number of active Ajax requests - $.active = 0 - - function ajaxStart(settings) { - if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart') - } - function ajaxStop(settings) { - if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop') - } - - // triggers an extra global event "ajaxBeforeSend" that's like "ajaxSend" but cancelable - function ajaxBeforeSend(xhr, settings) { - var context = settings.context - if (settings.beforeSend.call(context, xhr, settings) === false || - triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false) - return false - - triggerGlobal(settings, context, 'ajaxSend', [xhr, settings]) - } - function ajaxSuccess(data, xhr, settings, deferred) { - var context = settings.context, status = 'success' - settings.success.call(context, data, status, xhr) - if (deferred) deferred.resolveWith(context, [data, status, xhr]) - triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data]) - ajaxComplete(status, xhr, settings) - } - // type: "timeout", "error", "abort", "parsererror" - function ajaxError(error, type, xhr, settings, deferred) { - var context = settings.context - settings.error.call(context, xhr, type, error) - if (deferred) deferred.rejectWith(context, [xhr, type, error]) - triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type]) - ajaxComplete(type, xhr, settings) - } - // status: "success", "notmodified", "error", "timeout", "abort", "parsererror" - function ajaxComplete(status, xhr, settings) { - var context = settings.context - settings.complete.call(context, xhr, status) - triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings]) - ajaxStop(settings) - } - - function ajaxDataFilter(data, type, settings) { - if (settings.dataFilter == empty) return data - var context = settings.context - return settings.dataFilter.call(context, data, type) - } - - // Empty function, used as default callback - function empty() {} - - $.ajaxJSONP = function(options, deferred){ - if (!('type' in options)) return $.ajax(options) - - var _callbackName = options.jsonpCallback, - callbackName = ($.isFunction(_callbackName) ? - _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)), - script = document.createElement('script'), - originalCallback = window[callbackName], - responseData, - abort = function(errorType) { - $(script).triggerHandler('error', errorType || 'abort') - }, - xhr = { abort: abort }, abortTimeout - - if (deferred) deferred.promise(xhr) - - $(script).on('load error', function(e, errorType){ - clearTimeout(abortTimeout) - $(script).off().remove() - - if (e.type == 'error' || !responseData) { - ajaxError(null, errorType || 'error', xhr, options, deferred) - } else { - ajaxSuccess(responseData[0], xhr, options, deferred) - } - - window[callbackName] = originalCallback - if (responseData && $.isFunction(originalCallback)) - originalCallback(responseData[0]) - - originalCallback = responseData = undefined - }) - - if (ajaxBeforeSend(xhr, options) === false) { - abort('abort') - return xhr - } - - window[callbackName] = function(){ - responseData = arguments - } - - script.src = options.url.replace(/\?(.+)=\?/, '?$1=' + callbackName) - document.head.appendChild(script) - - if (options.timeout > 0) abortTimeout = setTimeout(function(){ - abort('timeout') - }, options.timeout) - - return xhr - } - - $.ajaxSettings = { - // Default type of request - type: 'GET', - // Callback that is executed before request - beforeSend: empty, - // Callback that is executed if the request succeeds - success: empty, - // Callback that is executed the the server drops error - error: empty, - // Callback that is executed on request complete (both: error and success) - complete: empty, - // The context for the callbacks - context: null, - // Whether to trigger "global" Ajax events - global: true, - // Transport - xhr: function () { - return new window.XMLHttpRequest() - }, - // MIME types mapping - // IIS returns Javascript as "application/x-javascript" - accepts: { - script: 'text/javascript, application/javascript, application/x-javascript', - json: jsonType, - xml: 'application/xml, text/xml', - html: htmlType, - text: 'text/plain' - }, - // Whether the request is to another domain - crossDomain: false, - // Default timeout - timeout: 0, - // Whether data should be serialized to string - processData: true, - // Whether the browser should be allowed to cache GET responses - cache: true, - //Used to handle the raw response data of XMLHttpRequest. - //This is a pre-filtering function to sanitize the response. - //The sanitized response should be returned - dataFilter: empty - } - - function mimeToDataType(mime) { - if (mime) mime = mime.split(';', 2)[0] - return mime && ( mime == htmlType ? 'html' : - mime == jsonType ? 'json' : - scriptTypeRE.test(mime) ? 'script' : - xmlTypeRE.test(mime) && 'xml' ) || 'text' - } - - function appendQuery(url, query) { - if (query == '') return url - return (url + '&' + query).replace(/[&?]{1,2}/, '?') - } - - // serialize payload and append it to the URL for GET requests - function serializeData(options) { - if (options.processData && options.data && $.type(options.data) != "string") - options.data = $.param(options.data, options.traditional) - if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType)) - options.url = appendQuery(options.url, options.data), options.data = undefined - } - - $.ajax = function(options){ - var settings = $.extend({}, options || {}), - deferred = $.Deferred && $.Deferred(), - urlAnchor, hashIndex - for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key] - - ajaxStart(settings) - - if (!settings.crossDomain) { - urlAnchor = document.createElement('a') - urlAnchor.href = settings.url - // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049 - urlAnchor.href = urlAnchor.href - settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host) - } - - if (!settings.url) settings.url = window.location.toString() - if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex) - serializeData(settings) - - var dataType = settings.dataType, hasPlaceholder = /\?.+=\?/.test(settings.url) - if (hasPlaceholder) dataType = 'jsonp' - - if (settings.cache === false || ( - (!options || options.cache !== true) && - ('script' == dataType || 'jsonp' == dataType) - )) - settings.url = appendQuery(settings.url, '_=' + Date.now()) - - if ('jsonp' == dataType) { - if (!hasPlaceholder) - settings.url = appendQuery(settings.url, - settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?') - return $.ajaxJSONP(settings, deferred) - } - - var mime = settings.accepts[dataType], - headers = { }, - setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] }, - protocol = /^([\w-]+:)\/\//.test(settings.url) ? RegExp.$1 : window.location.protocol, - xhr = settings.xhr(), - nativeSetHeader = xhr.setRequestHeader, - abortTimeout - - if (deferred) deferred.promise(xhr) - - if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest') - setHeader('Accept', mime || '*/*') - if (mime = settings.mimeType || mime) { - if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0] - xhr.overrideMimeType && xhr.overrideMimeType(mime) - } - if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET')) - setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded') - - if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name]) - xhr.setRequestHeader = setHeader - - xhr.onreadystatechange = function(){ - if (xhr.readyState == 4) { - xhr.onreadystatechange = empty - clearTimeout(abortTimeout) - var result, error = false - if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) { - dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type')) - - if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob') - result = xhr.response - else { - result = xhr.responseText - - try { - // http://perfectionkills.com/global-eval-what-are-the-options/ - // sanitize response accordingly if data filter callback provided - result = ajaxDataFilter(result, dataType, settings) - if (dataType == 'script') (1,eval)(result) - else if (dataType == 'xml') result = xhr.responseXML - else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result) - } catch (e) { error = e } - - if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred) - } - - ajaxSuccess(result, xhr, settings, deferred) - } else { - ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred) - } - } - } - - if (ajaxBeforeSend(xhr, settings) === false) { - xhr.abort() - ajaxError(null, 'abort', xhr, settings, deferred) - return xhr - } - - var async = 'async' in settings ? settings.async : true - xhr.open(settings.type, settings.url, async, settings.username, settings.password) - - if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name] - - for (name in headers) nativeSetHeader.apply(xhr, headers[name]) - - if (settings.timeout > 0) abortTimeout = setTimeout(function(){ - xhr.onreadystatechange = empty - xhr.abort() - ajaxError(null, 'timeout', xhr, settings, deferred) - }, settings.timeout) - - // avoid sending empty string (#319) - xhr.send(settings.data ? settings.data : null) - return xhr - } - - // handle optional data/success arguments - function parseArguments(url, data, success, dataType) { - if ($.isFunction(data)) dataType = success, success = data, data = undefined - if (!$.isFunction(success)) dataType = success, success = undefined - return { - url: url - , data: data - , success: success - , dataType: dataType - } - } - - $.get = function(/* url, data, success, dataType */){ - return $.ajax(parseArguments.apply(null, arguments)) - } - - $.post = function(/* url, data, success, dataType */){ - var options = parseArguments.apply(null, arguments) - options.type = 'POST' - return $.ajax(options) - } - - $.getJSON = function(/* url, data, success */){ - var options = parseArguments.apply(null, arguments) - options.dataType = 'json' - return $.ajax(options) - } - - $.fn.load = function(url, data, success){ - if (!this.length) return this - var self = this, parts = url.split(/\s/), selector, - options = parseArguments(url, data, success), - callback = options.success - if (parts.length > 1) options.url = parts[0], selector = parts[1] - options.success = function(response){ - self.html(selector ? - $('
').html(response.replace(rscript, "")).find(selector) - : response) - callback && callback.apply(self, arguments) - } - $.ajax(options) - return this - } - - var escape = encodeURIComponent - - function serialize(params, obj, traditional, scope){ - var type, array = $.isArray(obj), hash = $.isPlainObject(obj) - $.each(obj, function(key, value) { - type = $.type(value) - if (scope) key = traditional ? scope : - scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']' - // handle data in serializeArray() format - if (!scope && array) params.add(value.name, value.value) - // recurse into nested objects - else if (type == "array" || (!traditional && type == "object")) - serialize(params, value, traditional, key) - else params.add(key, value) - }) - } - - $.param = function(obj, traditional){ - var params = [] - params.add = function(key, value) { - if ($.isFunction(value)) value = value() - if (value == null) value = "" - this.push(escape(key) + '=' + escape(value)) - } - serialize(params, obj, traditional) - return params.join('&').replace(/%20/g, '+') - } -})(Zepto) - -;(function($){ - // Create a collection of callbacks to be fired in a sequence, with configurable behaviour - // Option flags: - // - once: Callbacks fired at most one time. - // - memory: Remember the most recent context and arguments - // - stopOnFalse: Cease iterating over callback list - // - unique: Permit adding at most one instance of the same callback - $.Callbacks = function(options) { - options = $.extend({}, options) - - var memory, // Last fire value (for non-forgettable lists) - fired, // Flag to know if list was already fired - firing, // Flag to know if list is currently firing - firingStart, // First callback to fire (used internally by add and fireWith) - firingLength, // End of the loop when firing - firingIndex, // Index of currently firing callback (modified by remove if needed) - list = [], // Actual callback list - stack = !options.once && [], // Stack of fire calls for repeatable lists - fire = function(data) { - memory = options.memory && data - fired = true - firingIndex = firingStart || 0 - firingStart = 0 - firingLength = list.length - firing = true - for ( ; list && firingIndex < firingLength ; ++firingIndex ) { - if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) { - memory = false - break - } - } - firing = false - if (list) { - if (stack) stack.length && fire(stack.shift()) - else if (memory) list.length = 0 - else Callbacks.disable() - } - }, - - Callbacks = { - add: function() { - if (list) { - var start = list.length, - add = function(args) { - $.each(args, function(_, arg){ - if (typeof arg === "function") { - if (!options.unique || !Callbacks.has(arg)) list.push(arg) - } - else if (arg && arg.length && typeof arg !== 'string') add(arg) - }) - } - add(arguments) - if (firing) firingLength = list.length - else if (memory) { - firingStart = start - fire(memory) - } - } - return this - }, - remove: function() { - if (list) { - $.each(arguments, function(_, arg){ - var index - while ((index = $.inArray(arg, list, index)) > -1) { - list.splice(index, 1) - // Handle firing indexes - if (firing) { - if (index <= firingLength) --firingLength - if (index <= firingIndex) --firingIndex - } - } - }) - } - return this - }, - has: function(fn) { - return !!(list && (fn ? $.inArray(fn, list) > -1 : list.length)) - }, - empty: function() { - firingLength = list.length = 0 - return this - }, - disable: function() { - list = stack = memory = undefined - return this - }, - disabled: function() { - return !list - }, - lock: function() { - stack = undefined - if (!memory) Callbacks.disable() - return this - }, - locked: function() { - return !stack - }, - fireWith: function(context, args) { - if (list && (!fired || stack)) { - args = args || [] - args = [context, args.slice ? args.slice() : args] - if (firing) stack.push(args) - else fire(args) - } - return this - }, - fire: function() { - return Callbacks.fireWith(this, arguments) - }, - fired: function() { - return !!fired - } - } - - return Callbacks - } -})(Zepto) - -;(function($){ - var slice = Array.prototype.slice - - function Deferred(func) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", $.Callbacks({once:1, memory:1}), "resolved" ], - [ "reject", "fail", $.Callbacks({once:1, memory:1}), "rejected" ], - [ "notify", "progress", $.Callbacks({memory:1}) ] - ], - state = "pending", - promise = { - state: function() { - return state - }, - always: function() { - deferred.done(arguments).fail(arguments) - return this - }, - then: function(/* fnDone [, fnFailed [, fnProgress]] */) { - var fns = arguments - return Deferred(function(defer){ - $.each(tuples, function(i, tuple){ - var fn = $.isFunction(fns[i]) && fns[i] - deferred[tuple[1]](function(){ - var returned = fn && fn.apply(this, arguments) - if (returned && $.isFunction(returned.promise)) { - returned.promise() - .done(defer.resolve) - .fail(defer.reject) - .progress(defer.notify) - } else { - var context = this === promise ? defer.promise() : this, - values = fn ? [returned] : arguments - defer[tuple[0] + "With"](context, values) - } - }) - }) - fns = null - }).promise() - }, - - promise: function(obj) { - return obj != null ? $.extend( obj, promise ) : promise - } - }, - deferred = {} - - $.each(tuples, function(i, tuple){ - var list = tuple[2], - stateString = tuple[3] - - promise[tuple[1]] = list.add - - if (stateString) { - list.add(function(){ - state = stateString - }, tuples[i^1][2].disable, tuples[2][2].lock) - } - - deferred[tuple[0]] = function(){ - deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments) - return this - } - deferred[tuple[0] + "With"] = list.fireWith - }) - - promise.promise(deferred) - if (func) func.call(deferred, deferred) - return deferred - } - - $.when = function(sub) { - var resolveValues = slice.call(arguments), - len = resolveValues.length, - i = 0, - remain = len !== 1 || (sub && $.isFunction(sub.promise)) ? len : 0, - deferred = remain === 1 ? sub : Deferred(), - progressValues, progressContexts, resolveContexts, - updateFn = function(i, ctx, val){ - return function(value){ - ctx[i] = this - val[i] = arguments.length > 1 ? slice.call(arguments) : value - if (val === progressValues) { - deferred.notifyWith(ctx, val) - } else if (!(--remain)) { - deferred.resolveWith(ctx, val) - } - } - } - - if (len > 1) { - progressValues = new Array(len) - progressContexts = new Array(len) - resolveContexts = new Array(len) - for ( ; i < len; ++i ) { - if (resolveValues[i] && $.isFunction(resolveValues[i].promise)) { - resolveValues[i].promise() - .done(updateFn(i, resolveContexts, resolveValues)) - .fail(deferred.reject) - .progress(updateFn(i, progressContexts, progressValues)) - } else { - --remain - } - } - } - if (!remain) deferred.resolveWith(resolveContexts, resolveValues) - return deferred.promise() - } - - $.Deferred = Deferred -})(Zepto) - -;(function($){ - var _zid = 1, undefined, - slice = Array.prototype.slice, - isFunction = $.isFunction, - isString = function(obj){ return typeof obj == 'string' }, - handlers = {}, - specialEvents={}, - focusinSupported = 'onfocusin' in window, - focus = { focus: 'focusin', blur: 'focusout' }, - hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' } - - specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents' - - function zid(element) { - return element._zid || (element._zid = _zid++) - } - function findHandlers(element, event, fn, selector) { - event = parse(event) - if (event.ns) var matcher = matcherFor(event.ns) - return (handlers[zid(element)] || []).filter(function(handler) { - return handler - && (!event.e || handler.e == event.e) - && (!event.ns || matcher.test(handler.ns)) - && (!fn || zid(handler.fn) === zid(fn)) - && (!selector || handler.sel == selector) - }) - } - function parse(event) { - var parts = ('' + event).split('.') - return {e: parts[0], ns: parts.slice(1).sort().join(' ')} - } - function matcherFor(ns) { - return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)') - } - - function eventCapture(handler, captureSetting) { - return handler.del && - (!focusinSupported && (handler.e in focus)) || - !!captureSetting - } - - function realEvent(type) { - return hover[type] || (focusinSupported && focus[type]) || type - } - - function add(element, events, fn, data, selector, delegator, capture){ - var id = zid(element), set = (handlers[id] || (handlers[id] = [])) - events.split(/\s/).forEach(function(event){ - if (event == 'ready') return $(document).ready(fn) - var handler = parse(event) - handler.fn = fn - handler.sel = selector - // emulate mouseenter, mouseleave - if (handler.e in hover) fn = function(e){ - var related = e.relatedTarget - if (!related || (related !== this && !$.contains(this, related))) - return handler.fn.apply(this, arguments) - } - handler.del = delegator - var callback = delegator || fn - handler.proxy = function(e){ - e = compatible(e) - if (e.isImmediatePropagationStopped()) return - e.data = data - var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args)) - if (result === false) e.preventDefault(), e.stopPropagation() - return result - } - handler.i = set.length - set.push(handler) - if ('addEventListener' in element) - element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)) - }) - } - function remove(element, events, fn, selector, capture){ - var id = zid(element) - ;(events || '').split(/\s/).forEach(function(event){ - findHandlers(element, event, fn, selector).forEach(function(handler){ - delete handlers[id][handler.i] - if ('removeEventListener' in element) - element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)) - }) - }) - } - - $.event = { add: add, remove: remove } - - $.proxy = function(fn, context) { - var args = (2 in arguments) && slice.call(arguments, 2) - if (isFunction(fn)) { - var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) } - proxyFn._zid = zid(fn) - return proxyFn - } else if (isString(context)) { - if (args) { - args.unshift(fn[context], fn) - return $.proxy.apply(null, args) - } else { - return $.proxy(fn[context], fn) - } - } else { - throw new TypeError("expected function") - } - } - - $.fn.bind = function(event, data, callback){ - return this.on(event, data, callback) - } - $.fn.unbind = function(event, callback){ - return this.off(event, callback) - } - $.fn.one = function(event, selector, data, callback){ - return this.on(event, selector, data, callback, 1) - } - - var returnTrue = function(){return true}, - returnFalse = function(){return false}, - ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/, - eventMethods = { - preventDefault: 'isDefaultPrevented', - stopImmediatePropagation: 'isImmediatePropagationStopped', - stopPropagation: 'isPropagationStopped' - } - - function compatible(event, source) { - if (source || !event.isDefaultPrevented) { - source || (source = event) - - $.each(eventMethods, function(name, predicate) { - var sourceMethod = source[name] - event[name] = function(){ - this[predicate] = returnTrue - return sourceMethod && sourceMethod.apply(source, arguments) - } - event[predicate] = returnFalse - }) - - event.timeStamp || (event.timeStamp = Date.now()) - - if (source.defaultPrevented !== undefined ? source.defaultPrevented : - 'returnValue' in source ? source.returnValue === false : - source.getPreventDefault && source.getPreventDefault()) - event.isDefaultPrevented = returnTrue - } - return event - } - - function createProxy(event) { - var key, proxy = { originalEvent: event } - for (key in event) - if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key] - - return compatible(proxy, event) - } - - $.fn.delegate = function(selector, event, callback){ - return this.on(event, selector, callback) - } - $.fn.undelegate = function(selector, event, callback){ - return this.off(event, selector, callback) - } - - $.fn.live = function(event, callback){ - $(document.body).delegate(this.selector, event, callback) - return this - } - $.fn.die = function(event, callback){ - $(document.body).undelegate(this.selector, event, callback) - return this - } - - $.fn.on = function(event, selector, data, callback, one){ - var autoRemove, delegator, $this = this - if (event && !isString(event)) { - $.each(event, function(type, fn){ - $this.on(type, selector, data, fn, one) - }) - return $this - } - - if (!isString(selector) && !isFunction(callback) && callback !== false) - callback = data, data = selector, selector = undefined - if (callback === undefined || data === false) - callback = data, data = undefined - - if (callback === false) callback = returnFalse - - return $this.each(function(_, element){ - if (one) autoRemove = function(e){ - remove(element, e.type, callback) - return callback.apply(this, arguments) - } - - if (selector) delegator = function(e){ - var evt, match = $(e.target).closest(selector, element).get(0) - if (match && match !== element) { - evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element}) - return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1))) - } - } - - add(element, event, callback, data, selector, delegator || autoRemove) - }) - } - $.fn.off = function(event, selector, callback){ - var $this = this - if (event && !isString(event)) { - $.each(event, function(type, fn){ - $this.off(type, selector, fn) - }) - return $this - } - - if (!isString(selector) && !isFunction(callback) && callback !== false) - callback = selector, selector = undefined - - if (callback === false) callback = returnFalse - - return $this.each(function(){ - remove(this, event, callback, selector) - }) - } - - $.fn.trigger = function(event, args){ - event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event) - event._args = args - return this.each(function(){ - // handle focus(), blur() by calling them directly - if (event.type in focus && typeof this[event.type] == "function") this[event.type]() - // items in the collection might not be DOM elements - else if ('dispatchEvent' in this) this.dispatchEvent(event) - else $(this).triggerHandler(event, args) - }) - } - - // triggers event handlers on current element just as if an event occurred, - // doesn't trigger an actual event, doesn't bubble - $.fn.triggerHandler = function(event, args){ - var e, result - this.each(function(i, element){ - e = createProxy(isString(event) ? $.Event(event) : event) - e._args = args - e.target = element - $.each(findHandlers(element, event.type || event), function(i, handler){ - result = handler.proxy(e) - if (e.isImmediatePropagationStopped()) return false - }) - }) - return result - } - - // shortcut methods for `.bind(event, fn)` for each event type - ;('focusin focusout focus blur load resize scroll unload click dblclick '+ - 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+ - 'change select keydown keypress keyup error').split(' ').forEach(function(event) { - $.fn[event] = function(callback) { - return (0 in arguments) ? - this.bind(event, callback) : - this.trigger(event) - } - }) - - $.Event = function(type, props) { - if (!isString(type)) props = type, type = props.type - var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true - if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name]) - event.initEvent(type, bubbles, true) - return compatible(event) - } - -})(Zepto) - -;(function(){ - // getComputedStyle shouldn't freak out when called - // without a valid element as argument - try { - getComputedStyle(undefined) - } catch(e) { - var nativeGetComputedStyle = getComputedStyle - window.getComputedStyle = function(element, pseudoElement){ - try { - return nativeGetComputedStyle(element, pseudoElement) - } catch(e) { - return null - } - } - } -})() - -;(function($){ - var zepto = $.zepto, oldQsa = zepto.qsa, oldMatches = zepto.matches - - function visible(elem){ - elem = $(elem) - return !!(elem.width() || elem.height()) && elem.css("display") !== "none" - } - - // Implements a subset from: - // http://api.jquery.com/category/selectors/jquery-selector-extensions/ - // - // Each filter function receives the current index, all nodes in the - // considered set, and a value if there were parentheses. The value - // of `this` is the node currently being considered. The function returns the - // resulting node(s), null, or undefined. - // - // Complex selectors are not supported: - // li:has(label:contains("foo")) + li:has(label:contains("bar")) - // ul.inner:first > li - var filters = $.expr[':'] = { - visible: function(){ if (visible(this)) return this }, - hidden: function(){ if (!visible(this)) return this }, - selected: function(){ if (this.selected) return this }, - checked: function(){ if (this.checked) return this }, - parent: function(){ return this.parentNode }, - first: function(idx){ if (idx === 0) return this }, - last: function(idx, nodes){ if (idx === nodes.length - 1) return this }, - eq: function(idx, _, value){ if (idx === value) return this }, - contains: function(idx, _, text){ if ($(this).text().indexOf(text) > -1) return this }, - has: function(idx, _, sel){ if (zepto.qsa(this, sel).length) return this } - } - - var filterRe = new RegExp('(.*):(\\w+)(?:\\(([^)]+)\\))?$\\s*'), - childRe = /^\s*>/, - classTag = 'Zepto' + (+new Date()) - - function process(sel, fn) { - // quote the hash in `a[href^=#]` expression - sel = sel.replace(/=#\]/g, '="#"]') - var filter, arg, match = filterRe.exec(sel) - if (match && match[2] in filters) { - filter = filters[match[2]], arg = match[3] - sel = match[1] - if (arg) { - var num = Number(arg) - if (isNaN(num)) arg = arg.replace(/^["']|["']$/g, '') - else arg = num - } - } - return fn(sel, filter, arg) - } - - zepto.qsa = function(node, selector) { - return process(selector, function(sel, filter, arg){ - try { - var taggedParent - if (!sel && filter) sel = '*' - else if (childRe.test(sel)) - // support "> *" child queries by tagging the parent node with a - // unique class and prepending that classname onto the selector - taggedParent = $(node).addClass(classTag), sel = '.'+classTag+' '+sel - - var nodes = oldQsa(node, sel) - } catch(e) { - console.error('error performing selector: %o', selector) - throw e - } finally { - if (taggedParent) taggedParent.removeClass(classTag) - } - return !filter ? nodes : - zepto.uniq($.map(nodes, function(n, i){ return filter.call(n, i, nodes, arg) })) - }) - } - - zepto.matches = function(node, selector){ - return process(selector, function(sel, filter, arg){ - return (!sel || oldMatches(node, sel)) && - (!filter || filter.call(node, null, arg) === node) - }) - } -})(Zepto) -module.exports = Zepto - - -/***/ }), -/* 7 */ -/***/ (function(module, exports) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -// css base code, injected by the css-loader -module.exports = function(useSourceMap) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); - if(item[2]) { - return "@media " + item[2] + "{" + content + "}"; - } else { - return content; - } - }).join(""); - }; - - // import a list of modules into the list - list.i = function(modules, mediaQuery) { - if(typeof modules === "string") - modules = [[null, modules, ""]]; - var alreadyImportedModules = {}; - for(var i = 0; i < this.length; i++) { - var id = this[i][0]; - if(typeof id === "number") - alreadyImportedModules[id] = true; - } - for(i = 0; i < modules.length; i++) { - var item = modules[i]; - // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { - if(mediaQuery && !item[2]) { - item[2] = mediaQuery; - } else if(mediaQuery) { - item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; - } - list.push(item); - } - } - }; - return list; -}; - -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' - }); - - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} - -// Adapted from convert-source-map (MIT) -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - - return '/*# ' + data + ' */'; -} - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* eslint-disable no-var */ -// Simple JavaScript Templating -// Paul Miller (http://paulmillr.com) -// http://underscorejs.org -// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - -// By default, Underscore uses ERB-style template delimiters, change the -// following template settings to use alternative delimiters. -var settings = { - evaluate: /<%([\s\S]+?)%>/g, - interpolate: /<%=([\s\S]+?)%>/g, - escape: /<%-([\s\S]+?)%>/g -}; - -// When customizing `templateSettings`, if you don't want to define an -// interpolation, evaluation or escaping regex, we need one that is -// guaranteed not to match. -var noMatch = /(.)^/; - -// Certain characters need to be escaped so that they can be put into a -// string literal. -var escapes = { - '\'': '\'', - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' -}; - -var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; - -// List of HTML entities for escaping. -var htmlEntities = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - '\'': ''' -}; - -var entityRe = new RegExp('[&<>"\']', 'g'); - -var escapeExpr = function escapeExpr(string) { - if (string === null) return ''; - return ('' + string).replace(entityRe, function (match) { - return htmlEntities[match]; - }); -}; - -var counter = 0; - -// JavaScript micro-templating, similar to John Resig's implementation. -// Underscore templating handles arbitrary delimiters, preserves whitespace, -// and correctly escapes quotes within interpolated code. -var tmpl = function tmpl(text, data) { - var render; - - // Combine delimiters into one regular expression via alternation. - var matcher = new RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = '__p+=\''; - text.replace(matcher, function (match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset).replace(escaper, function (match) { - return '\\' + escapes[match]; - }); - - if (escape) source += '\'+\n((__t=(' + escape + '))==null?\'\':escapeExpr(__t))+\n\''; - - if (interpolate) source += '\'+\n((__t=(' + interpolate + '))==null?\'\':__t)+\n\''; - - if (evaluate) source += '\';\n' + evaluate + '\n__p+=\''; - - index = offset + match.length; - return match; - }); - source += '\';\n'; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = 'var __t,__p=\'\',__j=Array.prototype.join,' + 'print=function(){__p+=__j.call(arguments,\'\');};\n' + source + 'return __p;\n//# sourceURL=/microtemplates/source[' + counter++ + ']'; - - try { - /*jshint -W054 */ - // TODO: find a way to avoid eval - render = new Function(settings.variable || 'obj', 'escapeExpr', source); - } catch (e) { - e.source = source; - throw e; - } - - if (data) return render(data, escapeExpr); - var template = function template(data) { - return render.call(this, data, escapeExpr); - }; - - // Provide the compiled function source as a convenience for precompilation. - template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; - - return template; -}; -tmpl.settings = settings; - -exports.default = tmpl; -module.exports = exports['default']; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _utils = __webpack_require__(5); - -var _ui_object = __webpack_require__(21); - -var _ui_object2 = _interopRequireDefault(_ui_object); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * An abstraction to represent a generic playback, it's like an interface to be implemented by subclasses. - * @class Playback - * @constructor - * @extends UIObject - * @module base - */ -var Playback = function (_UIObject) { - (0, _inherits3.default)(Playback, _UIObject); - (0, _createClass3.default)(Playback, [{ - key: 'isAudioOnly', - - /** - * Determine if the playback does not contain video/has video but video should be ignored. - * @property isAudioOnly - * @type Boolean - */ - get: function get() { - return false; - } - - /** - * Determine if the playback has ended. - * @property ended - * @type Boolean - */ - - }, { - key: 'ended', - get: function get() { - return false; - } - - /** - * The internationalization plugin. - * @property i18n - * @type {Strings} - */ - - }, { - key: 'i18n', - get: function get() { - return this._i18n; - } - - /** - * Determine if the playback is having to buffer in order for - * playback to be smooth. - * (i.e if a live stream is playing smoothly, this will be false) - * @property buffering - * @type Boolean - */ - - }, { - key: 'buffering', - get: function get() { - return false; - } - - /** - * @method constructor - * @param {Object} options the options object - * @param {Strings} i18n the internationalization component - */ - - }]); - - function Playback(options, i18n) { - (0, _classCallCheck3.default)(this, Playback); - - var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options)); - - _this.settings = {}; - _this._i18n = i18n; - return _this; - } - - /** - * Gives user consent to playback (mobile devices). - * @method consent - */ - - - Playback.prototype.consent = function consent() {}; - - /** - * plays the playback. - * @method play - */ - - - Playback.prototype.play = function play() {}; - - /** - * pauses the playback. - * @method pause - */ - - - Playback.prototype.pause = function pause() {}; - - /** - * stops the playback. - * @method stop - */ - - - Playback.prototype.stop = function stop() {}; - - /** - * seeks the playback to a given `time` in seconds - * @method seek - * @param {Number} time should be a number between 0 and the video duration - */ - - - Playback.prototype.seek = function seek(time) {}; // eslint-disable-line no-unused-vars - - /** - * seeks the playback to a given `percentage` in percentage - * @method seekPercentage - * @param {Number} time should be a number between 0 and 100 - */ - - - Playback.prototype.seekPercentage = function seekPercentage(percentage) {}; // eslint-disable-line no-unused-vars - - - /** - * The time that "0" now represents relative to when playback started. - * For a stream with a sliding window this will increase as content is - * removed from the beginning. - * @method getStartTimeOffset - * @return {Number} time (in seconds) that time "0" represents. - */ - - - Playback.prototype.getStartTimeOffset = function getStartTimeOffset() { - return 0; - }; - - /** - * gets the duration in seconds - * @method getDuration - * @return {Number} duration (in seconds) of the current source - */ - - - Playback.prototype.getDuration = function getDuration() { - return 0; - }; - - /** - * checks if the playback is playing. - * @method isPlaying - * @return {Boolean} `true` if the current playback is playing, otherwise `false` - */ - - - Playback.prototype.isPlaying = function isPlaying() { - return false; - }; - - /** - * checks if the playback is ready. - * @property isReady - * @type {Boolean} `true` if the current playback is ready, otherwise `false` - */ - - - // eslint-disable-line no-unused-vars - - /** - * gets the playback type (`'vod', 'live', 'aod'`) - * @method getPlaybackType - * @return {String} you should write the playback type otherwise it'll assume `'no_op'` - * @example - * ```javascript - * html5VideoPlayback.getPlaybackType() //vod - * html5AudioPlayback.getPlaybackType() //aod - * html5VideoPlayback.getPlaybackType() //live - * flashHlsPlayback.getPlaybackType() //live - * ``` - */ - Playback.prototype.getPlaybackType = function getPlaybackType() { - return Playback.NO_OP; - }; - - /** - * checks if the playback is in HD. - * @method isHighDefinitionInUse - * @return {Boolean} `true` if the playback is playing in HD, otherwise `false` - */ - - - Playback.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() { - return false; - }; - - /** - * sets the volume for the playback - * @method volume - * @param {Number} value a number between 0 (`muted`) to 100 (`max`) - */ - - - Playback.prototype.volume = function volume(value) {}; // eslint-disable-line no-unused-vars - - /** - * destroys the playback, removing it from DOM - * @method destroy - */ - - - Playback.prototype.destroy = function destroy() { - this.$el.remove(); - }; - - (0, _createClass3.default)(Playback, [{ - key: 'isReady', - get: function get() { - return false; - } - - /** - * checks if the playback has closed caption tracks. - * @property hasClosedCaptionsTracks - * @type {Boolean} - */ - - }, { - key: 'hasClosedCaptionsTracks', - get: function get() { - return this.closedCaptionsTracks.length > 0; - } - - /** - * gets the playback available closed caption tracks. - * @property closedCaptionsTracks - * @type {Array} an array of objects with at least 'id' and 'name' properties - */ - - }, { - key: 'closedCaptionsTracks', - get: function get() { - return []; - } - - /** - * gets the selected closed caption track index. (-1 is disabled) - * @property closedCaptionsTrackId - * @type {Number} - */ - - }, { - key: 'closedCaptionsTrackId', - get: function get() { - return -1; - } - - /** - * sets the selected closed caption track index. (-1 is disabled) - * @property closedCaptionsTrackId - * @type {Number} - */ - , - set: function set(trackId) {} - }]); - return Playback; -}(_ui_object2.default); - -exports.default = Playback; - - -Playback.extend = function (properties) { - return (0, _utils.extend)(Playback, properties); -}; - -/** - * checks if the playback can play a given `source` - * If a mimeType is provided then this will be used instead of inferring the mimetype - * from the source extension. - * @method canPlay - * @static - * @param {String} source the given source ex: `http://example.com/play.mp4` - * @param {String} [mimeType] the given mime type, ex: `'application/vnd.apple.mpegurl'` - * @return {Boolean} `true` if the playback is playable, otherwise `false` - */ -Playback.canPlay = function (source, mimeType) { - // eslint-disable-line no-unused-vars - return false; -}; - -/** - * a playback type for video on demand - * - * @property VOD - * @static - * @type String - */ -Playback.VOD = 'vod'; -/** - * a playback type for audio on demand - * - * @property AOD - * @static - * @type String - */ -Playback.AOD = 'aod'; -/** - * a playback type for live video - * - * @property LIVE - * @static - * @type String - */ -Playback.LIVE = 'live'; -/** - * a default playback type - * - * @property NO_OP - * @static - * @type String - */ -Playback.NO_OP = 'no_op'; -/** - * the plugin type - * - * @property type - * @static - * @type String - */ -Playback.type = 'playback'; -module.exports = exports['default']; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ - -var stylesInDom = {}; - -var memoize = function (fn) { - var memo; - - return function () { - if (typeof memo === "undefined") memo = fn.apply(this, arguments); - return memo; - }; -}; - -var isOldIE = memoize(function () { - // Test for IE <= 9 as proposed by Browserhacks - // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 - // Tests for existence of standard globals is to allow style-loader - // to operate correctly into non-standard environments - // @see https://github.com/webpack-contrib/style-loader/issues/177 - return window && document && document.all && !window.atob; -}); - -var getElement = (function (fn) { - var memo = {}; - - return function(selector) { - if (typeof memo[selector] === "undefined") { - var styleTarget = fn.call(this, selector); - // Special case to return head of iframe instead of iframe itself - if (styleTarget instanceof window.HTMLIFrameElement) { - try { - // This will throw an exception if access to iframe is blocked - // due to cross-origin restrictions - styleTarget = styleTarget.contentDocument.head; - } catch(e) { - styleTarget = null; - } - } - memo[selector] = styleTarget; - } - return memo[selector] - }; -})(function (target) { - return document.querySelector(target) -}); - -var singleton = null; -var singletonCounter = 0; -var stylesInsertedAtTop = []; - -var fixUrls = __webpack_require__(140); - -module.exports = function(list, options) { - if (typeof DEBUG !== "undefined" && DEBUG) { - if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); - } - - options = options || {}; - - options.attrs = typeof options.attrs === "object" ? options.attrs : {}; - - // Force single-tag solution on IE6-9, which has a hard limit on the # of ').html((0, _template2.default)(style.toString())(options)); - } -}; - -exports.default = Styler; -module.exports = exports['default']; - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _loader = __webpack_require__(157); - -var _loader2 = _interopRequireDefault(_loader); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _loader2.default; -module.exports = exports['default']; - -/***/ }), -/* 79 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(159), __esModule: true }; - -/***/ }), -/* 80 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _from = __webpack_require__(79); - -var _from2 = _interopRequireDefault(_from); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { - arr2[i] = arr[i]; - } - - return arr2; - } else { - return (0, _from2.default)(arr); - } -}; - -/***/ }), -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _flash = __webpack_require__(170); - -var _flash2 = _interopRequireDefault(_flash); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _flash2.default; -module.exports = exports['default']; - -/***/ }), -/* 82 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _html5_audio = __webpack_require__(176); - -var _html5_audio2 = _interopRequireDefault(_html5_audio); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _html5_audio2.default; -module.exports = exports['default']; - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _flashls = __webpack_require__(177); - -var _flashls2 = _interopRequireDefault(_flashls); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _flashls2.default; -module.exports = exports['default']; - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _hls = __webpack_require__(180); - -var _hls2 = _interopRequireDefault(_hls); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _hls2.default; -module.exports = exports['default']; - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _html_img = __webpack_require__(182); - -var _html_img2 = _interopRequireDefault(_html_img); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _html_img2.default; -module.exports = exports['default']; - -/***/ }), -/* 86 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _no_op = __webpack_require__(185); - -var _no_op2 = _interopRequireDefault(_no_op); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _no_op2.default; -module.exports = exports['default']; - -/***/ }), -/* 87 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _poster = __webpack_require__(201); - -var _poster2 = _interopRequireDefault(_poster); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _poster2.default; -module.exports = exports['default']; - -/***/ }), -/* 88 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _player = __webpack_require__(89); - -var _player2 = _interopRequireDefault(_player); - -var _utils = __webpack_require__(5); - -var _utils2 = _interopRequireDefault(_utils); - -var _events = __webpack_require__(4); - -var _events2 = _interopRequireDefault(_events); - -var _playback = __webpack_require__(9); - -var _playback2 = _interopRequireDefault(_playback); - -var _container_plugin = __webpack_require__(37); - -var _container_plugin2 = _interopRequireDefault(_container_plugin); - -var _core_plugin = __webpack_require__(30); - -var _core_plugin2 = _interopRequireDefault(_core_plugin); - -var _ui_core_plugin = __webpack_require__(38); - -var _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin); - -var _ui_container_plugin = __webpack_require__(36); - -var _ui_container_plugin2 = _interopRequireDefault(_ui_container_plugin); - -var _base_object = __webpack_require__(17); - -var _base_object2 = _interopRequireDefault(_base_object); - -var _ui_object = __webpack_require__(21); - -var _ui_object2 = _interopRequireDefault(_ui_object); - -var _browser = __webpack_require__(13); - -var _browser2 = _interopRequireDefault(_browser); - -var _container = __webpack_require__(73); - -var _container2 = _interopRequireDefault(_container); - -var _core = __webpack_require__(72); - -var _core2 = _interopRequireDefault(_core); - -var _loader = __webpack_require__(78); - -var _loader2 = _interopRequireDefault(_loader); - -var _mediator = __webpack_require__(24); - -var _mediator2 = _interopRequireDefault(_mediator); - -var _media_control = __webpack_require__(74); - -var _media_control2 = _interopRequireDefault(_media_control); - -var _player_info = __webpack_require__(34); - -var _player_info2 = _interopRequireDefault(_player_info); - -var _base_flash_playback = __webpack_require__(59); - -var _base_flash_playback2 = _interopRequireDefault(_base_flash_playback); - -var _flash = __webpack_require__(81); - -var _flash2 = _interopRequireDefault(_flash); - -var _flashls = __webpack_require__(83); - -var _flashls2 = _interopRequireDefault(_flashls); - -var _hls = __webpack_require__(84); - -var _hls2 = _interopRequireDefault(_hls); - -var _html5_audio = __webpack_require__(82); - -var _html5_audio2 = _interopRequireDefault(_html5_audio); - -var _html5_video = __webpack_require__(35); - -var _html5_video2 = _interopRequireDefault(_html5_video); - -var _html_img = __webpack_require__(85); - -var _html_img2 = _interopRequireDefault(_html_img); - -var _no_op = __webpack_require__(86); - -var _no_op2 = _interopRequireDefault(_no_op); - -var _poster = __webpack_require__(87); - -var _poster2 = _interopRequireDefault(_poster); - -var _log = __webpack_require__(55); - -var _log2 = _interopRequireDefault(_log); - -var _styler = __webpack_require__(77); - -var _styler2 = _interopRequireDefault(_styler); - -var _vendor = __webpack_require__(56); - -var _vendor2 = _interopRequireDefault(_vendor); - -var _template = __webpack_require__(8); - -var _template2 = _interopRequireDefault(_template); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var version = "0.2.80"; // Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -exports.default = { - Player: _player2.default, - Mediator: _mediator2.default, - Events: _events2.default, - Browser: _browser2.default, - PlayerInfo: _player_info2.default, - MediaControl: _media_control2.default, - ContainerPlugin: _container_plugin2.default, - UIContainerPlugin: _ui_container_plugin2.default, - CorePlugin: _core_plugin2.default, - UICorePlugin: _ui_core_plugin2.default, - Playback: _playback2.default, - Container: _container2.default, - Core: _core2.default, - Loader: _loader2.default, - BaseObject: _base_object2.default, - UIObject: _ui_object2.default, - Utils: _utils2.default, - BaseFlashPlayback: _base_flash_playback2.default, - Flash: _flash2.default, - FlasHLS: _flashls2.default, - HLS: _hls2.default, - HTML5Audio: _html5_audio2.default, - HTML5Video: _html5_video2.default, - HTMLImg: _html_img2.default, - NoOp: _no_op2.default, - Poster: _poster2.default, - Log: _log2.default, - Styler: _styler2.default, - Vendor: _vendor2.default, - version: version, - template: _template2.default, - $: _clapprZepto2.default -}; -module.exports = exports['default']; - -/***/ }), -/* 89 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _keys = __webpack_require__(31); - -var _keys2 = _interopRequireDefault(_keys); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _utils = __webpack_require__(5); - -var _base_object = __webpack_require__(17); - -var _base_object2 = _interopRequireDefault(_base_object); - -var _events = __webpack_require__(4); - -var _events2 = _interopRequireDefault(_events); - -var _browser = __webpack_require__(13); - -var _browser2 = _interopRequireDefault(_browser); - -var _core_factory = __webpack_require__(132); - -var _core_factory2 = _interopRequireDefault(_core_factory); - -var _loader = __webpack_require__(78); - -var _loader2 = _interopRequireDefault(_loader); - -var _player_info = __webpack_require__(34); - -var _player_info2 = _interopRequireDefault(_player_info); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -var baseUrl = (0, _utils.currentScriptUrl)().replace(/\/[^/]+$/, ''); - -/** - * @class Player - * @constructor - * @extends BaseObject - * @module components - * @example - * ### Using the Player - * - * Add the following script on your HTML: - * ```html - * - * - * - * ``` - * Now, create the player: - * ```html - * - *
- * - * - * ``` - */ - -var Player = function (_BaseObject) { - (0, _inherits3.default)(Player, _BaseObject); - (0, _createClass3.default)(Player, [{ - key: 'loader', - set: function set(loader) { - this._loader = loader; - }, - get: function get() { - if (!this._loader) this._loader = new _loader2.default(this.options.plugins || {}, this.options.playerId); - - return this._loader; - } - - /** - * Determine if the playback has ended. - * @property ended - * @type Boolean - */ - - }, { - key: 'ended', - get: function get() { - return this.core.mediaControl.container.ended; - } - - /** - * Determine if the playback is having to buffer in order for - * playback to be smooth. - * (i.e if a live stream is playing smoothly, this will be false) - * @property buffering - * @type Boolean - */ - - }, { - key: 'buffering', - get: function get() { - return this.core.mediaControl.container.buffering; - } - - /* - * determine if the player is ready. - * @property isReady - * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired - */ - - }, { - key: 'isReady', - get: function get() { - return !!this._ready; - } - - /** - * An events map that allows the user to add custom callbacks in player's options. - * @property eventsMapping - * @type {Object} - */ - - }, { - key: 'eventsMapping', - get: function get() { - return { - onReady: _events2.default.PLAYER_READY, - onResize: _events2.default.PLAYER_RESIZE, - onPlay: _events2.default.PLAYER_PLAY, - onPause: _events2.default.PLAYER_PAUSE, - onStop: _events2.default.PLAYER_STOP, - onEnded: _events2.default.PLAYER_ENDED, - onSeek: _events2.default.PLAYER_SEEK, - onError: _events2.default.PLAYER_ERROR, - onTimeUpdate: _events2.default.PLAYER_TIMEUPDATE, - onVolumeUpdate: _events2.default.PLAYER_VOLUMEUPDATE, - onSubtitleAvailable: _events2.default.PLAYER_SUBTITLE_AVAILABLE - }; - } - - /** - * ## Player's constructor - * - * You might pass the options object to build the player. - * ```javascript - * var options = {source: "http://example.com/video.mp4", param1: "val1"}; - * var player = new Clappr.Player(options); - * ``` - * - * @method constructor - * @param {Object} options Data - * options to build a player instance - * @param {Number} [options.width] - * player's width **default**: `640` - * @param {Number} [options.height] - * player's height **default**: `360` - * @param {String} [options.parentId] - * the id of the element on the page that the player should be inserted into - * @param {Object} [options.parent] - * a reference to a dom element that the player should be inserted into - * @param {String} [options.source] - * The media source URL, or {source: <>, mimeType: <>} - * @param {Object} [options.sources] - * An array of media source URL's, or an array of {source: <>, mimeType: <>} - * @param {Boolean} [options.autoPlay] - * automatically play after page load **default**: `false` - * @param {Boolean} [options.loop] - * automatically replay after it ends **default**: `false` - * @param {Boolean} [options.chromeless] - * player acts in chromeless mode **default**: `false` - * @param {Boolean} [options.allowUserInteraction] - * whether or not the player should handle click events when in chromeless mode **default**: `false` on desktops browsers, `true` on mobile. - * @param {Boolean} [options.disableKeyboardShortcuts] - * disable keyboard shortcuts. **default**: `false`. `true` if `allowUserInteraction` is `false`. - * @param {Boolean} [options.mute] - * start the video muted **default**: `false` - * @param {String} [options.mimeType] - * add `mimeType: "application/vnd.apple.mpegurl"` if you need to use a url without extension. - * @param {String} [options.actualLiveTime] - * show duration and seek time relative to actual time. - * @param {String} [options.actualLiveServerTime] - * specify server time as a string, format: "2015/11/26 06:01:03". This option is meant to be used with actualLiveTime. - * @param {Boolean} [options.persistConfig] - * persist player's settings (volume) through the same domain **default**: `true` - * @param {String} [options.preload] - * video will be preloaded according to `preload` attribute options **default**: `'metadata'` - * @param {Number} [options.maxBufferLength] - * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD. - * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks. - * To change this behavior use `maxBufferLength` where **value is in seconds**. - * @param {String} [options.gaAccount] - * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount` - * @param {String} [options.gaTrackerName] - * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName` - * @param {Object} [options.mediacontrol] - * customize control bar colors, example: `mediacontrol: {seekbar: "#E113D3", buttons: "#66B2FF"}` - * @param {Boolean} [options.hideMediaControl] - * control media control auto hide **default**: `true` - * @param {Boolean} [options.hideVolumeBar] - * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false` - * @param {String} [options.watermark] - * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video. - * You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`. - * @param {String} [options.watermarkLink] - * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable. - * @param {Boolean} [options.disableVideoTagContextMenu] - * disables the context menu (right click) on the video element if a HTML5Video playback is used. - * @param {Boolean} [options.autoSeekFromUrl] - * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true` - * @param {Boolean} [options.exitFullscreenOnEnd] - * Automatically exit full screen when the media finishes. **default**: `true` - * @param {String} [options.poster] - * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video. - * @param {String} [options.playbackNotSupportedMessage] - * define a custom message to be displayed when a playback is not supported. - * @param {Object} [options.events] - * Specify listeners which will be registered with their corresponding player events. - * E.g. onReady -> "PLAYER_READY", onTimeUpdate -> "PLAYER_TIMEUPDATE" - */ - - }]); - - function Player(options) { - (0, _classCallCheck3.default)(this, Player); - - var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options)); - - var defaultOptions = { playerId: (0, _utils.uniqueId)(''), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl, allowUserInteraction: _browser2.default.isMobile }; - _this._options = _clapprZepto2.default.extend(defaultOptions, options); - _this.options.sources = _this._normalizeSources(options); - if (!_this.options.chromeless) { - // "allowUserInteraction" cannot be false if not in chromeless mode. - _this.options.allowUserInteraction = true; - } - if (!_this.options.allowUserInteraction) { - // if user iteraction is not allowed ensure keyboard shortcuts are disabled - _this.options.disableKeyboardShortcuts = true; - } - _this._registerOptionEventListeners(); - _this._coreFactory = new _core_factory2.default(_this); - _this.playerInfo = _player_info2.default.getInstance(_this.options.playerId); - _this.playerInfo.currentSize = { width: options.width, height: options.height }; - _this.playerInfo.options = _this.options; - if (_this.options.parentId) _this.setParentId(_this.options.parentId);else if (_this.options.parent) _this.attachTo(_this.options.parent); - - return _this; - } - - /** - * Specify a `parentId` to the player. - * @method setParentId - * @param {String} parentId the element parent id. - * @return {Player} itself - */ - - - Player.prototype.setParentId = function setParentId(parentId) { - var el = document.querySelector(parentId); - if (el) this.attachTo(el); - - return this; - }; - - /** - * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param. - * @method attachTo - * @param {Object} element a given element. - * @return {Player} itself - */ - - - Player.prototype.attachTo = function attachTo(element) { - this.options.parentElement = element; - this.core = this._coreFactory.create(); - this._addEventListeners(); - return this; - }; - - Player.prototype._addEventListeners = function _addEventListeners() { - if (!this.core.isReady) this.listenToOnce(this.core, _events2.default.CORE_READY, this._onReady);else this._onReady(); - - this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this._containerChanged); - this.listenTo(this.core, _events2.default.CORE_FULLSCREEN, this._onFullscreenChange); - return this; - }; - - Player.prototype._addContainerEventListeners = function _addContainerEventListeners() { - var container = this.core.mediaControl.container; - if (container) { - this.listenTo(container, _events2.default.CONTAINER_PLAY, this._onPlay); - this.listenTo(container, _events2.default.CONTAINER_PAUSE, this._onPause); - this.listenTo(container, _events2.default.CONTAINER_STOP, this._onStop); - this.listenTo(container, _events2.default.CONTAINER_ENDED, this._onEnded); - this.listenTo(container, _events2.default.CONTAINER_SEEK, this._onSeek); - this.listenTo(container, _events2.default.CONTAINER_ERROR, this._onError); - this.listenTo(container, _events2.default.CONTAINER_TIMEUPDATE, this._onTimeUpdate); - this.listenTo(container, _events2.default.CONTAINER_VOLUME, this._onVolumeUpdate); - this.listenTo(container, _events2.default.CONTAINER_SUBTITLE_AVAILABLE, this._onSubtitleAvailable); - } - return this; - }; - - Player.prototype._registerOptionEventListeners = function _registerOptionEventListeners() { - var _this2 = this; - - var userEvents = this.options.events || {}; - (0, _keys2.default)(userEvents).forEach(function (userEvent) { - var eventType = _this2.eventsMapping[userEvent]; - if (eventType) { - var eventFunction = userEvents[userEvent]; - eventFunction = typeof eventFunction === 'function' && eventFunction; - eventFunction && _this2.on(eventType, eventFunction); - } - }); - return this; - }; - - Player.prototype._containerChanged = function _containerChanged() { - this.stopListening(); - this._addEventListeners(); - }; - - Player.prototype._onReady = function _onReady() { - this._ready = true; - this._addContainerEventListeners(); - this.trigger(_events2.default.PLAYER_READY); - }; - - Player.prototype._onFullscreenChange = function _onFullscreenChange(fullscreen) { - this.trigger(_events2.default.PLAYER_FULLSCREEN, fullscreen); - }; - - Player.prototype._onVolumeUpdate = function _onVolumeUpdate(volume) { - this.trigger(_events2.default.PLAYER_VOLUMEUPDATE, volume); - }; - - Player.prototype._onSubtitleAvailable = function _onSubtitleAvailable() { - this.trigger(_events2.default.PLAYER_SUBTITLE_AVAILABLE); - }; - - Player.prototype._onPlay = function _onPlay() { - this.trigger(_events2.default.PLAYER_PLAY); - }; - - Player.prototype._onPause = function _onPause() { - this.trigger(_events2.default.PLAYER_PAUSE); - }; - - Player.prototype._onStop = function _onStop() { - this.trigger(_events2.default.PLAYER_STOP, this.getCurrentTime()); - }; - - Player.prototype._onEnded = function _onEnded() { - this.trigger(_events2.default.PLAYER_ENDED); - }; - - Player.prototype._onSeek = function _onSeek(time) { - this.trigger(_events2.default.PLAYER_SEEK, time); - }; - - Player.prototype._onTimeUpdate = function _onTimeUpdate(timeProgress) { - this.trigger(_events2.default.PLAYER_TIMEUPDATE, timeProgress); - }; - - Player.prototype._onError = function _onError(error) { - this.trigger(_events2.default.PLAYER_ERROR, error); - }; - - Player.prototype._normalizeSources = function _normalizeSources(options) { - var sources = options.sources || (options.source !== undefined ? [options.source] : []); - return sources.length === 0 ? [{ source: '', mimeType: '' }] : sources; - }; - - /** - * resizes the current player canvas. - * @method resize - * @param {Object} size should be a literal object with `height` and `width`. - * @return {Player} itself - * @example - * ```javascript - * player.resize({height: 360, width: 640}) - * ``` - */ - - - Player.prototype.resize = function resize(size) { - this.core.resize(size); - return this; - }; - - /** - * loads a new source. - * @method load - * @param {Array|String} sources source or sources of video. - * An array item can be a string or {source: <>, mimeType: <>} - * @param {String} mimeType a mime type, example: `'application/vnd.apple.mpegurl'` - * @param {Boolean} [autoPlay=false] whether playing should be started immediately - * @return {Player} itself - */ - - - Player.prototype.load = function load(sources, mimeType, autoPlay) { - if (autoPlay !== undefined) this.configure({ autoPlay: !!autoPlay }); - - this.core.load(sources, mimeType); - return this; - }; - - /** - * destroys the current player and removes it from the DOM. - * @method destroy - * @return {Player} itself - */ - - - Player.prototype.destroy = function destroy() { - this.core.destroy(); - return this; - }; - - /** - * Gives user consent to playback. Required by mobile device after a click event before Player.load(). - * @method consent - * @return {Player} itself - */ - - - Player.prototype.consent = function consent() { - this.core.getCurrentPlayback().consent(); - return this; - }; - - /** - * plays the current video (`source`). - * @method play - * @return {Player} itself - */ - - - Player.prototype.play = function play() { - this.core.mediaControl.container.play(); - return this; - }; - - /** - * pauses the current video (`source`). - * @method pause - * @return {Player} itself - */ - - - Player.prototype.pause = function pause() { - this.core.mediaControl.container.pause(); - return this; - }; - - /** - * stops the current video (`source`). - * @method stop - * @return {Player} itself - */ - - - Player.prototype.stop = function stop() { - this.core.mediaControl.container.stop(); - return this; - }; - - /** - * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video. - * @method seek - * @param {Number} time should be a number between 0 and the video duration. - * @return {Player} itself - */ - - - Player.prototype.seek = function seek(time) { - this.core.mediaControl.container.seek(time); - return this; - }; - - /** - * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video. - * @method seekPercentage - * @param {Number} time should be a number between 0 and 100. - * @return {Player} itself - */ - - - Player.prototype.seekPercentage = function seekPercentage(percentage) { - this.core.mediaControl.container.seekPercentage(percentage); - return this; - }; - - /** - * Set the volume for the current video (`source`). - * @method setVolume - * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume. - * @return {Player} itself - */ - - - Player.prototype.setVolume = function setVolume(volume) { - if (this.core && this.core.mediaControl) this.core.mediaControl.setVolume(volume); - - return this; - }; - - /** - * Get the volume for the current video - * @method getVolume - * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume. - */ - - - Player.prototype.getVolume = function getVolume() { - return this.core && this.core.mediaControl ? this.core.mediaControl.volume : 0; - }; - - /** - * mutes the current video (`source`). - * @method mute - * @return {Player} itself - */ - - - Player.prototype.mute = function mute() { - this._mutedVolume = this.getVolume(); - this.setVolume(0); - return this; - }; - - /** - * unmutes the current video (`source`). - * @method unmute - * @return {Player} itself - */ - - - Player.prototype.unmute = function unmute() { - this.setVolume(typeof this._mutedVolume === 'number' ? this._mutedVolume : 100); - this._mutedVolume = null; - return this; - }; - - /** - * checks if the player is playing. - * @method isPlaying - * @return {Boolean} `true` if the current source is playing, otherwise `false` - */ - - - Player.prototype.isPlaying = function isPlaying() { - return this.core.mediaControl.container.isPlaying(); - }; - - /** - * returns `true` if DVR is enable otherwise `false`. - * @method isDvrEnabled - * @return {Boolean} - */ - - - Player.prototype.isDvrEnabled = function isDvrEnabled() { - return this.core.mediaControl.container.isDvrEnabled(); - }; - - /** - * returns `true` if DVR is in use otherwise `false`. - * @method isDvrInUse - * @return {Boolean} - */ - - - Player.prototype.isDvrInUse = function isDvrInUse() { - return this.core.mediaControl.container.isDvrInUse(); - }; - - /** - * enables to configure a player after its creation - * @method configure - * @param {Object} options all the options to change in form of a javascript object - * @return {Player} itself - */ - - - Player.prototype.configure = function configure(options) { - this.core.configure(options); - return this; - }; - - /** - * get a plugin by its name. - * @method getPlugin - * @param {String} name of the plugin. - * @return {Object} the plugin instance - * @example - * ```javascript - * var poster = player.getPlugin('poster'); - * poster.hidePlayButton(); - * ``` - */ - - - Player.prototype.getPlugin = function getPlugin(name) { - var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins); - return plugins.filter(function (plugin) { - return plugin.name === name; - })[0]; - }; - - /** - * the current time in seconds. - * @method getCurrentTime - * @return {Number} current time (in seconds) of the current source - */ - - - Player.prototype.getCurrentTime = function getCurrentTime() { - return this.core.mediaControl.container.getCurrentTime(); - }; - - /** - * The time that "0" now represents relative to when playback started. - * For a stream with a sliding window this will increase as content is - * removed from the beginning. - * @method getStartTimeOffset - * @return {Number} time (in seconds) that time "0" represents. - */ - - - Player.prototype.getStartTimeOffset = function getStartTimeOffset() { - return this.core.mediaControl.container.getStartTimeOffset(); - }; - - /** - * the duration time in seconds. - * @method getDuration - * @return {Number} duration time (in seconds) of the current source - */ - - - Player.prototype.getDuration = function getDuration() { - return this.core.mediaControl.container.getDuration(); - }; - - return Player; -}(_base_object2.default); - -exports.default = Player; -module.exports = exports['default']; - -/***/ }), -/* 90 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(91); -module.exports = __webpack_require__(11).Object.keys; - -/***/ }), -/* 91 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 Object.keys(O) -var toObject = __webpack_require__(39) - , $keys = __webpack_require__(25); - -__webpack_require__(62)('keys', function(){ - return function keys(it){ - return $keys(toObject(it)); - }; -}); - -/***/ }), -/* 92 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(41); -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ - return cof(it) == 'String' ? it.split('') : Object(it); -}; - -/***/ }), -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(14) - , toLength = __webpack_require__(61) - , toIndex = __webpack_require__(94); -module.exports = function(IS_INCLUDES){ - return function($this, el, fromIndex){ - var O = toIObject($this) - , length = toLength(O.length) - , index = toIndex(fromIndex, length) - , value; - // Array#includes uses SameValueZero equality algorithm - if(IS_INCLUDES && el != el)while(length > index){ - value = O[index++]; - if(value != value)return true; - // Array#toIndex ignores holes, Array#includes - not - } else for(;length > index; index++)if(IS_INCLUDES || index in O){ - if(O[index] === el)return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -/***/ }), -/* 94 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(42) - , max = Math.max - , min = Math.min; -module.exports = function(index, length){ - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - -/***/ }), -/* 95 */ -/***/ (function(module, exports) { - -module.exports = function(it){ - if(typeof it != 'function')throw TypeError(it + ' is not a function!'); - return it; -}; - -/***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(97), __esModule: true }; - -/***/ }), -/* 97 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(65); -__webpack_require__(103); -module.exports = __webpack_require__(51).f('iterator'); - -/***/ }), -/* 98 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(42) - , defined = __webpack_require__(40); -// true -> String#at -// false -> String#codePointAt -module.exports = function(TO_STRING){ - return function(that, pos){ - var s = String(defined(that)) - , i = toInteger(pos) - , l = s.length - , a, b; - if(i < 0 || i >= l)return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - -/***/ }), -/* 99 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(49) - , descriptor = __webpack_require__(28) - , setToStringTag = __webpack_require__(50) - , IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(22)(IteratorPrototype, __webpack_require__(12)('iterator'), function(){ return this; }); - -module.exports = function(Constructor, NAME, next){ - Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - -/***/ }), -/* 100 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(16) - , anObject = __webpack_require__(23) - , getKeys = __webpack_require__(25); - -module.exports = __webpack_require__(20) ? Object.defineProperties : function defineProperties(O, Properties){ - anObject(O); - var keys = getKeys(Properties) - , length = keys.length - , i = 0 - , P; - while(length > i)dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - -/***/ }), -/* 101 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(15).document && document.documentElement; - -/***/ }), -/* 102 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(18) - , toObject = __webpack_require__(39) - , IE_PROTO = __webpack_require__(43)('IE_PROTO') - , ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function(O){ - O = toObject(O); - if(has(O, IE_PROTO))return O[IE_PROTO]; - if(typeof O.constructor == 'function' && O instanceof O.constructor){ - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - -/***/ }), -/* 103 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(104); -var global = __webpack_require__(15) - , hide = __webpack_require__(22) - , Iterators = __webpack_require__(29) - , TO_STRING_TAG = __webpack_require__(12)('toStringTag'); - -for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ - var NAME = collections[i] - , Collection = global[NAME] - , proto = Collection && Collection.prototype; - if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - -/***/ }), -/* 104 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(105) - , step = __webpack_require__(106) - , Iterators = __webpack_require__(29) - , toIObject = __webpack_require__(14); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(66)(Array, 'Array', function(iterated, kind){ - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function(){ - var O = this._t - , kind = this._k - , index = this._i++; - if(!O || index >= O.length){ - this._t = undefined; - return step(1); - } - if(kind == 'keys' )return step(0, index); - if(kind == 'values')return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - -/***/ }), -/* 105 */ -/***/ (function(module, exports) { - -module.exports = function(){ /* empty */ }; - -/***/ }), -/* 106 */ -/***/ (function(module, exports) { - -module.exports = function(done, value){ - return {value: value, done: !!done}; -}; - -/***/ }), -/* 107 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(108), __esModule: true }; - -/***/ }), -/* 108 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(109); -__webpack_require__(115); -__webpack_require__(116); -__webpack_require__(117); -module.exports = __webpack_require__(11).Symbol; - -/***/ }), -/* 109 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(15) - , has = __webpack_require__(18) - , DESCRIPTORS = __webpack_require__(20) - , $export = __webpack_require__(19) - , redefine = __webpack_require__(67) - , META = __webpack_require__(110).KEY - , $fails = __webpack_require__(27) - , shared = __webpack_require__(44) - , setToStringTag = __webpack_require__(50) - , uid = __webpack_require__(32) - , wks = __webpack_require__(12) - , wksExt = __webpack_require__(51) - , wksDefine = __webpack_require__(52) - , keyOf = __webpack_require__(111) - , enumKeys = __webpack_require__(112) - , isArray = __webpack_require__(113) - , anObject = __webpack_require__(23) - , toIObject = __webpack_require__(14) - , toPrimitive = __webpack_require__(47) - , createDesc = __webpack_require__(28) - , _create = __webpack_require__(49) - , gOPNExt = __webpack_require__(114) - , $GOPD = __webpack_require__(54) - , $DP = __webpack_require__(16) - , $keys = __webpack_require__(25) - , gOPD = $GOPD.f - , dP = $DP.f - , gOPN = gOPNExt.f - , $Symbol = global.Symbol - , $JSON = global.JSON - , _stringify = $JSON && $JSON.stringify - , PROTOTYPE = 'prototype' - , HIDDEN = wks('_hidden') - , TO_PRIMITIVE = wks('toPrimitive') - , isEnum = {}.propertyIsEnumerable - , SymbolRegistry = shared('symbol-registry') - , AllSymbols = shared('symbols') - , OPSymbols = shared('op-symbols') - , ObjectProto = Object[PROTOTYPE] - , USE_NATIVE = typeof $Symbol == 'function' - , QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function(){ - return _create(dP({}, 'a', { - get: function(){ return dP(this, 'a', {value: 7}).a; } - })).a != 7; -}) ? function(it, key, D){ - var protoDesc = gOPD(ObjectProto, key); - if(protoDesc)delete ObjectProto[key]; - dP(it, key, D); - if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function(tag){ - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){ - return typeof it == 'symbol'; -} : function(it){ - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D){ - if(it === ObjectProto)$defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if(has(AllSymbols, key)){ - if(!D.enumerable){ - if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; - D = _create(D, {enumerable: createDesc(0, false)}); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P){ - anObject(it); - var keys = enumKeys(P = toIObject(P)) - , i = 0 - , l = keys.length - , key; - while(l > i)$defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P){ - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key){ - var E = isEnum.call(this, key = toPrimitive(key, true)); - if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ - it = toIObject(it); - key = toPrimitive(key, true); - if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return; - var D = gOPD(it, key); - if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it){ - var names = gOPN(toIObject(it)) - , result = [] - , i = 0 - , key; - while(names.length > i){ - if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ - var IS_OP = it === ObjectProto - , names = gOPN(IS_OP ? OPSymbols : toIObject(it)) - , result = [] - , i = 0 - , key; - while(names.length > i){ - if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if(!USE_NATIVE){ - $Symbol = function Symbol(){ - if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function(value){ - if(this === ObjectProto)$set.call(OPSymbols, value); - if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set}); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString(){ - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(69).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(53).f = $propertyIsEnumerable; - __webpack_require__(68).f = $getOwnPropertySymbols; - - if(DESCRIPTORS && !__webpack_require__(48)){ - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function(name){ - return wrap(wks(name)); - } -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol}); - -for(var symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), i = 0; symbols.length > i; )wks(symbols[i++]); - -for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function(key){ - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(key){ - if(isSymbol(key))return keyOf(SymbolRegistry, key); - throw TypeError(key + ' is not a symbol!'); - }, - useSetter: function(){ setter = true; }, - useSimple: function(){ setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){ - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it){ - if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined - var args = [it] - , i = 1 - , replacer, $replacer; - while(arguments.length > i)args.push(arguments[i++]); - replacer = args[1]; - if(typeof replacer == 'function')$replacer = replacer; - if($replacer || !isArray(replacer))replacer = function(key, value){ - if($replacer)value = $replacer.call(this, key, value); - if(!isSymbol(value))return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(22)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - -/***/ }), -/* 110 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(32)('meta') - , isObject = __webpack_require__(26) - , has = __webpack_require__(18) - , setDesc = __webpack_require__(16).f - , id = 0; -var isExtensible = Object.isExtensible || function(){ - return true; -}; -var FREEZE = !__webpack_require__(27)(function(){ - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function(it){ - setDesc(it, META, {value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - }}); -}; -var fastKey = function(it, create){ - // return primitive with prefix - if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if(!has(it, META)){ - // can't set metadata to uncaught frozen object - if(!isExtensible(it))return 'F'; - // not necessary to add metadata - if(!create)return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function(it, create){ - if(!has(it, META)){ - // can't set metadata to uncaught frozen object - if(!isExtensible(it))return true; - // not necessary to add metadata - if(!create)return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function(it){ - if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - -/***/ }), -/* 111 */ -/***/ (function(module, exports, __webpack_require__) { - -var getKeys = __webpack_require__(25) - , toIObject = __webpack_require__(14); -module.exports = function(object, el){ - var O = toIObject(object) - , keys = getKeys(O) - , length = keys.length - , index = 0 - , key; - while(length > index)if(O[key = keys[index++]] === el)return key; -}; - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(25) - , gOPS = __webpack_require__(68) - , pIE = __webpack_require__(53); -module.exports = function(it){ - var result = getKeys(it) - , getSymbols = gOPS.f; - if(getSymbols){ - var symbols = getSymbols(it) - , isEnum = pIE.f - , i = 0 - , key; - while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key); - } return result; -}; - -/***/ }), -/* 113 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(41); -module.exports = Array.isArray || function isArray(arg){ - return cof(arg) == 'Array'; -}; - -/***/ }), -/* 114 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(14) - , gOPN = __webpack_require__(69).f - , toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function(it){ - try { - return gOPN(it); - } catch(e){ - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it){ - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 115 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 116 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(52)('asyncIterator'); - -/***/ }), -/* 117 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(52)('observable'); - -/***/ }), -/* 118 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(119); -var $Object = __webpack_require__(11).Object; -module.exports = function defineProperty(it, key, desc){ - return $Object.defineProperty(it, key, desc); -}; - -/***/ }), -/* 119 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(19); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !__webpack_require__(20), 'Object', {defineProperty: __webpack_require__(16).f}); - -/***/ }), -/* 120 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(121), __esModule: true }; - -/***/ }), -/* 121 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(122); -module.exports = __webpack_require__(11).Object.setPrototypeOf; - -/***/ }), -/* 122 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.3.19 Object.setPrototypeOf(O, proto) -var $export = __webpack_require__(19); -$export($export.S, 'Object', {setPrototypeOf: __webpack_require__(123).set}); - -/***/ }), -/* 123 */ -/***/ (function(module, exports, __webpack_require__) { - -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -var isObject = __webpack_require__(26) - , anObject = __webpack_require__(23); -var check = function(O, proto){ - anObject(O); - if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); -}; -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line - function(test, buggy, set){ - try { - set = __webpack_require__(46)(Function.call, __webpack_require__(54).f(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch(e){ buggy = true; } - return function setPrototypeOf(O, proto){ - check(O, proto); - if(buggy)O.__proto__ = proto; - else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check -}; - -/***/ }), -/* 124 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(125); -var $Object = __webpack_require__(11).Object; -module.exports = function create(P, D){ - return $Object.create(P, D); -}; - -/***/ }), -/* 125 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(19) -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -$export($export.S, 'Object', {create: __webpack_require__(49)}); - -/***/ }), -/* 126 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(127), __esModule: true }; - -/***/ }), -/* 127 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(128); -var $Object = __webpack_require__(11).Object; -module.exports = function getOwnPropertyDescriptor(it, key){ - return $Object.getOwnPropertyDescriptor(it, key); -}; - -/***/ }), -/* 128 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) -var toIObject = __webpack_require__(14) - , $getOwnPropertyDescriptor = __webpack_require__(54).f; - -__webpack_require__(62)('getOwnPropertyDescriptor', function(){ - return function getOwnPropertyDescriptor(it, key){ - return $getOwnPropertyDescriptor(toIObject(it), key); - }; -}); - -/***/ }), -/* 129 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/** - * Array.prototype.find - * - * Original source : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find - * See also : https://tc39.github.io/ecma262/#sec-array.prototype.find - */ -if (!Array.prototype.find) { - // eslint-disable-next-line - Object.defineProperty(Array.prototype, 'find', { - // Note: ES6 arrow function syntax is not used on purpose to avoid this to be undefined - value: function value(predicate) { - // 1. Let O be ? ToObject(this value). - if (this == null) throw new TypeError('"this" is null or not defined'); - - var o = Object(this); - - // 2. Let len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. If IsCallable(predicate) is false, throw a TypeError exception. - if (typeof predicate !== 'function') throw new TypeError('predicate must be a function'); - - // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. - var thisArg = arguments[1]; - - // 5. Let k be 0. - var k = 0; - - // 6. Repeat, while k < len - while (k < len) { - // a. Let Pk be ! ToString(k). - // b. Let kValue be ? Get(O, Pk). - // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). - // d. If testResult is true, return kValue. - var kValue = o[k]; - if (predicate.call(thisArg, kValue, k, o)) return kValue; - - // e. Increase k by 1. - k++; - } - - // 7. Return undefined. - return undefined; - } - }); -} - -/***/ }), -/* 130 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _vendor = __webpack_require__(56); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var BOLD = 'font-weight: bold; font-size: 13px;'; -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -var INFO = 'color: #006600;' + BOLD; -var DEBUG = 'color: #0000ff;' + BOLD; -var WARN = 'color: #ff8000;' + BOLD; -var ERROR = 'color: #ff0000;' + BOLD; - -var LEVEL_DEBUG = 0; -var LEVEL_INFO = 1; -var LEVEL_WARN = 2; -var LEVEL_ERROR = 3; -var LEVEL_DISABLED = LEVEL_ERROR; - -var COLORS = [DEBUG, INFO, WARN, ERROR, ERROR]; -var DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled']; - -var Log = function () { - function Log() { - var _this = this; - - var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : LEVEL_INFO; - var offLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LEVEL_DISABLED; - (0, _classCallCheck3.default)(this, Log); - - this.kibo = new _vendor.Kibo(); - this.kibo.down(['ctrl shift d'], function () { - return _this.onOff(); - }); - this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress']; - this.level = level; - this.offLevel = offLevel; - } - - Log.prototype.debug = function debug(klass) { - this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1)); - }; - - Log.prototype.info = function info(klass) { - this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1)); - }; - - Log.prototype.warn = function warn(klass) { - this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1)); - }; - - Log.prototype.error = function error(klass) { - this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1)); - }; - - Log.prototype.onOff = function onOff() { - if (this.level === this.offLevel) { - this.level = this.previousLevel; - } else { - this.previousLevel = this.level; - this.level = this.offLevel; - } - // handle instances where console.log is unavailable - if (window.console && window.console.log) window.console.log('%c[Clappr.Log] set log level to ' + DESCRIPTIONS[this.level], WARN); - }; - - Log.prototype.level = function level(newLevel) { - this.level = newLevel; - }; - - Log.prototype.log = function log(klass, level, message) { - if (this.BLACKLIST.indexOf(message[0]) >= 0) return; - if (level < this.level) return; - - if (!message) { - message = klass; - klass = null; - } - var color = COLORS[level]; - var klassDescription = ''; - if (klass) klassDescription = '[' + klass + ']'; - - if (window.console && window.console.log) window.console.log.apply(console, ['%c[' + DESCRIPTIONS[level] + ']' + klassDescription, color].concat(message)); - }; - - return Log; -}(); - -exports.default = Log; - - -Log.LEVEL_DEBUG = LEVEL_DEBUG; -Log.LEVEL_INFO = LEVEL_INFO; -Log.LEVEL_WARN = LEVEL_WARN; -Log.LEVEL_ERROR = LEVEL_ERROR; - -Log.getInstance = function () { - if (this._instance === undefined) { - this._instance = new this(); - this._instance.previousLevel = this._instance.level; - this._instance.level = this._instance.offLevel; - } - return this._instance; -}; - -Log.setLevel = function (level) { - this.getInstance().level = level; -}; - -Log.debug = function () { - this.getInstance().debug.apply(this.getInstance(), arguments); -}; -Log.info = function () { - this.getInstance().info.apply(this.getInstance(), arguments); -}; -Log.warn = function () { - this.getInstance().warn.apply(this.getInstance(), arguments); -}; -Log.error = function () { - this.getInstance().error.apply(this.getInstance(), arguments); -}; -module.exports = exports['default']; - -/***/ }), -/* 131 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* eslint-disable */ -// Kibo is released under the MIT License. Copyright (c) 2013 marquete. -// see https://github.com/marquete/kibo - -var Kibo = function Kibo(element) { - this.element = element || window.document; - this.initialize(); -}; - -Kibo.KEY_NAMES_BY_CODE = { - 8: 'backspace', 9: 'tab', 13: 'enter', - 16: 'shift', 17: 'ctrl', 18: 'alt', - 20: 'caps_lock', - 27: 'esc', - 32: 'space', - 37: 'left', 38: 'up', 39: 'right', 40: 'down', - 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', 54: '6', 55: '7', 56: '8', 57: '9', - 65: 'a', 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', 73: 'i', 74: 'j', - 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', - 85: 'u', 86: 'v', 87: 'w', 88: 'x', 89: 'y', 90: 'z', 112: 'f1', 113: 'f2', 114: 'f3', - 115: 'f4', 116: 'f5', 117: 'f6', 118: 'f7', 119: 'f8', 120: 'f9', 121: 'f10', 122: 'f11', 123: 'f12' -}; - -Kibo.KEY_CODES_BY_NAME = {}; -(function () { - for (var key in Kibo.KEY_NAMES_BY_CODE) { - if (Object.prototype.hasOwnProperty.call(Kibo.KEY_NAMES_BY_CODE, key)) { - Kibo.KEY_CODES_BY_NAME[Kibo.KEY_NAMES_BY_CODE[key]] = +key; - } - } -})(); - -Kibo.MODIFIERS = ['shift', 'ctrl', 'alt']; - -Kibo.registerEvent = function () { - if (document.addEventListener) { - return function (element, eventName, func) { - element.addEventListener(eventName, func, false); - }; - } else if (document.attachEvent) { - return function (element, eventName, func) { - element.attachEvent('on' + eventName, func); - }; - } -}(); - -Kibo.unregisterEvent = function () { - if (document.removeEventListener) { - return function (element, eventName, func) { - element.removeEventListener(eventName, func, false); - }; - } else if (document.detachEvent) { - return function (element, eventName, func) { - element.detachEvent('on' + eventName, func); - }; - } -}(); - -Kibo.stringContains = function (string, substring) { - return string.indexOf(substring) !== -1; -}; - -Kibo.neatString = function (string) { - return string.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' '); -}; - -Kibo.capitalize = function (string) { - return string.toLowerCase().replace(/^./, function (match) { - return match.toUpperCase(); - }); -}; - -Kibo.isString = function (what) { - return Kibo.stringContains(Object.prototype.toString.call(what), 'String'); -}; - -Kibo.arrayIncludes = function () { - if (Array.prototype.indexOf) { - return function (haystack, needle) { - return haystack.indexOf(needle) !== -1; - }; - } else { - return function (haystack, needle) { - for (var i = 0; i < haystack.length; i++) { - if (haystack[i] === needle) { - return true; - } - } - return false; - }; - } -}(); - -Kibo.extractModifiers = function (keyCombination) { - var modifiers, i; - modifiers = []; - for (i = 0; i < Kibo.MODIFIERS.length; i++) { - if (Kibo.stringContains(keyCombination, Kibo.MODIFIERS[i])) { - modifiers.push(Kibo.MODIFIERS[i]); - } - } - return modifiers; -}; - -Kibo.extractKey = function (keyCombination) { - var keys, i; - keys = Kibo.neatString(keyCombination).split(' '); - for (i = 0; i < keys.length; i++) { - if (!Kibo.arrayIncludes(Kibo.MODIFIERS, keys[i])) { - return keys[i]; - } - } -}; - -Kibo.modifiersAndKey = function (keyCombination) { - var result, key; - - if (Kibo.stringContains(keyCombination, 'any')) { - return Kibo.neatString(keyCombination).split(' ').slice(0, 2).join(' '); - } - - result = Kibo.extractModifiers(keyCombination); - - key = Kibo.extractKey(keyCombination); - if (key && !Kibo.arrayIncludes(Kibo.MODIFIERS, key)) { - result.push(key); - } - - return result.join(' '); -}; - -Kibo.keyName = function (keyCode) { - return Kibo.KEY_NAMES_BY_CODE[keyCode + '']; -}; - -Kibo.keyCode = function (keyName) { - return +Kibo.KEY_CODES_BY_NAME[keyName]; -}; - -Kibo.prototype.initialize = function () { - var i, - that = this; - - this.lastKeyCode = -1; - this.lastModifiers = {}; - for (i = 0; i < Kibo.MODIFIERS.length; i++) { - this.lastModifiers[Kibo.MODIFIERS[i]] = false; - } - - this.keysDown = { any: [] }; - this.keysUp = { any: [] }; - this.downHandler = this.handler('down'); - this.upHandler = this.handler('up'); - - Kibo.registerEvent(this.element, 'keydown', this.downHandler); - Kibo.registerEvent(this.element, 'keyup', this.upHandler); - Kibo.registerEvent(window, 'unload', function unloader() { - Kibo.unregisterEvent(that.element, 'keydown', that.downHandler); - Kibo.unregisterEvent(that.element, 'keyup', that.upHandler); - Kibo.unregisterEvent(window, 'unload', unloader); - }); -}; - -Kibo.prototype.handler = function (upOrDown) { - var that = this; - return function (e) { - var i, registeredKeys, lastModifiersAndKey; - - e = e || window.event; - - that.lastKeyCode = e.keyCode; - for (i = 0; i < Kibo.MODIFIERS.length; i++) { - that.lastModifiers[Kibo.MODIFIERS[i]] = e[Kibo.MODIFIERS[i] + 'Key']; - } - if (Kibo.arrayIncludes(Kibo.MODIFIERS, Kibo.keyName(that.lastKeyCode))) { - that.lastModifiers[Kibo.keyName(that.lastKeyCode)] = true; - } - - registeredKeys = that['keys' + Kibo.capitalize(upOrDown)]; - - for (i = 0; i < registeredKeys.any.length; i++) { - if (registeredKeys.any[i](e) === false && e.preventDefault) { - e.preventDefault(); - } - } - - lastModifiersAndKey = that.lastModifiersAndKey(); - if (registeredKeys[lastModifiersAndKey]) { - for (i = 0; i < registeredKeys[lastModifiersAndKey].length; i++) { - if (registeredKeys[lastModifiersAndKey][i](e) === false && e.preventDefault) { - e.preventDefault(); - } - } - } - }; -}; - -Kibo.prototype.registerKeys = function (upOrDown, newKeys, func) { - var i, - keys, - registeredKeys = this['keys' + Kibo.capitalize(upOrDown)]; - - if (Kibo.isString(newKeys)) { - newKeys = [newKeys]; - } - - for (i = 0; i < newKeys.length; i++) { - keys = newKeys[i]; - keys = Kibo.modifiersAndKey(keys + ''); - - if (registeredKeys[keys]) { - registeredKeys[keys].push(func); - } else { - registeredKeys[keys] = [func]; - } - } - - return this; -}; - -// jshint maxdepth:5 -Kibo.prototype.unregisterKeys = function (upOrDown, newKeys, func) { - var i, - j, - keys, - registeredKeys = this['keys' + Kibo.capitalize(upOrDown)]; - - if (Kibo.isString(newKeys)) { - newKeys = [newKeys]; - } - - for (i = 0; i < newKeys.length; i++) { - keys = newKeys[i]; - keys = Kibo.modifiersAndKey(keys + ''); - - if (func === null) { - delete registeredKeys[keys]; - } else { - if (registeredKeys[keys]) { - for (j = 0; j < registeredKeys[keys].length; j++) { - if (String(registeredKeys[keys][j]) === String(func)) { - registeredKeys[keys].splice(j, 1); - break; - } - } - } - } - } - - return this; -}; - -Kibo.prototype.off = function (keys) { - return this.unregisterKeys('down', keys, null); -}; - -Kibo.prototype.delegate = function (upOrDown, keys, func) { - return func !== null || func !== undefined ? this.registerKeys(upOrDown, keys, func) : this.unregisterKeys(upOrDown, keys, func); -}; - -Kibo.prototype.down = function (keys, func) { - return this.delegate('down', keys, func); -}; - -Kibo.prototype.up = function (keys, func) { - return this.delegate('up', keys, func); -}; - -Kibo.prototype.lastKey = function (modifier) { - if (!modifier) { - return Kibo.keyName(this.lastKeyCode); - } - - return this.lastModifiers[modifier]; -}; - -Kibo.prototype.lastModifiersAndKey = function () { - var result, i; - - result = []; - for (i = 0; i < Kibo.MODIFIERS.length; i++) { - if (this.lastKey(Kibo.MODIFIERS[i])) { - result.push(Kibo.MODIFIERS[i]); - } - } - - if (!Kibo.arrayIncludes(result, this.lastKey())) { - result.push(this.lastKey()); - } - - return result.join(' '); -}; - -exports.default = Kibo; -module.exports = exports['default']; - -/***/ }), -/* 132 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _core_factory = __webpack_require__(133); - -var _core_factory2 = _interopRequireDefault(_core_factory); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _core_factory2.default; -module.exports = exports['default']; - -/***/ }), -/* 133 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _base_object = __webpack_require__(17); - -var _base_object2 = _interopRequireDefault(_base_object); - -var _core = __webpack_require__(72); - -var _core2 = _interopRequireDefault(_core); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The Core Factory is responsible for instantiate the core and it's plugins. - * @class CoreFactory - * @constructor - * @extends BaseObject - * @module components - */ -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -var CoreFactory = function (_BaseObject) { - (0, _inherits3.default)(CoreFactory, _BaseObject); - (0, _createClass3.default)(CoreFactory, [{ - key: 'loader', - get: function get() { - return this.player.loader; - } - - /** - * it builds the core factory - * @method constructor - * @param {Player} player the player object - */ - - }]); - - function CoreFactory(player) { - (0, _classCallCheck3.default)(this, CoreFactory); - - var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this)); - - _this.player = player; - _this._options = player.options; - return _this; - } - - /** - * creates a core and its plugins - * @method create - * @return {Core} created core - */ - - - CoreFactory.prototype.create = function create() { - this.options.loader = this.loader; - this.core = new _core2.default(this.options); - this.addCorePlugins(); - this.core.createContainers(this.options); - return this.core; - }; - - /** - * given the core plugins (`loader.corePlugins`) it builds each one - * @method addCorePlugins - * @return {Core} the core with all plugins - */ - - - CoreFactory.prototype.addCorePlugins = function addCorePlugins() { - var _this2 = this; - - this.loader.corePlugins.forEach(function (Plugin) { - var plugin = new Plugin(_this2.core); - _this2.core.addPlugin(plugin); - _this2.setupExternalInterface(plugin); - }); - return this.core; - }; - - CoreFactory.prototype.setupExternalInterface = function setupExternalInterface(plugin) { - var externalFunctions = plugin.getExternalInterface(); - for (var key in externalFunctions) { - this.player[key] = externalFunctions[key].bind(plugin); - } - }; - - return CoreFactory; -}(_base_object2.default); - -exports.default = CoreFactory; -module.exports = exports['default']; - -/***/ }), -/* 134 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _utils = __webpack_require__(5); - -var _events = __webpack_require__(4); - -var _events2 = _interopRequireDefault(_events); - -var _ui_object = __webpack_require__(21); - -var _ui_object2 = _interopRequireDefault(_ui_object); - -var _browser = __webpack_require__(13); - -var _browser2 = _interopRequireDefault(_browser); - -var _container_factory = __webpack_require__(135); - -var _container_factory2 = _interopRequireDefault(_container_factory); - -var _media_control = __webpack_require__(74); - -var _media_control2 = _interopRequireDefault(_media_control); - -var _mediator = __webpack_require__(24); - -var _mediator2 = _interopRequireDefault(_mediator); - -var _player_info = __webpack_require__(34); - -var _player_info2 = _interopRequireDefault(_player_info); - -var _styler = __webpack_require__(77); - -var _styler2 = _interopRequireDefault(_styler); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -__webpack_require__(153); - -var _fonts = __webpack_require__(155); - -var _fonts2 = _interopRequireDefault(_fonts); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -var style = void 0; - -/** - * The Core is responsible to manage Containers, the mediator, MediaControl - * and the player state. - * @class Core - * @constructor - * @extends UIObject - * @module components - */ - -var Core = function (_UIObject) { - (0, _inherits3.default)(Core, _UIObject); - (0, _createClass3.default)(Core, [{ - key: 'events', - get: function get() { - return { - 'webkitfullscreenchange': 'handleFullscreenChange', - 'mousemove': 'showMediaControl', - 'mouseleave': 'hideMediaControl' - }; - } - }, { - key: 'attributes', - get: function get() { - return { - 'data-player': '', - tabindex: 9999 - }; - } - - /** - * checks if the core is ready. - * @property isReady - * @type {Boolean} `true` if the core is ready, otherwise `false` - */ - - }, { - key: 'isReady', - get: function get() { - return !!this.ready; - } - - /** - * The internationalization plugin. - * @property i18n - * @type {Strings} - */ - - }, { - key: 'i18n', - get: function get() { - return this.getPlugin('strings') || { t: function t(key) { - return key; - } }; - } - }]); - - function Core(options) { - (0, _classCallCheck3.default)(this, Core); - - var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options)); - - _this.configureDomRecycler(); - _this.playerInfo = _player_info2.default.getInstance(options.playerId); - _this.firstResize = true; - _this.plugins = []; - _this.containers = []; - _this.setupMediaControl(null); - //FIXME fullscreen api sucks - _this._boundFullscreenHandler = function () { - return _this.handleFullscreenChange(); - }; - (0, _clapprZepto2.default)(document).bind('fullscreenchange', _this._boundFullscreenHandler); - (0, _clapprZepto2.default)(document).bind('MSFullscreenChange', _this._boundFullscreenHandler); - (0, _clapprZepto2.default)(document).bind('mozfullscreenchange', _this._boundFullscreenHandler); - _browser2.default.isMobile && (0, _clapprZepto2.default)(window).bind('resize', function (o) { - _this.handleWindowResize(o); - }); - return _this; - } - - Core.prototype.configureDomRecycler = function configureDomRecycler() { - var recycleVideo = this.options && this.options.playback && this.options.playback.recycleVideo ? true : false; - _utils.DomRecycler.configure({ - recycleVideo: recycleVideo - }); - }; - - Core.prototype.createContainers = function createContainers(options) { - var _this2 = this; - - this.defer = _clapprZepto2.default.Deferred(); - this.defer.promise(this); - this.containerFactory = new _container_factory2.default(options, options.loader, this.i18n); - this.containerFactory.createContainers().then(function (containers) { - return _this2.setupContainers(containers); - }).then(function (containers) { - return _this2.resolveOnContainersReady(containers); - }); - }; - - Core.prototype.updateSize = function updateSize() { - if (_utils.Fullscreen.isFullscreen()) this.setFullscreen();else this.setPlayerSize(); - }; - - Core.prototype.setFullscreen = function setFullscreen() { - if (!_browser2.default.isiOS) { - this.$el.addClass('fullscreen'); - this.$el.removeAttr('style'); - this.playerInfo.previousSize = { width: this.options.width, height: this.options.height }; - this.playerInfo.currentSize = { width: (0, _clapprZepto2.default)(window).width(), height: (0, _clapprZepto2.default)(window).height() }; - } - }; - - Core.prototype.setPlayerSize = function setPlayerSize() { - this.$el.removeClass('fullscreen'); - this.playerInfo.currentSize = this.playerInfo.previousSize; - this.playerInfo.previousSize = { width: (0, _clapprZepto2.default)(window).width(), height: (0, _clapprZepto2.default)(window).height() }; - this.resize(this.playerInfo.currentSize); - }; - - Core.prototype.resize = function resize(options) { - if (!(0, _utils.isNumber)(options.height) && !(0, _utils.isNumber)(options.width)) { - this.el.style.height = '' + options.height; - this.el.style.width = '' + options.width; - } else { - this.el.style.height = options.height + 'px'; - this.el.style.width = options.width + 'px'; - } - this.playerInfo.previousSize = { width: this.options.width, height: this.options.height }; - this.options.width = options.width; - this.options.height = options.height; - this.playerInfo.currentSize = options; - this.triggerResize(this.playerInfo.currentSize); - }; - - Core.prototype.enableResizeObserver = function enableResizeObserver() { - var _this3 = this; - - var checkSizeCallback = function checkSizeCallback() { - if (_this3.playerInfo.computedSize.width !== _this3.el.clientWidth || _this3.playerInfo.computedSize.height !== _this3.el.clientHeight) { - _this3.playerInfo.computedSize = { width: _this3.el.clientWidth, height: _this3.el.clientHeight }; - _this3.triggerResize(_this3.playerInfo.computedSize); - } - }; - this.resizeObserverInterval = setInterval(checkSizeCallback, 500); - }; - - Core.prototype.triggerResize = function triggerResize(newSize) { - var thereWasChange = this.firstResize || this.oldHeight !== newSize.height || this.oldWidth !== newSize.width; - if (thereWasChange) { - _mediator2.default.trigger(this.options.playerId + ':' + _events2.default.PLAYER_RESIZE, newSize); - this.oldHeight = newSize.height; - this.oldWidth = newSize.width; - this.firstResize = false; - } - }; - - Core.prototype.disableResizeObserver = function disableResizeObserver() { - if (this.resizeObserverInterval) clearInterval(this.resizeObserverInterval); - }; - - Core.prototype.resolveOnContainersReady = function resolveOnContainersReady(containers) { - var _this4 = this; - - _clapprZepto2.default.when.apply(_clapprZepto2.default, containers).done(function () { - _this4.defer.resolve(_this4); - _this4.ready = true; - _this4.trigger(_events2.default.CORE_READY); - }); - }; - - Core.prototype.addPlugin = function addPlugin(plugin) { - this.plugins.push(plugin); - }; - - Core.prototype.hasPlugin = function hasPlugin(name) { - return !!this.getPlugin(name); - }; - - Core.prototype.getPlugin = function getPlugin(name) { - return this.plugins.filter(function (plugin) { - return plugin.name === name; - })[0]; - }; - - Core.prototype.load = function load(sources, mimeType) { - var _this5 = this; - - this.options.mimeType = mimeType; - sources = sources && sources.constructor === Array ? sources : [sources]; - this.containers.forEach(function (container) { - return container.destroy(); - }); - this.mediaControl.container = null; - this.containerFactory.options = _clapprZepto2.default.extend(this.options, { sources: sources }); - this.containerFactory.createContainers().then(function (containers) { - _this5.setupContainers(containers); - }); - }; - - Core.prototype.destroy = function destroy() { - this.disableResizeObserver(); - this.containers.forEach(function (container) { - return container.destroy(); - }); - this.plugins.forEach(function (plugin) { - return plugin.destroy(); - }); - this.$el.remove(); - this.mediaControl.destroy(); - (0, _clapprZepto2.default)(document).unbind('fullscreenchange', this._boundFullscreenHandler); - (0, _clapprZepto2.default)(document).unbind('MSFullscreenChange', this._boundFullscreenHandler); - (0, _clapprZepto2.default)(document).unbind('mozfullscreenchange', this._boundFullscreenHandler); - }; - - Core.prototype.handleFullscreenChange = function handleFullscreenChange() { - this.trigger(_events2.default.CORE_FULLSCREEN, _utils.Fullscreen.isFullscreen()); - this.updateSize(); - this.mediaControl.show(); - }; - - Core.prototype.handleWindowResize = function handleWindowResize(event) { - var orientation = (0, _clapprZepto2.default)(window).width() > (0, _clapprZepto2.default)(window).height() ? 'landscape' : 'portrait'; - if (this._screenOrientation === orientation) return; - this._screenOrientation = orientation; - - this.trigger(_events2.default.CORE_SCREEN_ORIENTATION_CHANGED, { - event: event, - orientation: this._screenOrientation - }); - }; - - Core.prototype.setMediaControlContainer = function setMediaControlContainer(container) { - this.mediaControl.setContainer(container); - this.mediaControl.render(); - }; - - Core.prototype.disableMediaControl = function disableMediaControl() { - this.mediaControl.disable(); - this.$el.removeClass('nocursor'); - }; - - Core.prototype.enableMediaControl = function enableMediaControl() { - this.mediaControl.enable(); - }; - - Core.prototype.removeContainer = function removeContainer(container) { - this.stopListening(container); - this.containers = this.containers.filter(function (c) { - return c !== container; - }); - }; - - Core.prototype.appendContainer = function appendContainer(container) { - this.listenTo(container, _events2.default.CONTAINER_DESTROYED, this.removeContainer); - this.containers.push(container); - }; - - Core.prototype.setupContainers = function setupContainers(containers) { - containers.map(this.appendContainer.bind(this)); - this.trigger(_events2.default.CORE_CONTAINERS_CREATED); - this.renderContainers(); - this.setupMediaControl(this.getCurrentContainer()); - this.render(); - this.appendToParent(); - return this.containers; - }; - - Core.prototype.renderContainers = function renderContainers() { - var _this6 = this; - - this.containers.map(function (container) { - return _this6.el.appendChild(container.render().el); - }); - }; - - Core.prototype.createContainer = function createContainer(source, options) { - var container = this.containerFactory.createContainer(source, options); - this.appendContainer(container); - this.el.appendChild(container.render().el); - return container; - }; - - Core.prototype.setupMediaControl = function setupMediaControl(container) { - if (this.mediaControl) { - this.mediaControl.setContainer(container); - } else { - this.mediaControl = this.createMediaControl(_clapprZepto2.default.extend({ container: container, focusElement: this.el }, this.options)); - this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_FULLSCREEN, this.toggleFullscreen); - this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_SHOW, this.onMediaControlShow.bind(this, true)); - this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_HIDE, this.onMediaControlShow.bind(this, false)); - } - }; - - Core.prototype.createMediaControl = function createMediaControl(options) { - if (options.mediacontrol && options.mediacontrol.external) return new options.mediacontrol.external(options).render();else return new _media_control2.default(options).render(); - }; - - Core.prototype.getCurrentContainer = function getCurrentContainer() { - if (!this.mediaControl || !this.mediaControl.container) return this.containers[0]; - - return this.mediaControl.container; - }; - - Core.prototype.getCurrentPlayback = function getCurrentPlayback() { - var container = this.getCurrentContainer(); - return container && container.playback; - }; - - Core.prototype.getPlaybackType = function getPlaybackType() { - var container = this.getCurrentContainer(); - return container && container.getPlaybackType(); - }; - - Core.prototype.toggleFullscreen = function toggleFullscreen() { - if (!_utils.Fullscreen.isFullscreen()) { - _utils.Fullscreen.requestFullscreen(this.el); - if (!_browser2.default.isiOS) this.$el.addClass('fullscreen'); - } else { - _utils.Fullscreen.cancelFullscreen(); - if (!_browser2.default.isiOS) this.$el.removeClass('fullscreen nocursor'); - } - this.mediaControl.show(); - }; - - Core.prototype.showMediaControl = function showMediaControl(event) { - this.mediaControl.show(event); - }; - - Core.prototype.hideMediaControl = function hideMediaControl() { - this.mediaControl.hide(this.options.hideMediaControlDelay); - }; - - Core.prototype.onMediaControlShow = function onMediaControlShow(showing) { - this.getCurrentContainer().trigger(showing ? _events2.default.CONTAINER_MEDIACONTROL_SHOW : _events2.default.CONTAINER_MEDIACONTROL_HIDE); - - if (showing) this.$el.removeClass('nocursor');else if (_utils.Fullscreen.isFullscreen()) this.$el.addClass('nocursor'); - }; - - /** - * enables to configure the container after its creation - * @method configure - * @param {Object} options all the options to change in form of a javascript object - */ - - - Core.prototype.configure = function configure(options) { - var _this7 = this; - - this._options = _clapprZepto2.default.extend(this._options, options); - this.configureDomRecycler(); - var sources = options.source || options.sources; - - if (sources) { - this.load(sources, options.mimeType || this.options.mimeType); - } else { - this.trigger(_events2.default.CORE_OPTIONS_CHANGE); - - this.containers.forEach(function (container) { - container.configure(_this7.options); - }); - } - }; - - Core.prototype.appendToParent = function appendToParent() { - var hasCoreParent = this.$el.parent() && this.$el.parent().length; - !hasCoreParent && this.$el.appendTo(this.options.parentElement); - }; - - Core.prototype.render = function render() { - this.$el.append(this.mediaControl.render().el); - - if (!style) style = _styler2.default.getStyleFor(_fonts2.default, { baseUrl: this.options.baseUrl }); - - (0, _clapprZepto2.default)('head').append(style); - - this.options.width = this.options.width || this.$el.width(); - this.options.height = this.options.height || this.$el.height(); - var size = { width: this.options.width, height: this.options.height }; - this.playerInfo.previousSize = this.playerInfo.currentSize = this.playerInfo.computedSize = size; - this.updateSize(); - - this.previousSize = { width: this.$el.width(), height: this.$el.height() }; - - this.enableResizeObserver(); - - return this; - }; - - return Core; -}(_ui_object2.default); - -exports.default = Core; -module.exports = exports['default']; - -/***/ }), -/* 135 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _container_factory = __webpack_require__(136); - -var _container_factory2 = _interopRequireDefault(_container_factory); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _container_factory2.default; -module.exports = exports['default']; - -/***/ }), -/* 136 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof2 = __webpack_require__(33); - -var _typeof3 = _interopRequireDefault(_typeof2); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _base_object = __webpack_require__(17); - -var _base_object2 = _interopRequireDefault(_base_object); - -var _events = __webpack_require__(4); - -var _events2 = _interopRequireDefault(_events); - -var _container = __webpack_require__(73); - -var _container2 = _interopRequireDefault(_container); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/** - * The ContainerFactory is responsible for manage playback bootstrap and create containers. - */ - -var ContainerFactory = function (_BaseObject) { - (0, _inherits3.default)(ContainerFactory, _BaseObject); - (0, _createClass3.default)(ContainerFactory, [{ - key: 'options', - get: function get() { - return this._options; - }, - set: function set(options) { - this._options = options; - } - }]); - - function ContainerFactory(options, loader, i18n) { - (0, _classCallCheck3.default)(this, ContainerFactory); - - var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options)); - - _this._i18n = i18n; - _this.loader = loader; - return _this; - } - - ContainerFactory.prototype.createContainers = function createContainers() { - var _this2 = this; - - return _clapprZepto2.default.Deferred(function (promise) { - promise.resolve(_this2.options.sources.map(function (source) { - return _this2.createContainer(source); - })); - }); - }; - - ContainerFactory.prototype.findPlaybackPlugin = function findPlaybackPlugin(source, mimeType) { - return this.loader.playbackPlugins.filter(function (p) { - return p.canPlay(source, mimeType); - })[0]; - }; - - ContainerFactory.prototype.createContainer = function createContainer(source) { - var resolvedSource = null, - mimeType = this.options.mimeType; - if ((typeof source === 'undefined' ? 'undefined' : (0, _typeof3.default)(source)) === 'object') { - resolvedSource = source.source.toString(); - if (source.mimeType) mimeType = source.mimeType; - } else { - resolvedSource = source.toString(); - } - - if (resolvedSource.match(/^\/\//)) resolvedSource = window.location.protocol + resolvedSource; - - var options = _clapprZepto2.default.extend({}, this.options, { - src: resolvedSource, - mimeType: mimeType - }); - var playbackPlugin = this.findPlaybackPlugin(resolvedSource, mimeType); - var playback = new playbackPlugin(options, this._i18n); - - options = _clapprZepto2.default.extend({}, options, { playback: playback }); - - var container = new _container2.default(options, this._i18n); - var defer = _clapprZepto2.default.Deferred(); - defer.promise(container); - this.addContainerPlugins(container); - this.listenToOnce(container, _events2.default.CONTAINER_READY, function () { - return defer.resolve(container); - }); - return container; - }; - - ContainerFactory.prototype.addContainerPlugins = function addContainerPlugins(container) { - this.loader.containerPlugins.forEach(function (Plugin) { - container.addPlugin(new Plugin(container)); - }); - }; - - return ContainerFactory; -}(_base_object2.default); - -exports.default = ContainerFactory; -module.exports = exports['default']; - -/***/ }), -/* 137 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _possibleConstructorReturn2 = __webpack_require__(1); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _createClass2 = __webpack_require__(3); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _inherits2 = __webpack_require__(2); - -var _inherits3 = _interopRequireDefault(_inherits2); - -var _events = __webpack_require__(4); - -var _events2 = _interopRequireDefault(_events); - -var _ui_object = __webpack_require__(21); - -var _ui_object2 = _interopRequireDefault(_ui_object); - -__webpack_require__(138); - -var _clapprZepto = __webpack_require__(6); - -var _clapprZepto2 = _interopRequireDefault(_clapprZepto); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * An abstraction to represent a container for a given playback - * TODO: describe its responsabilities - * @class Container - * @constructor - * @extends UIObject - * @module base - */ -// Copyright 2014 Globo.com Player authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/** - * Container is responsible for the video rendering and state - */ - -var Container = function (_UIObject) { - (0, _inherits3.default)(Container, _UIObject); - (0, _createClass3.default)(Container, [{ - key: 'name', - - /** - * container's name - * @method name - * @default Container - * @return {String} container's name - */ - get: function get() { - return 'Container'; - } - }, { - key: 'attributes', - get: function get() { - return { class: 'container', 'data-container': '' }; - } - }, { - key: 'events', - get: function get() { - return { - 'click': 'clicked', - 'dblclick': 'dblClicked', - 'doubleTap': 'dblClicked', - 'contextmenu': 'onContextMenu', - 'mouseenter': 'mouseEnter', - 'mouseleave': 'mouseLeave' - }; - } - - /** - * Determine if the playback has ended. - * @property ended - * @type Boolean - */ - - }, { - key: 'ended', - get: function get() { - return this.playback.ended; - } - - /** - * Determine if the playback is having to buffer in order for - * playback to be smooth. - * (i.e if a live stream is playing smoothly, this will be false) - * @property buffering - * @type Boolean - */ - - }, { - key: 'buffering', - get: function get() { - return this.playback.buffering; - } - - /** - * The internationalization plugin. - * @property i18n - * @type {Strings} - */ - - }, { - key: 'i18n', - get: function get() { - return this._i18n; - } - - /** - * checks if has closed caption tracks. - * @property hasClosedCaptionsTracks - * @type {Boolean} - */ - - }, { - key: 'hasClosedCaptionsTracks', - get: function get() { - return this.playback.hasClosedCaptionsTracks; - } - - /** - * gets the available closed caption tracks. - * @property closedCaptionsTracks - * @type {Array} an array of objects with at least 'id' and 'name' properties - */ - - }, { - key: 'closedCaptionsTracks', - get: function get() { - return this.playback.closedCaptionsTracks; - } - - /** - * gets the selected closed caption track index. (-1 is disabled) - * @property closedCaptionsTrackId - * @type {Number} - */ - - }, { - key: 'closedCaptionsTrackId', - get: function get() { - return this.playback.closedCaptionsTrackId; - } - - /** - * sets the selected closed caption track index. (-1 is disabled) - * @property closedCaptionsTrackId - * @type {Number} - */ - , - set: function set(trackId) { - this.playback.closedCaptionsTrackId = trackId; - } - - /** - * it builds a container - * @method constructor - * @param {Object} options the options object - * @param {Strings} i18n the internationalization component - */ - - }]); - - function Container(options, i18n) { - (0, _classCallCheck3.default)(this, Container); - - var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options)); - - _this._i18n = i18n; - _this.currentTime = 0; - _this.volume = 100; - _this.playback = options.playback; - _this.settings = _clapprZepto2.default.extend({}, _this.playback.settings); - _this.isReady = false; - _this.mediaControlDisabled = false; - _this.plugins = [_this.playback]; - _this.bindEvents(); - return _this; - } - - /** - * binds playback events to the methods of the container. - * it listens to playback's events and triggers them as container events. - * - * | Playback | - * |----------| - * | progress | - * | timeupdate | - * | ready | - * | buffering | - * | bufferfull | - * | settingsupdate | - * | loadedmetadata | - * | highdefinitionupdate | - * | bitrate | - * | playbackstate | - * | dvr | - * | mediacontrol_disable | - * | mediacontrol_enable | - * | ended | - * | play | - * | pause | - * | error | - * - * ps: the events usually translate from PLABACK_x to CONTAINER_x, you can check all the events at `Event` class. - * - * @method bindEvents - */ - - - Container.prototype.bindEvents = function bindEvents() { - this.listenTo(this.playback, _events2.default.PLAYBACK_PROGRESS, this.progress); - this.listenTo(this.playback, _events2.default.PLAYBACK_TIMEUPDATE, this.timeUpdated); - this.listenTo(this.playback, _events2.default.PLAYBACK_READY, this.ready); - this.listenTo(this.playback, _events2.default.PLAYBACK_BUFFERING, this.onBuffering); - this.listenTo(this.playback, _events2.default.PLAYBACK_BUFFERFULL, this.bufferfull); - this.listenTo(this.playback, _events2.default.PLAYBACK_SETTINGSUPDATE, this.settingsUpdate); - this.listenTo(this.playback, _events2.default.PLAYBACK_LOADEDMETADATA, this.loadedMetadata); - this.listenTo(this.playback, _events2.default.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate); - this.listenTo(this.playback, _events2.default.PLAYBACK_BITRATE, this.updateBitrate); - this.listenTo(this.playback, _events2.default.PLAYBACK_PLAYBACKSTATE, this.playbackStateChanged); - this.listenTo(this.playback, _events2.default.PLAYBACK_DVR, this.playbackDvrStateChanged); - this.listenTo(this.playback, _events2.default.PLAYBACK_MEDIACONTROL_DISABLE, this.disableMediaControl); - this.listenTo(this.playback, _events2.default.PLAYBACK_MEDIACONTROL_ENABLE, this.enableMediaControl); - this.listenTo(this.playback, _events2.default.PLAYBACK_SEEKED, this.onSeeked); - this.listenTo(this.playback, _events2.default.PLAYBACK_ENDED, this.onEnded); - this.listenTo(this.playback, _events2.default.PLAYBACK_PLAY, this.playing); - this.listenTo(this.playback, _events2.default.PLAYBACK_PAUSE, this.paused); - this.listenTo(this.playback, _events2.default.PLAYBACK_STOP, this.stopped); - this.listenTo(this.playback, _events2.default.PLAYBACK_ERROR, this.error); - this.listenTo(this.playback, _events2.default.PLAYBACK_SUBTITLE_AVAILABLE, this.subtitleAvailable); - this.listenTo(this.playback, _events2.default.PLAYBACK_SUBTITLE_CHANGED, this.subtitleChanged); - }; - - Container.prototype.subtitleAvailable = function subtitleAvailable() { - this.trigger(_events2.default.CONTAINER_SUBTITLE_AVAILABLE); - }; - - Container.prototype.subtitleChanged = function subtitleChanged(track) { - this.trigger(_events2.default.CONTAINER_SUBTITLE_CHANGED, track); - }; - - Container.prototype.playbackStateChanged = function playbackStateChanged(state) { - this.trigger(_events2.default.CONTAINER_PLAYBACKSTATE, state); - }; - - Container.prototype.playbackDvrStateChanged = function playbackDvrStateChanged(dvrInUse) { - this.settings = this.playback.settings; - this.dvrInUse = dvrInUse; - this.trigger(_events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, dvrInUse); - }; - - Container.prototype.updateBitrate = function updateBitrate(newBitrate) { - this.trigger(_events2.default.CONTAINER_BITRATE, newBitrate); - }; - - Container.prototype.statsReport = function statsReport(metrics) { - this.trigger(_events2.default.CONTAINER_STATS_REPORT, metrics); - }; - - Container.prototype.getPlaybackType = function getPlaybackType() { - return this.playback.getPlaybackType(); - }; - - /** - * returns `true` if DVR is enable otherwise `false`. - * @method isDvrEnabled - * @return {Boolean} - */ - - - Container.prototype.isDvrEnabled = function isDvrEnabled() { - return !!this.playback.dvrEnabled; - }; - - /** - * returns `true` if DVR is in use otherwise `false`. - * @method isDvrInUse - * @return {Boolean} - */ - - - Container.prototype.isDvrInUse = function isDvrInUse() { - return !!this.dvrInUse; - }; - - /** - * destroys the container - * @method destroy - */ - - - Container.prototype.destroy = function destroy() { - this.trigger(_events2.default.CONTAINER_DESTROYED, this, this.name); - this.stopListening(); - this.plugins.forEach(function (plugin) { - return plugin.destroy(); - }); - this.$el.remove(); - }; - - Container.prototype.setStyle = function setStyle(style) { - this.$el.css(style); - }; - - Container.prototype.animate = function animate(style, duration) { - return this.$el.animate(style, duration).promise(); - }; - - Container.prototype.ready = function ready() { - this.isReady = true; - this.trigger(_events2.default.CONTAINER_READY, this.name); - }; - - Container.prototype.isPlaying = function isPlaying() { - return this.playback.isPlaying(); - }; - - Container.prototype.getStartTimeOffset = function getStartTimeOffset() { - return this.playback.getStartTimeOffset(); - }; - - Container.prototype.getCurrentTime = function getCurrentTime() { - return this.currentTime; - }; - - Container.prototype.getDuration = function getDuration() { - return this.playback.getDuration(); - }; - - Container.prototype.error = function error(errorObj) { - if (!this.isReady) this.ready(); - - this.trigger(_events2.default.CONTAINER_ERROR, { error: errorObj, container: this }, this.name); - }; - - Container.prototype.loadedMetadata = function loadedMetadata(metadata) { - this.trigger(_events2.default.CONTAINER_LOADEDMETADATA, metadata); - }; - - Container.prototype.timeUpdated = function timeUpdated(timeProgress) { - this.currentTime = timeProgress.current; - this.trigger(_events2.default.CONTAINER_TIMEUPDATE, timeProgress, this.name); - }; - - Container.prototype.progress = function progress() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - this.trigger.apply(this, [_events2.default.CONTAINER_PROGRESS].concat(args, [this.name])); - }; - - Container.prototype.playing = function playing() { - this.trigger(_events2.default.CONTAINER_PLAY, this.name); - }; - - Container.prototype.paused = function paused() { - this.trigger(_events2.default.CONTAINER_PAUSE, this.name); - }; - - /** - * plays the playback - * @method play - */ - - - Container.prototype.play = function play() { - this.playback.play(); - }; - - /** - * stops the playback - * @method stop - */ - - - Container.prototype.stop = function stop() { - this.playback.stop(); - this.currentTime = 0; - }; - - /** - * pauses the playback - * @method pause - */ - - - Container.prototype.pause = function pause() { - this.playback.pause(); - }; - - Container.prototype.onEnded = function onEnded() { - this.trigger(_events2.default.CONTAINER_ENDED, this, this.name); - this.currentTime = 0; - }; - - Container.prototype.stopped = function stopped() { - this.trigger(_events2.default.CONTAINER_STOP); - }; - - Container.prototype.clicked = function clicked() { - if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_CLICK, this, this.name); - }; - - Container.prototype.dblClicked = function dblClicked() { - if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_DBLCLICK, this, this.name); - }; - - Container.prototype.onContextMenu = function onContextMenu(event) { - if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_CONTEXTMENU, event, this.name); - }; - - Container.prototype.seek = function seek(time) { - this.trigger(_events2.default.CONTAINER_SEEK, time, this.name); - this.playback.seek(time); - }; - - Container.prototype.onSeeked = function onSeeked() { - this.trigger(_events2.default.CONTAINER_SEEKED, this.name); - }; - - Container.prototype.seekPercentage = function seekPercentage(percentage) { - var duration = this.getDuration(); - if (percentage >= 0 && percentage <= 100) { - var time = duration * (percentage / 100); - this.seek(time); - } - }; - - Container.prototype.setVolume = function setVolume(value) { - this.volume = parseInt(value, 10); - this.trigger(_events2.default.CONTAINER_VOLUME, value, this.name); - this.playback.volume(value); - }; - - Container.prototype.fullscreen = function fullscreen() { - this.trigger(_events2.default.CONTAINER_FULLSCREEN, this.name); - }; - - Container.prototype.onBuffering = function onBuffering() { - this.trigger(_events2.default.CONTAINER_STATE_BUFFERING, this.name); - }; - - Container.prototype.bufferfull = function bufferfull() { - this.trigger(_events2.default.CONTAINER_STATE_BUFFERFULL, this.name); - }; - - /** - * adds plugin to the container - * @method addPlugin - * @param {Object} plugin - */ - - - Container.prototype.addPlugin = function addPlugin(plugin) { - this.plugins.push(plugin); - }; - - /** - * checks if a plugin, given its name, exist - * @method hasPlugin - * @param {String} name - * @return {Boolean} - */ - - - Container.prototype.hasPlugin = function hasPlugin(name) { - return !!this.getPlugin(name); - }; - - /** - * get the plugin given its name - * @method getPlugin - * @param {String} name - */ - - - Container.prototype.getPlugin = function getPlugin(name) { - return this.plugins.filter(function (plugin) { - return plugin.name === name; - })[0]; - }; - - Container.prototype.mouseEnter = function mouseEnter() { - if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_MOUSE_ENTER); - }; - - Container.prototype.mouseLeave = function mouseLeave() { - if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_MOUSE_LEAVE); - }; - - Container.prototype.settingsUpdate = function settingsUpdate() { - this.settings = this.playback.settings; - this.trigger(_events2.default.CONTAINER_SETTINGSUPDATE); - }; - - Container.prototype.highDefinitionUpdate = function highDefinitionUpdate(isHD) { - this.trigger(_events2.default.CONTAINER_HIGHDEFINITIONUPDATE, isHD); - }; - - Container.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() { - return this.playback.isHighDefinitionInUse(); - }; - - Container.prototype.disableMediaControl = function disableMediaControl() { - if (!this.mediaControlDisabled) { - this.mediaControlDisabled = true; - this.trigger(_events2.default.CONTAINER_MEDIACONTROL_DISABLE); - } - }; - - Container.prototype.enableMediaControl = function enableMediaControl() { - if (this.mediaControlDisabled) { - this.mediaControlDisabled = false; - this.trigger(_events2.default.CONTAINER_MEDIACONTROL_ENABLE); - } - }; - - Container.prototype.updateStyle = function updateStyle() { - if (!this.options.chromeless || this.options.allowUserInteraction) this.$el.removeClass('chromeless');else this.$el.addClass('chromeless'); - }; - - /** - * enables to configure the container after its creation - * @method configure - * @param {Object} options all the options to change in form of a javascript object - */ - - - Container.prototype.configure = function configure(options) { - this._options = _clapprZepto2.default.extend(this._options, options); - this.updateStyle(); - this.trigger(_events2.default.CONTAINER_OPTIONS_CHANGE); - }; - - Container.prototype.render = function render() { - this.$el.append(this.playback.render().el); - this.updateStyle(); - return this; - }; - - return Container; -}(_ui_object2.default); - -exports.default = Container; -module.exports = exports['default']; - -/***/ }), -/* 138 */ -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a ').html((0,s.default)(t.toString())(e))}};e.default=l,t.exports=e.default},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(157),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){t.exports={default:i(159),__esModule:!0}},function(t,e,i){"use strict";e.__esModule=!0;var n=i(79),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);ec;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===i)return t||c||0;return!t&&-1}}},function(t,e,i){var n=i(42),r=Math.max,a=Math.min;t.exports=function(t,e){return t=n(t),t<0?r(t+e,0):a(t,e)}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){t.exports={default:i(97),__esModule:!0}},function(t,e,i){i(65),i(103),t.exports=i(51).f("iterator")},function(t,e,i){var n=i(42),r=i(40);t.exports=function(t){return function(e,i){var a,o,s=String(r(e)),l=n(i),u=s.length;return l<0||l>=u?t?"":void 0:(a=s.charCodeAt(l),a<55296||a>56319||l+1===u||(o=s.charCodeAt(l+1))<56320||o>57343?t?s.charAt(l):a:t?s.slice(l,l+2):o-56320+(a-55296<<10)+65536)}}},function(t,e,i){"use strict";var n=i(49),r=i(28),a=i(50),o={};i(22)(o,i(12)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=n(o,{next:r(1,i)}),a(t,e+" Iterator")}},function(t,e,i){var n=i(16),r=i(23),a=i(25);t.exports=i(20)?Object.defineProperties:function(t,e){r(t);for(var i,o=a(e),s=o.length,l=0;s>l;)n.f(t,i=o[l++],e[i]);return t}},function(t,e,i){t.exports=i(15).document&&document.documentElement},function(t,e,i){var n=i(18),r=i(39),a=i(43)("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),n(t,a)?t[a]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},function(t,e,i){i(104);for(var n=i(15),r=i(22),a=i(29),o=i(12)("toStringTag"),s=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],l=0;l<5;l++){var u=s[l],c=n[u],d=c&&c.prototype;d&&!d[o]&&r(d,o,u),a[u]=a.Array}},function(t,e,i){"use strict";var n=i(105),r=i(106),a=i(29),o=i(14);t.exports=i(66)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,i=this._i++;return!t||i>=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,i):"values"==e?r(0,t[i]):r(0,[i,t[i]])},"values"),a.Arguments=a.Array,n("keys"),n("values"),n("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,i){t.exports={default:i(108),__esModule:!0}},function(t,e,i){i(109),i(115),i(116),i(117),t.exports=i(11).Symbol},function(t,e,i){"use strict";var n=i(15),r=i(18),a=i(20),o=i(19),s=i(67),l=i(110).KEY,u=i(27),c=i(44),d=i(50),h=i(32),f=i(12),p=i(51),g=i(52),y=i(111),m=i(112),v=i(113),b=i(23),_=i(14),E=i(47),T=i(28),A=i(49),S=i(114),L=i(54),R=i(16),k=i(25),w=L.f,C=R.f,I=S.f,D=n.Symbol,O=n.JSON,P=O&&O.stringify,x=f("_hidden"),N=f("toPrimitive"),M={}.propertyIsEnumerable,F=c("symbol-registry"),B=c("symbols"),U=c("op-symbols"),G=Object.prototype,K="function"==typeof D,V=n.QObject,j=!V||!V.prototype||!V.prototype.findChild,Y=a&&u(function(){return 7!=A(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(t,e,i){var n=w(G,e);n&&delete G[e],C(t,e,i),n&&t!==G&&C(G,e,n)}:C,H=function(t){var e=B[t]=A(D.prototype);return e._k=t,e},$=K&&"symbol"==typeof D.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof D},z=function(t,e,i){return t===G&&z(U,e,i),b(t),e=E(e,!0),b(i),r(B,e)?(i.enumerable?(r(t,x)&&t[x][e]&&(t[x][e]=!1),i=A(i,{enumerable:T(0,!1)})):(r(t,x)||C(t,x,T(1,{})),t[x][e]=!0),Y(t,e,i)):C(t,e,i)},W=function(t,e){b(t);for(var i,n=m(e=_(e)),r=0,a=n.length;a>r;)z(t,i=n[r++],e[i]);return t},q=function(t,e){return void 0===e?A(t):W(A(t),e)},X=function(t){var e=M.call(this,t=E(t,!0));return!(this===G&&r(B,t)&&!r(U,t))&&(!(e||!r(this,t)||!r(B,t)||r(this,x)&&this[x][t])||e)},Z=function(t,e){if(t=_(t),e=E(e,!0),t!==G||!r(B,e)||r(U,e)){var i=w(t,e);return!i||!r(B,e)||r(t,x)&&t[x][e]||(i.enumerable=!0),i}},J=function(t){for(var e,i=I(_(t)),n=[],a=0;i.length>a;)r(B,e=i[a++])||e==x||e==l||n.push(e);return n},Q=function(t){for(var e,i=t===G,n=I(i?U:_(t)),a=[],o=0;n.length>o;)!r(B,e=n[o++])||i&&!r(G,e)||a.push(B[e]);return a};K||(D=function(){if(this instanceof D)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),e=function(i){this===G&&e.call(U,i),r(this,x)&&r(this[x],t)&&(this[x][t]=!1),Y(this,t,T(1,i))};return a&&j&&Y(G,t,{configurable:!0,set:e}),H(t)},s(D.prototype,"toString",function(){return this._k}),L.f=Z,R.f=z,i(69).f=S.f=J,i(53).f=X,i(68).f=Q,a&&!i(48)&&s(G,"propertyIsEnumerable",X,!0),p.f=function(t){return H(f(t))}),o(o.G+o.W+o.F*!K,{Symbol:D});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)f(tt[et++]);for(var tt=k(f.store),et=0;tt.length>et;)g(tt[et++]);o(o.S+o.F*!K,"Symbol",{for:function(t){return r(F,t+="")?F[t]:F[t]=D(t)},keyFor:function(t){if($(t))return y(F,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){j=!0},useSimple:function(){j=!1}}),o(o.S+o.F*!K,"Object",{create:q,defineProperty:z,defineProperties:W,getOwnPropertyDescriptor:Z,getOwnPropertyNames:J,getOwnPropertySymbols:Q}),O&&o(o.S+o.F*(!K||u(function(){var t=D();return"[null]"!=P([t])||"{}"!=P({a:t})||"{}"!=P(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!$(t)){for(var e,i,n=[t],r=1;arguments.length>r;)n.push(arguments[r++]);return e=n[1],"function"==typeof e&&(i=e),!i&&v(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!$(e))return e}),n[1]=e,P.apply(O,n)}}}),D.prototype[N]||i(22)(D.prototype,N,D.prototype.valueOf),d(D,"Symbol"),d(Math,"Math",!0),d(n.JSON,"JSON",!0)},function(t,e,i){var n=i(32)("meta"),r=i(26),a=i(18),o=i(16).f,s=0,l=Object.isExtensible||function(){return!0},u=!i(27)(function(){return l(Object.preventExtensions({}))}),c=function(t){o(t,n,{value:{i:"O"+ ++s,w:{}}})},d=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!a(t,n)){if(!l(t))return"F";if(!e)return"E";c(t)}return t[n].i},h=function(t,e){if(!a(t,n)){if(!l(t))return!0;if(!e)return!1;c(t)}return t[n].w},f=function(t){return u&&p.NEED&&l(t)&&!a(t,n)&&c(t),t},p=t.exports={KEY:n,NEED:!1,fastKey:d,getWeak:h,onFreeze:f}},function(t,e,i){var n=i(25),r=i(14);t.exports=function(t,e){for(var i,a=r(t),o=n(a),s=o.length,l=0;s>l;)if(a[i=o[l++]]===e)return i}},function(t,e,i){var n=i(25),r=i(68),a=i(53);t.exports=function(t){var e=n(t),i=r.f;if(i)for(var o,s=i(t),l=a.f,u=0;s.length>u;)l.call(t,o=s[u++])&&e.push(o);return e}},function(t,e,i){var n=i(41);t.exports=Array.isArray||function(t){return"Array"==n(t)}},function(t,e,i){var n=i(14),r=i(69).f,a={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(t){return o.slice()}};t.exports.f=function(t){return o&&"[object Window]"==a.call(t)?s(t):r(n(t))}},function(t,e){},function(t,e,i){i(52)("asyncIterator")},function(t,e,i){i(52)("observable")},function(t,e,i){i(119);var n=i(11).Object;t.exports=function(t,e,i){return n.defineProperty(t,e,i)}},function(t,e,i){var n=i(19);n(n.S+n.F*!i(20),"Object",{defineProperty:i(16).f})},function(t,e,i){t.exports={default:i(121),__esModule:!0}},function(t,e,i){i(122),t.exports=i(11).Object.setPrototypeOf},function(t,e,i){var n=i(19);n(n.S,"Object",{setPrototypeOf:i(123).set})},function(t,e,i){var n=i(26),r=i(23),a=function(t,e){if(r(t),!n(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,n){try{n=i(46)(Function.call,i(54).f(Object.prototype,"__proto__").set,2),n(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return a(t,i),e?t.__proto__=i:n(t,i),t}}({},!1):void 0),check:a}},function(t,e,i){i(125);var n=i(11).Object;t.exports=function(t,e){return n.create(t,e)}},function(t,e,i){var n=i(19);n(n.S,"Object",{create:i(49)})},function(t,e,i){t.exports={default:i(127),__esModule:!0}},function(t,e,i){i(128);var n=i(11).Object;t.exports=function(t,e){return n.getOwnPropertyDescriptor(t,e)}},function(t,e,i){var n=i(14),r=i(54).f;i(62)("getOwnPropertyDescriptor",function(){return function(t,e){return r(n(t),e)}})},function(t,e,i){"use strict";Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),i=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var n=arguments[1],r=0;r0&&void 0!==arguments[0]?arguments[0]:u,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c;(0,r.default)(this,t),this.kibo=new a.Kibo,this.kibo.down(["ctrl shift d"],function(){return e.onOff()}),this.BLACKLIST=["timeupdate","playback:timeupdate","playback:progress","container:hover","container:timeupdate","container:progress"],this.level=i,this.offLevel=n}return t.prototype.debug=function(t){this.log(t,0,Array.prototype.slice.call(arguments,1))},t.prototype.info=function(t){this.log(t,u,Array.prototype.slice.call(arguments,1))},t.prototype.warn=function(t){this.log(t,2,Array.prototype.slice.call(arguments,1))},t.prototype.error=function(t){this.log(t,3,Array.prototype.slice.call(arguments,1))},t.prototype.onOff=function(){this.level===this.offLevel?this.level=this.previousLevel:(this.previousLevel=this.level,this.level=this.offLevel),window.console&&window.console.log&&window.console.log("%c[Clappr.Log] set log level to "+h[this.level],s)},t.prototype.level=function(t){this.level=t},t.prototype.log=function(t,e,i){if(!(this.BLACKLIST.indexOf(i[0])>=0||e(0,I.default)(window).height()?"landscape":"portrait";this._screenOrientation!==e&&(this._screenOrientation=e,this.trigger(p.default.CORE_SCREEN_ORIENTATION_CHANGED,{event:t,orientation:this._screenOrientation}))},e.prototype.setMediaControlContainer=function(t){this.mediaControl.setContainer(t),this.mediaControl.render()},e.prototype.disableMediaControl=function(){this.mediaControl.disable(),this.$el.removeClass("nocursor")},e.prototype.enableMediaControl=function(){this.mediaControl.enable()},e.prototype.removeContainer=function(t){this.stopListening(t),this.containers=this.containers.filter(function(e){return e!==t})},e.prototype.appendContainer=function(t){this.listenTo(t,p.default.CONTAINER_DESTROYED,this.removeContainer),this.containers.push(t)},e.prototype.setupContainers=function(t){return t.map(this.appendContainer.bind(this)),this.trigger(p.default.CORE_CONTAINERS_CREATED),this.renderContainers(),this.setupMediaControl(this.getCurrentContainer()),this.render(),this.appendToParent(),this.containers},e.prototype.renderContainers=function(){var t=this;this.containers.map(function(e){return t.el.appendChild(e.render().el)})},e.prototype.createContainer=function(t,e){var i=this.containerFactory.createContainer(t,e);return this.appendContainer(i),this.el.appendChild(i.render().el),i},e.prototype.setupMediaControl=function(t){this.mediaControl?this.mediaControl.setContainer(t):(this.mediaControl=this.createMediaControl(I.default.extend({container:t,focusElement:this.el},this.options)),this.listenTo(this.mediaControl,p.default.MEDIACONTROL_FULLSCREEN,this.toggleFullscreen),this.listenTo(this.mediaControl,p.default.MEDIACONTROL_SHOW,this.onMediaControlShow.bind(this,!0)),this.listenTo(this.mediaControl,p.default.MEDIACONTROL_HIDE,this.onMediaControlShow.bind(this,!1)))},e.prototype.createMediaControl=function(t){return t.mediacontrol&&t.mediacontrol.external?new t.mediacontrol.external(t).render():new T.default(t).render()},e.prototype.getCurrentContainer=function(){return this.mediaControl&&this.mediaControl.container?this.mediaControl.container:this.containers[0]},e.prototype.getCurrentPlayback=function(){var t=this.getCurrentContainer();return t&&t.playback},e.prototype.getPlaybackType=function(){var t=this.getCurrentContainer();return t&&t.getPlaybackType()},e.prototype.toggleFullscreen=function(){h.Fullscreen.isFullscreen()?(h.Fullscreen.cancelFullscreen(),v.default.isiOS||this.$el.removeClass("fullscreen nocursor")):(h.Fullscreen.requestFullscreen(this.el),v.default.isiOS||this.$el.addClass("fullscreen")),this.mediaControl.show()},e.prototype.showMediaControl=function(t){this.mediaControl.show(t)},e.prototype.hideMediaControl=function(){this.mediaControl.hide(this.options.hideMediaControlDelay)},e.prototype.onMediaControlShow=function(t){this.getCurrentContainer().trigger(t?p.default.CONTAINER_MEDIACONTROL_SHOW:p.default.CONTAINER_MEDIACONTROL_HIDE),t?this.$el.removeClass("nocursor"):h.Fullscreen.isFullscreen()&&this.$el.addClass("nocursor")},e.prototype.configure=function(t){var e=this;this._options=I.default.extend(this._options,t),this.configureDomRecycler();var i=t.source||t.sources;i?this.load(i,t.mimeType||this.options.mimeType):(this.trigger(p.default.CORE_OPTIONS_CHANGE),this.containers.forEach(function(t){t.configure(e.options)}))},e.prototype.appendToParent=function(){!(this.$el.parent()&&this.$el.parent().length)&&this.$el.appendTo(this.options.parentElement)},e.prototype.render=function(){this.$el.append(this.mediaControl.render().el),P||(P=w.default.getStyleFor(O.default,{baseUrl:this.options.baseUrl})),(0,I.default)("head").append(P),this.options.width=this.options.width||this.$el.width(),this.options.height=this.options.height||this.$el.height();var t={width:this.options.width,height:this.options.height};return this.playerInfo.previousSize=this.playerInfo.currentSize=this.playerInfo.computedSize=t,this.updateSize(),this.previousSize={width:this.$el.width(),height:this.$el.height()},this.enableResizeObserver(),this},e}(y.default);e.default=x,t.exports=e.default},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(136),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(33),a=n(r),o=i(0),s=n(o),l=i(1),u=n(l),c=i(3),d=n(c),h=i(2),f=n(h),p=i(17),g=n(p),y=i(4),m=n(y),v=i(73),b=n(v),_=i(6),E=n(_),T=function(t){function e(i,n,r){(0,s.default)(this,e);var a=(0,u.default)(this,t.call(this,i));return a._i18n=r,a.loader=n,a}return(0,f.default)(e,t),(0,d.default)(e,[{key:"options",get:function(){return this._options},set:function(t){this._options=t}}]),e.prototype.createContainers=function(){var t=this;return E.default.Deferred(function(e){e.resolve(t.options.sources.map(function(e){return t.createContainer(e)}))})},e.prototype.findPlaybackPlugin=function(t,e){return this.loader.playbackPlugins.filter(function(i){return i.canPlay(t,e)})[0]},e.prototype.createContainer=function(t){var e=null,i=this.options.mimeType;"object"===(void 0===t?"undefined":(0,a.default)(t))?(e=t.source.toString(),t.mimeType&&(i=t.mimeType)):e=t.toString(),e.match(/^\/\//)&&(e=window.location.protocol+e);var n=E.default.extend({},this.options,{src:e,mimeType:i}),r=this.findPlaybackPlugin(e,i),o=new r(n,this._i18n);n=E.default.extend({},n,{playback:o});var s=new b.default(n,this._i18n),l=E.default.Deferred();return l.promise(s),this.addContainerPlugins(s),this.listenToOnce(s,m.default.CONTAINER_READY,function(){return l.resolve(s)}),s},e.prototype.addContainerPlugins=function(t){this.loader.containerPlugins.forEach(function(e){t.addPlugin(new e(t))})},e}(g.default);e.default=T,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(4),f=n(h),p=i(21),g=n(p);i(138);var y=i(6),m=n(y),v=function(t){function e(i,n){(0,a.default)(this,e);var r=(0,s.default)(this,t.call(this,i));return r._i18n=n,r.currentTime=0,r.volume=100,r.playback=i.playback,r.settings=m.default.extend({},r.playback.settings),r.isReady=!1,r.mediaControlDisabled=!1,r.plugins=[r.playback],r.bindEvents(),r}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"Container"}},{key:"attributes",get:function(){return{class:"container","data-container":""}}},{key:"events",get:function(){return{click:"clicked",dblclick:"dblClicked",doubleTap:"dblClicked",contextmenu:"onContextMenu",mouseenter:"mouseEnter",mouseleave:"mouseLeave"}}},{key:"ended",get:function(){return this.playback.ended}},{key:"buffering",get:function(){return this.playback.buffering}},{key:"i18n",get:function(){return this._i18n}},{key:"hasClosedCaptionsTracks",get:function(){return this.playback.hasClosedCaptionsTracks}},{key:"closedCaptionsTracks",get:function(){return this.playback.closedCaptionsTracks}},{key:"closedCaptionsTrackId",get:function(){return this.playback.closedCaptionsTrackId},set:function(t){this.playback.closedCaptionsTrackId=t}}]),e.prototype.bindEvents=function(){this.listenTo(this.playback,f.default.PLAYBACK_PROGRESS,this.progress),this.listenTo(this.playback,f.default.PLAYBACK_TIMEUPDATE,this.timeUpdated),this.listenTo(this.playback,f.default.PLAYBACK_READY,this.ready),this.listenTo(this.playback,f.default.PLAYBACK_BUFFERING,this.onBuffering),this.listenTo(this.playback,f.default.PLAYBACK_BUFFERFULL,this.bufferfull),this.listenTo(this.playback,f.default.PLAYBACK_SETTINGSUPDATE,this.settingsUpdate),this.listenTo(this.playback,f.default.PLAYBACK_LOADEDMETADATA,this.loadedMetadata),this.listenTo(this.playback,f.default.PLAYBACK_HIGHDEFINITIONUPDATE,this.highDefinitionUpdate),this.listenTo(this.playback,f.default.PLAYBACK_BITRATE,this.updateBitrate),this.listenTo(this.playback,f.default.PLAYBACK_PLAYBACKSTATE,this.playbackStateChanged),this.listenTo(this.playback,f.default.PLAYBACK_DVR,this.playbackDvrStateChanged),this.listenTo(this.playback,f.default.PLAYBACK_MEDIACONTROL_DISABLE,this.disableMediaControl),this.listenTo(this.playback,f.default.PLAYBACK_MEDIACONTROL_ENABLE,this.enableMediaControl),this.listenTo(this.playback,f.default.PLAYBACK_SEEKED,this.onSeeked),this.listenTo(this.playback,f.default.PLAYBACK_ENDED,this.onEnded),this.listenTo(this.playback,f.default.PLAYBACK_PLAY,this.playing),this.listenTo(this.playback,f.default.PLAYBACK_PAUSE,this.paused),this.listenTo(this.playback,f.default.PLAYBACK_STOP,this.stopped),this.listenTo(this.playback,f.default.PLAYBACK_ERROR,this.error),this.listenTo(this.playback,f.default.PLAYBACK_SUBTITLE_AVAILABLE,this.subtitleAvailable),this.listenTo(this.playback,f.default.PLAYBACK_SUBTITLE_CHANGED,this.subtitleChanged)},e.prototype.subtitleAvailable=function(){this.trigger(f.default.CONTAINER_SUBTITLE_AVAILABLE)},e.prototype.subtitleChanged=function(t){this.trigger(f.default.CONTAINER_SUBTITLE_CHANGED,t)},e.prototype.playbackStateChanged=function(t){this.trigger(f.default.CONTAINER_PLAYBACKSTATE,t)},e.prototype.playbackDvrStateChanged=function(t){this.settings=this.playback.settings,this.dvrInUse=t,this.trigger(f.default.CONTAINER_PLAYBACKDVRSTATECHANGED,t)},e.prototype.updateBitrate=function(t){this.trigger(f.default.CONTAINER_BITRATE,t)},e.prototype.statsReport=function(t){this.trigger(f.default.CONTAINER_STATS_REPORT,t)},e.prototype.getPlaybackType=function(){return this.playback.getPlaybackType()},e.prototype.isDvrEnabled=function(){return!!this.playback.dvrEnabled},e.prototype.isDvrInUse=function(){return!!this.dvrInUse},e.prototype.destroy=function(){this.trigger(f.default.CONTAINER_DESTROYED,this,this.name),this.stopListening(),this.plugins.forEach(function(t){return t.destroy()}),this.$el.remove()},e.prototype.setStyle=function(t){this.$el.css(t)},e.prototype.animate=function(t,e){return this.$el.animate(t,e).promise()},e.prototype.ready=function(){this.isReady=!0,this.trigger(f.default.CONTAINER_READY,this.name)},e.prototype.isPlaying=function(){return this.playback.isPlaying()},e.prototype.getStartTimeOffset=function(){return this.playback.getStartTimeOffset()},e.prototype.getCurrentTime=function(){return this.currentTime},e.prototype.getDuration=function(){return this.playback.getDuration()},e.prototype.error=function(t){this.isReady||this.ready(),this.trigger(f.default.CONTAINER_ERROR,{error:t,container:this},this.name)},e.prototype.loadedMetadata=function(t){this.trigger(f.default.CONTAINER_LOADEDMETADATA,t)},e.prototype.timeUpdated=function(t){this.currentTime=t.current,this.trigger(f.default.CONTAINER_TIMEUPDATE,t,this.name)},e.prototype.progress=function(){for(var t=arguments.length,e=Array(t),i=0;i=0&&t<=100){var i=e*(t/100);this.seek(i)}},e.prototype.setVolume=function(t){this.volume=parseInt(t,10),this.trigger(f.default.CONTAINER_VOLUME,t,this.name),this.playback.volume(t)},e.prototype.fullscreen=function(){this.trigger(f.default.CONTAINER_FULLSCREEN,this.name)},e.prototype.onBuffering=function(){this.trigger(f.default.CONTAINER_STATE_BUFFERING,this.name)},e.prototype.bufferfull=function(){this.trigger(f.default.CONTAINER_STATE_BUFFERFULL,this.name)},e.prototype.addPlugin=function(t){this.plugins.push(t)},e.prototype.hasPlugin=function(t){return!!this.getPlugin(t)},e.prototype.getPlugin=function(t){return this.plugins.filter(function(e){return e.name===t})[0]},e.prototype.mouseEnter=function(){this.options.chromeless&&!this.options.allowUserInteraction||this.trigger(f.default.CONTAINER_MOUSE_ENTER)},e.prototype.mouseLeave=function(){this.options.chromeless&&!this.options.allowUserInteraction||this.trigger(f.default.CONTAINER_MOUSE_LEAVE)},e.prototype.settingsUpdate=function(){this.settings=this.playback.settings,this.trigger(f.default.CONTAINER_SETTINGSUPDATE)},e.prototype.highDefinitionUpdate=function(t){this.trigger(f.default.CONTAINER_HIGHDEFINITIONUPDATE,t)},e.prototype.isHighDefinitionInUse=function(){return this.playback.isHighDefinitionInUse()},e.prototype.disableMediaControl=function(){this.mediaControlDisabled||(this.mediaControlDisabled=!0,this.trigger(f.default.CONTAINER_MEDIACONTROL_DISABLE))},e.prototype.enableMediaControl=function(){this.mediaControlDisabled&&(this.mediaControlDisabled=!1,this.trigger(f.default.CONTAINER_MEDIACONTROL_ENABLE))},e.prototype.updateStyle=function(){!this.options.chromeless||this.options.allowUserInteraction?this.$el.removeClass("chromeless"):this.$el.addClass("chromeless")},e.prototype.configure=function(t){this._options=m.default.extend(this._options,t),this.updateStyle(),this.trigger(f.default.CONTAINER_OPTIONS_CHANGE)},e.prototype.render=function(){return this.$el.append(this.playback.render().el),this.updateStyle(),this},e}(g.default);e.default=v,t.exports=e.default},function(t,e,i){var n=i(139);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}.container[data-container] .chromeless{cursor:default}[data-player]:not(.nocursor) .container[data-container]:not(.chromeless).pointer-enabled{cursor:pointer}",""])},function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var i=e.protocol+"//"+e.host,n=i+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(t,e){var r=e.trim().replace(/^"(.*)"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(r))return t;var a;return a=0===r.indexOf("//")?r:0===r.indexOf("/")?i+r:n+r.replace(/^\.\//,""),"url("+JSON.stringify(a)+")"})}},function(t,e,i){"use strict";(function(n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var a=i(142),o=r(a),s=i(0),l=r(s),u=i(1),c=r(u),d=i(3),h=r(d),f=i(2),p=r(f),g=i(5),y=i(56),m=i(4),v=r(m),b=i(21),_=r(b),E=i(13),T=r(E),A=i(24),S=r(A),L=i(8),R=r(L),k=i(9),w=r(k),C=i(6),I=r(C);i(144);var D=i(146),O=r(D),P=i(58),x=r(P),N=i(76),M=r(N),F=i(147),B=r(F),U=i(148),G=r(U),K=i(149),V=r(K),j=i(150),Y=r(j),H=i(151),$=r(H),z=i(152),W=r(z),q=function(t){function e(i){(0,l.default)(this,e);var n=(0,c.default)(this,t.call(this,i));n.persistConfig=n.options.persistConfig,n.container=i.container,n.currentPositionValue=null,n.currentDurationValue=null;var r=n.persistConfig?g.Config.restore("volume"):100;return n.setVolume(n.options.mute?0:r),n.keepVisible=!1,n.fullScreenOnVideoTagSupported=null,n.addEventListeners(),n.settings={left:["play","stop","pause"],right:["volume"],default:["position","seekbar","duration"]},n.container?I.default.isEmptyObject(n.container.settings)||(n.settings=I.default.extend({},n.container.settings)):n.settings={},n.userDisabled=!1,(n.container&&n.container.mediaControlDisabled||n.options.chromeless)&&n.disable(),n.stopDragHandler=function(t){return n.stopDrag(t)},n.updateDragHandler=function(t){return n.updateDrag(t)},(0,I.default)(document).bind("mouseup",n.stopDragHandler),(0,I.default)(document).bind("mousemove",n.updateDragHandler),n}return(0,p.default)(e,t),(0,h.default)(e,[{key:"name",get:function(){return"MediaControl"}},{key:"disabled",get:function(){return this.userDisabled||this.container&&this.container.getPlaybackType()===w.default.NO_OP}},{key:"attributes",get:function(){return{class:"media-control","data-media-control":""}}},{key:"events",get:function(){return{"click [data-play]":"play","click [data-pause]":"pause","click [data-playpause]":"togglePlayPause","click [data-stop]":"stop","click [data-playstop]":"togglePlayStop","click [data-fullscreen]":"toggleFullscreen","click .bar-container[data-seekbar]":"seek","click .bar-container[data-volume]":"onVolumeClick","click .drawer-icon[data-volume]":"toggleMute","mouseenter .drawer-container[data-volume]":"showVolumeBar","mouseleave .drawer-container[data-volume]":"hideVolumeBar","mousedown .bar-container[data-volume]":"startVolumeDrag","mousemove .bar-container[data-volume]":"mousemoveOnVolumeBar","mousedown .bar-scrubber[data-seekbar]":"startSeekDrag","mousemove .bar-container[data-seekbar]":"mousemoveOnSeekBar","mouseleave .bar-container[data-seekbar]":"mouseleaveOnSeekBar","mouseenter .media-control-layer[data-controls]":"setUserKeepVisible","mouseleave .media-control-layer[data-controls]":"resetUserKeepVisible"}}},{key:"template",get:function(){return(0,R.default)(O.default)}},{key:"volume",get:function(){return this.container&&this.container.isReady?this.container.volume:this.intendedVolume}},{key:"muted",get:function(){return 0===this.volume}}]),e.prototype.addEventListeners=function(){this.container&&(S.default.on(this.options.playerId+":"+v.default.PLAYER_RESIZE,this.playerResize,this),this.listenTo(this.container,v.default.CONTAINER_PLAY,this.changeTogglePlay),this.listenTo(this.container,v.default.CONTAINER_PAUSE,this.changeTogglePlay),this.listenTo(this.container,v.default.CONTAINER_STOP,this.changeTogglePlay),this.listenTo(this.container,v.default.CONTAINER_DBLCLICK,this.toggleFullscreen),this.listenTo(this.container,v.default.CONTAINER_TIMEUPDATE,this.onTimeUpdate),this.listenTo(this.container,v.default.CONTAINER_PROGRESS,this.updateProgressBar),this.listenTo(this.container,v.default.CONTAINER_SETTINGSUPDATE,this.settingsUpdate),this.listenTo(this.container,v.default.CONTAINER_PLAYBACKDVRSTATECHANGED,this.settingsUpdate),this.listenTo(this.container,v.default.CONTAINER_HIGHDEFINITIONUPDATE,this.highDefinitionUpdate),this.listenTo(this.container,v.default.CONTAINER_MEDIACONTROL_DISABLE,this.disable),this.listenTo(this.container,v.default.CONTAINER_MEDIACONTROL_ENABLE,this.enable),this.listenTo(this.container,v.default.CONTAINER_ENDED,this.ended),this.listenTo(this.container,v.default.CONTAINER_VOLUME,this.onVolumeChanged),"video"===this.container.playback.el.nodeName.toLowerCase()&&this.listenToOnce(this.container,v.default.CONTAINER_LOADEDMETADATA,this.onLoadedMetadataOnVideoTag))},e.prototype.disable=function(){this.userDisabled=!0,this.hide(),this.$el.hide()},e.prototype.enable=function(){this.options.chromeless||(this.userDisabled=!1,this.show())},e.prototype.play=function(){this.container.play()},e.prototype.pause=function(){this.container.pause()},e.prototype.stop=function(){this.container.stop()},e.prototype.onVolumeChanged=function(){this.updateVolumeUI()},e.prototype.onLoadedMetadataOnVideoTag=function(){var t=this.container.playback.el;!g.Fullscreen.fullscreenEnabled()&&t.webkitSupportsFullscreen&&(this.fullScreenOnVideoTagSupported=!0,this.settingsUpdate())},e.prototype.updateVolumeUI=function(){if(this.rendered){this.$volumeBarContainer.find(".bar-fill-2").css({});var t=this.$volumeBarContainer.width(),e=this.$volumeBarBackground.width(),i=(t-e)/2,n=e*this.volume/100+i;this.$volumeBarFill.css({width:this.volume+"%"}),this.$volumeBarScrubber.css({left:n}),this.$volumeBarContainer.find(".segmented-bar-element").removeClass("fill");var r=Math.ceil(this.volume/10);this.$volumeBarContainer.find(".segmented-bar-element").slice(0,r).addClass("fill"),this.$volumeIcon.html(""),this.$volumeIcon.removeClass("muted"),this.muted?(this.$volumeIcon.append(V.default),this.$volumeIcon.addClass("muted")):this.$volumeIcon.append(G.default),this.applyButtonStyle(this.$volumeIcon)}},e.prototype.changeTogglePlay=function(){this.$playPauseToggle.html(""),this.$playStopToggle.html(""),this.container&&this.container.isPlaying()?(this.$playPauseToggle.append(M.default),this.$playStopToggle.append(B.default),this.trigger(v.default.MEDIACONTROL_PLAYING)):(this.$playPauseToggle.append(x.default),this.$playStopToggle.append(x.default),this.trigger(v.default.MEDIACONTROL_NOTPLAYING),T.default.isMobile&&this.show()),this.applyButtonStyle(this.$playPauseToggle),this.applyButtonStyle(this.$playStopToggle)},e.prototype.mousemoveOnSeekBar=function(t){if(this.settings.seekEnabled){var e=t.pageX-this.$seekBarContainer.offset().left-this.$seekBarHover.width()/2;this.$seekBarHover.css({left:e})}this.trigger(v.default.MEDIACONTROL_MOUSEMOVE_SEEKBAR,t)},e.prototype.mouseleaveOnSeekBar=function(t){this.trigger(v.default.MEDIACONTROL_MOUSELEAVE_SEEKBAR,t)},e.prototype.onVolumeClick=function(t){this.setVolume(this.getVolumeFromUIEvent(t))},e.prototype.mousemoveOnVolumeBar=function(t){this.draggingVolumeBar&&this.setVolume(this.getVolumeFromUIEvent(t))},e.prototype.playerResize=function(t){this.$fullscreenToggle.html(""),g.Fullscreen.isFullscreen()?this.$fullscreenToggle.append($.default):this.$fullscreenToggle.append(Y.default),this.applyButtonStyle(this.$fullscreenToggle),this.$el.removeClass("w320"),(t.width<=320||this.options.hideVolumeBar)&&this.$el.addClass("w320")},e.prototype.togglePlayPause=function(){return this.container.isPlaying()?this.container.pause():this.container.play(),!1},e.prototype.togglePlayStop=function(){this.container.isPlaying()?this.container.stop():this.container.play()},e.prototype.startSeekDrag=function(t){this.settings.seekEnabled&&(this.draggingSeekBar=!0,this.$el.addClass("dragging"),this.$seekBarLoaded.addClass("media-control-notransition"),this.$seekBarPosition.addClass("media-control-notransition"),this.$seekBarScrubber.addClass("media-control-notransition"),t&&t.preventDefault())},e.prototype.startVolumeDrag=function(t){this.draggingVolumeBar=!0,this.$el.addClass("dragging"),t&&t.preventDefault()},e.prototype.stopDrag=function(t){this.draggingSeekBar&&this.seek(t),this.$el.removeClass("dragging"),this.$seekBarLoaded.removeClass("media-control-notransition"),this.$seekBarPosition.removeClass("media-control-notransition"),this.$seekBarScrubber.removeClass("media-control-notransition dragging"),this.draggingSeekBar=!1,this.draggingVolumeBar=!1},e.prototype.updateDrag=function(t){if(this.draggingSeekBar){t.preventDefault();var e=t.pageX-this.$seekBarContainer.offset().left,i=e/this.$seekBarContainer.width()*100;i=Math.min(100,Math.max(i,0)),this.setSeekPercentage(i)}else this.draggingVolumeBar&&(t.preventDefault(),this.setVolume(this.getVolumeFromUIEvent(t)))},e.prototype.getVolumeFromUIEvent=function(t){return(t.pageX-this.$volumeBarContainer.offset().left)/this.$volumeBarContainer.width()*100},e.prototype.toggleMute=function(){this.setVolume(this.muted?100:0)},e.prototype.setVolume=function(t){var e=this;t=Math.min(100,Math.max(t,0)),this.intendedVolume=t,this.persistConfig&&g.Config.persist("volume",t);var i=function(){e.container.isReady?e.container.setVolume(t):e.listenToOnce(e.container,v.default.CONTAINER_READY,function(){e.container.setVolume(t)})};this.container?i():this.listenToOnce(this,v.default.MEDIACONTROL_CONTAINERCHANGED,function(){i()})},e.prototype.toggleFullscreen=function(){this.trigger(v.default.MEDIACONTROL_FULLSCREEN,this.name),this.container.fullscreen(),this.resetUserKeepVisible()},e.prototype.setContainer=function(t){this.container&&(this.stopListening(this.container),this.fullScreenOnVideoTagSupported=null),S.default.off(this.options.playerId+":"+v.default.PLAYER_RESIZE,this.playerResize,this),this.container=t,this.setVolume(this.intendedVolume),this.changeTogglePlay(),this.addEventListeners(),this.settingsUpdate(),this.container.trigger(v.default.CONTAINER_PLAYBACKDVRSTATECHANGED,this.container.isDvrInUse()),this.container.mediaControlDisabled&&this.disable(),this.trigger(v.default.MEDIACONTROL_CONTAINERCHANGED)},e.prototype.showVolumeBar=function(){this.hideVolumeId&&clearTimeout(this.hideVolumeId),this.$volumeBarContainer.removeClass("volume-bar-hide")},e.prototype.hideVolumeBar=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400;this.$volumeBarContainer&&(this.draggingVolumeBar?this.hideVolumeId=setTimeout(function(){return t.hideVolumeBar()},e):(this.hideVolumeId&&clearTimeout(this.hideVolumeId),this.hideVolumeId=setTimeout(function(){return t.$volumeBarContainer.addClass("volume-bar-hide")},e)))},e.prototype.ended=function(){this.changeTogglePlay()},e.prototype.updateProgressBar=function(t){var e=t.start/t.total*100,i=t.current/t.total*100;this.$seekBarLoaded.css({left:e+"%",width:i-e+"%"})},e.prototype.onTimeUpdate=function(t){if(!this.draggingSeekBar){var e=t.current<0?t.total:t.current;this.currentPositionValue=e,this.currentDurationValue=t.total,this.renderSeekBar()}},e.prototype.renderSeekBar=function(){if(null!==this.currentPositionValue&&null!==this.currentDurationValue){this.currentSeekBarPercentage=100,(this.container.getPlaybackType()!==w.default.LIVE||this.container.isDvrInUse())&&(this.currentSeekBarPercentage=this.currentPositionValue/this.currentDurationValue*100),this.setSeekPercentage(this.currentSeekBarPercentage);var t=(0,g.formatTime)(this.currentPositionValue),e=(0,g.formatTime)(this.currentDurationValue);t!==this.displayedPosition&&(this.$position.text(t),this.displayedPosition=t),e!==this.displayedDuration&&(this.$duration.text(e),this.displayedDuration=e)}},e.prototype.seek=function(t){if(this.settings.seekEnabled){var e=t.pageX-this.$seekBarContainer.offset().left,i=e/this.$seekBarContainer.width()*100;return i=Math.min(100,Math.max(i,0)),this.container.seekPercentage(i),this.setSeekPercentage(i),!1}},e.prototype.setKeepVisible=function(){this.keepVisible=!0},e.prototype.resetKeepVisible=function(){this.keepVisible=!1},e.prototype.setUserKeepVisible=function(){this.userKeepVisible=!0},e.prototype.resetUserKeepVisible=function(){this.userKeepVisible=!1},e.prototype.isVisible=function(){return!this.$el.hasClass("media-control-hide")},e.prototype.show=function(t){var e=this;if(!this.disabled){(!t||t.clientX!==this.lastMouseX&&t.clientY!==this.lastMouseY||navigator.userAgent.match(/firefox/i))&&(clearTimeout(this.hideId),this.$el.show(),this.trigger(v.default.MEDIACONTROL_SHOW,this.name),this.$el.removeClass("media-control-hide"),this.hideId=setTimeout(function(){return e.hide()},2e3),t&&(this.lastMouseX=t.clientX,this.lastMouseY=t.clientY))}},e.prototype.hide=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(this.isVisible()&&(!T.default.isMobile||this.container.isPlaying())){var i=e||2e3;clearTimeout(this.hideId),(this.disabled||!1!==this.options.hideMediaControl)&&(!this.disabled&&(e||this.userKeepVisible||this.keepVisible||this.draggingSeekBar||this.draggingVolumeBar)?this.hideId=setTimeout(function(){return t.hide()},i):(this.trigger(v.default.MEDIACONTROL_HIDE,this.name),this.$el.addClass("media-control-hide"),this.hideVolumeBar(0)))}},e.prototype.settingsUpdate=function(){var t=this.getSettings();!t||this.fullScreenOnVideoTagSupported||g.Fullscreen.fullscreenEnabled()||(t.default&&(0,g.removeArrayItem)(t.default,"fullscreen"),t.left&&(0,g.removeArrayItem)(t.left,"fullscreen"),t.right&&(0,g.removeArrayItem)(t.right,"fullscreen")),(0,o.default)(this.settings)!==(0,o.default)(t)&&(this.settings=t,this.render())},e.prototype.getSettings=function(){return I.default.extend(!0,{},this.container.settings)},e.prototype.highDefinitionUpdate=function(t){var e=t?"addClass":"removeClass";this.$hdIndicator[e]("enabled")},e.prototype.createCachedElements=function(){var t=this.$el.find(".media-control-layer");this.$duration=t.find(".media-control-indicator[data-duration]"),this.$fullscreenToggle=t.find("button.media-control-button[data-fullscreen]"),this.$playPauseToggle=t.find("button.media-control-button[data-playpause]"),this.$playStopToggle=t.find("button.media-control-button[data-playstop]"),this.$position=t.find(".media-control-indicator[data-position]"),this.$seekBarContainer=t.find(".bar-container[data-seekbar]"),this.$seekBarHover=t.find(".bar-hover[data-seekbar]"),this.$seekBarLoaded=t.find(".bar-fill-1[data-seekbar]"),this.$seekBarPosition=t.find(".bar-fill-2[data-seekbar]"),this.$seekBarScrubber=t.find(".bar-scrubber[data-seekbar]"),this.$volumeBarContainer=t.find(".bar-container[data-volume]"),this.$volumeContainer=t.find(".drawer-container[data-volume]"),this.$volumeIcon=t.find(".drawer-icon[data-volume]"),this.$volumeBarBackground=this.$el.find(".bar-background[data-volume]"),this.$volumeBarFill=this.$el.find(".bar-fill-1[data-volume]"),this.$volumeBarScrubber=this.$el.find(".bar-scrubber[data-volume]"),this.$hdIndicator=this.$el.find("button.media-control-button[data-hd-indicator]"),this.resetIndicators(),this.initializeIcons()},e.prototype.resetIndicators=function(){this.displayedPosition=this.$position.text(),this.displayedDuration=this.$duration.text()},e.prototype.initializeIcons=function(){var t=this.$el.find(".media-control-layer");t.find("button.media-control-button[data-play]").append(x.default),t.find("button.media-control-button[data-pause]").append(M.default),t.find("button.media-control-button[data-stop]").append(B.default),this.$playPauseToggle.append(x.default),this.$playStopToggle.append(x.default),this.$volumeIcon.append(G.default),this.$fullscreenToggle.append(Y.default),this.$hdIndicator.append(W.default)},e.prototype.setSeekPercentage=function(t){t=Math.max(Math.min(t,100),0),this.displayedSeekBarPercentage!==t&&(this.displayedSeekBarPercentage=t,this.$seekBarPosition.removeClass("media-control-notransition"),this.$seekBarScrubber.removeClass("media-control-notransition"),this.$seekBarPosition.css({width:t+"%"}),this.$seekBarScrubber.css({left:t+"%"}))},e.prototype.seekRelative=function(t){if(this.settings.seekEnabled){var e=this.container.getCurrentTime(),i=this.container.getDuration(),n=Math.min(Math.max(e+t,0),i);n=Math.min(100*n/i,100),this.container.seekPercentage(n)}},e.prototype.bindKeyAndShow=function(t,e){var i=this;this.kibo.down(t,function(){return i.show(),e()})},e.prototype.bindKeyEvents=function(){var t=this;this.unbindKeyEvents(),this.kibo=new y.Kibo(this.options.focusElement),this.bindKeyAndShow("space",function(){return t.togglePlayPause()}),this.bindKeyAndShow("left",function(){return t.seekRelative(-5)}),this.bindKeyAndShow("right",function(){return t.seekRelative(5)}),this.bindKeyAndShow("shift left",function(){return t.seekRelative(-10)}),this.bindKeyAndShow("shift right",function(){return t.seekRelative(10)}),this.bindKeyAndShow("shift ctrl left",function(){return t.seekRelative(-15)}),this.bindKeyAndShow("shift ctrl right",function(){return t.seekRelative(15)}),["1","2","3","4","5","6","7","8","9","0"].forEach(function(e){t.bindKeyAndShow(e,function(){return t.settings.seekEnabled&&t.container.seekPercentage(10*e)})})},e.prototype.unbindKeyEvents=function(){this.kibo&&(this.kibo.off("space"),this.kibo.off("left"),this.kibo.off("right"),this.kibo.off("shift left"),this.kibo.off("shift right"),this.kibo.off("shift ctrl left"),this.kibo.off("shift ctrl right"),this.kibo.off(["1","2","3","4","5","6","7","8","9","0"]))},e.prototype.parseColors=function(){if(this.options.mediacontrol){this.buttonsColor=this.options.mediacontrol.buttons;var t=this.options.mediacontrol.seekbar;this.$el.find(".bar-fill-2[data-seekbar]").css("background-color",t),this.$el.find(".media-control-icon svg path").css("fill",this.buttonsColor),this.$el.find(".segmented-bar-element[data-volume]").css("boxShadow","inset 2px 0 0 "+this.buttonsColor)}},e.prototype.applyButtonStyle=function(t){this.buttonsColor&&t&&(0,I.default)(t).find("svg path").css("fill",this.buttonsColor)},e.prototype.destroy=function(){this.remove(),(0,I.default)(document).unbind("mouseup",this.stopDragHandler),(0,I.default)(document).unbind("mousemove",this.updateDragHandler),this.unbindKeyEvents()},e.prototype.render=function(){var t=this;this.$el.html(this.template({settings:this.settings})),this.createCachedElements(),this.$playPauseToggle.addClass("paused"),this.$playStopToggle.addClass("stopped"),this.changeTogglePlay(),this.hideId=setTimeout(function(){return t.hide()},1e3),this.disabled&&this.hide(),T.default.isSafari&&T.default.isMobile&&(T.default.version<10?this.$volumeContainer.css("display","none"):this.$volumeBarContainer.css("display","none")),this.$seekBarPosition.addClass("media-control-notransition"),this.$seekBarScrubber.addClass("media-control-notransition");var e=0;return this.displayedSeekBarPercentage&&(e=this.displayedSeekBarPercentage),this.displayedSeekBarPercentage=null,this.setSeekPercentage(e),n.nextTick(function(){t.settings.seekEnabled||t.$seekBarContainer.addClass("seek-disabled"),T.default.isMobile||t.options.disableKeyboardShortcuts||t.bindKeyEvents(),t.playerResize({width:t.options.width,height:t.options.height}),t.hideVolumeBar(0)}),this.parseColors(),this.highDefinitionUpdate(),this.rendered=!0,this.updateVolumeUI(),this.trigger(v.default.MEDIACONTROL_RENDERED),this},e}(_.default);e.default=q,q.extend=function(t){return(0,g.extend)(q,t)},t.exports=e.default}).call(e,i(57))},function(t,e,i){t.exports={default:i(143),__esModule:!0}},function(t,e,i){var n=i(11),r=n.JSON||(n.JSON={stringify:JSON.stringify});t.exports=function(t){return r.stringify.apply(r,arguments)}},function(t,e,i){var n=i(145);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,".media-control-notransition{transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url("+i(75)+"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url("+i(75)+'),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.9));transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{line-height:0;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;font-size:0;vertical-align:middle;pointer-events:auto;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block;width:32px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg{width:100%;height:22px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg path{fill:#fff}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{background-color:transparent;border:0;cursor:default;display:none;float:right;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{display:block;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin:0 6px 0 7px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:"|";margin-right:7px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:32px;height:32px;opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:.75}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg{height:24px;position:relative;top:3px}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg path{fill:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted svg{margin-left:2px}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;overflow:hidden;top:6px;width:42px;height:18px;padding:3px 0;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume]{height:1px;position:relative;top:7px;margin:0 3px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-1[data-volume]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-2[data-volume]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-hover[data-volume]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:0;left:0;width:20px;height:20px;opacity:1;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] .bar-scrubber-icon[data-volume]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:first-of-type{padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{width:0;height:12px;top:9px;padding:0}',""])},function(t,e){t.exports='
\n
\n <% var renderBar = function(name) { %>\n
>\n
>\n
>
\n
>
\n
>
\n
\n
>\n
>
\n
\n
\n <% }; %>\n <% var renderSegmentedBar = function(name, segments) {\n segments = segments || 10; %>\n
>\n <% for (var i = 0; i < segments; i++) { %>\n
>
\n <% } %>\n
\n <% }; %>\n <% var renderDrawer = function(name, renderContent) { %>\n
>\n
>\n
>
\n >\n
\n <% renderContent(name); %>\n
\n <% }; %>\n <% var renderIndicator = function(name) { %>\n
>
\n <% }; %>\n <% var renderButton = function(name) { %>\n \n <% }; %>\n <% var templates = {\n bar: renderBar,\n segmentedBar: renderSegmentedBar,\n };\n var render = function(settingsList) {\n settingsList.forEach(function(setting) {\n if(setting === "seekbar") {\n renderBar(setting);\n } else if (setting === "volume") {\n renderDrawer(setting, settings.volumeBarTemplate ? templates[settings.volumeBarTemplate] : function(name) { return renderSegmentedBar(name); });\n } else if (setting === "duration" || setting === "position") {\n renderIndicator(setting);\n } else {\n renderButton(setting);\n }\n });\n }; %>\n <% if (settings.default && settings.default.length) { %>\n
\n <% render(settings.default); %>\n
\n <% } %>\n <% if (settings.left && settings.left.length) { %>\n
\n <% render(settings.left); %>\n
\n <% } %>\n <% if (settings.right && settings.right.length) { %>\n
\n <% render(settings.right); %>\n
\n <% } %>\n
\n'},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e,i){var n=i(154);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,'[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:Roboto,Open Sans,Arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:"";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}',""])},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,'@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local("Roboto"),local("Roboto-Regular"),url('+i(156)+') format("truetype")}',""])},function(t,e){t.exports="<%=baseUrl%>/38861cba61c66739c1452c3a71e39852.ttf"},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(71),a=n(r),o=i(0),s=n(o),l=i(1),u=n(l),c=i(2),d=n(c),h=i(17),f=n(h),p=i(34),g=n(p),y=i(35),m=n(y),v=i(81),b=n(v),_=i(82),E=n(_),T=i(83),A=n(T),S=i(84),L=n(S),R=i(85),k=n(R),w=i(86),C=n(w),I=i(189),D=n(I),O=i(194),P=n(O),x=i(196),N=n(x),M=i(87),F=n(M),B=i(205),U=n(B),G=i(207),K=n(G),V=i(209),j=n(V),Y=i(214),H=n(Y),$=i(220),z=n($),W=i(222),q=n(W),X=i(227),Z=n(X),J=i(228),Q=n(J),tt=i(229),et=n(tt),it=function(t){function e(i,n){(0,s.default)(this,e);var r=(0,u.default)(this,t.call(this));return r.playerId=n,r.playbackPlugins=[L.default,m.default,E.default,b.default,A.default,k.default,C.default],r.containerPlugins=[D.default,N.default,F.default,P.default,U.default,K.default],r.corePlugins=[j.default,H.default,z.default,q.default,Z.default,Q.default,et.default],i&&(Array.isArray(i)||r.validateExternalPluginsType(i),r.addExternalPlugins(i)),r}return(0,d.default)(e,t),e.prototype.groupPluginsByType=function(t){return Array.isArray(t)&&(t=t.reduce(function(t,e){return t[e.type]||(t[e.type]=[]),t[e.type].push(e),t},{})),t},e.prototype.removeDups=function(t){var e=function(t,e){return t[e.prototype.name]&&delete t[e.prototype.name],t[e.prototype.name]=e,t},i=t.reduceRight(e,(0,a.default)(null)),n=[];for(var r in i)n.unshift(i[r]);return n},e.prototype.addExternalPlugins=function(t){t=this.groupPluginsByType(t),t.playback&&(this.playbackPlugins=this.removeDups(t.playback.concat(this.playbackPlugins))),t.container&&(this.containerPlugins=this.removeDups(t.container.concat(this.containerPlugins))),t.core&&(this.corePlugins=this.removeDups(t.core.concat(this.corePlugins))),g.default.getInstance(this.playerId).playbackPlugins=this.playbackPlugins},e.prototype.validateExternalPluginsType=function(t){["playback","container","core"].forEach(function(e){(t[e]||[]).forEach(function(t){var i="external "+t.type+" plugin on "+e+" array";if(t.type!==e)throw new ReferenceError(i)})})},e}(f.default);e.default=it,t.exports=e.default},function(t,e,i){"use strict";(function(n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var a=i(79),o=r(a),s=i(0),l=r(s),u=i(1),c=r(u),d=i(3),h=r(d),f=i(2),p=r(f),g=i(80),y=r(g),m=i(31),v=r(m),b=i(5),_=i(9),E=r(_),T=i(13),A=r(T),S=i(4),L=r(S),R=i(6),k=r(R),w=i(8),C=r(w),I=i(167),D=r(I);i(168);var O={mp4:["avc1.42E01E","avc1.58A01E","avc1.4D401E","avc1.64001E","mp4v.20.8","mp4v.20.240","mp4a.40.2"].map(function(t){return'video/mp4; codecs="'+t+', mp4a.40.2"'}),ogg:['video/ogg; codecs="theora, vorbis"','video/ogg; codecs="dirac"','video/ogg; codecs="theora, speex"'],"3gpp":['video/3gpp; codecs="mp4v.20.8, samr"'],webm:['video/webm; codecs="vp8, vorbis"'],mkv:['video/x-matroska; codecs="theora, vorbis"'],m3u8:["application/x-mpegurl"]};O.ogv=O.ogg,O["3gp"]=O["3gpp"];var P={wav:["audio/wav"],mp3:["audio/mp3",'audio/mpeg;codecs="mp3"'],aac:['audio/mp4;codecs="mp4a.40.5"'],oga:["audio/ogg"]},x=(0,v.default)(P).reduce(function(t,e){return[].concat((0,y.default)(t),(0,y.default)(P[e]))},[]),N=function(t){function e(){(0,l.default)(this,e);for(var i=arguments.length,r=Array(i),a=0;a=0}},{key:"attributes",get:function(){return{"data-html5-video":""}}},{key:"events",get:function(){return{canplay:"_onCanPlay",canplaythrough:"_handleBufferingEvents",durationchange:"_onDurationChange",ended:"_onEnded",error:"_onError",loadeddata:"_onLoadedData",loadedmetadata:"_onLoadedMetadata",pause:"_onPause",playing:"_onPlaying",progress:"_onProgress",seeking:"_handleBufferingEvents",seeked:"_onSeeked",stalled:"_handleBufferingEvents",timeupdate:"_onTimeUpdate",waiting:"_onWaiting"}}},{key:"ended",get:function(){return this.el.ended}},{key:"buffering",get:function(){return this._isBuffering}}]),e.prototype._setupExternalTracks=function(t){this._externalTracks=t.map(function(t){return{kind:t.kind||"subtitles",label:t.label,lang:t.lang,src:t.src}})},e.prototype._setupSrc=function(t){this.el.src!==t&&(this._ccIsSetup=!1,this.el.src=t,this._src=this.el.src)},e.prototype._onLoadedMetadata=function(t){this._handleBufferingEvents(),this.trigger(L.default.PLAYBACK_LOADEDMETADATA,{duration:t.target.duration,data:t}),this._updateSettings();var e=void 0===this._options.autoSeekFromUrl||this._options.autoSeekFromUrl;this.getPlaybackType()!==E.default.LIVE&&e&&this._checkInitialSeek()},e.prototype._onDurationChange=function(){this._updateSettings(),this._onTimeUpdate(),this._onProgress()},e.prototype._updateSettings=function(){this.getPlaybackType()===E.default.VOD||this.getPlaybackType()===E.default.AOD?this.settings.left=["playpause","position","duration"]:this.settings.left=["playstop"],this.settings.seekEnabled=this.isSeekEnabled(),this.trigger(L.default.PLAYBACK_SETTINGSUPDATE)},e.prototype.isSeekEnabled=function(){return isFinite(this.getDuration())},e.prototype.getPlaybackType=function(){var t="audio"===this.tagName?E.default.AOD:E.default.VOD;return[0,void 0,1/0].indexOf(this.el.duration)>=0?E.default.LIVE:t},e.prototype.isHighDefinitionInUse=function(){return!1},e.prototype.consent=function(){!this.isPlaying()&&this.el.load()},e.prototype.play=function(){this.trigger(L.default.PLAYBACK_PLAY_INTENT),this._stopped=!1,this._setupSrc(this._src),this._handleBufferingEvents();var t=this.el.play();t&&t.catch&&t.catch(function(){})},e.prototype.pause=function(){this.el.pause()},e.prototype.stop=function(){this.pause(),this._stopped=!0,this.el.removeAttribute("src"),this._stopPlayheadMovingChecks(),this._handleBufferingEvents(),this.trigger(L.default.PLAYBACK_STOP)},e.prototype.volume=function(t){0===t?(this.$el.attr({muted:"true"}),this.el.muted=!0):(this.$el.attr({muted:null}),this.el.muted=!1),this.el.volume=t/100},e.prototype.mute=function(){this.el.muted=!0},e.prototype.unmute=function(){this.el.muted=!1},e.prototype.isMuted=function(){return!!this.el.volume},e.prototype.isPlaying=function(){return!this.el.paused&&!this.el.ended},e.prototype._startPlayheadMovingChecks=function(){null===this._playheadMovingTimer&&(this._playheadMovingTimeOnCheck=null,this._determineIfPlayheadMoving(),this._playheadMovingTimer=setInterval(this._determineIfPlayheadMoving.bind(this),500))},e.prototype._stopPlayheadMovingChecks=function(){null!==this._playheadMovingTimer&&(clearInterval(this._playheadMovingTimer),this._playheadMovingTimer=null,this._playheadMoving=!1)},e.prototype._determineIfPlayheadMoving=function(){var t=this._playheadMovingTimeOnCheck,e=this.el.currentTime;this._playheadMoving=t!==e,this._playheadMovingTimeOnCheck=e,this._handleBufferingEvents()},e.prototype._onWaiting=function(){this._loadStarted=!0,this._handleBufferingEvents()},e.prototype._onLoadedData=function(){this._loadStarted=!0,this._handleBufferingEvents()},e.prototype._onCanPlay=function(){this._handleBufferingEvents()},e.prototype._onPlaying=function(){this._checkForClosedCaptions(),this._startPlayheadMovingChecks(),this._handleBufferingEvents(),this.trigger(L.default.PLAYBACK_PLAY)},e.prototype._onPause=function(){this._stopPlayheadMovingChecks(),this._handleBufferingEvents(),this.trigger(L.default.PLAYBACK_PAUSE)},e.prototype._onSeeked=function(){this._handleBufferingEvents(),this.trigger(L.default.PLAYBACK_SEEKED)},e.prototype._onEnded=function(){this._handleBufferingEvents(),this.trigger(L.default.PLAYBACK_ENDED,this.name)},e.prototype._handleBufferingEvents=function(){var t=!this.el.ended&&!this.el.paused,e=this._loadStarted&&!this.el.ended&&!this._stopped&&(t&&!this._playheadMoving||this.el.readyState=t[i].start&&this.el.currentTime<=t[i].end&&(e=i);var n={start:t[e].start,current:t[e].end,total:this.el.duration};this.trigger(L.default.PLAYBACK_PROGRESS,n,t)}},e.prototype._typeFor=function(t){var i=e._mimeTypesForUrl(t,O,this.options.mimeType);return 0===i.length&&(i=e._mimeTypesForUrl(t,P,this.options.mimeType)),(i[0]||"").split(";")[0]},e.prototype._ready=function(){this._isReadyState||(this._isReadyState=!0,this.trigger(L.default.PLAYBACK_READY,this.name))},e.prototype._checkForClosedCaptions=function(){if(this.isHTML5Video&&!this._ccIsSetup){if(this.hasClosedCaptionsTracks){this.trigger(L.default.PLAYBACK_SUBTITLE_AVAILABLE);var t=this.closedCaptionsTrackId;this.closedCaptionsTrackId=t,this.handleTextTrackChange=this._handleTextTrackChange.bind(this),this.el.textTracks.addEventListener("change",this.handleTextTrackChange)}this._ccIsSetup=!0}},e.prototype._handleTextTrackChange=function(){var t=this.closedCaptionsTracks,e=t.find(function(t){return"showing"===t.track.mode})||{id:-1};this._ccTrackId!==e.id&&(this._ccTrackId=e.id,this.trigger(L.default.PLAYBACK_SUBTITLE_CHANGED,{id:e.id}))},e.prototype.render=function(){return this.options.playback.disableContextMenu&&this.$el.on("contextmenu",function(){return!1}),this._externalTracks&&this._externalTracks.length>0&&this.$el.html(this.template({tracks:this._externalTracks})),this._ready(),this},(0,h.default)(e,[{key:"isReady",get:function(){return this._isReadyState}},{key:"isHTML5Video",get:function(){return this.name===e.prototype.name}},{key:"closedCaptionsTracks",get:function(){var t=0,e=function(){return t++};return(this.el.textTracks?(0,o.default)(this.el.textTracks):[]).filter(function(t){return"subtitles"===t.kind||"captions"===t.kind}).map(function(t){return{id:e(),name:t.label,track:t}})}},{key:"closedCaptionsTrackId",get:function(){return this._ccTrackId},set:function(t){if((0,b.isNumber)(t)){var e=this.closedCaptionsTracks,i=void 0;if(-1!==t){if(!(i=e.find(function(e){return e.id===t})))return;if("showing"===i.track.mode)return}e.filter(function(t){return"hidden"!==t.track.mode}).forEach(function(t){return t.track.mode="hidden"}),i&&(i.track.mode="showing"),this._ccTrackId=t,this.trigger(L.default.PLAYBACK_SUBTITLE_CHANGED,{id:t})}}},{key:"template",get:function(){return(0,C.default)(D.default)}}]),e}(E.default);e.default=N,N._mimeTypesForUrl=function(t,e,i){var n=(t.split("?")[0].match(/.*\.(.*)$/)||[])[1],r=i||n&&e[n.toLowerCase()]||[];return r.constructor===Array?r:[r]},N._canPlay=function(t,e,i,n){var r=N._mimeTypesForUrl(i,e,n),a=document.createElement(t);return!!r.filter(function(t){return!!a.canPlayType(t).replace(/no/,"")})[0]},N.canPlay=function(t,e){return N._canPlay("audio",P,t,e)||N._canPlay("video",O,t,e)},t.exports=e.default}).call(e,i(57))},function(t,e,i){i(65),i(160),t.exports=i(11).Array.from},function(t,e,i){"use strict";var n=i(46),r=i(19),a=i(39),o=i(161),s=i(162),l=i(61),u=i(163),c=i(164);r(r.S+r.F*!i(166)(function(t){Array.from(t)}),"Array",{from:function(t){var e,i,r,d,h=a(t),f="function"==typeof this?this:Array,p=arguments.length,g=p>1?arguments[1]:void 0,y=void 0!==g,m=0,v=c(h);if(y&&(g=n(g,p>2?arguments[2]:void 0,2)),void 0==v||f==Array&&s(v))for(e=l(h.length),i=new f(e);e>m;m++)u(i,m,y?g(h[m],m):h[m]);else for(d=v.call(h),i=new f;!(r=d.next()).done;m++)u(i,m,y?o(d,g,[r.value,m],!0):r.value);return i.length=m,i}})},function(t,e,i){var n=i(23);t.exports=function(t,e,i,r){try{return r?e(n(i)[0],i[1]):e(i)}catch(e){var a=t.return;throw void 0!==a&&n(a.call(t)),e}}},function(t,e,i){var n=i(29),r=i(12)("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||a[r]===t)}},function(t,e,i){"use strict";var n=i(16),r=i(28);t.exports=function(t,e,i){e in t?n.f(t,e,r(0,i)):t[e]=i}},function(t,e,i){var n=i(165),r=i(12)("iterator"),a=i(29);t.exports=i(11).getIteratorMethod=function(t){if(void 0!=t)return t[r]||t["@@iterator"]||a[n(t)]}},function(t,e,i){var n=i(41),r=i(12)("toStringTag"),a="Arguments"==n(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=o(e=Object(t),r))?i:a?n(e):"Object"==(s=n(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e,i){var n=i(12)("iterator"),r=!1;try{var a=[7][n]();a.return=function(){r=!0},Array.from(a,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var i=!1;try{var a=[7],o=a[n]();o.next=function(){return{done:i=!0}},a[n]=function(){return o},t(a)}catch(t){}return i}},function(t,e){t.exports='<% for (var i = 0; i < tracks.length; i++) { %>\n \n<% }; %>\n'},function(t,e,i){var n=i(169);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}",""])},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(5),f=i(59),p=n(f),g=i(13),y=n(g),m=i(24),v=n(m),b=i(8),_=n(b),E=i(6),T=n(E),A=i(4),S=n(A),L=i(9),R=n(L),k=i(175),w=n(k),C=function(t){function e(){(0,a.default)(this,e);for(var i=arguments.length,n=Array(i),r=0;r').insertAfter(this.$el),this.getDuration()>0?this._metadataLoaded():v.default.once(this.uniqueId+":timeupdate",this._metadataLoaded,this)):(this._attempts=this._attempts||0,++this._attempts<=60?setTimeout(function(){return t._bootstrap()},50):this.trigger(S.default.PLAYBACK_ERROR,{message:"Max number of attempts reached"},this.name))},e.prototype._metadataLoaded=function(){this._isReadyState=!0,this.trigger(S.default.PLAYBACK_READY,this.name),this.trigger(S.default.PLAYBACK_SETTINGSUPDATE,this.name)},e.prototype.getPlaybackType=function(){return R.default.VOD},e.prototype.isHighDefinitionInUse=function(){return!1},e.prototype._updateTime=function(){this.trigger(S.default.PLAYBACK_TIMEUPDATE,{current:this.el.getPosition(),total:this.el.getDuration()},this.name)},e.prototype._addListeners=function(){v.default.on(this.uniqueId+":progress",this._progress,this),v.default.on(this.uniqueId+":timeupdate",this._updateTime,this),v.default.on(this.uniqueId+":statechanged",this._checkState,this),v.default.on(this.uniqueId+":flashready",this._bootstrap,this)},e.prototype.stopListening=function(){t.prototype.stopListening.call(this),v.default.off(this.uniqueId+":progress"),v.default.off(this.uniqueId+":timeupdate"),v.default.off(this.uniqueId+":statechanged"),v.default.off(this.uniqueId+":flashready")},e.prototype._checkState=function(){this._isIdle||"PAUSED"===this._currentState||("PLAYING_BUFFERING"!==this._currentState&&"PLAYING_BUFFERING"===this.el.getState()?(this._bufferingState=!0,this.trigger(S.default.PLAYBACK_BUFFERING,this.name),this._currentState="PLAYING_BUFFERING"):"PLAYING"===this.el.getState()?(this._bufferingState=!1,this.trigger(S.default.PLAYBACK_BUFFERFULL,this.name),this._currentState="PLAYING"):"IDLE"===this.el.getState()?this._currentState="IDLE":"ENDED"===this.el.getState()&&(this.trigger(S.default.PLAYBACK_ENDED,this.name),this.trigger(S.default.PLAYBACK_TIMEUPDATE,{current:0,total:this.el.getDuration()},this.name),this._currentState="ENDED",this._isIdle=!0))},e.prototype._progress=function(){"IDLE"!==this._currentState&&"ENDED"!==this._currentState&&this.trigger(S.default.PLAYBACK_PROGRESS,{start:0,current:this.el.getBytesLoaded(),total:this.el.getBytesTotal()})},e.prototype._firstPlay=function(){var t=this;this.el.playerPlay?(this._isIdle=!1,this.el.playerPlay(this._src),this.listenToOnce(this,S.default.PLAYBACK_BUFFERFULL,function(){return t._checkInitialSeek()}),this._currentState="PLAYING"):this.listenToOnce(this,S.default.PLAYBACK_READY,this._firstPlay)},e.prototype._checkInitialSeek=function(){var t=(0,h.seekStringToSeconds)(window.location.href);0!==t&&this.seekSeconds(t)},e.prototype.play=function(){this.trigger(S.default.PLAYBACK_PLAY_INTENT),"PAUSED"===this._currentState||"PLAYING_BUFFERING"===this._currentState?(this._currentState="PLAYING",this.el.playerResume(),this.trigger(S.default.PLAYBACK_PLAY,this.name)):"PLAYING"!==this._currentState&&(this._firstPlay(),this.trigger(S.default.PLAYBACK_PLAY,this.name))},e.prototype.volume=function(t){var e=this;this.isReady?this.el.playerVolume(t):this.listenToOnce(this,S.default.PLAYBACK_BUFFERFULL,function(){return e.volume(t)})},e.prototype.pause=function(){this._currentState="PAUSED",this.el.playerPause(),this.trigger(S.default.PLAYBACK_PAUSE,this.name)},e.prototype.stop=function(){this.el.playerStop(),this.trigger(S.default.PLAYBACK_STOP),this.trigger(S.default.PLAYBACK_TIMEUPDATE,{current:0,total:0},this.name)},e.prototype.isPlaying=function(){return!!(this.isReady&&this._currentState.indexOf("PLAYING")>-1)},e.prototype.getDuration=function(){return this.el.getDuration()},e.prototype.seekPercentage=function(t){var e=this;if(this.el.getDuration()>0){var i=this.el.getDuration()*(t/100);this.seek(i)}else this.listenToOnce(this,S.default.PLAYBACK_BUFFERFULL,function(){return e.seekPercentage(t)})},e.prototype.seek=function(t){var e=this;this.isReady&&this.el.playerSeek?(this.el.playerSeek(t),this.trigger(S.default.PLAYBACK_TIMEUPDATE,{current:t,total:this.el.getDuration()},this.name),"PAUSED"===this._currentState&&this.el.playerPause()):this.listenToOnce(this,S.default.PLAYBACK_BUFFERFULL,function(){return e.seek(t)})},e.prototype.destroy=function(){clearInterval(this.bootstrapId),t.prototype.stopListening.call(this),this.$el.remove()},(0,u.default)(e,[{key:"isReady",get:function(){return this._isReadyState}}]),e}(p.default);e.default=C,C.canPlay=function(t){if(y.default.hasFlash&&t&&t.constructor===String){var e=t.split("?")[0].match(/.*\.(.*)$/)||[];return e.length>1&&!y.default.isMobile&&e[1].toLowerCase().match(/^(mp4|mov|f4v|3gpp|3gp)$/)}return!1},t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(3),s=n(o),l=i(1),u=n(l),c=i(2),d=n(c),h=i(9),f=n(h),p=i(8),g=n(p),y=i(13),m=n(y),v=i(172),b=n(v);i(173);var _=function(t){function e(){return(0,a.default)(this,e),(0,u.default)(this,t.apply(this,arguments))}return(0,d.default)(e,t),e.prototype.setElement=function(t){this.$el=t,this.el=t[0]},e.prototype.render=function(){return this.$el.attr("data",this.swfPath),this.$el.html(this.template({cid:this.cid,swfPath:this.swfPath,baseUrl:this.baseUrl,playbackId:this.uniqueId,wmode:this.wmode,callbackName:"window.Clappr.flashlsCallbacks."+this.cid})),m.default.isIE&&(this.$("embed").remove(),m.default.isLegacyIE&&this.$el.attr("classid","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000")),this.el.id=this.cid,this},(0,s.default)(e,[{key:"tagName",get:function(){return"object"}},{key:"swfPath",get:function(){return""}},{key:"wmode",get:function(){return"transparent"}},{key:"template",get:function(){return(0,g.default)(b.default)}},{key:"attributes",get:function(){var t="application/x-shockwave-flash";return m.default.isLegacyIE&&(t=""),{class:"clappr-flash-playback",type:t,width:"100%",height:"100%",data:this.swfPath,"data-flash-playback":this.name}}}]),e}(f.default);e.default=_,t.exports=e.default},function(t,e){t.exports='\n\n\n\n\n\n\n\n\n\n\n'},function(t,e,i){var n=i(174);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,".clappr-flash-playback[data-flash-playback]{display:block;position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none}",""])},function(t,e){t.exports="<%=baseUrl%>/4b76590b32dab62bc95c1b7951efae78.swf"},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(3),s=n(o),l=i(1),u=n(l),c=i(2),d=n(c),h=i(4),f=n(h),p=i(9),g=n(p),y=i(35),m=n(y),v=function(t){function e(){return(0,a.default)(this,e),(0,u.default)(this,t.apply(this,arguments))}return(0,d.default)(e,t),e.prototype.updateSettings=function(){this.settings.left=["playpause","position","duration"],this.settings.seekEnabled=this.isSeekEnabled(),this.trigger(f.default.PLAYBACK_SETTINGSUPDATE)},e.prototype.getPlaybackType=function(){return g.default.AOD},(0,s.default)(e,[{key:"name",get:function(){return"html5_audio"}},{key:"tagName",get:function(){return"audio"}},{key:"isAudioOnly",get:function(){return!0}}]),e}(m.default);e.default=v,v.canPlay=function(t,e){var i={wav:["audio/wav"],mp3:["audio/mp3",'audio/mpeg;codecs="mp3"'],aac:['audio/mp4;codecs="mp4a.40.5"'],oga:["audio/ogg"]};return m.default._canPlay("audio",i,t,e)},t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(59),f=n(h),p=i(4),g=n(p),y=i(8),m=n(y),v=i(9),b=n(v),_=i(24),E=n(_),T=i(13),A=n(T),S=i(178),L=n(S),R=i(179),k=n(R),w=i(6),C=n(w),I=function(t){function e(){(0,a.default)(this,e);for(var i=arguments.length,n=Array(i),r=0;r=720||e.bitrate/1e3>=2e3,this.trigger(g.default.PLAYBACK_HIGHDEFINITIONUPDATE,this.highDefinition),this._levels&&0!==this._levels.length||this._fillLevels(),this.trigger(g.default.PLAYBACK_BITRATE,{height:e.height,width:e.width,bandwidth:e.bitrate,bitrate:e.bitrate,level:t}),this.trigger(g.default.PLAYBACK_LEVEL_SWITCH_END))},e.prototype._updateTime=function(t){if("IDLE"!==this._currentState){var e=this._normalizeDuration(t.duration),i=Math.min(Math.max(t.position,0),e),n=this._dvrEnabled,r=this._playbackType===b.default.LIVE;this._dvrEnabled=r&&e>this._hlsMinimumDvrSize,100!==e&&void 0!==r&&(this._dvrEnabled!==n&&(this._updateSettings(),this.trigger(g.default.PLAYBACK_SETTINGSUPDATE,this.name)),!r||this._dvrEnabled&&this._dvrInUse||(i=e),this.trigger(g.default.PLAYBACK_TIMEUPDATE,{current:i,total:e},this.name))}},e.prototype.play=function(){this.trigger(g.default.PLAYBACK_PLAY_INTENT),"PAUSED"===this._currentState?this.el.playerResume():this._srcLoaded||"PLAYING"===this._currentState?this.el.playerPlay():this._firstPlay()},e.prototype.getPlaybackType=function(){return this._playbackType?this._playbackType:null},e.prototype.getCurrentTime=function(){return this.el.getPosition()},e.prototype.getCurrentLevelIndex=function(){return this._currentLevel},e.prototype.getCurrentLevel=function(){return this.levels[this.currentLevel]},e.prototype.getCurrentBitrate=function(){return this.levels[this.currentLevel].bitrate},e.prototype.setCurrentLevel=function(t){this.currentLevel=t},e.prototype.isHighDefinitionInUse=function(){return this.highDefinition},e.prototype.getLevels=function(){return this.levels},e.prototype._setPlaybackState=function(t){["PLAYING_BUFFERING","PAUSED_BUFFERING"].indexOf(t)>=0?(this._bufferingState=!0,this.trigger(g.default.PLAYBACK_BUFFERING,this.name),this._updateCurrentState(t)):["PLAYING","PAUSED"].indexOf(t)>=0?(["PLAYING_BUFFERING","PAUSED_BUFFERING","IDLE"].indexOf(this._currentState)>=0&&(this._bufferingState=!1,this.trigger(g.default.PLAYBACK_BUFFERFULL,this.name)),this._updateCurrentState(t)):"IDLE"===t&&(this._srcLoaded=!1,this._loop&&["PLAYING_BUFFERING","PLAYING"].indexOf(this._currentState)>=0?(this.play(),this.seek(0)):(this._updateCurrentState(t),this._hasEnded=!0,this.trigger(g.default.PLAYBACK_TIMEUPDATE,{current:0,total:this.getDuration()},this.name),this.trigger(g.default.PLAYBACK_ENDED,this.name)))},e.prototype._updateCurrentState=function(t){this._currentState=t,"IDLE"!==t&&(this._hasEnded=!1),this._updatePlaybackType(),"PLAYING"===t?this.trigger(g.default.PLAYBACK_PLAY,this.name):"PAUSED"===t&&this.trigger(g.default.PLAYBACK_PAUSE,this.name)},e.prototype._updatePlaybackType=function(){this._playbackType=this.el.getType(),this._playbackType&&(this._playbackType=this._playbackType.toLowerCase(),this._playbackType===b.default.VOD?this._startReportingProgress():this._stopReportingProgress()),this.trigger(g.default.PLAYBACK_PLAYBACKSTATE,{type:this._playbackType})},e.prototype._startReportingProgress=function(){this._reportingProgress||(this._reportingProgress=!0)},e.prototype._stopReportingProgress=function(){this._reportingProgress=!1},e.prototype._onFragmentLoaded=function(t){if(this.trigger(g.default.PLAYBACK_FRAGMENT_LOADED,t),this._reportingProgress&&this.getCurrentTime()){var e=this.getCurrentTime()+this.el.getbufferLength();this.trigger(g.default.PLAYBACK_PROGRESS,{start:this.getCurrentTime(),current:e,total:this.el.getDuration()})}},e.prototype._onLevelEndlist=function(){this._updatePlaybackType()},e.prototype._firstPlay=function(){var t=this;this._shouldPlayOnManifestLoaded=!0,this.el.playerLoad&&(E.default.once(this.cid+":manifestloaded",function(e,i){return t._manifestLoaded(e,i)}),this._setFlashSettings(),this.el.playerLoad(this._src),this._srcLoaded=!0)},e.prototype.volume=function(t){var e=this;this.isReady?this.el.playerVolume(t):this.listenToOnce(this,g.default.PLAYBACK_BUFFERFULL,function(){return e.volume(t)})},e.prototype.pause=function(){(this._playbackType!==b.default.LIVE||this._dvrEnabled)&&(this.el.playerPause(),this._playbackType===b.default.LIVE&&this._dvrEnabled&&this._updateDvr(!0))},e.prototype.stop=function(){this._srcLoaded=!1,this.el.playerStop(),this.trigger(g.default.PLAYBACK_STOP),this.trigger(g.default.PLAYBACK_TIMEUPDATE,{current:0,total:0},this.name)},e.prototype.isPlaying=function(){return!!this._currentState&&!!this._currentState.match(/playing/i)},e.prototype.getDuration=function(){return this._normalizeDuration(this.el.getDuration())},e.prototype._normalizeDuration=function(t){return this._playbackType===b.default.LIVE&&(t=Math.max(0,t-10)),t},e.prototype.seekPercentage=function(t){var e=this.el.getDuration(),i=0;t>0&&(i=e*t/100),this.seek(i)},e.prototype.seek=function(t){var e=this.getDuration();if(this._playbackType===b.default.LIVE){var i=e-t>3;this._updateDvr(i)}this.el.playerSeek(t),this.trigger(g.default.PLAYBACK_TIMEUPDATE,{current:t,total:e},this.name)},e.prototype._updateDvr=function(t){var e=!!this._dvrInUse;this._dvrInUse=t,this._dvrInUse!==e&&(this._updateSettings(),this.trigger(g.default.PLAYBACK_DVR,this._dvrInUse),this.trigger(g.default.PLAYBACK_STATS_ADD,{dvr:this._dvrInUse}))},e.prototype._flashPlaybackError=function(t,e,i){this.trigger(g.default.PLAYBACK_ERROR,{code:t,url:e,message:i}),this.trigger(g.default.PLAYBACK_STOP)},e.prototype._manifestLoaded=function(t,e){this._shouldPlayOnManifestLoaded&&(this._shouldPlayOnManifestLoaded=!1,this.el.playerPlay()),this._fillLevels(),this.trigger(g.default.PLAYBACK_LOADEDMETADATA,{duration:t,data:e})},e.prototype._fillLevels=function(){var t=this.el.getLevels(),e=t.length;this._levels=[];for(var i=0;i1&&"m3u8"===i[1].toLowerCase()||"application/x-mpegURL"===e||"application/vnd.apple.mpegurl"===e)},t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(24),s=n(o),l=function(){function t(e){(0,a.default)(this,t),this.instanceId=e}return t.prototype.ready=function(){s.default.trigger(this.instanceId+":flashready")},t.prototype.videoSize=function(t,e){s.default.trigger(this.instanceId+":videosizechanged",t,e)},t.prototype.complete=function(){s.default.trigger(this.instanceId+":complete")},t.prototype.error=function(t,e,i){s.default.trigger(this.instanceId+":error",t,e,i)},t.prototype.manifest=function(t,e){s.default.trigger(this.instanceId+":manifestloaded",t,e)},t.prototype.audioLevelLoaded=function(t){s.default.trigger(this.instanceId+":audiolevelloaded",t)},t.prototype.levelLoaded=function(t){s.default.trigger(this.instanceId+":levelloaded",t)},t.prototype.levelEndlist=function(t){s.default.trigger(this.instanceId+":levelendlist",t)},t.prototype.fragmentLoaded=function(t){s.default.trigger(this.instanceId+":fragmentloaded",t)},t.prototype.fragmentPlaying=function(t){s.default.trigger(this.instanceId+":fragmentplaying",t)},t.prototype.position=function(t){s.default.trigger(this.instanceId+":timeupdate",t)},t.prototype.state=function(t){s.default.trigger(this.instanceId+":playbackstate",t)},t.prototype.seekState=function(t){s.default.trigger(this.instanceId+":seekstate",t)},t.prototype.switch=function(t){s.default.trigger(this.instanceId+":levelchanged",t)},t.prototype.audioTracksListChange=function(t){s.default.trigger(this.instanceId+":audiotracklistchanged",t)},t.prototype.audioTrackChange=function(t){s.default.trigger(this.instanceId+":audiotrackchanged",t)},t}();e.default=l,t.exports=e.default},function(t,e){t.exports="<%=baseUrl%>/8fa12a459188502b9f0d39b8a67d9e6c.swf"},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(80),a=n(r),o=i(0),s=n(o),l=i(1),u=n(l),c=i(3),d=n(c),h=i(2),f=n(h),p=i(35),g=n(p),y=i(181),m=n(y),v=i(4),b=n(v),_=i(9),E=n(_),T=i(5),A=i(55),S=n(A),L=function(t){function e(){(0,s.default)(this,e);for(var i=arguments.length,n=Array(i),r=0;r0&&(e=this._duration*(t/100)),this.seek(e)},e.prototype.seek=function(e){e<0&&(S.default.warn("Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point."),e=this.getDuration()),this.dvrEnabled&&this._updateDvr(e0)switch(this._recoverAttemptsRemaining-=1,e.type){case m.default.ErrorTypes.NETWORK_ERROR:switch(e.details){case m.default.ErrorDetails.MANIFEST_LOAD_ERROR:case m.default.ErrorDetails.MANIFEST_LOAD_TIMEOUT:case m.default.ErrorDetails.MANIFEST_PARSING_ERROR:case m.default.ErrorDetails.LEVEL_LOAD_ERROR:case m.default.ErrorDetails.LEVEL_LOAD_TIMEOUT:S.default.error("hlsjs: unrecoverable network fatal error, evt "+t+", data "+e+" "),this.trigger(b.default.PLAYBACK_ERROR,{evt:t,data:e},this.name);break;default:S.default.warn("hlsjs: trying to recover from network error, evt "+t+", data "+e+" "),this._hls.startLoad()}break;case m.default.ErrorTypes.MEDIA_ERROR:S.default.warn("hlsjs: trying to recover from media error, evt "+t+", data "+e+" "),this._recover(t,e);break;default:S.default.error("hlsjs: trying to recover from error, evt "+t+", data "+e+" "),this.trigger(b.default.PLAYBACK_ERROR,"hlsjs: could not recover from error, evt "+t+", data "+e+" ",this.name)}else S.default.error("hlsjs: could not recover from error after maximum number of attempts, evt "+t+", data "+e+" "),this.trigger(b.default.PLAYBACK_ERROR,{evt:t,data:e},this.name);else S.default.warn("hlsjs: non-fatal error occurred, evt "+t+", data "+e+" ")},e.prototype._onTimeUpdate=function(){var t={current:this.getCurrentTime(),total:this.getDuration()};this._lastTimeUpdate&&t.current===this._lastTimeUpdate.current&&t.total===this._lastTimeUpdate.total||(this._lastTimeUpdate=t,this.trigger(b.default.PLAYBACK_TIMEUPDATE,t,this.name))},e.prototype._onDurationChange=function(){var e=this.getDuration();this._lastDuration!==e&&(this._lastDuration=e,t.prototype._onDurationChange.call(this))},e.prototype._onProgress=function(){if(this.el.buffered.length){for(var t=[],e=0,i=0;i=t[i].start&&this.el.currentTime<=t[i].end&&(e=i);var n={start:t[e].start,current:t[e].end,total:this.getDuration()};this.trigger(b.default.PLAYBACK_PROGRESS,n,t)}},e.prototype.play=function(){this._hls||this._setup(),t.prototype.play.call(this)},e.prototype.pause=function(){this._hls&&(t.prototype.pause.call(this),this.dvrEnabled&&this._updateDvr(!0))},e.prototype.stop=function(){this._hls&&(t.prototype.stop.call(this),this._hls.destroy(),delete this._hls)},e.prototype.destroy=function(){this._stopTimeUpdateTimer(),this._hls&&(this._hls.destroy(),delete this._hls),t.prototype.destroy.call(this)},e.prototype._updatePlaybackType=function(t,e){this._playbackType=e.details.live?E.default.LIVE:E.default.VOD,this._fillLevels(),this._onLevelUpdated(t,e),this._ccTracksUpdated&&this._playbackType===E.default.LIVE&&this.hasClosedCaptionsTracks&&this._onSubtitleLoaded()},e.prototype._fillLevels=function(){this._levels=this._hls.levels.map(function(t,e){return{id:e,level:t,label:t.bitrate/1e3+"Kbps"}}),this.trigger(b.default.PLAYBACK_LEVELS_AVAILABLE,this._levels)},e.prototype._onLevelUpdated=function(t,e){this._segmentTargetDuration=e.details.targetduration,this._playlistType=e.details.type||null;var i=!1,n=!1,r=e.details.fragments,a=this._playableRegionStartTime,o=this._playableRegionDuration;if(0!==r.length){if(this._playableRegionStartTime!==r[0].start&&(i=!0,this._playableRegionStartTime=r[0].start),i)if(this._localStartTimeCorrelation){var s=this._localStartTimeCorrelation,l=this._now-s.local,u=(s.remote+l)/1e3;ua+this._extrapolatedWindowDuration&&(this._localStartTimeCorrelation={local:this._now,remote:1e3*Math.max(r[0].start,a+this._extrapolatedWindowDuration)})}else this._localStartTimeCorrelation={local:this._now,remote:1e3*(r[0].start+this._extrapolatedWindowDuration/2)};var c=e.details.totalduration;if(this._playbackType===E.default.LIVE){var d=e.details.targetduration,h=this.options.playback.hlsjsConfig||{},f=h.liveSyncDurationCount||m.default.DefaultConfig.liveSyncDurationCount,p=d*f;p<=c?(c-=p,this._durationExcludesAfterLiveSyncPoint=!0):this._durationExcludesAfterLiveSyncPoint=!1}c!==this._playableRegionDuration&&(n=!0,this._playableRegionDuration=c);var g=r[0].start+c,y=a+o;if(g!==y)if(this._localEndTimeCorrelation){var v=this._localEndTimeCorrelation,b=this._now-v.local,_=(v.remote+b)/1e3;_>g?this._localEndTimeCorrelation={local:this._now,remote:1e3*g}:_y&&(this._localEndTimeCorrelation={local:this._now,remote:1e3*y})}else this._localEndTimeCorrelation={local:this._now,remote:1e3*g};n&&this._onDurationChange(),i&&this._onProgress()}},e.prototype._onFragmentLoaded=function(t,e){this.trigger(b.default.PLAYBACK_FRAGMENT_LOADED,e)},e.prototype._onSubtitleLoaded=function(){if(!this._ccIsSetup){this.trigger(b.default.PLAYBACK_SUBTITLE_AVAILABLE);var t=this._playbackType===E.default.LIVE?-1:this.closedCaptionsTrackId;this.closedCaptionsTrackId=t,this._ccIsSetup=!0}},e.prototype._onLevelSwitch=function(t,e){this.levels.length||this._fillLevels(),this.trigger(b.default.PLAYBACK_LEVEL_SWITCH_END),this.trigger(b.default.PLAYBACK_LEVEL_SWITCH,e);var i=this._hls.levels[e.level];i&&(this.highDefinition=i.height>=720||i.bitrate/1e3>=2e3,this.trigger(b.default.PLAYBACK_HIGHDEFINITIONUPDATE,this.highDefinition),this.trigger(b.default.PLAYBACK_BITRATE,{height:i.height,width:i.width,bandwidth:i.bitrate,bitrate:i.bitrate,level:e.level}))},e.prototype.getPlaybackType=function(){return this._playbackType},e.prototype.isSeekEnabled=function(){return this._playbackType===E.default.VOD||this.dvrEnabled},(0,d.default)(e,[{key:"dvrEnabled",get:function(){return this._durationExcludesAfterLiveSyncPoint&&this._duration>=this._minDvrSize&&this.getPlaybackType()===E.default.LIVE}}]),e}(g.default);e.default=L,L.canPlay=function(t,e){var i=t.split("?")[0].match(/.*\.(.*)$/)||[],n=i.length>1&&"m3u8"===i[1].toLowerCase()||"application/x-mpegURL"===e||"application/vnd.apple.mpegurl"===e;return!(!m.default.isSupported()||!n)},t.exports=e.default},function(t,e,i){!function(e,i){t.exports=i()}(0,function(){return function(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};return e.m=t,e.c=i,e.d=function(t,i,n){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/dist/",e(e.s=8)}([function(t,e,i){"use strict";function n(){}function r(t,e){return e="["+t+"] > "+e}function a(t){var e=self.console[t];return e?function(){for(var i=arguments.length,n=Array(i),a=0;a1?e-1:0),n=1;n0)return e.subarray(n,n+r)},t._readSize=function(t,e){var i=0;return i=(127&t[e])<<21,i|=(127&t[e+1])<<14,i|=(127&t[e+2])<<7,i|=127&t[e+3]},t.getTimeStamp=function(e){for(var i=t.getID3Frames(e),n=0;n1&&void 0!==arguments[1]&&arguments[1],i=t.length,n=void 0,r=void 0,a=void 0,o="",s=0;s>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(n);break;case 12:case 13:r=t[s++],o+=String.fromCharCode((31&n)<<6|63&r);break;case 14:r=t[s++],a=t[s++],o+=String.fromCharCode((15&n)<<12|(63&r)<<6|(63&a)<<0)}}return o},t}(),a=r._utf8ArrayToStr;e.a=r},function(t,e,i){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var s=function(){function t(e,i){n(this,t),this.subtle=e,this.aesIV=i}return t.prototype.decrypt=function(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)},t}(),l=s,u=function(){function t(e,i){r(this,t),this.subtle=e,this.key=i}return t.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},t}(),c=u,d=function(){function t(){a(this,t),this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.initTable()}return t.prototype.uint8ArrayToUint32Array_=function(t){for(var e=new DataView(t),i=new Uint32Array(4),n=0;n<4;n++)i[n]=e.getUint32(4*n);return i},t.prototype.initTable=function(){var t=this.sBox,e=this.invSBox,i=this.subMix,n=i[0],r=i[1],a=i[2],o=i[3],s=this.invSubMix,l=s[0],u=s[1],c=s[2],d=s[3],h=new Uint32Array(256),f=0,p=0,g=0;for(g=0;g<256;g++)h[g]=g<128?g<<1:g<<1^283;for(g=0;g<256;g++){var y=p^p<<1^p<<2^p<<3^p<<4;y=y>>>8^255&y^99,t[f]=y,e[y]=f;var m=h[f],v=h[m],b=h[v],_=257*h[y]^16843008*y;n[f]=_<<24|_>>>8,r[f]=_<<16|_>>>16,a[f]=_<<8|_>>>24,o[f]=_,_=16843009*b^65537*v^257*m^16843008*f,l[y]=_<<24|_>>>8,u[y]=_<<16|_>>>16,c[y]=_<<8|_>>>24,d[y]=_,f?(f=m^h[h[h[b^m]]],p^=h[h[p]]):f=p=1}},t.prototype.expandKey=function(t){for(var e=this.uint8ArrayToUint32Array_(t),i=!0,n=0;n0&&this._events[t].length>r&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(t,e){function i(){this.removeListener(t,i),r||(r=!0,e.apply(this,arguments))}if(!n(e))throw TypeError("listener must be a function");var r=!1;return i.listener=e,this.on(t,i),this},i.prototype.removeListener=function(t,e){var i,r,o,s;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(i=this._events[t],o=i.length,r=-1,i===e||n(i.listener)&&i.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(a(i)){for(s=o;s-- >0;)if(i[s]===e||i[s].listener&&i[s].listener===e){r=s;break}if(r<0)return this;1===i.length?(i.length=0,delete this._events[t]):i.splice(r,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},i.prototype.removeAllListeners=function(t){var e,i;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(i=this._events[t],n(i))this.removeListener(t,i);else if(i)for(;i.length;)this.removeListener(t,i[i.length-1]);return delete this._events[t],this},i.prototype.listeners=function(t){return this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},i.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},i.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,i){!function(e){var i=/^((?:[^\/;?#]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,n=/^([^\/;?#]*)(.*)$/,r=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,o={buildAbsoluteURL:function(t,e,i){if(i=i||{},t=t.trim(),!(e=e.trim())){if(!i.alwaysNormalize)return t;var r=this.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");return r.path=o.normalizePath(r.path),o.buildURLFromParts(r)}var a=this.parseURL(e);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return i.alwaysNormalize?(a.path=o.normalizePath(a.path),o.buildURLFromParts(a)):e;var s=this.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");if(!s.netLoc&&s.path&&"/"!==s.path[0]){var l=n.exec(s.path);s.netLoc=l[1],s.path=l[2]}s.netLoc&&!s.path&&(s.path="/");var u={scheme:s.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(u.netLoc=s.netLoc,"/"!==a.path[0]))if(a.path){var c=s.path,d=c.substring(0,c.lastIndexOf("/")+1)+a.path;u.path=o.normalizePath(d)}else u.path=s.path,a.params||(u.params=s.params,a.query||(u.query=s.query));return null===u.path&&(u.path=i.alwaysNormalize?o.normalizePath(a.path):a.path),o.buildURLFromParts(u)},parseURL:function(t){var e=i.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(r,"");t.length!==(t=t.replace(a,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};t.exports=o}()},function(t,e,i){"use strict";function n(t,e,i,n){var r,a,o,s,l,u=navigator.userAgent.toLowerCase(),c=n,d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return r=1+((192&e[i+2])>>>6),(a=(60&e[i+2])>>>2)>d.length-1?void t.trigger(Event.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+a}):(s=(1&e[i+2])<<2,s|=(192&e[i+3])>>>6,k.b.log("manifest codec:"+n+",ADTS data:type:"+r+",sampleingIndex:"+a+"["+d[a]+"Hz],channelConfig:"+s),/firefox/i.test(u)?a>=6?(r=5,l=new Array(4),o=a-3):(r=2,l=new Array(2),o=a):-1!==u.indexOf("android")?(r=2,l=new Array(2),o=a):(r=5,l=new Array(4),n&&(-1!==n.indexOf("mp4a.40.29")||-1!==n.indexOf("mp4a.40.5"))||!n&&a>=6?o=a-3:((n&&-1!==n.indexOf("mp4a.40.2")&&(a>=6&&1===s||/vivaldi/i.test(u))||!n&&1===s)&&(r=2,l=new Array(2)),o=a)),l[0]=r<<3,l[0]|=(14&a)>>1,l[1]|=(1&a)<<7,l[1]|=s<<3,5===r&&(l[1]|=(14&o)>>1,l[2]=(1&o)<<7,l[2]|=8,l[3]=0),{config:l,samplerate:d[a],channelCount:s,codec:"mp4a.40."+r,manifestCodec:c})}function r(t,e){return 255===t[e]&&240==(246&t[e+1])}function a(t,e){return 1&t[e+1]?7:9}function o(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function s(t,e){return!!(e+10&&e+s+l<=c)return u=i+n*r,{headerLength:s,frameLength:l,stamp:u}}function h(t,e,i,n,r){var a=c(t.samplerate),o=d(e,i,n,r,a);if(o){var s=o.stamp,l=o.headerLength,u=o.frameLength,h={unit:e.subarray(i+l,i+l+u),pts:s,dts:s};return t.samples.push(h),t.len+=u,{sample:h,length:u+l}}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function y(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function b(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function E(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function T(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var S=i(1),L=i(2),R=i(4),k=i(0),w=i(3),C=function(){function t(e,i,n){f(this,t),this.observer=e,this.config=n,this.remuxer=i}return t.prototype.resetInitSegment=function(t,e,i,n){this._audioTrack={container:"audio/adts",type:"audio",id:0,sequenceNumber:0,isAAC:!0,samples:[],len:0,manifestCodec:e,duration:n,inputTimeScale:9e4}},t.prototype.resetTimeStamp=function(){},t.probe=function(t){if(!t)return!1;for(var e=w.a.getID3Data(t,0)||[],i=e.length,n=t.length;i0},t.bin2str=function(t){return String.fromCharCode.apply(null,t)},t.readUint32=function(t,e){t.data&&(e+=t.start,t=t.data);var i=t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3];return i<0?4294967296+i:i},t.writeUint32=function(t,e,i){t.data&&(e+=t.start,t=t.data),t[e]=i>>24,t[e+1]=i>>16&255,t[e+2]=i>>8&255,t[e+3]=255&i},t.findBox=function(e,i){var n,r,a,o,s,l,u,c=[];if(e.data?(l=e.start,o=e.end,e=e.data):(l=0,o=e.byteLength),!i.length)return null;for(n=l;n1?n+r:o,a===i[0]&&(1===i.length?c.push({data:e,start:n+8,end:u}):(s=t.findBox({data:e,start:n+8,end:u},i.slice(1)),s.length&&(c=c.concat(s)))),n=u;return c},t.parseInitSegment=function(e){var i=[];return t.findBox(e,["moov","trak"]).forEach(function(e){var n=t.findBox(e,["tkhd"])[0];if(n){var r=n.data[n.start],a=0===r?12:20,o=t.readUint32(n,a),s=t.findBox(e,["mdia","mdhd"])[0];if(s){r=s.data[s.start],a=0===r?12:20;var l=t.readUint32(s,a),u=t.findBox(e,["mdia","hdlr"])[0];if(u){var c=t.bin2str(u.data.subarray(u.start+8,u.start+12)),d={soun:"audio",vide:"video"}[c];if(d){var h=t.findBox(e,["mdia","minf","stbl","stsd"]);if(h.length){h=h[0];var f=t.bin2str(h.data.subarray(h.start+12,h.start+16));k.b.log("MP4Demuxer:"+d+":"+f+" found")}i[o]={timescale:l,type:d},i[d]={timescale:l,id:o}}}}}}),i},t.getStartDTS=function(e,i){var n,r,a;return n=t.findBox(i,["moof","traf"]),r=[].concat.apply([],n.map(function(i){return t.findBox(i,["tfhd"]).map(function(n){var r,a;return r=t.readUint32(n,4),a=e[r].timescale||9e4,t.findBox(i,["tfdt"]).map(function(e){var i,n;return i=e.data[e.start],n=t.readUint32(e,4),1===i&&(n*=Math.pow(2,32),n+=t.readUint32(e,8)),n})[0]/a})})),a=Math.min.apply(null,r),isFinite(a)?a:0},t.offsetStartDTS=function(e,i,n){t.findBox(i,["moof","traf"]).map(function(i){return t.findBox(i,["tfhd"]).map(function(r){var a=t.readUint32(r,4),o=e[a].timescale||9e4;t.findBox(i,["tfdt"]).map(function(e){var i=e.data[e.start],r=t.readUint32(e,4);if(0===i)t.writeUint32(e,4,r-n*o);else{r*=Math.pow(2,32),r+=t.readUint32(e,8),r-=n*o,r=Math.max(r,0);var a=Math.floor(r/(D+1)),s=Math.floor(r%(D+1));t.writeUint32(e,4,a),t.writeUint32(e,8,s)}})})})},t.prototype.append=function(e,i,n,r){var a=this.initData;a||(this.resetInitSegment(e,this.audioCodec,this.videoCodec),a=this.initData);var o=void 0,s=this.initPTS;if(void 0===s){var l=t.getStartDTS(a,e);this.initPTS=s=l-i,this.observer.trigger(S.a.INIT_PTS_FOUND,{initPTS:s})}t.offsetStartDTS(a,e,s),o=t.getStartDTS(a,e),this.remuxer.remux(a.audio,a.video,null,null,o,n,r,e)},t.prototype.destroy=function(){},t}(),P=O,x={BitratesMap:[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],SamplingRateMap:[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],SamplesCoefficients:[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],BytesInSlot:[0,1,1,4],appendFrame:function(t,e,i,n,r){if(!(i+24>e.length)){var a=this.parseHeader(e,i);if(a&&i+a.frameLength<=e.length){var o=9e4*a.samplesPerFrame/a.sampleRate,s=n+r*o,l={unit:e.subarray(i,i+a.frameLength),pts:s,dts:s};return t.config=[],t.channelCount=a.channelCount,t.samplerate=a.sampleRate,t.samples.push(l),t.len+=a.frameLength,{sample:l,length:a.frameLength}}}},parseHeader:function(t,e){var i=t[e+1]>>3&3,n=t[e+1]>>1&3,r=t[e+2]>>4&15,a=t[e+2]>>2&3,o=t[e+2]>>1&1;if(1!==i&&0!==r&&15!==r&&3!==a){var s=3===i?3-n:3===n?3:4,l=1e3*x.BitratesMap[14*s+r-1],u=3===i?0:2===i?1:2,c=x.SamplingRateMap[3*u+a],d=t[e+3]>>6==3?1:2,h=x.SamplesCoefficients[i][n],f=x.BytesInSlot[n],p=8*h*f;return{sampleRate:c,channelCount:d,frameLength:parseInt(h*l/c+o,10)*f,samplesPerFrame:p}}},isHeaderPattern:function(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])},isHeader:function(t,e){return!!(e+1t?(this.word<<=t,this.bitsAvailable-=t):(t-=this.bitsAvailable,e=t>>3,t-=e>>3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)},t.prototype.readBits=function(t){var e=Math.min(this.bitsAvailable,t),i=this.word>>>32-e;return t>32&&k.b.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0&&this.bitsAvailable?i<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()},t.prototype.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.skipEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.readUEG=function(){var t=this.skipLZ();return this.readBits(t+1)-1},t.prototype.readEG=function(){var t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)},t.prototype.readBoolean=function(){return 1===this.readBits(1)},t.prototype.readUByte=function(){return this.readBits(8)},t.prototype.readUShort=function(){return this.readBits(16)},t.prototype.readUInt=function(){return this.readBits(32)},t.prototype.skipScalingList=function(t){var e,i,n=8,r=8;for(e=0;e=t.length)return void i();if(!(t[e].unit.length<32)){var n=this.decrypter.isSync();if(this.decryptAacSample(t,e,i,n),!n)return}}},t.prototype.getAvcEncryptedData=function(t){for(var e=16*Math.floor((t.length-48)/160)+16,i=new Int8Array(e),n=0,r=32;r<=t.length-16;r+=160,n+=16)i.set(t.subarray(r,r+16),n);return i},t.prototype.getAvcDecryptedUnit=function(t,e){e=new Uint8Array(e);for(var i=0,n=32;n<=t.length-16;n+=160,i+=16)t.set(e.subarray(i,i+16),n);return t},t.prototype.decryptAvcSample=function(t,e,i,n,r,a){var o=this.discardEPB(r.data),s=this.getAvcEncryptedData(o),l=this;this.decryptBuffer(s.buffer,function(s){r.data=l.getAvcDecryptedUnit(o,s),a||l.decryptAvcSamples(t,e,i+1,n)})},t.prototype.decryptAvcSamples=function(t,e,i,n){for(;;e++,i=0){if(e>=t.length)return void n();for(var r=t[e].units;!(i>=r.length);i++){var a=r[i];if(!(a.length<=48||1!==a.type&&5!==a.type)){var o=this.decrypter.isSync();if(this.decryptAvcSample(t,e,i,n,a,o),!o)return}}}},t}(),U=B,G={video:0,audio:1,id3:2,text:3},K=function(){function t(e,i,n,r){m(this,t),this.observer=e,this.config=n,this.typeSupported=r,this.remuxer=i,this.sampleAes=null}return t.prototype.setDecryptData=function(t){null!=t&&null!=t.key&&"SAMPLE-AES"===t.method?this.sampleAes=new U(this.observer,this.config,t,this.discardEPB):this.sampleAes=null},t.probe=function(e){var i=t._syncOffset(e);return!(i<0)&&(i&&k.b.warn("MPEG2-TS detected but first sync word found @ offset "+i+", junk ahead ?"),!0)},t._syncOffset=function(t){for(var e=Math.min(1e3,t.length-564),i=0;i>4>1){if((l=a+5+e[a+4])===a+188)continue}else l=a+4;switch(s){case y:o&&(_&&(u=w(_))&&C(u,!1),_={data:[],size:0}),_&&(_.data.push(e.subarray(l,a+188)),_.size+=a+188-l);break;case m:o&&(E&&(u=w(E))&&(p.isAAC?I(u):D(u)),E={data:[],size:0}),E&&(E.data.push(e.subarray(l,a+188)),E.size+=a+188-l);break;case v:o&&(T&&(u=w(T))&&O(u),T={data:[],size:0}),T&&(T.data.push(e.subarray(l,a+188)),T.size+=a+188-l);break;case 0:o&&(l+=e[l]+1),b=this._pmtId=A(e,l);break;case b:o&&(l+=e[l]+1);var x=R(e,l,!0===this.typeSupported.mpeg||!0===this.typeSupported.mp3,null!=this.sampleAes);y=x.avc,y>0&&(f.pid=y),m=x.audio,m>0&&(p.pid=m,p.isAAC=x.isAAC),v=x.id3,v>0&&(g.pid=v),d&&!h&&(k.b.log("reparse from beginning"),d=!1,a=P-188),h=this.pmtParsed=!0;break;case 17:case 8191:break;default:d=!0}}else this.observer.trigger(S.a.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});_&&(u=w(_))?(C(u,!0),f.pesData=null):f.pesData=_,E&&(u=w(E))?(p.isAAC?I(u):D(u),p.pesData=null):(E&&E.size&&k.b.log("last AAC PES packet truncated,might overlap between fragments"),p.pesData=E),T&&(u=w(T))?(O(u),g.pesData=null):g.pesData=T,null==this.sampleAes?this.remuxer.remux(p,f,g,this._txtTrack,i,n,r):this.decryptAndRemux(p,f,g,this._txtTrack,i,n,r)},t.prototype.decryptAndRemux=function(t,e,i,n,r,a,o){if(t.samples&&t.isAAC){var s=this;this.sampleAes.decryptAacSamples(t.samples,0,function(){s.decryptAndRemuxAvc(t,e,i,n,r,a,o)})}else this.decryptAndRemuxAvc(t,e,i,n,r,a,o)},t.prototype.decryptAndRemuxAvc=function(t,e,i,n,r,a,o){if(e.samples){var s=this;this.sampleAes.decryptAvcSamples(e.samples,0,0,function(){s.remuxer.remux(t,e,i,n,r,a,o)})}else this.remuxer.remux(t,e,i,n,r,a,o)},t.prototype.destroy=function(){this._initPTS=this._initDTS=void 0,this._duration=0},t.prototype._parsePAT=function(t,e){return(31&t[e+10])<<8|t[e+11]},t.prototype._parsePMT=function(t,e,i,n){var r,a,o,s,l={audio:-1,avc:-1,id3:-1,isAAC:!0};for(r=(15&t[e+1])<<8|t[e+2],a=e+3+r-4,o=(15&t[e+10])<<8|t[e+11],e+=12+o;e1;){var d=new Uint8Array(c[0].length+c[1].length);d.set(c[0]),d.set(c[1],c[0].length),c[0]=d,c.splice(1,1)}if(e=c[0],1===(e[0]<<16)+(e[1]<<8)+e[2]){if((n=(e[4]<<8)+e[5])&&n>t.size-6)return null;i=e[7],192&i&&(o=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,o>4294967295&&(o-=8589934592),64&i?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,s>4294967295&&(s-=8589934592),o-s>54e5&&(k.b.warn(Math.round((o-s)/9e4)+"s delta between PTS and DTS, align them"),o=s)):s=o),r=e[8],l=r+9,t.size-=l,a=new Uint8Array(t.size);for(var h=0,f=c.length;hp){l-=p;continue}e=e.subarray(l),p-=l,l=0}a.set(e,u),u+=p}return n&&(n-=r+3),{data:a,pts:o,dts:s,len:n}}return null},t.prototype.pushAccesUnit=function(t,e){if(t.units.length&&t.frame){var i=e.samples,n=i.length;!this.config.forceKeyFrameOnDiscontinuity||!0===t.key||e.sps&&(n||this.contiguous)?(t.id=n,i.push(t)):e.dropped++}t.debug.length&&k.b.log(t.pts+"/"+t.dts+":"+t.debug)},t.prototype._parseAVCPES=function(t,e){var i,n,r,a=this,o=this._avcTrack,s=this._parseAVCNALu(t.data),l=this.avcSample,u=!1,c=this.pushAccesUnit.bind(this),d=function(t,e,i,n){return{key:t,pts:e,dts:i,units:[],debug:n}};t.data=null,l&&s.length&&!o.audFound&&(c(l,o),l=this.avcSample=d(!1,t.pts,t.dts,"")),s.forEach(function(e){switch(e.type){case 1:n=!0,l||(l=a.avcSample=d(!0,t.pts,t.dts,"")),l.frame=!0;var s=e.data;if(u&&s.length>4){var h=new F(s).readSliceType();2!==h&&4!==h&&7!==h&&9!==h||(l.key=!0)}break;case 5:n=!0,l||(l=a.avcSample=d(!0,t.pts,t.dts,"")),l.key=!0,l.frame=!0;break;case 6:n=!0,i=new F(a.discardEPB(e.data)),i.readUByte();for(var f=0,p=0,g=!1,y=0;!g&&i.bytesAvailable>1;){f=0;do{y=i.readUByte(),f+=y}while(255===y);p=0;do{y=i.readUByte(),p+=y}while(255===y);if(4===f&&0!==i.bytesAvailable){g=!0;if(181===i.readUByte()){if(49===i.readUShort()){if(1195456820===i.readUInt()){if(3===i.readUByte()){var m=i.readUByte(),v=i.readUByte(),b=31&m,_=[m,v];for(r=0;r0){if(e.pts>=t[i-1].pts)t.push(e);else for(var n=i-1;n>=0;n--)if(e.pts=0)n={data:t.subarray(h,o-u-1),type:a},d.push(n);else{var f=this._getLastNalUnit();if(f&&(c&&o<=4-c&&f.state&&(f.data=f.data.subarray(0,f.data.byteLength-c)),(i=o-u-1)>0)){var p=new Uint8Array(f.data.byteLength+i);p.set(f.data,0),p.set(t.subarray(0,i),f.data.byteLength),f.data=p}}o=0&&u>=0&&(n={data:t.subarray(h,s),type:a,state:u},d.push(n)),0===d.length){var g=this._getLastNalUnit();if(g){var y=new Uint8Array(g.data.byteLength+t.byteLength);y.set(g.data,0),y.set(t,g.data.byteLength),g.data=y}}return l.naluState=u,d},t.prototype.discardEPB=function(t){for(var e,i,n=t.byteLength,r=[],a=1;a1&&(k.b.log("AAC: align PTS for overlapping frames by "+Math.round((v-d)/90)),d=v)}for(;n>24&255,e[1]=n>>16&255,e[2]=n>>8&255,e[3]=255&n,e.set(t,4),r=0,n=8;r>24&255,e>>16&255,e>>8&255,255&e,n>>24,n>>16&255,n>>8&255,255&n,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))},t.mdia=function(e){return t.box(t.types.mdia,t.mdhd(e.timescale,e.duration),t.hdlr(e.type),t.minf(e))},t.mfhd=function(e){return t.box(t.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))},t.minf=function(e){return"audio"===e.type?t.box(t.types.minf,t.box(t.types.smhd,t.SMHD),t.DINF,t.stbl(e)):t.box(t.types.minf,t.box(t.types.vmhd,t.VMHD),t.DINF,t.stbl(e))},t.moof=function(e,i,n){return t.box(t.types.moof,t.mfhd(e),t.traf(n,i))},t.moov=function(e){for(var i=e.length,n=[];i--;)n[i]=t.trak(e[i]);return t.box.apply(null,[t.types.moov,t.mvhd(e[0].timescale,e[0].duration)].concat(n).concat(t.mvex(e)))},t.mvex=function(e){for(var i=e.length,n=[];i--;)n[i]=t.trex(e[i]);return t.box.apply(null,[t.types.mvex].concat(n))},t.mvhd=function(e,i){i*=e;var n=Math.floor(i/(z+1)),r=Math.floor(i%(z+1)),a=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,n>>24,n>>16&255,n>>8&255,255&n,r>>24,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return t.box(t.types.mvhd,a)},t.sdtp=function(e){var i,n,r=e.samples||[],a=new Uint8Array(4+r.length);for(n=0;n>>8&255),a.push(255&r),a=a.concat(Array.prototype.slice.call(n));for(i=0;i>>8&255),o.push(255&r),o=o.concat(Array.prototype.slice.call(n));var s=t.box(t.types.avcC,new Uint8Array([1,a[3],a[4],a[5],255,224|e.sps.length].concat(a).concat([e.pps.length]).concat(o))),l=e.width,u=e.height,c=e.pixelRatio[0],d=e.pixelRatio[1];return t.box(t.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,t.box(t.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),t.box(t.types.pasp,new Uint8Array([c>>24,c>>16&255,c>>8&255,255&c,d>>24,d>>16&255,d>>8&255,255&d])))},t.esds=function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))},t.mp4a=function(e){var i=e.samplerate;return t.box(t.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,i>>8&255,255&i,0,0]),t.box(t.types.esds,t.esds(e)))},t.mp3=function(e){var i=e.samplerate;return t.box(t.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,i>>8&255,255&i,0,0]))},t.stsd=function(e){return"audio"===e.type?e.isAAC||"mp3"!==e.codec?t.box(t.types.stsd,t.STSD,t.mp4a(e)):t.box(t.types.stsd,t.STSD,t.mp3(e)):t.box(t.types.stsd,t.STSD,t.avc1(e))},t.tkhd=function(e){var i=e.id,n=e.duration*e.timescale,r=e.width,a=e.height,o=Math.floor(n/(z+1)),s=Math.floor(n%(z+1));return t.box(t.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,i>>24&255,i>>16&255,i>>8&255,255&i,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,s>>24,s>>16&255,s>>8&255,255&s,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>8&255,255&r,0,0,a>>8&255,255&a,0,0]))},t.traf=function(e,i){var n=t.sdtp(e),r=e.id,a=Math.floor(i/(z+1)),o=Math.floor(i%(z+1));return t.box(t.types.traf,t.box(t.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),t.box(t.types.tfdt,new Uint8Array([1,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,o>>24,o>>16&255,o>>8&255,255&o])),t.trun(e,n.length+16+20+8+16+8+8),n)},t.trak=function(e){return e.duration=e.duration||4294967295,t.box(t.types.trak,t.tkhd(e),t.mdia(e))},t.trex=function(e){var i=e.id;return t.box(t.types.trex,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},t.trun=function(e,i){var n,r,a,o,s,l,u=e.samples||[],c=u.length,d=12+16*c,h=new Uint8Array(d);for(i+=8+d,h.set([0,0,15,1,c>>>24&255,c>>>16&255,c>>>8&255,255&c,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0),n=0;n>>24&255,a>>>16&255,a>>>8&255,255&a,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|s.isNonSync,61440&s.degradPrio,15&s.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*n);return t.box(t.types.trun,h)},t.initSegment=function(e){t.types||t.init();var i,n=t.moov(e);return i=new Uint8Array(t.FTYP.byteLength+n.byteLength),i.set(t.FTYP),i.set(n,t.FTYP.byteLength),i},t}(),q=W,X=function(){function t(e,i,n,r){E(this,t),this.observer=e,this.config=i,this.typeSupported=n;var a=navigator.userAgent;this.isSafari=r&&r.indexOf("Apple")>-1&&a&&!a.match("CriOS"),this.ISGenerated=!1}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(t){this._initPTS=this._initDTS=t},t.prototype.resetInitSegment=function(){this.ISGenerated=!1},t.prototype.remux=function(t,e,i,n,r,a,o){if(this.ISGenerated||this.generateIS(t,e,r),this.ISGenerated){var s=t.samples.length,l=e.samples.length,u=r,c=r;if(s&&l){var d=(t.samples[0].dts-e.samples[0].dts)/e.inputTimeScale;u+=Math.max(0,d),c+=Math.max(0,-d)}if(s){t.timescale||(k.b.warn("regenerate InitSegment as audio detected"),this.generateIS(t,e,r));var h=this.remuxAudio(t,u,a,o);if(l){var f=void 0;h&&(f=h.endPTS-h.startPTS),e.timescale||(k.b.warn("regenerate InitSegment as video detected"),this.generateIS(t,e,r)),this.remuxVideo(e,c,a,f,o)}}else{var p=void 0;l&&(p=this.remuxVideo(e,c,a,o)),p&&t.codec&&this.remuxEmptyAudio(t,u,a,p)}}i.samples.length&&this.remuxID3(i,r),n.samples.length&&this.remuxText(n,r),this.observer.trigger(S.a.FRAG_PARSED)},t.prototype.generateIS=function(t,e,i){var n,r,a=this.observer,o=t.samples,s=e.samples,l=this.typeSupported,u="audio/mp4",c={},d={tracks:c},h=void 0===this._initPTS;if(h&&(n=r=1/0),t.config&&o.length&&(t.timescale=t.samplerate,k.b.log("audio sampling rate : "+t.samplerate),t.isAAC||(l.mpeg?(u="audio/mpeg",t.codec=""):l.mp3&&(t.codec="mp3")),c.audio={container:u,codec:t.codec,initSegment:!t.isAAC&&l.mpeg?new Uint8Array:q.initSegment([t]),metadata:{channelCount:t.channelCount}},h&&(n=r=o[0].pts-t.inputTimeScale*i)),e.sps&&e.pps&&s.length){var f=e.inputTimeScale;e.timescale=f,c.video={container:"video/mp4",codec:e.codec,initSegment:q.initSegment([e]),metadata:{width:e.width,height:e.height}},h&&(n=Math.min(n,s[0].pts-f*i),r=Math.min(r,s[0].dts-f*i),this.observer.trigger(S.a.INIT_PTS_FOUND,{initPTS:n}))}Object.keys(c).length?(a.trigger(S.a.FRAG_PARSING_INIT_SEGMENT,d),this.ISGenerated=!0,h&&(this._initPTS=n,this._initDTS=r)):a.trigger(S.a.ERROR,{type:L.b.MEDIA_ERROR,details:L.a.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})},t.prototype.remuxVideo=function(t,e,i,n,r){var a,o,s,l,u,c,d,h=8,f=t.timescale,p=t.samples,g=[],y=p.length,m=this._PTSNormalize,v=this._initDTS,b=this.nextAvcDts,_=this.isSafari;_&&(i|=p.length&&b&&(r&&Math.abs(e-b/f)<.1||Math.abs(p[0].pts-b-v)1?k.b.log("AVC:"+R+" ms hole between fragments detected,filling it"):R<-1&&k.b.log("AVC:"+-R+" ms overlapping between fragments detected"),u=b,p[0].dts=u,l=Math.max(l-R,b),p[0].pts=l,k.b.log("Video/PTS/DTS adjusted: "+Math.round(l/90)+"/"+Math.round(u/90)+",delta:"+R+" ms")),A=p[p.length-1],d=Math.max(A.dts,0),c=Math.max(A.pts,0,d),_&&(a=Math.round((d-u)/(p.length-1)));for(var w=0,C=0,I=0;I0?B-1:B].dts;if(W.stretchShortVideoTrack){var Z=W.maxBufferHole,J=W.maxSeekHole,Q=Math.floor(Math.min(Z,J)*f),tt=(n?l+n*f:this.nextAudioPts)-U.pts;tt>Q?(a=tt-X,a<0&&(a=X),k.b.log("It is approximately "+tt/90+" ms to the next segment; using duration "+a/90+" ms for the last video frame.")):a=X}else a=X}V=Math.round(U.pts-U.dts)}g.push({size:K,duration:a,cts:V,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:U.key?2:1,isNonSync:U.key?0:1}})}this.nextAvcDts=d+a;var et=t.dropped;if(t.len=0,t.nbNalu=0,t.dropped=0,g.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var it=g[0].flags;it.dependsOn=2,it.isNonSync=0}t.samples=g,s=q.moof(t.sequenceNumber++,u,t),t.samples=[];var nt={data1:s,data2:o,startPTS:l/f,endPTS:(c+a)/f,startDTS:u/f,endDTS:this.nextAvcDts/f,type:"video",nb:g.length,dropped:et};return this.observer.trigger(S.a.FRAG_PARSING_DATA,nt),nt},t.prototype.remuxAudio=function(t,e,i,n){var r,a,o,s,l,u,c,d=t.inputTimeScale,h=t.timescale,f=d/h,p=t.isAAC?1024:1152,g=p*f,y=this._PTSNormalize,m=this._initDTS,v=!t.isAAC&&this.typeSupported.mpeg,b=t.samples,_=[],E=this.nextAudioPts;if(i|=b.length&&E&&(n&&Math.abs(e-E/d)<.1||Math.abs(b[0].pts-E-m)<20*g),b.forEach(function(t){t.pts=t.dts=y(t.pts-m,e*d)}),b=b.filter(function(t){return t.pts>=0}),0!==b.length){if(i||(E=n?e*d:b[0].pts),t.isAAC)for(var T=this.config.maxAudioFramesDrift,A=0,R=E;A=T*g&&D<1e4&&R){var O=Math.round(w/g);k.b.warn("Injecting "+O+" audio frame @ "+(R/d).toFixed(3)+"s due to "+Math.round(1e3*w/d)+" ms gap.");for(var P=0;P0&&G<1e4)K=Math.round((U-E)/g),k.b.log(G+" ms hole between AAC samples detected,filling it"),K>0&&(o=$.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),o||(o=B.subarray()),t.len+=K*o.length);else if(G<-12){k.b.log("drop overlapping AAC sample, expected/parsed/delta:"+(E/d).toFixed(3)+"s/"+(U/d).toFixed(3)+"s/"+-G+"ms"),t.len-=B.byteLength;continue}U=E}if(u=U,!(t.len>0))return;var V=v?t.len:t.len+8;r=v?0:8;try{s=new Uint8Array(V)}catch(t){return void this.observer.trigger(S.a.ERROR,{type:L.b.MUX_ERROR,details:L.a.REMUX_ALLOC_ERROR,fatal:!1,bytes:V,reason:"fail allocating audio mdat "+V})}if(!v){new DataView(s.buffer).setUint32(0,V),s.set(q.types.mdat,4)}for(var j=0;j=2&&(H=_[z-2].duration,a.duration=H),z){this.nextAudioPts=E=c+f*H,t.len=0,t.samples=_,l=v?new Uint8Array:q.moof(t.sequenceNumber++,u/f,t),t.samples=[];var W=u/d,X=E/d,Z={data1:l,data2:s,startPTS:W,endPTS:X,startDTS:W,endDTS:X,type:"audio",nb:z};return this.observer.trigger(S.a.FRAG_PARSING_DATA,Z),Z}return null}},t.prototype.remuxEmptyAudio=function(t,e,i,n){var r=t.inputTimeScale,a=t.samplerate?t.samplerate:r,o=r/a,s=this.nextAudioPts,l=(void 0!==s?s:n.startDTS*r)+this._initDTS,u=n.endDTS*r+this._initDTS,c=1024*o,d=Math.ceil((u-l)/c),h=$.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(k.b.warn("remux empty Audio"),!h)return void k.b.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!");for(var f=[],p=0;p4294967296;)t+=i;return t},t}(),Z=X,J=function(){function t(e){T(this,t),this.observer=e}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(){},t.prototype.resetInitSegment=function(){},t.prototype.remux=function(t,e,i,n,r,a,o,s){var l=this.observer,u="";t&&(u+="audio"),e&&(u+="video"),l.trigger(S.a.FRAG_PARSING_DATA,{data1:s,startPTS:r,startDTS:r,type:u,nb:1,dropped:0}),l.trigger(S.a.FRAG_PARSED)},t}(),Q=J,tt=function(){function t(e,i,n,r){A(this,t),this.observer=e,this.typeSupported=i,this.config=n,this.vendor=r}return t.prototype.destroy=function(){var t=this.demuxer;t&&t.destroy()},t.prototype.push=function(t,e,i,n,r,a,o,s,l,u,c,d){if(t.byteLength>0&&null!=e&&null!=e.key&&"AES-128"===e.method){var h=this.decrypter;null==h&&(h=this.decrypter=new R.a(this.observer,this.config));var f,p=this;try{f=performance.now()}catch(t){f=Date.now()}h.decrypt(t,e.key.buffer,e.iv.buffer,function(t){var h;try{h=performance.now()}catch(t){h=Date.now()}p.observer.trigger(S.a.FRAG_DECRYPTED,{stats:{tstart:f,tdecrypt:h}}),p.pushDecrypted(new Uint8Array(t),e,new Uint8Array(i),n,r,a,o,s,l,u,c,d)})}else this.pushDecrypted(new Uint8Array(t),e,new Uint8Array(i),n,r,a,o,s,l,u,c,d)},t.prototype.pushDecrypted=function(t,e,i,n,r,a,o,s,l,u,c,d){var h=this.demuxer;if(!h||o&&!this.probe(t)){for(var f=this.observer,p=this.typeSupported,g=this.config,y=[{demux:V,remux:Z},{demux:P,remux:Q},{demux:I,remux:Z},{demux:Y,remux:Z}],m=0,v=y.length;me?n.start+n.duration:Math.max(n.start-r.duration,0):i>e?(n.duration=a-n.start,n.duration<0&&Pt.b.warn("negative duration computed for frag "+n.sn+",level "+n.level+", there should be some duration drift between playlist and fragment!")):(r.duration=n.start-a,r.duration<0&&Pt.b.warn("negative duration computed for frag "+r.sn+",level "+r.level+", there should be some duration drift between playlist and fragment!"))}function _(t,e,i,n,r,a){var o=i;if(!isNaN(e.startPTS)){var s=Math.abs(e.startPTS-i);isNaN(e.deltaPTS)?e.deltaPTS=s:e.deltaPTS=Math.max(s,e.deltaPTS),o=Math.max(i,e.startPTS),i=Math.min(i,e.startPTS),n=Math.max(n,e.endPTS),r=Math.min(r,e.startDTS),a=Math.max(a,e.endDTS)}var l=i-e.start;e.start=e.startPTS=i,e.maxStartPTS=o,e.endPTS=n,e.startDTS=r,e.endDTS=a,e.duration=n-i;var u=e.sn;if(!t||ut.endSN)return 0;var c,d,h;for(c=u-t.startSN,d=t.fragments,d[c]=e,h=c;h>0;h--)b(d,h,h-1);for(h=c;h=0&&ae?-1:0})}function S(t,e,i){var n=!1;return e&&e.details&&i&&(i.endCC>i.startCC||t&&t.cc59?e(i[1],i[2],0,i[4]):e(0,i[1],i[2],i[4]):null}function st(){this.values=Object.create(null)}function lt(t,e,i,n){var r=n?t.split(n):[t];for(var a in r)if("string"==typeof r[a]){var o=r[a].split(i);if(2===o.length){var s=o[0],l=o[1];e(s,l)}}}function ut(t,e,i){function n(){var e=ot(t);if(null===e)throw new Error("Malformed timestamp: "+a);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function r(){t=t.replace(/^\s+/,"")}var a=t;if(r(),e.startTime=n(),r(),"--\x3e"!==t.substr(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+a);t=t.substr(3),r(),e.endTime=n(),r(),function(t,e){var n=new st;lt(t,function(t,e){switch(t){case"region":for(var r=i.length-1;r>=0;r--)if(i[r].id===e){n.set(t,i[r].region);break}break;case"vertical":n.alt(t,e,["rl","lr"]);break;case"line":var a=e.split(","),o=a[0];n.integer(t,o),n.percent(t,o)&&n.set("snapToLines",!1),n.alt(t,o,["auto"]),2===a.length&&n.alt("lineAlign",a[1],["start",Je,"end"]);break;case"position":a=e.split(","),n.percent(t,a[0]),2===a.length&&n.alt("positionAlign",a[1],["start",Je,"end","line-left","line-right","auto"]);break;case"size":n.percent(t,e);break;case"align":n.alt(t,e,["start",Je,"end","left","right"])}},/:/,/\s/),e.region=n.get("region",null),e.vertical=n.get("vertical","");var r=n.get("line","auto");"auto"===r&&-1===Ze.line&&(r=-1),e.line=r,e.lineAlign=n.get("lineAlign","start"),e.snapToLines=n.get("snapToLines",!0),e.size=n.get("size",100),e.align=n.get("align",Je);var a=n.get("position","auto");"auto"===a&&50===Ze.position&&(a="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=a}(t,e)}function ct(t){return t.replace(//gi,"\n")}function dt(t,e,i,n){for(var r,a,o,s,l,u=window.VTTCue||window.TextTrackCue,c=0;c=16?s--:s++,navigator.userAgent.match(/Firefox\//)?a.line=c+1:a.line=c>7?c-2:c+1,a.align="left",a.position=Math.max(0,Math.min(100,s/32*100+(navigator.userAgent.match(/Firefox\//)?50:0))),t.addCue(a)}}function ht(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ft(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function pt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function gt(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function yt(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function mt(t){if(t&&t.cues)for(;t.cues.length>0;)t.removeCue(t.cues[0])}function vt(t,e){return t&&t.label===e.name&&!(t.textTrack1||t.textTrack2)}function bt(t,e,i,n){return Math.min(e,n)-Math.max(t,i)}function _t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Et(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function Tt(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function At(t){for(var e=[],i=0;i1?i-1:0),a=1;aNumber.MAX_SAFE_INTEGER?1/0:e},t.prototype.hexadecimalInteger=function(t){if(this[t]){var e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var i=new Uint8Array(e.length/2),n=0;nNumber.MAX_SAFE_INTEGER?1/0:e},t.prototype.decimalFloatingPoint=function(t){return parseFloat(this[t])},t.prototype.enumeratedString=function(t){return this[t]},t.prototype.decimalResolution=function(t){var e=Ft.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}},t.parseAttrList=function(t){var e,i={};for(Bt.lastIndex=0;null!==(e=Bt.exec(t));){var n=e[2];0===n.indexOf('"')&&n.lastIndexOf('"')===n.length-1&&(n=n.slice(1,-1)),i[e[1]]=n}return i},t}(),Gt=Ut,Kt={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0}},Vt=function(){function t(t,e){for(var i=0;i>8*(15-i)&255;return e},t.prototype.fragmentDecryptdataFromLevelkey=function(t,e){var i=t;return t&&t.method&&t.uri&&!t.iv&&(i=new zt,i.method=t.method,i.baseuri=t.baseuri,i.reluri=t.reluri,i.iv=this.createInitializationVector(e)),i},t.prototype.cloneObj=function(t){return JSON.parse(JSON.stringify(t))},Vt(t,[{key:"url",get:function(){return!this._url&&this.relurl&&(this._url=It.a.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url},set:function(t){this._url=t}},{key:"programDateTime",get:function(){return!this._programDateTime&&this.rawProgramDateTime&&(this._programDateTime=new Date(Date.parse(this.rawProgramDateTime))),this._programDateTime}},{key:"byteRange",get:function(){if(!this._byteRange){var t=this._byteRange=[];if(this.rawByteRange){var e=this.rawByteRange.split("@",2);if(1===e.length){var i=this.lastByteRangeEndOffset;t[0]=i||0}else t[0]=parseInt(e[1]);t[1]=parseInt(e[0])+t[0]}}return this._byteRange}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"decryptdata",get:function(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}}]),t}(),qt=function(t){function e(i){u(this,e);var n=s(this,t.call(this,i,Dt.a.MANIFEST_LOADING,Dt.a.LEVEL_LOADING,Dt.a.AUDIO_TRACK_LOADING,Dt.a.SUBTITLE_TRACK_LOADING));return n.loaders={},n}return l(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},Mt.prototype.destroy.call(this)},e.prototype.onManifestLoading=function(t){this.load(t.url,{type:"manifest"})},e.prototype.onLevelLoading=function(t){this.load(t.url,{type:"level",level:t.level,id:t.id})},e.prototype.onAudioTrackLoading=function(t){this.load(t.url,{type:"audioTrack",id:t.id})},e.prototype.onSubtitleTrackLoading=function(t){this.load(t.url,{type:"subtitleTrack",id:t.id})},e.prototype.load=function(t,e){var i=this.loaders[e.type];if(void 0!==i){var n=i.context;if(n&&n.url===t)return void Pt.b.trace("playlist request ongoing");Pt.b.warn("abort previous loader for type:"+e.type),i.abort()}var r=this.hls.config,a=void 0,o=void 0,s=void 0,l=void 0;"manifest"===e.type?(a=r.manifestLoadingMaxRetry,o=r.manifestLoadingTimeOut,s=r.manifestLoadingRetryDelay,l=r.manifestLoadingMaxRetryTimeout):"level"===e.type?(a=0,o=r.levelLoadingTimeOut):(a=r.levelLoadingMaxRetry,o=r.levelLoadingTimeOut,s=r.levelLoadingRetryDelay,l=r.levelLoadingMaxRetryTimeout,Pt.b.log("loading playlist for "+e.type+" "+(e.level||e.id))),i=this.loaders[e.type]=e.loader=void 0!==r.pLoader?new r.pLoader(r):new r.loader(r),e.url=t,e.responseType="";var u=void 0,c=void 0;u={timeout:o,maxRetry:a,retryDelay:s,maxRetryDelay:l},c={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},i.load(e,u,c)},e.prototype.resolve=function(t,e){return It.a.buildAbsoluteURL(e,t,{alwaysNormalize:!0})},e.prototype.parseMasterPlaylist=function(t,e){var i=[],n=void 0;for(jt.lastIndex=0;null!=(n=jt.exec(t));){var r={},o=r.attrs=new Gt(n[1]);r.url=this.resolve(n[2],e);var s=o.decimalResolution("RESOLUTION");s&&(r.width=s.width,r.height=s.height),r.bitrate=o.decimalInteger("AVERAGE-BANDWIDTH")||o.decimalInteger("BANDWIDTH"),r.name=o.NAME,function(t,e){["video","audio"].forEach(function(i){var n=t.filter(function(t){return a(t,i)});if(n.length){var r=n.filter(function(t){return 0===t.lastIndexOf("avc1",0)||0===t.lastIndexOf("mp4a",0)});e[i+"Codec"]=r.length>0?r[0]:n[0],t=t.filter(function(t){return-1===n.indexOf(t)})}}),e.unknownCodecs=t}([].concat((o.CODECS||"").split(/[ ,]+/)),r),r.videoCodec&&-1!==r.videoCodec.indexOf("avc1")&&(r.videoCodec=this.avc1toavcoti(r.videoCodec)),i.push(r)}return i},e.prototype.parseMasterPlaylistMedia=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],r=void 0,a=[],o=0;for(Yt.lastIndex=0;null!==(r=Yt.exec(t));){var s={},l=new Gt(r[1]);if(l.TYPE===i){if(s.groupId=l["GROUP-ID"],s.name=l.NAME,s.type=i,s.default="YES"===l.DEFAULT,s.autoselect="YES"===l.AUTOSELECT,s.forced="YES"===l.FORCED,l.URI&&(s.url=this.resolve(l.URI,e)),s.lang=l.LANGUAGE,s.name||(s.name=s.lang),n.length){var u=c(n,s.groupId);s.audioCodec=u?u.codec:n[0].codec}s.id=o++,a.push(s)}}return a},e.prototype.avc1toavcoti=function(t){var e,i=t.split(".");return i.length>2?(e=i.shift()+".",e+=parseInt(i.shift()).toString(16),e+=("000"+parseInt(i.shift()).toString(16)).substr(-4)):e=t,e},e.prototype.parseLevelPlaylist=function(t,e,i,n){var r,a,o=0,s=0,l={type:null,version:null,url:e,fragments:[],live:!0,startSN:0},u=new zt,c=0,d=null,h=new Wt;for(Ht.lastIndex=0;null!==(r=Ht.exec(t));){var f=r[1];if(f){h.duration=parseFloat(f);var p=(" "+r[2]).slice(1);h.title=p||null,h.tagList.push(p?["INF",f,p]:["INF",f])}else if(r[3]){if(!isNaN(h.duration)){var g=o++;h.type=n,h.start=s,h.levelkey=u,h.sn=g,h.level=i,h.cc=c,h.baseurl=e,h.relurl=(" "+r[3]).slice(1),l.fragments.push(h),d=h,s+=h.duration,h=new Wt}}else if(r[4]){if(h.rawByteRange=(" "+r[4]).slice(1),d){var y=d.byteRangeEndOffset;y&&(h.lastByteRangeEndOffset=y)}}else if(r[5])h.rawProgramDateTime=(" "+r[5]).slice(1),h.tagList.push(["PROGRAM-DATE-TIME",h.rawProgramDateTime]),void 0===l.programDateTime&&(l.programDateTime=new Date(new Date(Date.parse(r[5]))-1e3*s));else{for(r=r[0].match($t),a=1;a=0&&(u.method=E,u.baseuri=e,u.reluri=T,u.key=null,u.iv=A));break;case"START":var S=m,L=new Gt(S),R=L.decimalFloatingPoint("TIME-OFFSET");isNaN(R)||(l.startTimeOffset=R);break;case"MAP":var k=new Gt(m);h.relurl=k.URI,h.rawByteRange=k.BYTERANGE,h.baseurl=e,h.level=i,h.type=n,h.sn="initSegment",l.initSegment=h,h=new Wt;break;default:Pt.b.warn("line parsed but not handled: "+r)}}}return h=d,h&&!h.relurl&&(l.fragments.pop(),s-=h.duration),l.totalduration=s,l.averagetargetduration=s/l.fragments.length,l.endSN=o-1,l.startCC=l.fragments[0]?l.fragments[0].cc:0,l.endCC=c,l},e.prototype.loadsuccess=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=t.data,a=t.url,o=i.type,s=i.id,l=i.level,u=this.hls;if(this.loaders[o]=void 0,void 0!==a&&0!==a.indexOf("data:")||(a=i.url),e.tload=performance.now(),0===r.indexOf("#EXTM3U"))if(r.indexOf("#EXTINF:")>0){var c="audioTrack"!==o&&"subtitleTrack"!==o,d=isNaN(l)?isNaN(s)?0:s:l,h=this.parseLevelPlaylist(r,a,d,"audioTrack"===o?"audio":"subtitleTrack"===o?"subtitle":"main");h.tload=e.tload,"manifest"===o&&u.trigger(Dt.a.MANIFEST_LOADED,{levels:[{url:a,details:h}],audioTracks:[],url:a,stats:e,networkDetails:n}),e.tparsed=performance.now(),h.targetduration?c?u.trigger(Dt.a.LEVEL_LOADED,{details:h,level:l||0,id:s||0,stats:e,networkDetails:n}):"audioTrack"===o?u.trigger(Dt.a.AUDIO_TRACK_LOADED,{details:h,id:s,stats:e,networkDetails:n}):"subtitleTrack"===o&&u.trigger(Dt.a.SUBTITLE_TRACK_LOADED,{details:h,id:s,stats:e,networkDetails:n}):u.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.MANIFEST_PARSING_ERROR,fatal:!0,url:a,reason:"invalid targetduration",networkDetails:n})}else{var f=this.parseMasterPlaylist(r,a);if(f.length){var p=f.map(function(t){return{id:t.attrs.AUDIO,codec:t.audioCodec}}),g=this.parseMasterPlaylistMedia(r,a,"AUDIO",p),y=this.parseMasterPlaylistMedia(r,a,"SUBTITLES");if(g.length){var m=!1;g.forEach(function(t){t.url||(m=!0)}),!1===m&&f[0].audioCodec&&!f[0].attrs.AUDIO&&(Pt.b.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main"}))}u.trigger(Dt.a.MANIFEST_LOADED,{levels:f,audioTracks:g,subtitles:y,url:a,stats:e,networkDetails:n})}else u.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.MANIFEST_PARSING_ERROR,fatal:!0,url:a,reason:"no level found in manifest",networkDetails:n})}else u.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.MANIFEST_PARSING_ERROR,fatal:!0,url:a,reason:"no EXTM3U delimiter",networkDetails:n})},e.prototype.loaderror=function(t,e){var i,n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=e.loader;switch(e.type){case"manifest":i=Ot.a.MANIFEST_LOAD_ERROR,n=!0;break;case"level":i=Ot.a.LEVEL_LOAD_ERROR,n=!1;break;case"audioTrack":i=Ot.a.AUDIO_TRACK_LOAD_ERROR,n=!1}a&&(a.abort(),this.loaders[e.type]=void 0),this.hls.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:i,fatal:n,url:a.url,loader:a,response:t,context:e,networkDetails:r})},e.prototype.loadtimeout=function(t,e){var i,n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=e.loader;switch(e.type){case"manifest":i=Ot.a.MANIFEST_LOAD_TIMEOUT,n=!0;break;case"level":i=Ot.a.LEVEL_LOAD_TIMEOUT,n=!1;break;case"audioTrack":i=Ot.a.AUDIO_TRACK_LOAD_TIMEOUT,n=!1}a&&(a.abort(),this.loaders[e.type]=void 0),this.hls.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:i,fatal:n,url:a.url,loader:a,context:e,networkDetails:r})},e}(Mt),Xt=qt,Zt=function(t){function e(i){d(this,e);var n=h(this,t.call(this,i,Dt.a.FRAG_LOADING));return n.loaders={},n}return f(e,t),e.prototype.destroy=function(){var t=this.loaders;for(var e in t){var i=t[e];i&&i.destroy()}this.loaders={},Mt.prototype.destroy.call(this)},e.prototype.onFragLoading=function(t){var e=t.frag,i=e.type,n=this.loaders[i],r=this.hls.config;e.loaded=0,n&&(Pt.b.warn("abort previous fragment loader for type:"+i),n.abort()),n=this.loaders[i]=e.loader=void 0!==r.fLoader?new r.fLoader(r):new r.loader(r);var a=void 0,o=void 0,s=void 0;a={url:e.url,frag:e,responseType:"arraybuffer",progressData:!1};var l=e.byteRangeStartOffset,u=e.byteRangeEndOffset;isNaN(l)||isNaN(u)||(a.rangeStart=l,a.rangeEnd=u),o={timeout:r.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:r.fragLoadingMaxRetryTimeout},s={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this),onProgress:this.loadprogress.bind(this)},n.load(a,o,s)},e.prototype.loadsuccess=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=t.data,a=i.frag;a.loader=void 0,this.loaders[a.type]=void 0,this.hls.trigger(Dt.a.FRAG_LOADED,{payload:r,frag:a,stats:e,networkDetails:n})},e.prototype.loaderror=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e.loader;n&&n.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.FRAG_LOAD_ERROR,fatal:!1,frag:e.frag,response:t,networkDetails:i})},e.prototype.loadtimeout=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e.loader;n&&n.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e.frag,networkDetails:i})},e.prototype.loadprogress=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=e.frag;r.loaded=t.loaded,this.hls.trigger(Dt.a.FRAG_LOAD_PROGRESS,{frag:r,stats:t,networkDetails:n})},e}(Mt),Jt=Zt,Qt=function(t){function e(i){p(this,e);var n=g(this,t.call(this,i,Dt.a.KEY_LOADING));return n.loaders={},n.decryptkey=null,n.decrypturl=null,n}return y(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},Mt.prototype.destroy.call(this)},e.prototype.onKeyLoading=function(t){var e=t.frag,i=e.type,n=this.loaders[i],r=e.decryptdata,a=r.uri;if(a!==this.decrypturl||null===this.decryptkey){var o=this.hls.config;n&&(Pt.b.warn("abort previous key loader for type:"+i),n.abort()),e.loader=this.loaders[i]=new o.loader(o),this.decrypturl=a,this.decryptkey=null;var s=void 0,l=void 0,u=void 0;s={url:a,frag:e,responseType:"arraybuffer"},l={timeout:o.fragLoadingTimeOut,maxRetry:o.fragLoadingMaxRetry,retryDelay:o.fragLoadingRetryDelay,maxRetryDelay:o.fragLoadingMaxRetryTimeout},u={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},e.loader.load(s,l,u)}else this.decryptkey&&(r.key=this.decryptkey,this.hls.trigger(Dt.a.KEY_LOADED,{frag:e}))},e.prototype.loadsuccess=function(t,e,i){var n=i.frag;this.decryptkey=n.decryptdata.key=new Uint8Array(t.data),n.loader=void 0,this.loaders[n.type]=void 0,this.hls.trigger(Dt.a.KEY_LOADED,{frag:n})},e.prototype.loaderror=function(t,e){var i=e.frag,n=i.loader;n&&n.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.KEY_LOAD_ERROR,fatal:!1,frag:i,response:t})},e.prototype.loadtimeout=function(t,e){var i=e.frag,n=i.loader;n&&n.abort(),this.loaders[e.type]=void 0,this.hls.trigger(Dt.a.ERROR,{type:Ot.b.NETWORK_ERROR,details:Ot.a.KEY_LOAD_TIMEOUT,fatal:!1,frag:i})},e}(Mt),te=Qt,ee={search:function(t,e){for(var i=0,n=t.length-1,r=null,a=null;i<=n;){r=(i+n)/2|0,a=t[r];var o=e(a);if(o>0)i=r+1;else{if(!(o<0))return a;n=r-1}}return null}},ie=ee,ne={isBuffered:function(t,e){try{if(t)for(var i=t.buffered,n=0;n=i.start(n)&&e<=i.end(n))return!0}catch(t){}return!1},bufferInfo:function(t,e,i){try{if(t){var n,r=t.buffered,a=[];for(n=0;nc&&(l[u-1].end=t[s].end):l.push(t[s])}else l.push(t[s])}for(s=0,n=0,r=a=e;s=d&&e1?e-1:0),r=1;r1?e-1:0),r=1;r0&&-1===t&&(Pt.b.log("override startPosition with lastCurrentTime @"+e.toFixed(3)),t=e),this.state=ye.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this.forceStartLoad=!0,this.state=ye.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=ye.STOPPED,this.forceStartLoad=!1},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){switch(this.state){case ye.ERROR:break;case ye.BUFFER_FLUSHING:this.fragLoadError=0;break;case ye.IDLE:this._doTickIdle();break;case ye.WAITING_LEVEL:var t=this.levels[this.level];t&&t.details&&(this.state=ye.IDLE);break;case ye.FRAG_LOADING_WAITING_RETRY:var e=performance.now(),i=this.retryDate;(!i||e>=i||this.media&&this.media.seeking)&&(Pt.b.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=ye.IDLE);break;case ye.ERROR:case ye.STOPPED:case ye.FRAG_LOADING:case ye.PARSING:case ye.PARSED:case ye.ENDED:}this._checkBuffer(),this._checkFragmentChanged()},e.prototype._doTickIdle=function(){var t=this.hls,e=t.config,i=this.media;if(void 0!==this.levelLastLoaded&&(i||!this.startFragRequested&&e.startFragPrefetch)){var n=void 0;n=this.loadedmetadata?i.currentTime:this.nextLoadPosition;var r=t.nextLoadLevel,a=this.levels[r];if(a){var o=a.bitrate,s=void 0;s=o?Math.max(8*e.maxBufferSize/o,e.maxBufferLength):e.maxBufferLength,s=Math.min(s,e.maxMaxBufferLength);var l=re.bufferInfo(this.mediaBuffer?this.mediaBuffer:i,n,e.maxBufferHole),u=l.len;if(!(u>=s)){Pt.b.trace("buffer length of "+u.toFixed(3)+" is below max of "+s.toFixed(3)+". checking for more payload ..."),this.level=t.nextLoadLevel=r;var c=a.details;if(void 0===c||!0===c.live&&this.levelLastLoaded!==r)return void(this.state=ye.WAITING_LEVEL);var d=this.fragPrevious;if(!c.live&&d&&!d.backtracked&&d.sn===c.endSN&&!l.nextStart){if(Math.min(i.duration,d.start+d.duration)-Math.max(l.end,d.start)<=Math.max(.2,d.duration)){var h={};return this.altAudio&&(h.type="video"),this.hls.trigger(Dt.a.BUFFER_EOS,h),void(this.state=ye.ENDED)}}this._fetchPayloadOrEos(n,l,c)}}}},e.prototype._fetchPayloadOrEos=function(t,e,i){var n=this.fragPrevious,r=this.level,a=i.fragments,o=a.length;if(0!==o){var s=a[0].start,l=a[o-1].start+a[o-1].duration,u=e.end,c=void 0;if(i.initSegment&&!i.initSegment.data)c=i.initSegment;else if(i.live){var d=this.config.initialLiveManifestSize;if(od&&(l.currentTime=d),this.nextLoadPosition=d}if(t.PTSKnown&&e>n&&l&&l.readyState)return null;if(this.startFragRequested&&!t.PTSKnown){if(r){var h=r.sn+1;if(h>=t.startSN&&h<=t.endSN){var f=a[h-t.startSN];r.cc===f.cc&&(u=f,Pt.b.log("live playlist, switching playlist, load frag with next SN: "+u.sn))}u||(u=ie.search(a,function(t){return r.cc-t.cc}))&&Pt.b.log("live playlist, switching playlist, load frag with same CC: "+u.sn)}u||(u=a[Math.min(o-1,Math.round(o/2))],Pt.b.log("live playlist, switching playlist, unknown, load middle frag : "+u.sn))}return u},e.prototype._findFragment=function(t,e,i,n,r,a,o){var s=this.hls.config,l=void 0,u=void 0,c=s.maxFragLookUpTolerance,d=e?n[e.sn-n[0].sn+1]:void 0,h=function(t){var e=Math.min(c,t.duration+(t.deltaPTS?t.deltaPTS:0));return t.start+t.duration-e<=r?1:t.start-e>r&&t.start?-1:0};if(ra-c&&(c=0),u=d&&!h(d)?d:ie.search(n,h)):u=n[i-1],u){l=u;var f=l.sn-o.startSN,p=e&&l.level===e.level,g=n[f-1],y=n[f+1];if(e&&l.sn===e.sn)if(p&&!l.backtracked)if(l.sns.maxBufferHole&&e.dropped&&f?(l=g,Pt.b.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this"),e.loadCounter--):(l=y,Pt.b.log("SN just loaded, load next one: "+l.sn))}else l=null;else l.backtracked&&(y&&y.backtracked?(Pt.b.warn("Already backtracked from fragment "+y.sn+", will not backtrack to fragment "+l.sn+". Loading fragment "+y.sn),l=y):(Pt.b.warn("Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"),l.dropped=0,g?(g.loadCounter&&g.loadCounter--,l=g,l.backtracked=!0):f&&(l=null)))}return l},e.prototype._loadFragmentOrKey=function(t,e,i,n,r){var a=this.hls,o=a.config;if(!t.decryptdata||null==t.decryptdata.uri||null!=t.decryptdata.key){if(Pt.b.log("Loading "+t.sn+" of ["+i.startSN+" ,"+i.endSN+"],level "+e+", currentTime:"+n.toFixed(3)+",bufferEnd:"+r.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,t.loadCounter){t.loadCounter++;var s=o.fragLoadingLoopThreshold;if(t.loadCounter>s&&Math.abs(this.fragLoadIdx-t.loadIdx)e.endPTS?1:0})},e.prototype.followingBufferedFrag=function(t){return t?this.getBufferedFrag(t.endPTS+.5):null},e.prototype._checkFragmentChanged=function(){var t,e,i=this.media;if(i&&i.readyState&&!1===i.seeking&&(e=i.currentTime,e>i.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),re.isBuffered(i,e)?t=this.getBufferedFrag(e):re.isBuffered(i,e+.1)&&(t=this.getBufferedFrag(e+.1)),t)){var n=t;if(n!==this.fragPlaying){this.hls.trigger(Dt.a.FRAG_CHANGED,{frag:n});var r=n.level;this.fragPlaying&&this.fragPlaying.level===r||this.hls.trigger(Dt.a.LEVEL_SWITCHED,{level:r}),this.fragPlaying=n}}},e.prototype.immediateLevelSwitch=function(){if(Pt.b.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var t=this.media,e=void 0;t?(e=t.paused,t.pause()):e=!0,this.previouslyPaused=e}var i=this.fragCurrent;i&&i.loader&&i.loader.abort(),this.fragCurrent=null,void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},e.prototype.immediateLevelSwitchEnd=function(){var t=this.media;t&&t.buffered.length&&(this.immediateSwitch=!1,re.isBuffered(t,t.currentTime)&&(t.currentTime-=1e-4),this.previouslyPaused||t.play())},e.prototype.nextLevelSwitch=function(){var t=this.media;if(t&&t.readyState){var e=void 0,i=void 0,n=void 0;if(void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),i=this.getBufferedFrag(t.currentTime),i&&i.startPTS>1&&this.flushMainBuffer(0,i.startPTS-1),t.paused)e=0;else{var r=this.hls.nextLoadLevel,a=this.levels[r],o=this.fragLastKbps;e=o&&this.fragCurrent?this.fragCurrent.duration*a.bitrate/(1e3*o)+1:0}if((n=this.getBufferedFrag(t.currentTime+e))&&(n=this.followingBufferedFrag(n))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.flushMainBuffer(n.maxStartPTS,Number.POSITIVE_INFINITY)}}},e.prototype.flushMainBuffer=function(t,e){this.state=ye.BUFFER_FLUSHING;var i={startOffset:t,endOffset:e};this.altAudio&&(i.type="video"),this.hls.trigger(Dt.a.BUFFER_FLUSHING,i)},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended);var i=this.config;this.levels&&i.autoStartLoad&&this.hls.startLoad(i.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(Pt.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.levels;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.loadCounter=void 0,t.backtracked=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("seeked",this.onvseeked),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){var t=this.media,e=t?t.currentTime:void 0,i=this.config;isNaN(e)||Pt.b.log("media seeking to "+e.toFixed(3));var n=this.mediaBuffer?this.mediaBuffer:t,r=re.bufferInfo(n,e,this.config.maxBufferHole);if(this.state===ye.FRAG_LOADING){var a=this.fragCurrent;if(0===r.len&&a){var o=i.maxFragLookUpTolerance,s=a.start-o,l=a.start+a.duration+o;el?(a.loader&&(Pt.b.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),a.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.state=ye.IDLE):Pt.b.log("seeking outside of buffer but within currently loaded fragment range")}}else this.state===ye.ENDED&&(0===r.len&&(this.fragPrevious=0),this.state=ye.IDLE);t&&(this.lastCurrentTime=e),this.state!==ye.FRAG_LOADING&&void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*i.fragLoadingLoopThreshold),this.loadedmetadata||(this.nextLoadPosition=this.startPosition=e),this.tick()},e.prototype.onMediaSeeked=function(){var t=this.media,e=t?t.currentTime:void 0;isNaN(e)||Pt.b.log("media seeked to "+e.toFixed(3)),this.tick()},e.prototype.onMediaEnded=function(){Pt.b.log("media ended"),this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestLoading=function(){Pt.b.log("trigger BUFFER_RESET"),this.hls.trigger(Dt.a.BUFFER_RESET),this._bufferedFrags=[],this.stalled=!1,this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestParsed=function(t){var e,i=!1,n=!1;t.levels.forEach(function(t){(e=t.audioCodec)&&(-1!==e.indexOf("mp4a.40.2")&&(i=!0),-1!==e.indexOf("mp4a.40.5")&&(n=!0))}),this.audioCodecSwitch=i&&n,this.audioCodecSwitch&&Pt.b.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1;var r=this.config;(r.autoStartLoad||this.forceStartLoad)&&this.hls.startLoad(r.startPosition)},e.prototype.onLevelLoaded=function(t){var e=t.details,i=t.level,n=this.levels[this.levelLastLoaded],r=this.levels[i],a=e.totalduration,o=0;if(Pt.b.log("level "+i+" loaded ["+e.startSN+","+e.endSN+"],duration:"+a),e.live){var s=r.details;s&&e.fragments.length>0?(E(s,e),o=e.fragments[0].start,this.liveSyncPosition=this.computeLivePosition(o,s),e.PTSKnown&&!isNaN(o)?Pt.b.log("live playlist sliding:"+o.toFixed(3)):(Pt.b.log("live playlist - outdated PTS, unknown sliding"),k(this.fragPrevious,n,e))):(Pt.b.log("live playlist - first load, unknown sliding"),e.PTSKnown=!1,k(this.fragPrevious,n,e))}else e.PTSKnown=!1;if(r.details=e,this.levelLastLoaded=i,this.hls.trigger(Dt.a.LEVEL_UPDATED,{details:e,level:i}),!1===this.startFragRequested){if(-1===this.startPosition||-1===this.lastCurrentTime){var l=e.startTimeOffset;isNaN(l)?e.live?(this.startPosition=this.computeLivePosition(o,e),Pt.b.log("configure startPosition to "+this.startPosition)):this.startPosition=0:(l<0&&(Pt.b.log("negative start time offset "+l+", count from end of last fragment"),l=o+a+l),Pt.b.log("start time offset found in playlist, adjust startPosition to "+l),this.startPosition=l),this.lastCurrentTime=this.startPosition}this.nextLoadPosition=this.startPosition}this.state===ye.WAITING_LEVEL&&(this.state=ye.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===ye.KEY_LOADING&&(this.state=ye.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,i=t.frag;if(this.state===ye.FRAG_LOADING&&e&&"main"===i.type&&i.level===e.level&&i.sn===e.sn){var n=t.stats,r=this.levels[e.level],a=r.details;if(Pt.b.log("Loaded "+e.sn+" of ["+a.startSN+" ,"+a.endSN+"],level "+e.level),this.bitrateTest=!1,this.stats=n,!0===i.bitrateTest&&this.hls.nextLoadLevel)this.state=ye.IDLE,this.startFragRequested=!1,n.tparsed=n.tbuffered=performance.now(),this.hls.trigger(Dt.a.FRAG_BUFFERED,{stats:n,frag:e,id:"main"}),this.tick();else if("initSegment"===i.sn)this.state=ye.IDLE,n.tparsed=n.tbuffered=performance.now(),a.initSegment.data=t.payload,this.hls.trigger(Dt.a.FRAG_BUFFERED,{stats:n,frag:e,id:"main"}),this.tick();else{this.state=ye.PARSING;var o=a.totalduration,s=e.level,l=e.sn,u=this.config.defaultAudioCodec||r.audioCodec;this.audioCodecSwap&&(Pt.b.log("swapping playlist audio codec"),void 0===u&&(u=this.lastAudioCodec),u&&(u=-1!==u.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingBuffering=!0,this.appended=!1,Pt.b.log("Parsing "+l+" of ["+a.startSN+" ,"+a.endSN+"],level "+s+", cc "+e.cc);var c=this.demuxer;c||(c=this.demuxer=new he(this.hls,"main"));var d=this.media,h=d&&d.seeking,f=!h&&(a.PTSKnown||!a.live),p=a.initSegment?a.initSegment.data:[];c.push(t.payload,p,u,r.videoCodec,e,o,f,void 0)}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,i=t.frag;if(e&&"main"===t.id&&i.sn===e.sn&&i.level===e.level&&this.state===ye.PARSING){var n,r,a=t.tracks;if(a.audio&&this.altAudio&&delete a.audio,r=a.audio){var o=this.levels[this.level].audioCodec,s=navigator.userAgent.toLowerCase();o&&this.audioCodecSwap&&(Pt.b.log("swapping playlist audio codec"),o=-1!==o.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==r.metadata.channelCount&&-1===s.indexOf("firefox")&&(o="mp4a.40.5"),-1!==s.indexOf("android")&&"audio/mpeg"!==r.container&&(o="mp4a.40.2",Pt.b.log("Android: force audio codec to "+o)),r.levelCodec=o,r.id=t.id}r=a.video,r&&(r.levelCodec=this.levels[this.level].videoCodec,r.id=t.id),this.hls.trigger(Dt.a.BUFFER_CODECS,a);for(n in a){r=a[n],Pt.b.log("main track:"+n+",container:"+r.container+",codecs[level/parsed]=["+r.levelCodec+"/"+r.codec+"]");var l=r.initSegment;l&&(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(Dt.a.BUFFER_APPENDING,{type:n,data:l,parent:"main",content:"initSegment"}))}this.tick()}},e.prototype.onFragParsingData=function(t){var e=this,i=this.fragCurrent,n=t.frag;if(i&&"main"===t.id&&n.sn===i.sn&&n.level===i.level&&("audio"!==t.type||!this.altAudio)&&this.state===ye.PARSING){var r=this.levels[this.level],a=i;if(isNaN(t.endPTS)&&(t.endPTS=t.startPTS+i.duration,t.endDTS=t.startDTS+i.duration),Pt.b.log("Parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb+",dropped:"+(t.dropped||0)),"video"===t.type)if(a.dropped=t.dropped,a.dropped)if(a.backtracked)Pt.b.warn("Already backtracked on this fragment, appending with the gap");else{var o=r.details;if(!o||a.sn!==o.startSN)return Pt.b.warn("missing video frame(s), backtracking fragment"),a.backtracked=!0,this.nextLoadPosition=t.startPTS,this.state=ye.IDLE,this.fragPrevious=a,void this.tick();Pt.b.warn("missing video frame(s) on first frag, appending with gap")}else a.backtracked=!1;var s=_(r.details,a,t.startPTS,t.endPTS,t.startDTS,t.endDTS),l=this.hls;l.trigger(Dt.a.LEVEL_PTS_UPDATED,{details:r.details,level:this.level,drift:s,type:t.type,start:t.startPTS,end:t.endPTS}),[t.data1,t.data2].forEach(function(i){i&&i.length&&e.state===ye.PARSING&&(e.appended=!0,e.pendingBuffering=!0,l.trigger(Dt.a.BUFFER_APPENDING,{type:t.type,data:i,parent:"main",content:"data"}))}),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,i=t.frag;e&&"main"===t.id&&i.sn===e.sn&&i.level===e.level&&this.state===ye.PARSING&&(this.stats.tparsed=performance.now(),this.state=ye.PARSED,this._checkAppendedParsed())},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url,i=t.id;if(!e){if(this.mediaBuffer!==this.media){Pt.b.log("switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var n=this.fragCurrent;n.loader&&(Pt.b.log("switching to main audio track, cancel main fragment load"),n.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=ye.IDLE}var r=this.hls;r.trigger(Dt.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),r.trigger(Dt.a.AUDIO_TRACK_SWITCHED,{id:i}),this.altAudio=!1}},e.prototype.onAudioTrackSwitched=function(t){var e=t.id,i=!!this.hls.audioTracks[e].url;if(i){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(Pt.b.log("switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=i,this.tick()},e.prototype.onBufferCreated=function(t){var e=t.tracks,i=void 0,n=void 0,r=!1;for(var a in e){var o=e[a];"main"===o.id?(n=a,i=o,"video"===a&&(this.videoBuffer=e[a].buffer)):r=!0}r&&i?(Pt.b.log("alternate track found, use "+n+".buffered to schedule main fragment loading"),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media},e.prototype.onBufferAppended=function(t){if("main"===t.parent){var e=this.state;e!==ye.PARSING&&e!==ye.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==ye.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent;if(t){var e=this.mediaBuffer?this.mediaBuffer:this.media;Pt.b.log("main buffered : "+pe.toString(e.buffered));var i=this._bufferedFrags.filter(function(t){return re.isBuffered(e,(t.startPTS+t.endPTS)/2)});i.push(t),this._bufferedFrags=i.sort(function(t,e){return t.startPTS-e.startPTS}),this.fragPrevious=t;var n=this.stats;n.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*n.total/(n.tbuffered-n.tfirst)),this.hls.trigger(Dt.a.FRAG_BUFFERED,{stats:n,frag:t,id:"main"}),this.state=ye.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag||this.fragCurrent;if(!e||"main"===e.type){var i=!!this.media&&re.isBuffered(this.media,this.media.currentTime)&&re.isBuffered(this.media,this.media.currentTime+.5);switch(t.details){case Ot.a.FRAG_LOAD_ERROR:case Ot.a.FRAG_LOAD_TIMEOUT:case Ot.a.KEY_LOAD_ERROR:case Ot.a.KEY_LOAD_TIMEOUT:if(!t.fatal)if(this.fragLoadError+1<=this.config.fragLoadingMaxRetry){var n=Math.min(Math.pow(2,this.fragLoadError)*this.config.fragLoadingRetryDelay,this.config.fragLoadingMaxRetryTimeout);e.loadCounter=0,Pt.b.warn("mediaController: frag loading failed, retry in "+n+" ms"),this.retryDate=performance.now()+n,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.fragLoadError++,this.state=ye.FRAG_LOADING_WAITING_RETRY}else Pt.b.error("mediaController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=ye.ERROR;break;case Ot.a.FRAG_LOOP_LOADING_ERROR:t.fatal||(i?(this._reduceMaxBufferLength(e.duration),this.state=ye.IDLE):e.autoLevel&&0!==e.level||(t.fatal=!0,this.state=ye.ERROR));break;case Ot.a.LEVEL_LOAD_ERROR:case Ot.a.LEVEL_LOAD_TIMEOUT:this.state!==ye.ERROR&&(t.fatal?(this.state=ye.ERROR,Pt.b.warn("streamController: "+t.details+",switch to "+this.state+" state ...")):t.levelRetry||this.state!==ye.WAITING_LEVEL||(this.state=ye.IDLE));break;case Ot.a.BUFFER_FULL_ERROR:"main"!==t.parent||this.state!==ye.PARSING&&this.state!==ye.PARSED||(i?(this._reduceMaxBufferLength(this.config.maxBufferLength),this.state=ye.IDLE):(Pt.b.warn("buffer full error also media.currentTime is not buffered, flush everything"),this.fragCurrent=null,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)))}}},e.prototype._reduceMaxBufferLength=function(t){var e=this.config;e.maxMaxBufferLength>=t&&(e.maxMaxBufferLength/=2,Pt.b.warn("main:reduce max buffer length to "+e.maxMaxBufferLength+"s"),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*e.fragLoadingLoopThreshold))},e.prototype._checkBuffer=function(){var t=this.media,e=this.config;if(t&&t.readyState){var i=t.currentTime,n=this.mediaBuffer?this.mediaBuffer:t,r=n.buffered;if(!this.loadedmetadata&&r.length){this.loadedmetadata=!0;var a=t.seeking?i:this.startPosition,o=re.isBuffered(n,a),s=r.start(0),l=!o&&Math.abs(a-s)1e3*e.lowBufferWatchdogPeriod){this.stallReported||(this.stallReported=!0,Pt.b.warn("playback stalling in low buffer @"+i),f.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:g}));var m=u.nextStart,v=m-i;if(m&&v0){this.nudgeRetry=++y;var b=y*e.nudgeOffset;Pt.b.log("adjust currentTime from "+t.currentTime+" to next buffered @ "+m+" + nudge "+b),t.currentTime=m+b,this.stalled=void 0,f.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:m+b-i})}}else if(g>.5&&p>1e3*e.highBufferWatchdogPeriod)if(this.stallReported||(this.stallReported=!0,Pt.b.warn("playback stalling in high buffer @"+i),f.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:g})),this.stalled=void 0,this.nudgeRetry=++y,y"+t),this.hls.trigger(Dt.a.STREAM_STATE_TRANSITION,{previousState:e,nextState:t})}},get:function(){return this._state}},{key:"currentLevel",get:function(){var t=this.media;if(t){var e=this.getBufferedFrag(t.currentTime);if(e)return e.level}return-1}},{key:"nextBufferedFrag",get:function(){var t=this.media;return t?this.followingBufferedFrag(this.getBufferedFrag(t.currentTime)):null}},{key:"nextLevel",get:function(){var t=this.nextBufferedFrag;return t?t.level:-1}},{key:"liveSyncPosition",get:function(){return this._liveSyncPosition},set:function(t){this._liveSyncPosition=t}}]),e}(Mt),ve=me,be=function(){function t(t,e){for(var i=0;i0){i=e[0].bitrate,e.sort(function(t,e){return t.bitrate-e.bitrate}),this._levels=e;for(var c=0;c0})}else this.hls.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:this.hls.url,reason:"no level with compatible codecs found in manifest"})},e.prototype.setLevelInternal=function(t){var e=this._levels,i=this.hls;if(t>=0&&t1&&s.loadError0&&(e=t.urlId,this.hls.trigger(Dt.a.LEVEL_LOADING,{url:t.url[e],level:this.currentLevelIndex,id:e}))},be(e,[{key:"levels",get:function(){return this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(t){var e=this._levels;e&&(t=Math.min(t,e.length-1),this.currentLevelIndex===t&&void 0!==e[t].details||this.setLevelInternal(t))}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(t){this._firstLevel=t}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var t=this.hls.config.startLevel;return void 0!==t?t:this._firstLevel}return this._startLevel},set:function(t){this._startLevel=t}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}}]),e}(Mt),Ee=_e,Te=i(3),Ae=function(t){function e(i){x(this,e);var n=N(this,t.call(this,i,Dt.a.MEDIA_ATTACHED,Dt.a.MEDIA_DETACHING,Dt.a.FRAG_PARSING_METADATA));return n.id3Track=void 0,n.media=void 0,n}return M(e,t),e.prototype.destroy=function(){Mt.prototype.destroy.call(this)},e.prototype.onMediaAttached=function(t){this.media=t.media,this.media},e.prototype.onMediaDetaching=function(){this.media=void 0},e.prototype.onFragParsingMetadata=function(t){var e=t.frag,i=t.samples;this.id3Track||(this.id3Track=this.media.addTextTrack("metadata","id3"),this.id3Track.mode="hidden");for(var n=window.WebKitDataCue||window.VTTCue||window.TextTrackCue,r=0;r=this.minWeight_},t.prototype.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.prototype.destroy=function(){},t}(),we=ke,Ce=function(){function t(t,e){for(var i=0;i500*i.duration/s){var l=t.levels,u=Math.max(1,a.bw?a.bw/8:1e3*a.loaded/o),c=l[i.level],d=c.realBitrate?Math.max(c.realBitrate,c.bitrate):c.bitrate,h=a.total?a.total:Math.max(a.loaded,Math.round(i.duration*d/8)),f=e.currentTime,p=(h-a.loaded)/u,g=(re.bufferInfo(e,f,t.config.maxBufferHole).end-f)/s;if(g<2*i.duration/s&&p>g){var y=void 0,m=void 0;for(m=i.level-1;m>r;m--){var v=l[m].realBitrate?Math.max(l[m].realBitrate,l[m].bitrate):l[m].bitrate;if((y=i.duration*v/(6.4*u))=n;u--){var c=l[u],d=c.details,h=d?d.totalduration/d.fragments.length:e,f=!!d&&d.live,p=void 0;p=u<=t?o*i:s*i;var g=l[u].realBitrate?Math.max(l[u].realBitrate,l[u].bitrate):l[u].bitrate,y=g*h/p;if(Pt.b.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+u+"/"+Math.round(p)+"/"+g+"/"+h+"/"+a+"/"+y),p>g&&(!y||f&&!this.bitrateTestDelay||y=0)return h;Pt.b.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");var f=s?Math.min(s,n.maxStarvationDelay):n.maxStarvationDelay,p=n.abrBandWidthFactor,g=n.abrBandWidthUpFactor;if(0===d){var y=this.bitrateTestDelay;if(y){f=(s?Math.min(s,n.maxLoadingDelay):n.maxLoadingDelay)-y,Pt.b.trace("bitrate test took "+Math.round(1e3*y)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*f)+" ms"),p=g=1}}return h=this._findBestLevel(o,s,c,r,e,d+f,p,g,i),Math.max(h,0)}}]),e}(Mt),De=Ie,Oe=m(),Pe=function(t){function e(i){j(this,e);var n=Y(this,t.call(this,i,Dt.a.MEDIA_ATTACHING,Dt.a.MEDIA_DETACHING,Dt.a.MANIFEST_PARSED,Dt.a.BUFFER_RESET,Dt.a.BUFFER_APPENDING,Dt.a.BUFFER_CODECS,Dt.a.BUFFER_EOS,Dt.a.BUFFER_FLUSHING,Dt.a.LEVEL_PTS_UPDATED,Dt.a.LEVEL_UPDATED));return n._msDuration=null,n._levelDuration=null,n._live=null,n._objectUrl=null,n.onsbue=n.onSBUpdateEnd.bind(n),n.onsbe=n.onSBUpdateError.bind(n),n.pendingTracks={},n.tracks={},n}return H(e,t),e.prototype.destroy=function(){Mt.prototype.destroy.call(this)},e.prototype.onLevelPtsUpdated=function(t){var e=t.type,i=this.tracks.audio;if("audio"===e&&i&&"audio/mpeg"===i.container){var n=this.sourceBuffer.audio;if(Math.abs(n.timestampOffset-t.start)>.1){var r=n.updating;try{n.abort()}catch(t){r=!0,Pt.b.warn("can not abort audio buffer: "+t)}r?this.audioTimestampOffset=t.start:(Pt.b.warn("change mpeg audio timestamp offset from "+n.timestampOffset+" to "+t.start),n.timestampOffset=t.start)}}},e.prototype.onManifestParsed=function(t){var e=t.audio,i=t.video||t.levels.length&&t.audio,n=0;t.altAudio&&(e||i)&&(n=(e?1:0)+(i?1:0),Pt.b.log(n+" sourceBuffer(s) expected")),this.sourceBufferNb=n},e.prototype.onMediaAttaching=function(t){var e=this.media=t.media;if(e){var i=this.mediaSource=new Oe;this.onmso=this.onMediaSourceOpen.bind(this),this.onmse=this.onMediaSourceEnded.bind(this),this.onmsc=this.onMediaSourceClose.bind(this),i.addEventListener("sourceopen",this.onmso),i.addEventListener("sourceended",this.onmse),i.addEventListener("sourceclose",this.onmsc),e.src=URL.createObjectURL(i),this._objectUrl=e.src}},e.prototype.onMediaDetaching=function(){Pt.b.log("media source detaching");var t=this.mediaSource;if(t){if("open"===t.readyState)try{t.endOfStream()}catch(t){Pt.b.warn("onMediaDetaching:"+t.message+" while calling endOfStream")}t.removeEventListener("sourceopen",this.onmso),t.removeEventListener("sourceended",this.onmse),t.removeEventListener("sourceclose",this.onmsc),this.media&&(URL.revokeObjectURL(this._objectUrl),this.media.src===this._objectUrl?(this.media.removeAttribute("src"),this.media.load()):Pt.b.warn("media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.pendingTracks={},this.tracks={},this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0}this.onmso=this.onmse=this.onmsc=null,this.hls.trigger(Dt.a.MEDIA_DETACHED)},e.prototype.onMediaSourceOpen=function(){Pt.b.log("media source opened"),this.hls.trigger(Dt.a.MEDIA_ATTACHED,{media:this.media});var t=this.mediaSource;t&&t.removeEventListener("sourceopen",this.onmso),this.checkPendingTracks()},e.prototype.checkPendingTracks=function(){var t=this.pendingTracks,e=Object.keys(t).length;e&&(this.sourceBufferNb<=e||0===this.sourceBufferNb)&&(this.createSourceBuffers(t),this.pendingTracks={},this.doAppending())},e.prototype.onMediaSourceClose=function(){Pt.b.log("media source closed")},e.prototype.onMediaSourceEnded=function(){Pt.b.log("media source ended")},e.prototype.onSBUpdateEnd=function(){if(this.audioTimestampOffset){var t=this.sourceBuffer.audio;Pt.b.warn("change mpeg audio timestamp offset from "+t.timestampOffset+" to "+this.audioTimestampOffset),t.timestampOffset=this.audioTimestampOffset,delete this.audioTimestampOffset}this._needsFlush&&this.doFlush(),this._needsEos&&this.checkEos(),this.appending=!1;var e=this.parent,i=this.segments.reduce(function(t,i){return i.parent===e?t+1:t},0);this.hls.trigger(Dt.a.BUFFER_APPENDED,{parent:e,pending:i}),this._needsFlush||this.doAppending(),this.updateMediaElementDuration()},e.prototype.onSBUpdateError=function(t){Pt.b.error("sourceBuffer error:",t),this.hls.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferReset=function(){var t=this.sourceBuffer;for(var e in t){var i=t[e];try{this.mediaSource.removeSourceBuffer(i),i.removeEventListener("updateend",this.onsbue),i.removeEventListener("error",this.onsbe)}catch(t){}}this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0},e.prototype.onBufferCodecs=function(t){if(0===Object.keys(this.sourceBuffer).length){for(var e in t)this.pendingTracks[e]=t[e];var i=this.mediaSource;i&&"open"===i.readyState&&this.checkPendingTracks()}},e.prototype.createSourceBuffers=function(t){var e=this.sourceBuffer,i=this.mediaSource;for(var n in t)if(!e[n]){var r=t[n],a=r.levelCodec||r.codec,o=r.container+";codecs="+a;Pt.b.log("creating sourceBuffer("+o+")");try{var s=e[n]=i.addSourceBuffer(o);s.addEventListener("updateend",this.onsbue),s.addEventListener("error",this.onsbe),this.tracks[n]={codec:a,container:r.container},r.buffer=s}catch(t){Pt.b.error("error while trying to add sourceBuffer:"+t.message),this.hls.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.BUFFER_ADD_CODEC_ERROR,fatal:!1,err:t,mimeType:o})}}this.hls.trigger(Dt.a.BUFFER_CREATED,{tracks:t})},e.prototype.onBufferAppending=function(t){this._needsFlush||(this.segments?this.segments.push(t):this.segments=[t],this.doAppending())},e.prototype.onBufferAppendFail=function(t){Pt.b.error("sourceBuffer error:",t.event),this.hls.trigger(Dt.a.ERROR,{type:Ot.b.MEDIA_ERROR,details:Ot.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferEos=function(t){var e=this.sourceBuffer,i=t.type;for(var n in e)i&&n!==i||e[n].ended||(e[n].ended=!0,Pt.b.log(n+" sourceBuffer now EOS"));this.checkEos()},e.prototype.checkEos=function(){var t=this.sourceBuffer,e=this.mediaSource;if(!e||"open"!==e.readyState)return void(this._needsEos=!1);for(var i in t){var n=t[i];if(!n.ended)return;if(n.updating)return void(this._needsEos=!0)}Pt.b.log("all media data available, signal endOfStream() to MediaSource and stop loading fragment");try{e.endOfStream()}catch(t){Pt.b.warn("exception while calling mediaSource.endOfStream()")}this._needsEos=!1},e.prototype.onBufferFlushing=function(t){this.flushRange.push({start:t.startOffset,end:t.endOffset,type:t.type}),this.flushBufferCounter=0,this.doFlush()},e.prototype.onLevelUpdated=function(t){var e=t.details;e.fragments.length>0&&(this._levelDuration=e.totalduration+e.fragments[0].start,this._live=e.live,this.updateMediaElementDuration())},e.prototype.updateMediaElementDuration=function(){var t=this.hls.config,e=void 0;if(null!==this._levelDuration&&this.media&&this.mediaSource&&this.sourceBuffer&&0!==this.media.readyState&&"open"===this.mediaSource.readyState){for(var i in this.sourceBuffer)if(!0===this.sourceBuffer[i].updating)return;e=this.media.duration,null===this._msDuration&&(this._msDuration=this.mediaSource.duration),!0===this._live&&!0===t.liveDurationInfinity?(Pt.b.log("Media Source duration is set to Infinity"),this._msDuration=this.mediaSource.duration=1/0):(this._levelDuration>this._msDuration&&this._levelDuration>e||e===1/0||isNaN(e))&&(Pt.b.log("Updating Media Source duration to "+this._levelDuration.toFixed(3)),this._msDuration=this.mediaSource.duration=this._levelDuration)}},e.prototype.doFlush=function(){for(;this.flushRange.length;){var t=this.flushRange[0];if(!this.flushBuffer(t.start,t.end,t.type))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var e=0,i=this.sourceBuffer;try{for(var n in i)e+=i[n].buffered.length}catch(t){Pt.b.error("error while accessing sourceBuffer.buffered")}this.appended=e,this.hls.trigger(Dt.a.BUFFER_FLUSHED)}},e.prototype.doAppending=function(){var t=this.hls,e=this.sourceBuffer,i=this.segments;if(Object.keys(e).length){if(this.media.error)return this.segments=[],void Pt.b.error("trying to append although a media error occured, flush segment and abort");if(this.appending)return;if(i&&i.length){var n=i.shift();try{var r=n.type,a=e[r];a?a.updating?i.unshift(n):(a.ended=!1,this.parent=n.parent,a.appendBuffer(n.data),this.appendError=0,this.appended++,this.appending=!0):this.onSBUpdateEnd()}catch(e){Pt.b.error("error while trying to append buffer:"+e.message),i.unshift(n);var o={type:Ot.b.MEDIA_ERROR,parent:n.parent};if(22===e.code)return this.segments=[],o.details=Ot.a.BUFFER_FULL_ERROR,o.fatal=!1,void t.trigger(Dt.a.ERROR,o);if(this.appendError?this.appendError++:this.appendError=1,o.details=Ot.a.BUFFER_APPEND_ERROR,this.appendError>t.config.appendErrorMaxRetry)return Pt.b.log("fail "+t.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),i=[],o.fatal=!0,void t.trigger(Dt.a.ERROR,o);o.fatal=!1,t.trigger(Dt.a.ERROR,o)}}}},e.prototype.flushBuffer=function(t,e,i){var n,r,a,o,s,l,u=this.sourceBuffer;if(Object.keys(u).length){if(Pt.b.log("flushBuffer,pos/start/end: "+this.media.currentTime.toFixed(3)+"/"+t+"/"+e),this.flushBufferCounter.5)return this.flushBufferCounter++,Pt.b.log("flush "+c+" ["+s+","+l+"], of ["+a+","+o+"], pos:"+this.media.currentTime),n.remove(s,l),!1}catch(t){Pt.b.warn("exception while accessing sourcebuffer, it might have been removed from MediaSource")}}}else Pt.b.warn("abort flushing too many retries");Pt.b.log("buffer flushed")}return!0},e}(Mt),xe=Pe,Ne=function(){function t(t,e){for(var i=0;ithis.autoLevelCapping&&e.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}},e.prototype.getMaxLevel=function(t){var i=this;if(!this.levels)return-1;var n=this.levels.filter(function(n,r){return e.isLevelAllowed(r,i.restrictedLevels)&&r<=t});return e.getMaxLevelByMediaSize(n,this.mediaWidth,this.mediaHeight)},e.isLevelAllowed=function(t){return-1===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).indexOf(t)},e.getMaxLevelByMediaSize=function(t,e,i){if(!t||t&&!t.length)return-1;for(var n=t.length-1,r=0;r=e||a.height>=i)&&function(t,e){return!e||(t.width!==e.width||t.height!==e.height)}(a,t[r+1])){n=r;break}}return n},Ne(e,[{key:"mediaWidth",get:function(){var t=void 0,i=this.media;return i&&(t=i.width||i.clientWidth||i.offsetWidth,t*=e.contentScaleFactor),t}},{key:"mediaHeight",get:function(){var t=void 0,i=this.media;return i&&(t=i.height||i.clientHeight||i.offsetHeight,t*=e.contentScaleFactor),t}}],[{key:"contentScaleFactor",get:function(){var t=1;try{t=window.devicePixelRatio}catch(t){}return t}}]),e}(Mt),Fe=Me,Be=function(t){function e(i){return q(this,e),X(this,t.call(this,i,Dt.a.MEDIA_ATTACHING))}return Z(e,t),e.prototype.destroy=function(){this.timer&&clearInterval(this.timer),this.isVideoPlaybackQualityAvailable=!1},e.prototype.onMediaAttaching=function(t){var e=this.hls.config;if(e.capLevelOnFPSDrop){"function"==typeof(this.video=t.media instanceof HTMLVideoElement?t.media:null).getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),clearInterval(this.timer),this.timer=setInterval(this.checkFPSInterval.bind(this),e.fpsDroppedMonitoringPeriod)}},e.prototype.checkFPS=function(t,e,i){var n=performance.now();if(e){if(this.lastTime){var r=n-this.lastTime,a=i-this.lastDroppedFrames,o=e-this.lastDecodedFrames,s=1e3*a/r,l=this.hls;if(l.trigger(Dt.a.FPS_DROP,{currentDropped:a,currentDecoded:o,totalDroppedFrames:i}),s>0&&a>l.config.fpsDroppedMonitoringThreshold*o){var u=l.currentLevel;Pt.b.warn("drop FPS ratio greater than max allowed value for currentLevel: "+u),u>0&&(-1===l.autoLevelCapping||l.autoLevelCapping>=u)&&(u-=1,l.trigger(Dt.a.FPS_DROP_LEVEL_CAPPING,{level:u,droppedLevel:l.currentLevel}),l.autoLevelCapping=u,l.streamController.nextLevelSwitch())}}this.lastTime=n,this.lastDroppedFrames=i,this.lastDecodedFrames=e}},e.prototype.checkFPSInterval=function(){var t=this.video;if(t)if(this.isVideoPlaybackQualityAvailable){var e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)},e}(Mt),Ue=Be,Ge=function(){function t(e){J(this,t),e&&e.xhrSetup&&(this.xhrSetup=e.xhrSetup)}return t.prototype.destroy=function(){this.abort(),this.loader=null},t.prototype.abort=function(){var t=this.loader;t&&4!==t.readyState&&(this.stats.aborted=!0,t.abort()),window.clearTimeout(this.requestTimeout),this.requestTimeout=null,window.clearTimeout(this.retryTimeout),this.retryTimeout=null},t.prototype.load=function(t,e,i){this.context=t,this.config=e,this.callbacks=i,this.stats={trequest:performance.now(),retry:0},this.retryDelay=e.retryDelay,this.loadInternal()},t.prototype.loadInternal=function(){var t,e=this.context;t=this.loader=new XMLHttpRequest;var i=this.stats;i.tfirst=0,i.loaded=0;var n=this.xhrSetup;try{if(n)try{n(t,e.url)}catch(i){t.open("GET",e.url,!0),n(t,e.url)}t.readyState||t.open("GET",e.url,!0)}catch(i){return void this.callbacks.onError({code:t.status,text:i.message},e,t)}e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),this.config.timeout),t.send()},t.prototype.readystatechange=function(t){var e=t.currentTarget,i=e.readyState,n=this.stats,r=this.context,a=this.config;if(!n.aborted&&i>=2)if(window.clearTimeout(this.requestTimeout),0===n.tfirst&&(n.tfirst=Math.max(performance.now(),n.trequest)),4===i){var o=e.status;if(o>=200&&o<300){n.tload=Math.max(n.tfirst,performance.now());var s=void 0,l=void 0;"arraybuffer"===r.responseType?(s=e.response,l=s.byteLength):(s=e.responseText,l=s.length),n.loaded=n.total=l;var u={url:e.responseURL,data:s};this.callbacks.onSuccess(u,n,r,e)}else n.retry>=a.maxRetry||o>=400&&o<499?(Pt.b.error(o+" while loading "+r.url),this.callbacks.onError({code:o,text:e.statusText},r,e)):(Pt.b.warn(o+" while loading "+r.url+", retrying in "+this.retryDelay+"..."),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,a.maxRetryDelay),n.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),a.timeout)},t.prototype.loadtimeout=function(){Pt.b.warn("timeout while loading "+this.context.url),this.callbacks.onTimeout(this.stats,this.context,null)},t.prototype.loadprogress=function(t){var e=t.currentTarget,i=this.stats;i.loaded=t.loaded,t.lengthComputable&&(i.total=t.total);var n=this.callbacks.onProgress;n&&n(i,this.context,null,e)},t}(),Ke=Ge,Ve=function(){function t(t,e){for(var i=0;i1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){this.updateTrack(this.trackId)},e.prototype.onError=function(t){t.fatal&&t.type===Ot.b.NETWORK_ERROR&&this.cleanTimer()},e.prototype.onManifestLoading=function(){this.tracks=[],this.trackId=-1},e.prototype.onManifestParsed=function(t){var e=this,i=t.audioTracks||[],n=!1;this.tracks=i,this.hls.trigger(Dt.a.AUDIO_TRACKS_UPDATED,{audioTracks:i});var r=0;i.forEach(function(t){if(t.default&&!n)return e.audioTrack=r,void(n=!0);r++}),!1===n&&i.length&&(Pt.b.log("no default audio track defined, use first audio track as default"),this.audioTrack=0)},e.prototype.onAudioTrackLoaded=function(t){t.id=0&&t=0&&t0&&-1===t?(Pt.b.log("audio:override startPosition with lastCurrentTime @"+e.toFixed(3)),this.state=$e.IDLE):(this.lastCurrentTime=this.startPosition?this.startPosition:t,this.state=$e.STARTING),this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else this.startPosition=t,this.state=$e.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=$e.STOPPED},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){var t,e,i,n=this.hls,r=n.config;switch(this.state){case $e.ERROR:case $e.PAUSED:case $e.BUFFER_FLUSHING:break;case $e.STARTING:this.state=$e.WAITING_TRACK,this.loadedmetadata=!1;break;case $e.IDLE:var a=this.tracks;if(!a)break;if(!this.media&&(this.startFragRequested||!r.startFragPrefetch))break;if(this.loadedmetadata)t=this.media.currentTime;else if(void 0===(t=this.nextLoadPosition))break;var o=this.mediaBuffer?this.mediaBuffer:this.media,s=this.videoBuffer?this.videoBuffer:this.media,l=re.bufferInfo(o,t,r.maxBufferHole),u=re.bufferInfo(s,t,r.maxBufferHole),c=l.len,d=l.end,h=this.fragPrevious,f=Math.max(r.maxBufferLength,u.len),p=this.audioSwitch,g=this.trackId;if((cv||l.nextStart))return;Pt.b.log("alt audio track ahead of main track, seek to start of alt audio track"),this.media.currentTime=v+.05}if(i.initSegment&&!i.initSegment.data)_=i.initSegment;else if(d<=v){if(_=y[0],null!==this.videoTrackCC&&_.cc!==this.videoTrackCC&&(_=A(y,this.videoTrackCC)),i.live&&_.loadIdx&&_.loadIdx===this.fragLoadIdx){var E=l.nextStart?l.nextStart:v;return Pt.b.log("no alt audio available @currentTime:"+this.media.currentTime+", seeking @"+(E+.05)),void(this.media.currentTime=E+.05)}}else{var T=void 0,S=r.maxFragLookUpTolerance,L=h?y[h.sn-y[0].sn+1]:void 0,R=function(t){var e=Math.min(S,t.duration);return t.start+t.duration-e<=d?1:t.start-e>d&&t.start?-1:0};db-S&&(S=0),T=L&&!R(L)?L:ie.search(y,R)):T=y[m-1],T&&(_=T,v=T.start,h&&_.level===h.level&&_.sn===h.sn&&(_.snk&&Math.abs(this.fragLoadIdx-_.loadIdx)=C||I)&&(Pt.b.log("audioStreamController: retryDate reached, switch back to IDLE state"),this.state=$e.IDLE);break;case $e.WAITING_INIT_PTS:var D=this.videoTrackCC;if(void 0===this.initPTS[D])break;var O=this.waitingFragment;if(O){var P=O.frag.cc;D!==P?(e=this.tracks[this.trackId],e.details&&e.details.live&&(Pt.b.warn("Waiting fragment CC ("+P+") does not match video track CC ("+D+")"),this.waitingFragment=null,this.state=$e.IDLE)):(this.state=$e.FRAG_LOADING,this.onFragLoaded(this.waitingFragment),this.waitingFragment=null)}else this.state=$e.IDLE;break;case $e.STOPPED:case $e.FRAG_LOADING:case $e.PARSING:case $e.PARSED:case $e.ENDED:}},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("ended",this.onvended);var i=this.config;this.tracks&&i.autoStartLoad&&this.startLoad(i.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(Pt.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.tracks;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.loadCounter=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){this.state===$e.ENDED&&(this.state=$e.IDLE),this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()},e.prototype.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},e.prototype.onAudioTracksUpdated=function(t){Pt.b.log("audio tracks updated"),this.tracks=t.audioTracks},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url;this.trackId=t.id,this.fragCurrent=null,this.state=$e.PAUSED,this.waitingFragment=null,e?this.timer||(this.timer=setInterval(this.ontick,100)):this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),e&&(this.audioSwitch=!0,this.state=$e.IDLE,void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold)),this.tick()},e.prototype.onAudioTrackLoaded=function(t){var e=t.details,i=t.id,n=this.tracks[i],r=e.totalduration,a=0;if(Pt.b.log("track "+i+" loaded ["+e.startSN+","+e.endSN+"],duration:"+r),e.live){var o=n.details;o&&e.fragments.length>0?(E(o,e),a=e.fragments[0].start,e.PTSKnown?Pt.b.log("live audio playlist sliding:"+a.toFixed(3)):Pt.b.log("live audio playlist - outdated PTS, unknown sliding")):(e.PTSKnown=!1,Pt.b.log("live audio playlist - first load, unknown sliding"))}else e.PTSKnown=!1;if(n.details=e,!this.startFragRequested){if(-1===this.startPosition){var s=e.startTimeOffset;isNaN(s)?this.startPosition=0:(Pt.b.log("start time offset found in playlist, adjust startPosition to "+s),this.startPosition=s)}this.nextLoadPosition=this.startPosition}this.state===$e.WAITING_TRACK&&(this.state=$e.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===$e.KEY_LOADING&&(this.state=$e.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,i=t.frag;if(this.state===$e.FRAG_LOADING&&e&&"audio"===i.type&&i.level===e.level&&i.sn===e.sn){var n=this.tracks[this.trackId],r=n.details,a=r.totalduration,o=e.level,s=e.sn,l=e.cc,u=this.config.defaultAudioCodec||n.audioCodec||"mp4a.40.2",c=this.stats=t.stats;if("initSegment"===s)this.state=$e.IDLE,c.tparsed=c.tbuffered=performance.now(),r.initSegment.data=t.payload,this.hls.trigger(Dt.a.FRAG_BUFFERED,{stats:c,frag:e,id:"audio"}),this.tick();else{this.state=$e.PARSING,this.appended=!1,this.demuxer||(this.demuxer=new he(this.hls,"audio"));var d=this.initPTS[l],h=r.initSegment?r.initSegment.data:[];if(r.initSegment||void 0!==d){this.pendingBuffering=!0,Pt.b.log("Demuxing "+s+" of ["+r.startSN+" ,"+r.endSN+"],track "+o);this.demuxer.push(t.payload,h,u,null,e,a,!1,d)}else Pt.b.log("unknown video PTS for continuity counter "+l+", waiting for video PTS before demuxing audio frag "+s+" of ["+r.startSN+" ,"+r.endSN+"],track "+o),this.waitingFragment=t,this.state=$e.WAITING_INIT_PTS}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,i=t.frag;if(e&&"audio"===t.id&&i.sn===e.sn&&i.level===e.level&&this.state===$e.PARSING){var n=t.tracks,r=void 0;if(n.video&&delete n.video,r=n.audio){r.levelCodec=r.codec,r.id=t.id,this.hls.trigger(Dt.a.BUFFER_CODECS,n),Pt.b.log("audio track:audio,container:"+r.container+",codecs[level/parsed]=["+r.levelCodec+"/"+r.codec+"]");var a=r.initSegment;if(a){var o={type:"audio",data:a,parent:"audio",content:"initSegment"};this.audioSwitch?this.pendingData=[o]:(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(Dt.a.BUFFER_APPENDING,o))}this.tick()}}},e.prototype.onFragParsingData=function(t){var e=this,i=this.fragCurrent,n=t.frag;if(i&&"audio"===t.id&&"audio"===t.type&&n.sn===i.sn&&n.level===i.level&&this.state===$e.PARSING){var r=this.trackId,a=this.tracks[r],o=this.hls;isNaN(t.endPTS)&&(t.endPTS=t.startPTS+i.duration,t.endDTS=t.startDTS+i.duration),Pt.b.log("parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb),_(a.details,i,t.startPTS,t.endPTS);var s=this.audioSwitch,l=this.media,u=!1;if(s&&l)if(l.readyState){var c=l.currentTime;Pt.b.log("switching audio track : currentTime:"+c),c>=t.startPTS&&(Pt.b.log("switching audio track : flushing all audio"),this.state=$e.BUFFER_FLUSHING,o.trigger(Dt.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),u=!0,this.audioSwitch=!1,o.trigger(Dt.a.AUDIO_TRACK_SWITCHED,{id:r}))}else this.audioSwitch=!1,o.trigger(Dt.a.AUDIO_TRACK_SWITCHED,{id:r});var d=this.pendingData;this.audioSwitch||([t.data1,t.data2].forEach(function(e){e&&e.length&&d.push({type:t.type,data:e,parent:"audio",content:"data"})}),!u&&d.length&&(d.forEach(function(t){e.state===$e.PARSING&&(e.pendingBuffering=!0,e.hls.trigger(Dt.a.BUFFER_APPENDING,t))}),this.pendingData=[],this.appended=!0)),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,i=t.frag;e&&"audio"===t.id&&i.sn===e.sn&&i.level===e.level&&this.state===$e.PARSING&&(this.stats.tparsed=performance.now(),this.state=$e.PARSED,this._checkAppendedParsed())},e.prototype.onBufferReset=function(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1},e.prototype.onBufferCreated=function(t){var e=t.tracks.audio;e&&(this.mediaBuffer=e.buffer,this.loadedmetadata=!0),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer)},e.prototype.onBufferAppended=function(t){if("audio"===t.parent){var e=this.state;e!==$e.PARSING&&e!==$e.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==$e.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent,e=this.stats,i=this.hls;if(t){this.fragPrevious=t,e.tbuffered=performance.now(),i.trigger(Dt.a.FRAG_BUFFERED,{stats:e,frag:t,id:"audio"});var n=this.mediaBuffer?this.mediaBuffer:this.media;Pt.b.log("audio buffered : "+pe.toString(n.buffered)),this.audioSwitch&&this.appended&&(this.audioSwitch=!1,i.trigger(Dt.a.AUDIO_TRACK_SWITCHED,{id:this.trackId})),this.state=$e.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag;if(!e||"audio"===e.type)switch(t.details){case Ot.a.FRAG_LOAD_ERROR:case Ot.a.FRAG_LOAD_TIMEOUT:if(!t.fatal){var i=this.fragLoadError;i?i++:i=1;var n=this.config;if(i<=n.fragLoadingMaxRetry){this.fragLoadError=i,e.loadCounter=0;var r=Math.min(Math.pow(2,i-1)*n.fragLoadingRetryDelay,n.fragLoadingMaxRetryTimeout);Pt.b.warn("audioStreamController: frag loading failed, retry in "+r+" ms"),this.retryDate=performance.now()+r,this.state=$e.FRAG_LOADING_WAITING_RETRY}else Pt.b.error("audioStreamController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=$e.ERROR}break;case Ot.a.FRAG_LOOP_LOADING_ERROR:case Ot.a.AUDIO_TRACK_LOAD_ERROR:case Ot.a.AUDIO_TRACK_LOAD_TIMEOUT:case Ot.a.KEY_LOAD_ERROR:case Ot.a.KEY_LOAD_TIMEOUT:this.state!==$e.ERROR&&(this.state=t.fatal?$e.ERROR:$e.IDLE,Pt.b.warn("audioStreamController: "+t.details+" while loading frag,switch to "+this.state+" state ..."));break;case Ot.a.BUFFER_FULL_ERROR:if("audio"===t.parent&&(this.state===$e.PARSING||this.state===$e.PARSED)){var a=this.mediaBuffer,o=this.media.currentTime;if(a&&re.isBuffered(a,o)&&re.isBuffered(a,o+.5)){var s=this.config;s.maxMaxBufferLength>=s.maxBufferLength&&(s.maxMaxBufferLength/=2,Pt.b.warn("audio:reduce max buffer length to "+s.maxMaxBufferLength+"s"),this.fragLoadIdx+=2*s.fragLoadingLoopThreshold),this.state=$e.IDLE}else Pt.b.warn("buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,this.state=$e.BUFFER_FLUSHING,this.hls.trigger(Dt.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"})}}},e.prototype.onBufferFlushed=function(){var t=this,e=this.pendingData;e&&e.length?(Pt.b.log("appending pending audio data on Buffer Flushed"),e.forEach(function(e){t.hls.trigger(Dt.a.BUFFER_APPENDING,e)}),this.appended=!0,this.pendingData=[],this.state=$e.PARSED):(this.state=$e.IDLE,this.fragPrevious=null,this.tick())},He(e,[{key:"state",set:function(t){if(this.state!==t){var e=this.state;this._state=t,Pt.b.log("audio stream:"+e+"->"+t)}},get:function(){return this._state}}]),e}(Mt),We=ze,qe=function(){function t(t){return"string"==typeof t&&(!!a[t.toLowerCase()]&&t.toLowerCase())}function e(t){return"string"==typeof t&&(!!o[t.toLowerCase()]&&t.toLowerCase())}function i(t){for(var e=1;e100)throw new Error("Position must be between 0 and 100.");_=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"positionAlign",i({},u,{get:function(){return E},set:function(t){var i=e(t);if(!i)throw new SyntaxError("An invalid or illegal string was specified.");E=i,this.hasBeenReset=!0}})),Object.defineProperty(s,"size",i({},u,{get:function(){return T},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");T=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"align",i({},u,{get:function(){return A},set:function(t){var i=e(t);if(!i)throw new SyntaxError("An invalid or illegal string was specified.");A=i,this.hasBeenReset=!0}})),s.displayState=void 0,l)return s}if("undefined"!=typeof window&&window.VTTCue)return window.VTTCue;var r="auto",a={"":!0,lr:!0,rl:!0},o={start:!0,middle:!0,end:!0,left:!0,right:!0};return n.prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)},n}(),Xe=function(){return{decode:function(t){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}};st.prototype={set:function(t,e){this.get(t)||""===e||(this.values[t]=e)},get:function(t,e,i){return i?this.has(t)?this.values[t]:e[i]:this.has(t)?this.values[t]:e},has:function(t){return t in this.values},alt:function(t,e,i){for(var n=0;n=0&&e<=100)&&(this.set(t,e),!0)}};var Ze=new qe(0,0,0),Je="middle"===Ze.align?"middle":"center";at.prototype={parse:function(t){function e(){var t=i.buffer,e=0;for(t=ct(t);e=i&&console.log(this.time+" ["+t+"] "+e)}},ci=function(t){for(var e=[],i=0;ini&&(ui.log("ERROR","Too large cursor position "+this.pos),this.pos=ni)},t.prototype.moveCursor=function(t){var e=this.pos+t;if(t>1)for(var i=this.pos+1;i=144&&this.backSpace();var e=ei(t);if(this.pos>=ni)return void ui.log("ERROR","Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1)},t.prototype.clearFromPos=function(t){var e;for(e=t;e0&&(i=t?"["+e.join(" | ")+"]":e.join("\n")),i},t.prototype.getTextAndFormat=function(){return this.rows},t}(),gi=function(){function t(e,i){ht(this,t),this.chNr=e,this.outputFilter=i,this.mode=null,this.verbose=0,this.displayedMemory=new pi,this.nonDisplayedMemory=new pi,this.lastOutputScreen=new pi,this.currRollUpRow=this.displayedMemory.rows[ii-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}return t.prototype.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[ii-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},t.prototype.getHandler=function(){return this.outputFilter},t.prototype.setHandler=function(t){this.outputFilter=t},t.prototype.setPAC=function(t){this.writeScreen.setPAC(t)},t.prototype.setBkgData=function(t){this.writeScreen.setBkgData(t)},t.prototype.setMode=function(t){t!==this.mode&&(this.mode=t,ui.log("INFO","MODE="+t),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)},t.prototype.insertChars=function(t){for(var e=0;e=46,e.italics)e.foreground="white";else{var i=Math.floor(t/2)-16,n=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=n[i]}ui.log("INFO","MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)},t.prototype.outputDataUpdate=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=ui.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),!0===t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue()),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))},t.prototype.cueSplitAtTime=function(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))},t}(),yi=function(){function t(e,i,n){ht(this,t),this.field=e||1,this.outputs=[i,n],this.channels=[new gi(1,i),new gi(2,n)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}}return t.prototype.getHandler=function(t){return this.channels[t].getHandler()},t.prototype.setHandler=function(t,e){this.channels[t].setHandler(e)},t.prototype.addData=function(t,e){var i,n,r,a=!1;this.lastTime=t,ui.setTime(t);for(var o=0;o ("+ci([n,r])+")"),i=this.parseCmd(n,r),i||(i=this.parseMidrow(n,r)),i||(i=this.parsePAC(n,r)),i||(i=this.parseBackgroundAttributes(n,r)),!i&&(a=this.parseChars(n,r)))if(this.currChNr&&this.currChNr>=0){var s=this.channels[this.currChNr-1];s.insertChars(a)}else ui.log("WARNING","No channel found yet. TEXT-MODE?");i?this.dataCounters.cmd+=2:a?this.dataCounters.char+=2:(this.dataCounters.other+=2,ui.log("WARNING","Couldn't parse cleaned data "+ci([n,r])+" orig: "+ci([e[o],e[o+1]])))}else this.dataCounters.padding+=2},t.prototype.parseCmd=function(t,e){var i=null,n=(20===t||28===t)&&32<=e&&e<=47,r=(23===t||31===t)&&33<=e&&e<=35;if(!n&&!r)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,ui.log("DEBUG","Repeated command ("+ci([t,e])+") is dropped"),!0;i=20===t||23===t?1:2;var a=this.channels[i-1];return 20===t||28===t?32===e?a.ccRCL():33===e?a.ccBS():34===e?a.ccAOF():35===e?a.ccAON():36===e?a.ccDER():37===e?a.ccRU(2):38===e?a.ccRU(3):39===e?a.ccRU(4):40===e?a.ccFON():41===e?a.ccRDC():42===e?a.ccTR():43===e?a.ccRTD():44===e?a.ccEDM():45===e?a.ccCR():46===e?a.ccENM():47===e&&a.ccEOC():a.ccTO(e-32),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=i,!0},t.prototype.parseMidrow=function(t,e){var i=null;if((17===t||25===t)&&32<=e&&e<=47){if((i=17===t?1:2)!==this.currChNr)return ui.log("ERROR","Mismatch channel in midrow parsing"),!1;return this.channels[i-1].ccMIDROW(e),ui.log("DEBUG","MIDROW ("+ci([t,e])+")"),!0}return!1},t.prototype.parsePAC=function(t,e){var i=null,n=null,r=(17<=t&&t<=23||25<=t&&t<=31)&&64<=e&&e<=127,a=(16===t||24===t)&&64<=e&&e<=95;if(!r&&!a)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,!0;i=t<=23?1:2,n=64<=e&&e<=95?1===i?ri[t]:oi[t]:1===i?ai[t]:si[t];var o=this.interpretPAC(n,e);return this.channels[i-1].setPAC(o),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=i,!0},t.prototype.interpretPAC=function(t,e){var i=e,n={color:null,italics:!1,indent:null,underline:!1,row:t};return i=e>95?e-96:e-64,n.underline=1==(1&i),i<=13?n.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(n.italics=!0,n.color="white"):n.indent=4*Math.floor((i-16)/2),n},t.prototype.parseChars=function(t,e){var i=null,n=null,r=null;if(t>=25?(i=2,r=t-8):(i=1,r=t),17<=r&&r<=19){var a=e;a=17===r?e+80:18===r?e+112:e+144,ui.log("INFO","Special char '"+ei(a)+"' in channel "+i),n=[a]}else 32<=t&&t<=127&&(n=0===e?[t]:[t,e]);if(n){var o=ci(n);ui.log("DEBUG","Char codes = "+o.join(",")),this.lastCmdA=null,this.lastCmdB=null}return n},t.prototype.parseBackgroundAttributes=function(t,e){var i,n,r,a,o=(16===t||24===t)&&32<=e&&e<=47,s=(23===t||31===t)&&45<=e&&e<=47;return!(!o&&!s)&&(i={},16===t||24===t?(n=Math.floor((e-32)/2),i.background=li[n],e%2==1&&(i.background=i.background+"_semi")):45===e?i.background="transparent":(i.foreground="black",47===e&&(i.underline=!0)),r=t<24?1:2,a=this.channels[r-1],a.setBkgData(i),this.lastCmdA=null,this.lastCmdB=null,!0)},t.prototype.reset=function(){for(var t=0;tt)&&(this.startTime=t),this.endTime=e,this.screen=i,this.timelineController.createCaptionsTrack(this.track)},t}(),bi=vi,_i=function(t,e,i){return t.substr(i||0,e.length)===e},Ei=function(t){var e=parseInt(t.substr(-3)),i=parseInt(t.substr(-6,2)),n=parseInt(t.substr(-9,2)),r=t.length>9?parseInt(t.substr(0,t.indexOf(":"))):0;return isNaN(e)||isNaN(i)||isNaN(n)||isNaN(r)?-1:(e+=1e3*i,e+=6e4*n,e+=36e5*r)},Ti=function(t){for(var e=5381,i=t.length;i;)e=33*e^t.charCodeAt(--i);return(e>>>0).toString()},Ai=function(t,e,i){var n=t[e],r=t[n.prevCC];if(!r||!r.new&&n.new)return t.ccOffset=t.presentationOffset=n.start,void(n.new=!1);for(;r&&r.new;)t.ccOffset+=n.start-r.start,n.new=!1,n=r,r=t[n.prevCC];t.presentationOffset=i},Si={parse:function(t,e,i,n,r,a){var o=/\r\n|\n\r|\n|\r/g,s=Object(Te.b)(new Uint8Array(t)).trim().replace(o,"\n").split("\n"),l="00:00.000",u=0,c=0,d=0,h=[],f=void 0,p=!0,g=new Qe;g.oncue=function(t){var e=i[n],r=i.ccOffset;e&&e.new&&(void 0!==c?r=i.ccOffset=e.start:Ai(i,n,d)),d&&(r=d+i.ccOffset-i.presentationOffset),t.startTime+=r-c,t.endTime+=r-c,t.id=Ti(t.startTime.toString())+Ti(t.endTime.toString())+Ti(t.text),t.text=decodeURIComponent(encodeURIComponent(t.text)),t.endTime>0&&h.push(t)},g.onparsingerror=function(t){f=t},g.onflush=function(){if(f&&a)return void a(f);r(h)},s.forEach(function(t){if(p){if(_i(t,"X-TIMESTAMP-MAP=")){p=!1,t.substr(16).split(",").forEach(function(t){_i(t,"LOCAL:")?l=t.substr(6):_i(t,"MPEGTS:")&&(u=parseInt(t.substr(7)))});try{e=e<0?e+8589934592:e,u-=e,c=Ei(l)/1e3,d=u/9e4,-1===c&&(f=new Error("Malformed X-TIMESTAMP-MAP: "+t))}catch(e){f=new Error("Malformed X-TIMESTAMP-MAP: "+t)}return}""===t&&(p=!1)}g.parse(t+"\n")}),g.flush()}},Li=Si,Ri=function(t){function e(i){pt(this,e);var n=gt(this,t.call(this,i,Dt.a.MEDIA_ATTACHING,Dt.a.MEDIA_DETACHING,Dt.a.FRAG_PARSING_USERDATA,Dt.a.FRAG_DECRYPTED,Dt.a.MANIFEST_LOADING,Dt.a.MANIFEST_LOADED,Dt.a.FRAG_LOADED,Dt.a.LEVEL_SWITCHING,Dt.a.INIT_PTS_FOUND));if(n.hls=i,n.config=i.config,n.enabled=!0,n.Cues=i.config.cueHandler,n.textTracks=[],n.tracks=[],n.unparsedVttFrags=[],n.initPTS=void 0,n.cueRanges=[],n.config.enableCEA708Captions){var r=new bi(n,1),a=new bi(n,2);n.cea608Parser=new mi(0,r,a)}return n}return yt(e,t),e.prototype.addCues=function(t,e,i,n){for(var r=this.cueRanges,a=!1,o=r.length;o--;){var s=r[o],l=bt(s[0],s[1],e,i);if(l>=0&&(s[0]=Math.min(s[0],e),s[1]=Math.max(s[1],i),a=!0,l/(i-e)>.5))return}a||r.push([e,i]),this.Cues.newCue(this[t],e,i,n)},e.prototype.onInitPtsFound=function(t){var e=this;void 0===this.initPTS&&(this.initPTS=t.initPTS),this.unparsedVttFrags.length&&(this.unparsedVttFrags.forEach(function(t){e.onFragLoaded(t)}),this.unparsedVttFrags=[])},e.prototype.getExistingTrack=function(t){var e=this.media;if(e)for(var i=0;i=this.tracks.length)){this.timer&&(clearInterval(this.timer),this.timer=null);var e=At(this.media.textTracks);if(-1!==this.trackId&&this.subtitleDisplay&&(e[this.trackId].mode="hidden"),this.trackId=t,Pt.b.log("switching to subtitle track "+t),this.hls.trigger(Dt.a.SUBTITLE_TRACK_SWITCH,{id:t}),-1!==t){var i=this.tracks[t];this.subtitleDisplay&&(e[t].mode="showing");var n=i.details;void 0!==n&&!0!==n.live||(Pt.b.log("(re)loading playlist for subtitle track "+t),this.hls.trigger(Dt.a.SUBTITLE_TRACK_LOADING,{url:i.url,id:t}))}}},wi(e,[{key:"subtitleTracks",get:function(){return this.tracks}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(t){this.trackId!==t&&this.setSubtitleTrackInternal(t)}}]),e}(Mt),Ii=Ci,Di=i(4),Oi={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING"},Pi=function(t){function e(i){St(this,e);var n=Lt(this,t.call(this,i,Dt.a.MEDIA_ATTACHED,Dt.a.ERROR,Dt.a.KEY_LOADED,Dt.a.FRAG_LOADED,Dt.a.SUBTITLE_TRACKS_UPDATED,Dt.a.SUBTITLE_TRACK_SWITCH,Dt.a.SUBTITLE_TRACK_LOADED,Dt.a.SUBTITLE_FRAG_PROCESSED));return n.config=i.config,n.vttFragSNsProcessed={},n.vttFragQueues=void 0,n.currentlyProcessing=null,n.state=Oi.STOPPED,n.currentTrackId=-1,n.ticks=0,n.decrypter=new Di.a(i.observer,i.config),n}return Rt(e,t),e.prototype.destroy=function(){Mt.prototype.destroy.call(this),this.state=Oi.STOPPED},e.prototype.clearVttFragQueues=function(){var t=this;this.vttFragQueues={},this.tracks.forEach(function(e){t.vttFragQueues[e.id]=[]})},e.prototype.nextFrag=function(){if(null===this.currentlyProcessing&&this.currentTrackId>-1&&this.vttFragQueues[this.currentTrackId].length){var t=this.currentlyProcessing=this.vttFragQueues[this.currentTrackId].shift();this.fragCurrent=t,this.hls.trigger(Dt.a.FRAG_LOADING,{frag:t}),this.state=Oi.FRAG_LOADING}},e.prototype.onSubtitleFragProcessed=function(t){t.success&&this.vttFragSNsProcessed[t.frag.trackId].push(t.frag.sn),this.currentlyProcessing=null,this.state=Oi.IDLE,this.nextFrag()},e.prototype.onMediaAttached=function(){this.state=Oi.IDLE},e.prototype.onError=function(t){var e=t.frag;e&&"subtitle"!==e.type||this.currentlyProcessing&&(this.currentlyProcessing=null,this.nextFrag())},e.prototype.tick=function(){var t=this;1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(function(){t.tick()},1),this.ticks=0)},e.prototype.doTick=function(){var t=this;switch(this.state){case Oi.IDLE:var e=this.tracks,i=this.currentTrackId,n=this.vttFragSNsProcessed[i],r=this.vttFragQueues[i],a=this.currentlyProcessing?this.currentlyProcessing.sn:-1,o=function(t){return n.indexOf(t.sn)>-1},s=function(t){return r.some(function(e){return e.sn===t.sn})};if(!e)break;var l;if(i0&&null!=i&&null!=i.key&&"AES-128"===i.method){var a;try{a=performance.now()}catch(t){a=Date.now()}this.decrypter.decrypt(t.payload,i.key.buffer,i.iv.buffer,function(t){var e;try{e=performance.now()}catch(t){e=Date.now()}r.trigger(Dt.a.FRAG_DECRYPTED,{frag:n,payload:t,stats:{tstart:a,tdecrypt:e}})})}},e}(Mt),xi=Pi,Ni={autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,initialLiveManifestSize:1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,lowBufferWatchdogPeriod:.5,highBufferWatchdogPeriod:3,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,liveDurationInfinity:!1,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:Ke,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,fetchSetup:void 0,abrController:De,bufferController:xe,capLevelController:Fe,fpsController:Ue,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0};Ni.subtitleStreamController=xi,Ni.subtitleTrackController=Ii,Ni.timelineController=ki,Ni.cueHandler=wt,Ni.enableCEA708Captions=!0,Ni.enableWebVTT=!0,Ni.captionsTextTrack1Label="English",Ni.captionsTextTrack1LanguageCode="en",Ni.captionsTextTrack2Label="Spanish",Ni.captionsTextTrack2LanguageCode="es",Ni.audioStreamController=We,Ni.audioTrackController=Ye;var Mi=function(){function t(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:{};kt(this,t);var n=t.DefaultConfig;if((i.liveSyncDurationCount||i.liveMaxLatencyDurationCount)&&(i.liveSyncDuration||i.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");for(var r in n)r in i||(i[r]=n[r]);if(void 0!==i.liveMaxLatencyDurationCount&&i.liveMaxLatencyDurationCount<=i.liveSyncDurationCount)throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');if(void 0!==i.liveMaxLatencyDuration&&(i.liveMaxLatencyDuration<=i.liveSyncDuration||void 0===i.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');Object(Pt.a)(i.debug),this.config=i,this._autoLevelCapping=-1;var a=this.observer=new se.a;a.trigger=function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n1?e-1:0),n=1;n0&&void 0!==arguments[0]?arguments[0]:-1;Pt.b.log("startLoad("+t+")"),this.networkControllers.forEach(function(e){e.startLoad(t)})},t.prototype.stopLoad=function(){Pt.b.log("stopLoad"),this.networkControllers.forEach(function(t){t.stopLoad()})},t.prototype.swapAudioCodec=function(){Pt.b.log("swapAudioCodec"),this.streamController.swapAudioCodec()},t.prototype.recoverMediaError=function(){Pt.b.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)},Mi(t,[{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){Pt.b.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){Pt.b.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){Pt.b.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(t){this.levelController.nextLoadLevel=t}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(t){Pt.b.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){Pt.b.log("set startLevel:"+t);var e=this;-1!==t&&(t=Math.max(t,e.minAutoLevel)),e.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(t){Pt.b.log("set autoLevelCapping:"+t),this._autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){for(var t=this,e=t.levels,i=t.config.minAutoBitrate,n=e?e.length:0,r=0;ri)return r}return 0}},{key:"maxAutoLevel",get:function(){var t=this,e=t.levels,i=t.autoLevelCapping;return-1===i&&e&&e.length?e.length-1:i}},{key:"nextAutoLevel",get:function(){var t=this;return Math.min(Math.max(t.abrController.nextAutoLevel,t.minAutoLevel),t.maxAutoLevel)},set:function(t){var e=this;e.abrController.nextAutoLevel=Math.max(e.minAutoLevel,t)}},{key:"audioTracks",get:function(){var t=this.audioTrackController;return t?t.audioTracks:[]}},{key:"audioTrack",get:function(){var t=this.audioTrackController;return t?t.audioTrack:-1},set:function(t){var e=this.audioTrackController;e&&(e.audioTrack=t)}},{key:"liveSyncPosition",get:function(){return this.streamController.liveSyncPosition}},{key:"subtitleTracks",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTrack:-1},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}},{key:"subtitleDisplay",get:function(){var t=this.subtitleTrackController;return!!t&&t.subtitleDisplay},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}}]),t}();e.default=Fi},function(t,e,i){function n(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,n){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e.oe=function(t){throw console.error(t),t};var n=e(e.s=ENTRY_MODULE);return n.default||n}function r(t){return(t+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function a(t){var e=[],i=t.toString(),n=i.match(/^function\s?\(\w+,\s*\w+,\s*(\w+)\)/);if(!n)return e;for(var a,o=n[1],s=new RegExp("(\\\\n|\\W)"+r(o)+"\\((/\\*.*?\\*/)?s?.*?([\\.|\\-|\\w|/|@]+).*?\\)","g");a=s.exec(i);)e.push(a[3]);return e}function o(t,e){for(var i=[e],n=[],r={};i.length;){var o=i.pop();if(!r[o]&&t[o]){r[o]=!0,n.push(o);var s=a(t[o]);i=i.concat(s)}}return n}t.exports=function(t,e){e=e||{};var r=i.m,a=e.all?Object.keys(r):o(r,t),s="("+n.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+a.map(function(t){return JSON.stringify(t)+": "+r[t].toString()}).join(",")+"})(self);",l=new window.Blob([s],{type:"text/javascript"});if(e.bare)return l;var u=window.URL||window.webkitURL||window.mozURL||window.msURL,c=u.createObjectURL(l),d=new window.Worker(c);return d.objectURL=c,d}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(7),r=i(1),a=i(0),o=i(5),s=i.n(o),l=function(t){var e=new s.a;e.trigger=function(t){for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r\n

<%=message%>

\n"},function(t,e,i){var n=i(188);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,"[data-no-op]{position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;left:0;right:0;color:#fff;padding:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);max-height:100%;overflow:auto}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}",""])},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(190),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(36),f=n(h),p=i(4),g=n(p),y=i(8),m=n(y),v=i(191),b=n(v);i(192);var _=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n.template=(0,m.default)(b.default),n.showTimeout=null,n.listenTo(n.container,g.default.CONTAINER_STATE_BUFFERING,n.onBuffering),n.listenTo(n.container,g.default.CONTAINER_STATE_BUFFERFULL,n.onBufferFull),n.listenTo(n.container,g.default.CONTAINER_STOP,n.onStop),n.listenTo(n.container,g.default.CONTAINER_ENDED,n.onStop),n.listenTo(n.container,g.default.CONTAINER_ERROR,n.onStop),n.render(),n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"spinner"}},{key:"attributes",get:function(){return{"data-spinner":"",class:"spinner-three-bounce"}}}]),e.prototype.onBuffering=function(){this.show()},e.prototype.onBufferFull=function(){this.hide()},e.prototype.onStop=function(){this.hide()},e.prototype.show=function(){var t=this;null===this.showTimeout&&(this.showTimeout=setTimeout(function(){return t.$el.show()},300))},e.prototype.hide=function(){null!==this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=null),this.$el.hide()},e.prototype.render=function(){return this.$el.html(this.template()),this.container.$el.append(this.$el),this.$el.hide(),this.container.buffering&&this.onBuffering(),this},e}(f.default);e.default=_,t.exports=e.default},function(t,e){t.exports="

\n"},function(t,e,i){var n=i(193);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;left:0;right:0;margin-left:auto;margin-right:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}",""])},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(195),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(37),f=n(h),p=i(4),g=n(p),y=i(6),m=n(y),v=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n.setInitialAttrs(),n.reportInterval=n.options.reportInterval||5e3,n.state="IDLE",n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"stats"}}]),e.prototype.bindEvents=function(){this.listenTo(this.container.playback,g.default.PLAYBACK_PLAY,this.onPlay),this.listenTo(this.container,g.default.CONTAINER_STOP,this.onStop),this.listenTo(this.container,g.default.CONTAINER_ENDED,this.onStop),this.listenTo(this.container,g.default.CONTAINER_DESTROYED,this.onStop),this.listenTo(this.container,g.default.CONTAINER_STATE_BUFFERING,this.onBuffering),this.listenTo(this.container,g.default.CONTAINER_STATE_BUFFERFULL,this.onBufferFull),this.listenTo(this.container,g.default.CONTAINER_STATS_ADD,this.onStatsAdd),this.listenTo(this.container,g.default.CONTAINER_BITRATE,this.onStatsAdd),this.listenTo(this.container.playback,g.default.PLAYBACK_STATS_ADD,this.onStatsAdd)},e.prototype.setInitialAttrs=function(){this.firstPlay=!0,this.startupTime=0,this.rebufferingTime=0,this.watchingTime=0,this.rebuffers=0,this.externalMetrics={}},e.prototype.onPlay=function(){this.state="PLAYING",this.watchingTimeInit=Date.now(),this.intervalId||(this.intervalId=setInterval(this.report.bind(this),this.reportInterval))},e.prototype.onStop=function(){clearInterval(this.intervalId),this.report(),this.intervalId=void 0,this.state="STOPPED"},e.prototype.onBuffering=function(){this.firstPlay?this.startupTimeInit=Date.now():this.rebufferingTimeInit=Date.now(),this.state="BUFFERING",this.rebuffers++},e.prototype.onBufferFull=function(){this.firstPlay&&this.startupTimeInit?(this.firstPlay=!1,this.startupTime=Date.now()-this.startupTimeInit,this.watchingTimeInit=Date.now()):this.rebufferingTimeInit&&(this.rebufferingTime+=this.getRebufferingTime()),this.rebufferingTimeInit=void 0,this.state="PLAYING"},e.prototype.getRebufferingTime=function(){return Date.now()-this.rebufferingTimeInit},e.prototype.getWatchingTime=function(){return Date.now()-this.watchingTimeInit-this.rebufferingTime},e.prototype.isRebuffering=function(){return!!this.rebufferingTimeInit},e.prototype.onStatsAdd=function(t){m.default.extend(this.externalMetrics,t)},e.prototype.getStats=function(){var t={startupTime:this.startupTime,rebuffers:this.rebuffers,rebufferingTime:this.isRebuffering()?this.rebufferingTime+this.getRebufferingTime():this.rebufferingTime,watchingTime:this.isRebuffering()?this.getWatchingTime()-this.getRebufferingTime():this.getWatchingTime()};return m.default.extend(t,this.externalMetrics),t},e.prototype.report=function(){this.container.statsReport(this.getStats())},e}(f.default);e.default=v,t.exports=e.default},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(197),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(36),f=n(h),p=i(4),g=n(p),y=i(8),m=n(y),v=i(198),b=n(v);i(199);var _=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n.configure(),n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"watermark"}},{key:"template",get:function(){return(0,m.default)(b.default)}}]),e.prototype.bindEvents=function(){this.listenTo(this.container,g.default.CONTAINER_PLAY,this.onPlay),this.listenTo(this.container,g.default.CONTAINER_STOP,this.onStop),this.listenTo(this.container,g.default.CONTAINER_OPTIONS_CHANGE,this.configure)},e.prototype.configure=function(){this.position=this.options.position||"bottom-right",this.options.watermark?(this.imageUrl=this.options.watermark,this.imageLink=this.options.watermarkLink,this.render()):this.$el.remove()},e.prototype.onPlay=function(){this.hidden||this.$el.show()},e.prototype.onStop=function(){this.$el.hide()},e.prototype.render=function(){this.$el.hide();var t={position:this.position,imageUrl:this.imageUrl,imageLink:this.imageLink};return this.$el.html(this.template(t)),this.container.$el.append(this.$el),this},e}(f.default);e.default=_,t.exports=e.default},function(t,e){t.exports="
>\n<% if(typeof imageLink !== 'undefined') { %>\n\">\n<% } %>\n\">\n<% if(typeof imageLink !== 'undefined') { %>\n\n<% } %>\n
\n"},function(t,e,i){var n=i(200);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}",""])},function(t,e,i){"use strict";(function(n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var a=i(0),o=r(a),s=i(1),l=r(s),u=i(3),c=r(u),d=i(2),h=r(d),f=i(36),p=r(f),g=i(4),y=r(g),m=i(8),v=r(m),b=i(9),_=r(b),E=i(202),T=r(E),A=i(58),S=r(A);i(203);var L=function(t){function e(i){(0,o.default)(this,e);var r=(0,l.default)(this,t.call(this,i));return r.hasStartedPlaying=!1,r.playRequested=!1,r.render(),n.nextTick(function(){return r.update()}),r}return(0,h.default)(e,t),(0,c.default)(e,[{key:"name",get:function(){return"poster"}},{key:"template",get:function(){return(0,v.default)(T.default)}},{key:"shouldRender",get:function(){var t=!(!this.options.poster||!this.options.poster.showForNoOp);return"html_img"!==this.container.playback.name&&(this.container.playback.getPlaybackType()!==_.default.NO_OP||t)}},{key:"attributes",get:function(){return{class:"player-poster","data-poster":""}}},{key:"events",get:function(){return{click:"clicked"}}},{key:"showOnVideoEnd",get:function(){return!this.options.poster||this.options.poster.showOnVideoEnd||void 0===this.options.poster.showOnVideoEnd}}]),e.prototype.bindEvents=function(){this.listenTo(this.container,y.default.CONTAINER_STOP,this.onStop),this.listenTo(this.container,y.default.CONTAINER_PLAY,this.onPlay),this.listenTo(this.container,y.default.CONTAINER_STATE_BUFFERING,this.update),this.listenTo(this.container,y.default.CONTAINER_STATE_BUFFERFULL,this.update),this.listenTo(this.container,y.default.CONTAINER_OPTIONS_CHANGE,this.render),this.showOnVideoEnd&&this.listenTo(this.container,y.default.CONTAINER_ENDED,this.onStop)},e.prototype.stopListening=function(){t.prototype.stopListening.call(this)},e.prototype.onPlay=function(){this.hasStartedPlaying=!0,this.update()},e.prototype.onStop=function(){this.hasStartedPlaying=!1,this.playRequested=!1,this.update()},e.prototype.showPlayButton=function(t){!t||this.options.chromeless&&!this.options.allowUserInteraction?(this.$playButton.hide(),this.$el.removeClass("clickable")):(this.$playButton.show(),this.$el.addClass("clickable"))},e.prototype.clicked=function(){return this.options.chromeless&&!this.options.allowUserInteraction||(this.playRequested=!0,this.update(),this.container.play()),!1},e.prototype.shouldHideOnPlay=function(){return!this.container.playback.isAudioOnly},e.prototype.update=function(){if(this.shouldRender){var t=!this.playRequested&&!this.hasStartedPlaying&&!this.container.buffering;this.showPlayButton(t),this.hasStartedPlaying?(this.container.enableMediaControl(),this.shouldHideOnPlay()&&this.$el.hide()):(this.container.disableMediaControl(),this.$el.show())}},e.prototype.render=function(){if(this.shouldRender){this.$el.html(this.template());if(this.options.poster&&void 0===this.options.poster.custom){var t=this.options.poster.url||this.options.poster;this.$el.css({"background-image":"url("+t+")"})}else this.options.poster&&this.$el.css({background:this.options.poster.custom});this.container.$el.append(this.el),this.$playWrapper=this.$el.find(".play-wrapper"),this.$playWrapper.append(S.default),this.$playButton=this.$playWrapper.find("svg"),this.$playButton.addClass("poster-icon"),this.$playButton.attr("data-poster","");var e=this.options.mediacontrol&&this.options.mediacontrol.buttons;return e&&this.$el.find("svg path").css("fill",e),this.options.mediacontrol&&this.options.mediacontrol.buttons&&(e=this.options.mediacontrol.buttons,this.$playButton.css("color",e)),this.update(),this}},e}(p.default);e.default=L,t.exports=e.default}).call(e,i(57))},function(t,e){t.exports='
\n'},function(t,e,i){var n=i(204);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,".player-poster[data-poster]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;height:100%;width:100%;z-index:998;top:0;left:0;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster]:hover .play-wrapper[data-poster]{opacity:1}.player-poster[data-poster] .play-wrapper[data-poster]{width:100%;height:25%;margin:0 auto;opacity:.75;transition:opacity .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] svg{height:100%}.player-poster[data-poster] .play-wrapper[data-poster] svg path{fill:#fff}",""])},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(206),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(37),f=n(h),p=i(4),g=n(p),y=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n.container.options.gaAccount&&(n.account=n.container.options.gaAccount,n.trackerName=n.container.options.gaTrackerName?n.container.options.gaTrackerName+".":"Clappr.",n.domainName=n.container.options.gaDomainName,n.currentHDState=void 0,n.embedScript()),n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"google_analytics"}}]),e.prototype.embedScript=function(){var t=this;if(window._gat)this.addEventListeners();else{var e=document.createElement("script");e.setAttribute("type","text/javascript"),e.setAttribute("async","async"),e.setAttribute("src","//www.google-analytics.com/ga.js"),e.onload=function(){return t.addEventListeners()},document.body.appendChild(e)}},e.prototype.addEventListeners=function(){var t=this;this.container&&(this.listenTo(this.container,g.default.CONTAINER_READY,this.onReady),this.listenTo(this.container,g.default.CONTAINER_PLAY,this.onPlay),this.listenTo(this.container,g.default.CONTAINER_STOP,this.onStop),this.listenTo(this.container,g.default.CONTAINER_PAUSE,this.onPause),this.listenTo(this.container,g.default.CONTAINER_ENDED,this.onEnded),this.listenTo(this.container,g.default.CONTAINER_STATE_BUFFERING,this.onBuffering),this.listenTo(this.container,g.default.CONTAINER_STATE_BUFFERFULL,this.onBufferFull),this.listenTo(this.container,g.default.CONTAINER_ERROR,this.onError),this.listenTo(this.container,g.default.CONTAINER_PLAYBACKSTATE,this.onPlaybackChanged),this.listenTo(this.container,g.default.CONTAINER_VOLUME,function(e){return t.onVolumeChanged(e)}),this.listenTo(this.container,g.default.CONTAINER_SEEK,function(e){return t.onSeek(e)}),this.listenTo(this.container,g.default.CONTAINER_FULL_SCREEN,this.onFullscreen),this.listenTo(this.container,g.default.CONTAINER_HIGHDEFINITIONUPDATE,this.onHD),this.listenTo(this.container,g.default.CONTAINER_PLAYBACKDVRSTATECHANGED,this.onDVR)),_gaq.push([this.trackerName+"_setAccount",this.account]),this.domainName&&_gaq.push([this.trackerName+"_setDomainName",this.domainName])},e.prototype.onReady=function(){this.push(["Video","Playback",this.container.playback.name])},e.prototype.onPlay=function(){this.push(["Video","Play",this.container.playback.src])},e.prototype.onStop=function(){this.push(["Video","Stop",this.container.playback.src])},e.prototype.onEnded=function(){this.push(["Video","Ended",this.container.playback.src])},e.prototype.onBuffering=function(){this.push(["Video","Buffering",this.container.playback.src])},e.prototype.onBufferFull=function(){this.push(["Video","Bufferfull",this.container.playback.src])},e.prototype.onError=function(){this.push(["Video","Error",this.container.playback.src])},e.prototype.onHD=function(t){var e=t?"ON":"OFF";e!==this.currentHDState&&(this.currentHDState=e,this.push(["Video","HD - "+e,this.container.playback.src]))},e.prototype.onPlaybackChanged=function(t){null!==t.type&&this.push(["Video","Playback Type - "+t.type,this.container.playback.src])},e.prototype.onDVR=function(t){var e=t?"ON":"OFF";this.push(["Interaction","DVR - "+e,this.container.playback.src])},e.prototype.onPause=function(){this.push(["Video","Pause",this.container.playback.src])},e.prototype.onSeek=function(){this.push(["Video","Seek",this.container.playback.src])},e.prototype.onVolumeChanged=function(){this.push(["Interaction","Volume",this.container.playback.src])},e.prototype.onFullscreen=function(){this.push(["Interaction","Fullscreen",this.container.playback.src])},e.prototype.push=function(t){var e=[this.trackerName+"_trackEvent"].concat(t);_gaq.push(e)},e}(f.default);e.default=y,t.exports=e.default},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(208),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(37),f=n(h),p=i(4),g=n(p),y=i(9),m=n(y),v=function(t){function e(i){return(0,a.default)(this,e),(0,s.default)(this,t.call(this,i))}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"click_to_pause"}}]),e.prototype.bindEvents=function(){this.listenTo(this.container,g.default.CONTAINER_CLICK,this.click),this.listenTo(this.container,g.default.CONTAINER_SETTINGSUPDATE,this.settingsUpdate)},e.prototype.click=function(){(this.container.getPlaybackType()!==m.default.LIVE||this.container.isDvrEnabled())&&(this.container.isPlaying()?this.container.pause():this.container.play())},e.prototype.settingsUpdate=function(){var t=this.container.getPlaybackType()!==m.default.LIVE||this.container.isDvrEnabled();if(t!==this.pointerEnabled){var e=t?"addClass":"removeClass";this.container.$el[e]("pointer-enabled"),this.pointerEnabled=t}},e}(f.default);e.default=v,t.exports=e.default},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(210),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(38),f=n(h),p=i(8),g=n(p),y=i(9),m=n(y),v=i(4),b=n(v),_=i(211),E=n(_);i(212);var T=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n.settingsUpdate(),n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"template",get:function(){return(0,g.default)(E.default)}},{key:"name",get:function(){return"dvr_controls"}},{key:"events",get:function(){return{"click .live-button":"click"}}},{key:"attributes",get:function(){return{class:"dvr-controls","data-dvr-controls":""}}}]),e.prototype.bindEvents=function(){this.listenTo(this.core.mediaControl,b.default.MEDIACONTROL_CONTAINERCHANGED,this.containerChanged),this.listenTo(this.core.mediaControl,b.default.MEDIACONTROL_RENDERED,this.settingsUpdate),this.listenTo(this.core,b.default.CORE_OPTIONS_CHANGE,this.render),this.core.getCurrentContainer()&&(this.listenToOnce(this.core.getCurrentContainer(),b.default.CONTAINER_TIMEUPDATE,this.render),this.listenTo(this.core.getCurrentContainer(),b.default.CONTAINER_PLAYBACKDVRSTATECHANGED,this.dvrChanged))},e.prototype.containerChanged=function(){this.stopListening(),this.bindEvents()},e.prototype.dvrChanged=function(t){this.core.getPlaybackType()===m.default.LIVE&&(this.settingsUpdate(),this.core.mediaControl.$el.addClass("live"),t?(this.core.mediaControl.$el.addClass("dvr"),this.core.mediaControl.$el.find(".media-control-indicator[data-position], .media-control-indicator[data-duration]").hide()):this.core.mediaControl.$el.removeClass("dvr"))},e.prototype.click=function(){var t=this.core.mediaControl,e=t.container;e.isPlaying()||e.play(),t.$el.hasClass("dvr")&&e.seek(e.getDuration())},e.prototype.settingsUpdate=function(){var t=this;this.stopListening(),this.core.mediaControl.$el.removeClass("live"),this.shouldRender()&&(this.render(),this.$el.click(function(){return t.click()})),this.bindEvents()},e.prototype.shouldRender=function(){return(void 0===this.core.options.useDvrControls||!!this.core.options.useDvrControls)&&this.core.getPlaybackType()===m.default.LIVE},e.prototype.render=function(){return this.$el.html(this.template({live:this.core.i18n.t("live"),backToLive:this.core.i18n.t("back_to_live")})),this.shouldRender()&&(this.core.mediaControl.$el.addClass("live"),this.core.mediaControl.$(".media-control-left-panel[data-media-control]").append(this.$el)),this},e}(f.default);e.default=T,t.exports=e.default},function(t,e){t.exports='
<%= live %>
\n\n'},function(t,e,i){var n=i(213);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,'.dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif;text-transform:uppercase}.dvr-controls[data-dvr-controls] .live-info:before{content:"";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;text-transform:uppercase;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:"";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}',""])},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(215),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(38),f=n(h),p=i(8),g=n(p),y=i(4),m=n(y),v=i(216),b=n(v),_=i(217),E=n(_);i(218);var T=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i)),r=i.options.closedCaptionsConfig;return n._title=r&&r.title?r.title:null,n._ariaLabel=r&&r.ariaLabel?r.ariaLabel:"cc-button",n._labelCb=r&&r.labelCallback&&"function"==typeof r.labelCallback?r.labelCallback:function(t){return t.name},n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"closed_captions"}},{key:"template",get:function(){return(0,g.default)(E.default)}},{key:"events",get:function(){return{"click [data-cc-button]":"toggleContextMenu","click [data-cc-select]":"onTrackSelect"}}},{key:"attributes",get:function(){return{class:"cc-controls","data-cc-controls":""}}}]),e.prototype.bindEvents=function(){this.listenTo(this.core.mediaControl,m.default.MEDIACONTROL_CONTAINERCHANGED,this.containerChanged),this.listenTo(this.core.mediaControl,m.default.MEDIACONTROL_RENDERED,this.render),this.listenTo(this.core.mediaControl,m.default.MEDIACONTROL_HIDE,this.hideContextMenu),this.container=this.core.getCurrentContainer(),this.container&&(this.listenTo(this.container,m.default.CONTAINER_SUBTITLE_AVAILABLE,this.onSubtitleAvailable),this.listenTo(this.container,m.default.CONTAINER_SUBTITLE_CHANGED,this.onSubtitleChanged),this.listenTo(this.container,m.default.CONTAINER_STOP,this.onContainerStop))},e.prototype.onContainerStop=function(){this.ccAvailable(!1)},e.prototype.containerChanged=function(){this.ccAvailable(!1),this.stopListening(),this.bindEvents()},e.prototype.onSubtitleAvailable=function(){this.renderCcButton(),this.ccAvailable(!0)},e.prototype.onSubtitleChanged=function(t){this.setCurrentContextMenuElement(t.id)},e.prototype.onTrackSelect=function(t){var e=parseInt(t.target.dataset.ccSelect,10);return this.container.closedCaptionsTrackId=e,this.hideContextMenu(),t.stopPropagation(),!1},e.prototype.ccAvailable=function(t){var e=t?"addClass":"removeClass";this.$el[e]("available")},e.prototype.toggleContextMenu=function(){this.$el.find("ul").toggle()},e.prototype.hideContextMenu=function(){this.$el.find("ul").hide()},e.prototype.contextMenuElement=function(t){return this.$el.find("ul a"+(isNaN(t)?"":'[data-cc-select="'+t+'"]')).parent()},e.prototype.setCurrentContextMenuElement=function(t){if(this._trackId!==t){this.contextMenuElement().removeClass("current"),this.contextMenuElement(t).addClass("current");var e=t>-1?"addClass":"removeClass";this.$ccButton[e]("enabled"),this._trackId=t}},e.prototype.renderCcButton=function(){for(var t=this.container?this.container.closedCaptionsTracks:[],e=0;e'},function(t,e){t.exports='\n\n'},function(t,e,i){var n=i(219);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,".cc-controls[data-cc-controls]{float:right;position:relative;display:none}.cc-controls[data-cc-controls].available{display:block}.cc-controls[data-cc-controls] .cc-button{padding:6px!important}.cc-controls[data-cc-controls] .cc-button.enabled{display:block;opacity:1}.cc-controls[data-cc-controls] .cc-button.enabled:hover{opacity:1;text-shadow:none}.cc-controls[data-cc-controls]>ul{list-style-type:none;position:absolute;bottom:25px;border:1px solid #000;display:none;background-color:#e6e6e6}.cc-controls[data-cc-controls] li{font-size:10px}.cc-controls[data-cc-controls] li[data-title]{background-color:#c3c2c2;padding:5px}.cc-controls[data-cc-controls] li a{color:#444;padding:2px 10px;display:block;text-decoration:none}.cc-controls[data-cc-controls] li a:hover{background-color:#555;color:#fff}.cc-controls[data-cc-controls] li a:hover a{color:#fff;text-decoration:none}.cc-controls[data-cc-controls] li.current a{color:red}",""])},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(221),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(30),f=n(h),p=i(4),g=n(p),y=i(6),m=n(y),v=i(58),b=n(v),_=i(76),E=n(_),T=(0,m.default)('link[rel="shortcut icon"]'),A=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n._container=null,n.configure(),n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"favicon"}},{key:"oldIcon",get:function(){return T}}]),e.prototype.configure=function(){this.core.options.changeFavicon?this.enabled||(this.stopListening(this.core,g.default.CORE_OPTIONS_CHANGE),this.enable()):this.enabled&&(this.disable(),this.listenTo(this.core,g.default.CORE_OPTIONS_CHANGE,this.configure))},e.prototype.bindEvents=function(){this.listenTo(this.core,g.default.CORE_OPTIONS_CHANGE,this.configure),this.listenTo(this.core.mediaControl,g.default.MEDIACONTROL_CONTAINERCHANGED,this.containerChanged),this.core.mediaControl.container&&this.containerChanged()},e.prototype.containerChanged=function(){this._container&&this.stopListening(this._container),this._container=this.core.mediaControl.container,this.listenTo(this._container,g.default.CONTAINER_PLAY,this.setPlayIcon),this.listenTo(this._container,g.default.CONTAINER_PAUSE,this.setPauseIcon),this.listenTo(this._container,g.default.CONTAINER_STOP,this.resetIcon),this.listenTo(this._container,g.default.CONTAINER_ENDED,this.resetIcon),this.listenTo(this._container,g.default.CONTAINER_ERROR,this.resetIcon),this.resetIcon()},e.prototype.disable=function(){t.prototype.disable.call(this),this.resetIcon()},e.prototype.destroy=function(){t.prototype.destroy.call(this),this.resetIcon()},e.prototype.createIcon=function(t){var e=(0,m.default)("");e[0].width=16,e[0].height=16;var i=e[0].getContext("2d");i.fillStyle="#000";var n=(0,m.default)(t).find("path").attr("d"),r=new Path2D(n);i.fill(r);var a=(0,m.default)('');return a.attr("href",e[0].toDataURL("image/png")),a},e.prototype.setPlayIcon=function(){this.playIcon||(this.playIcon=this.createIcon(b.default)),this.changeIcon(this.playIcon)},e.prototype.setPauseIcon=function(){this.pauseIcon||(this.pauseIcon=this.createIcon(E.default)),this.changeIcon(this.pauseIcon)},e.prototype.resetIcon=function(){(0,m.default)('link[rel="shortcut icon"]').remove(),(0,m.default)("head").append(this.oldIcon)},e.prototype.changeIcon=function(t){t&&((0,m.default)('link[rel="shortcut icon"]').remove(),(0,m.default)("head").append(t))},e}(f.default);e.default=A,t.exports=e.default},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(223),r=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=r.default,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(1),s=n(o),l=i(3),u=n(l),c=i(2),d=n(c),h=i(5),f=i(38),p=n(f),g=i(8),y=n(g),m=i(4),v=n(m),b=i(9),_=n(b),E=i(224),T=n(E);i(225);var A=function(t){function e(i){(0,a.default)(this,e);var n=(0,s.default)(this,t.call(this,i));return n.hoveringOverSeekBar=!1,n.hoverPosition=null,n.duration=null,n.actualLiveTime=!!n.mediaControl.options.actualLiveTime,n.actualLiveTime&&(n.mediaControl.options.actualLiveServerTime?n.actualLiveServerTimeDiff=(new Date).getTime()-new Date(n.mediaControl.options.actualLiveServerTime).getTime():n.actualLiveServerTimeDiff=0),n}return(0,d.default)(e,t),(0,u.default)(e,[{key:"name",get:function(){return"seek_time"}},{key:"template",get:function(){return(0,y.default)(T.default)}},{key:"attributes",get:function(){return{class:"seek-time","data-seek-time":""}}},{key:"mediaControl",get:function(){return this.core.mediaControl}},{key:"mediaControlContainer",get:function(){return this.mediaControl.container}},{key:"isLiveStreamWithDvr",get:function(){return this.mediaControlContainer&&this.mediaControlContainer.getPlaybackType()===_.default.LIVE&&this.mediaControlContainer.isDvrEnabled()}},{key:"durationShown",get:function(){return this.isLiveStreamWithDvr&&!this.useActualLiveTime}},{key:"useActualLiveTime",get:function(){return this.actualLiveTime&&this.isLiveStreamWithDvr}}]),e.prototype.bindEvents=function(){this.listenTo(this.mediaControl,v.default.MEDIACONTROL_RENDERED,this.render),this.listenTo(this.mediaControl,v.default.MEDIACONTROL_MOUSEMOVE_SEEKBAR,this.showTime),this.listenTo(this.mediaControl,v.default.MEDIACONTROL_MOUSELEAVE_SEEKBAR,this.hideTime),this.listenTo(this.mediaControl,v.default.MEDIACONTROL_CONTAINERCHANGED,this.onContainerChanged),this.mediaControlContainer&&(this.listenTo(this.mediaControlContainer,v.default.CONTAINER_PLAYBACKDVRSTATECHANGED,this.update),this.listenTo(this.mediaControlContainer,v.default.CONTAINER_TIMEUPDATE,this.updateDuration))},e.prototype.onContainerChanged=function(){this.stopListening(),this.bindEvents()},e.prototype.updateDuration=function(t){this.duration=t.total,this.update()},e.prototype.showTime=function(t){this.hoveringOverSeekBar=!0,this.calculateHoverPosition(t),this.update()},e.prototype.hideTime=function(){this.hoveringOverSeekBar=!1,this.update()},e.prototype.calculateHoverPosition=function(t){var e=t.pageX-this.mediaControl.$seekBarContainer.offset().left;this.hoverPosition=Math.min(1,Math.max(e/this.mediaControl.$seekBarContainer.width(),0))},e.prototype.getSeekTime=function(){var t=void 0,e=void 0;if(this.useActualLiveTime){var i=new Date((new Date).getTime()-this.actualLiveServerTimeDiff);e=(new Date(i)-i.setHours(0,0,0,0))/1e3,t=e-this.duration+this.hoverPosition*this.duration,t<0&&(t+=86400)}else t=this.hoverPosition*this.duration;return{seekTime:t,secondsSinceMidnight:e}},e.prototype.update=function(){if(this.rendered)if(this.shouldBeVisible()){var t=this.getSeekTime(),e=(0,h.formatTime)(t.seekTime,this.useActualLiveTime);if(e!==this.displayedSeekTime&&(this.$seekTimeEl.text(e),this.displayedSeekTime=e),this.durationShown){this.$durationEl.show();var i=(0,h.formatTime)(this.actualLiveTime?t.secondsSinceMidnight:this.duration,this.actualLiveTime);i!==this.displayedDuration&&(this.$durationEl.text(i),this.displayedDuration=i)}else this.$durationEl.hide();this.$el.show();var n=this.mediaControl.$seekBarContainer.width(),r=this.$el.width(),a=this.hoverPosition*n;a-=r/2,a=Math.max(0,Math.min(a,n-r)),this.$el.css("left",a)}else this.$el.hide(),this.$el.css("left","-100%")},e.prototype.shouldBeVisible=function(){return this.mediaControlContainer&&this.mediaControlContainer.settings.seekEnabled&&this.hoveringOverSeekBar&&null!==this.hoverPosition&&null!==this.duration},e.prototype.render=function(){this.rendered=!0,this.displayedDuration=null,this.displayedSeekTime=null,this.$el.html(this.template()),this.$el.hide(),this.mediaControl.$el.append(this.el),this.$seekTimeEl=this.$el.find("[data-seek-time]"),this.$durationEl=this.$el.find("[data-duration]"),this.$durationEl.hide(),this.update()},e}(p.default);e.default=A,t.exports=e.default},function(t,e){t.exports="\n\n"},function(t,e,i){var n=i(226);"string"==typeof n&&(n=[[t.i,n,""]]);var r={singleton:!0,hmr:!0};r.transform=void 0;i(10)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,i){e=t.exports=i(7)(void 0),e.push([t.i,'.seek-time[data-seek-time]{position:absolute;white-space:nowrap;height:20px;line-height:20px;font-size:0;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] [data-seek-time]{display:inline-block;color:#fff;font-size:10px;padding-left:7px;padding-right:7px;vertical-align:top}.seek-time[data-seek-time] [data-duration]{display:inline-block;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px;vertical-align:top}.seek-time[data-seek-time] [data-duration]:before{content:"|";margin-right:7px}',""])},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(3),s=n(o),l=i(1),u=n(l),c=i(2),d=n(c),h=i(30),f=n(h),p=i(4),g=n(p),y=function(t){function e(){return(0,a.default)(this,e),(0,u.default)(this,t.apply(this,arguments))}return(0,d.default)(e,t),e.prototype.bindEvents=function(){this.listenTo(this.core,g.default.CORE_CONTAINERS_CREATED,this.onContainersCreated)},e.prototype.onContainersCreated=function(){var t=this.core.containers.filter(function(t){return"no_op"!==t.playback.name})[0]||this.core.containers[0];t&&this.core.containers.forEach(function(e){e!==t&&e.destroy()})},(0,s.default)(e,[{key:"name",get:function(){return"sources"}}]),e}(f.default);e.default=y,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(0),a=n(r),o=i(3),s=n(o),l=i(1),u=n(l),c=i(2),d=n(c),h=i(4),f=n(h),p=i(30),g=n(p),y=i(5),m=function(t){function e(){return(0,a.default)(this,e),(0,u.default)(this,t.apply(this,arguments))}return(0,d.default)(e,t),e.prototype.bindEvents=function(){this.listenTo(this.core.mediaControl,f.default.MEDIACONTROL_CONTAINERCHANGED,this.containerChanged);var t=this.core.getCurrentContainer();t&&(this.listenTo(t,f.default.CONTAINER_ENDED,this.ended),this.listenTo(t,f.default.CONTAINER_STOP,this.ended))},e.prototype.containerChanged=function(){this.stopListening(),this.bindEvents()},e.prototype.ended=function(){(void 0===this.core.options.exitFullscreenOnEnd||this.core.options.exitFullscreenOnEnd)&&y.Fullscreen.isFullscreen()&&this.core.toggleFullscreen()},(0,s.default)(e,[{key:"name",get:function(){return"end_video"}}]),e}(g.default);e.default=m,t.exports=e.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=i(31),a=n(r),o=i(0),s=n(o),l=i(1),u=n(l),c=i(3),d=n(c),h=i(2),f=n(h),p=i(5),g=i(6),y=n(g),m=i(30),v=n(m),b=function(t){function e(i){(0,s.default)(this,e);var n=(0,u.default)(this,t.call(this,i));return n._initializeMessages(),n}return(0,f.default)(e,t),(0,d.default)(e,[{key:"name",get:function(){return"strings"}}]),e.prototype.t=function(t){var e=this._language();return(e&&this._messages[e]||this._messages.en)[t]||t},e.prototype._language=function(){return this.core.options.language||(0,p.getBrowserLanguage)()},e.prototype._initializeMessages=function(){var t={en:{live:"live",back_to_live:"back to live",disabled:"Disabled",playback_not_supported:"Your browser does not support the playback of this video. Please try using a different browser."},pt:{live:"ao vivo",back_to_live:"voltar para o ao vivo",disabled:"Desativado",playback_not_supported:"Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente."},es:{live:"vivo",back_to_live:"volver en vivo",disabled:"Discapacitado",playback_not_supported:"Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente."},ru:{live:"прямой эфир",back_to_live:"к прямому эфиру",disabled:"Отключено",playback_not_supported:"Ваш браузер не поддерживает воспроизведение этого видео. Пожалуйста, попробуйте другой браузер."},fr:{live:"en direct",disabled:"Désactivé",back_to_live:"retour au direct",playback_not_supported:"Votre navigateur ne supporte pas la lecture de cette vidéo. Merci de tenter sur un autre navigateur."},tr:{live:"canlı",back_to_live:"canlı yayına dön",disabled:"Engelli",playback_not_supported:"Tarayıcınız bu videoyu oynatma desteğine sahip değil. Lütfen farklı bir tarayıcı ile deneyin."},et:{live:"Otseülekanne",back_to_live:"Tagasi otseülekande juurde",disabled:"Keelatud",playback_not_supported:"Teie brauser ei toeta selle video taasesitust. Proovige kasutada muud brauserit."}},e=this.core.options.strings||{};this._messages=(0,a.default)(t).reduce(function(i,n){return i[n]=y.default.extend({},t[n],e[n]),i},{}),this._messages["pt-BR"]=this._messages.pt,this._messages["en-US"]=this._messages.en,this._messages["es-419"]=this._messages.es,this._messages["fr-FR"]=this._messages.fr,this._messages["tr-TR"]=this._messages.tr,this._messages["et-EE"]=this._messages.et},e}(v.default);e.default=b,t.exports=e.default}])}); \ No newline at end of file diff --git a/assets/clapprio/dash-shaka-playback.min.js b/assets/clapprio/dash-shaka-playback.min.js deleted file mode 100644 index 0cf777a..0000000 --- a/assets/clapprio/dash-shaka-playback.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("clappr")):"function"==typeof define&&define.amd?define(["clappr"],e):"object"==typeof exports?exports.DashShakaPlayback=e(require("clappr")):t.DashShakaPlayback=e(t.Clappr)}("undefined"!=typeof self?self:this,function(t){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="dist/",e(e.s=0)}([function(t,e,n){"use strict";function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:"";l.default.polyfill.installAll();var n=l.default.Player.isBrowserSupported(),i=t.split("?")[0].match(/.*\.(.*)$/)||[];return n&&("mpd"===i[1]||e.indexOf("application/dash+xml")>-1)}},{key:"Events",get:function(){return{SHAKA_READY:"shaka:ready"}}}]),u(e,[{key:"play",value:function(){if(this._player||this._setup(),!this.isReady)return void this.once(e.Events.SHAKA_READY,this.play);this._stopped=!1,this._src=this.el.src,s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"play",this).call(this),this._startUpdateTimers()}},{key:"pause",value:function(){s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"pause",this).call(this),this.dvrEnabled&&this._updateDvr(!0)}},{key:"_setupSrc",value:function(){}},{key:"_startUpdateTimers",value:function(){var t=this;this._timeUpdateTimer||(this._timeUpdateTimer=setInterval(function(){t._onDurationChange(),t._onTimeUpdate()},200))}},{key:"_stopUpdateTimers",value:function(){clearInterval(this._timeUpdateTimer),this._timeUpdateTimer=null,clearInterval(this._progressUpdateTimer),this._progressUpdateTimer=null}},{key:"_ready",value:function(){}},{key:"_onShakaReady",value:function(){this._isShakaReadyState=!0,this.trigger(e.Events.SHAKA_READY),this.trigger(c.Events.PLAYBACK_READY,this.name)}},{key:"error",value:function(t){c.Log.error("an error was raised by the video tag",t,this.el.error)}},{key:"isHighDefinitionInUse",value:function(){return!1}},{key:"stop",value:function(){var t=this;clearInterval(this.sendStatsId),this._stopUpdateTimers(),this._stopped=!0,this._player?(this._sendStats(),this._player.unload().then(function(){s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"stop",t).call(t),t._player=null,t._isShakaReadyState=!1}).catch(function(){c.Log.error("shaka could not be unloaded")})):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"stop",this).call(this)}},{key:"getPlaybackType",value:function(){return this._playbackType}},{key:"getCurrentTime",value:function(){return Math.max(0,this.el.currentTime-this._startTime)}},{key:"getDuration",value:function(){return this._duration}},{key:"isSeekEnabled",value:function(){return this._playbackType===c.Playback.VOD||this.dvrEnabled}},{key:"seekPercentage",value:function(t){var e=this._duration;t>0&&(e=this._duration*(t/100)),this.seek(e)}},{key:"seek",value:function(t){t<0&&(c.Log.warn("Attempt to seek to a negative time. Resetting to live point."),t=this.getDuration()),this.dvrEnabled&&this._updateDvr(t1&&void 0!==arguments[1]?arguments[1]:null;this._player.selectAudioLanguage(t,e)}},{key:"selectTrack",value:function(t){if("text"===t.type)this._player.selectTextTrack(t);else{if("variant"!==t.type)throw new Error("Unhandled track type:",t.type);this._player.selectVariantTrack(t),t.mimeType.startsWith("video/")&&this._onAdaptation()}}},{key:"_enableShakaTextTrack",value:function(t){this.el.textTracks&&(this._shakaTTVisible=t,Array.from(this.el.textTracks).filter(function(t){return"subtitles"===t.kind}).forEach(function(e){return e.mode=!0===t?"showing":"hidden"}))}},{key:"_checkForClosedCaptions",value:function(){if(!this._ccIsSetup){if(this.hasClosedCaptionsTracks){this.trigger(c.Events.PLAYBACK_SUBTITLE_AVAILABLE);var t=this.closedCaptionsTrackId;this.closedCaptionsTrackId=t}this._ccIsSetup=!0}}},{key:"destroy",value:function(){var t=this;this._stopUpdateTimers(),clearInterval(this.sendStatsId),this._player?this._player.destroy().then(function(){return t._destroy()}).catch(function(){t._destroy(),c.Log.error("shaka could not be destroyed")}):this._destroy(),s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}},{key:"_setup",value:function(){var t=this;this._isShakaReadyState=!1,this._ccIsSetup=!1,this._player=this._createPlayer(),this._options.shakaConfiguration&&this._player.configure(this._options.shakaConfiguration),this._options.shakaOnBeforeLoad&&this._options.shakaOnBeforeLoad(this._player),this._player.load(this._options.src).then(function(){return t._loaded()}).catch(function(e){return t._setupError(e)})}},{key:"_createPlayer",value:function(){var t=new l.default.Player(this.el);return t.addEventListener("error",this._onError.bind(this)),t.addEventListener("adaptation",this._onAdaptation.bind(this)),t.addEventListener("buffering",this._onBuffering.bind(this)),t}},{key:"_onBuffering",value:function(t){if(!this._stopped){var e=t.buffering?c.Events.PLAYBACK_BUFFERING:c.Events.PLAYBACK_BUFFERFULL;this.trigger(e)}}},{key:"_onProgress",value:function(){if(this.el.buffered.length){for(var t=[],e=0,n=0;n=t[n].start&&this.el.currentTime<=t[n].end&&(e=n);var r={start:t[e].start,current:t[e].end,total:this.getDuration()};this.trigger(c.Events.PLAYBACK_PROGRESS,r,t)}}},{key:"_onDurationChange",value:function(){var t=this.getDuration();this._lastDuration!==t&&(this._lastDuration=t,s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_onDurationChange",this).call(this))}},{key:"_updateSettings",value:function(){this._playbackType===c.Playback.VOD?this.settings.left=["playpause","position","duration"]:this.dvrEnabled?this.settings.left=["playpause"]:this.settings.left=["playstop"],this.settings.seekEnabled=this.isSeekEnabled(),this.trigger(c.Events.PLAYBACK_SETTINGSUPDATE)}},{key:"_onTimeUpdate",value:function(){var t={current:this.getCurrentTime(),total:this.getDuration(),firstFragDateTime:this._player.getPresentationStartTimeAsDate()};this._lastTimeUpdate&&t.current===this._lastTimeUpdate.current&&t.total===this._lastTimeUpdate.total||(this._lastTimeUpdate=t,this.trigger(c.Events.PLAYBACK_TIMEUPDATE,t,this.name))}},{key:"_updateDvr",value:function(t){this.trigger(c.Events.PLAYBACK_DVR,t),this.trigger(c.Events.PLAYBACK_STATS_ADD,{dvr:t})}},{key:"_loaded",value:function(){this._onShakaReady(),this._startToSendStats(),this._fillLevels(),this._checkForClosedCaptions()}},{key:"_fillLevels",value:function(){0===this._levels.length&&(this._levels=this.videoTracks.slice(0).reverse(),this.trigger(c.Events.PLAYBACK_LEVELS_AVAILABLE,this.levels))}},{key:"_startToSendStats",value:function(){var t=this,e=this._options.shakaSendStatsInterval||3e4;this.sendStatsId=setInterval(function(){return t._sendStats()},e)}},{key:"_sendStats",value:function(){this.trigger(c.Events.PLAYBACK_STATS_ADD,this._player.getStats())}},{key:"_setupError",value:function(t){this._onError(t)}},{key:"_onError",value:function(t){var n=this,i={shakaError:t,videoError:this.el.error},r=i.shakaError.detail||i.shakaError,a=r.category,o=r.code,u=r.severity;if(i.videoError||!o&&!a)return s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_onError",this).call(this);var h=u===l.default.util.Error.Severity.CRITICAL,f={code:a+"_"+o,description:"Category: "+a+", code: "+o+", severity: "+u,level:h?c.PlayerError.Levels.FATAL:c.PlayerError.Levels.WARN,raw:t},d=this.createError(f);c.Log.error("Shaka error event:",d),this.trigger(c.Events.PLAYBACK_ERROR,d),t.detail&&2==t.detail.severity&&1002==t.detail.code&&(console.log("retrying"),this.stop(),setTimeout(function(){return n.play()},1e3))}},{key:"_onAdaptation",value:function(){var t=this.videoTracks.filter(function(t){return!0===t.active})[0];this._fillLevels(),this._sendStats(),this._pendingAdaptationEvent_&&(this.trigger(c.Events.PLAYBACK_LEVEL_SWITCH_END),this._pendingAdaptationEvent=!1),c.Log.debug("an adaptation has happened:",t),this.trigger(c.Events.PLAYBACK_BITRATE,{bandwidth:t.bandwidth,language:t.language,width:t.width,height:t.height,level:t.id})}},{key:"_destroy",value:function(){this._isShakaReadyState=!1,c.Log.debug("shaka was destroyed")}},{key:"isReady",get:function(){return this._isShakaReadyState}},{key:"textTracks",get:function(){return this.isReady&&this._player.getTextTracks()}},{key:"audioLanguages",get:function(){return this.isReady&&this._player.getAudioLanguages()}},{key:"audioTracks",get:function(){return this.isReady&&this._player.getVariantTracks().filter(function(t){return t.mimeType.startsWith("audio/")})}},{key:"videoTracks",get:function(){return this.isReady&&this._player.getVariantTracks().filter(function(t){return t.mimeType.startsWith("video/")})}},{key:"dvrEnabled",get:function(){return this._player.isLive()&&this._duration>=this._minDvrSize}},{key:"_startTime",get:function(){return this._player.seekRange().start}},{key:"_duration",get:function(){if(!this._player)return 0;var t=this._player.seekRange(),e=t.start;return t.end-e}},{key:"_playbackType",get:function(){return(this.isReady&&this._player.isLive()?c.Playback.LIVE:c.Playback.VOD)||""}},{key:"closedCaptionsTracks",get:function(){var t=0,e=function(){return t++};return(this.textTracks||[]).filter(function(t){return"subtitle"===t.kind}).map(function(t){return{id:e(),name:t.label||t.language,track:t}})}},{key:"closedCaptionsTrackId",get:function(){return s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"closedCaptionsTrackId",this)},set:function(t){if(this._player){var e=this.closedCaptionsTracks,n=void 0;if(-1!==t){if(!(n=e.find(function(e){return e.id===t})))return void c.Log.warn('Track id "'+t+'" not found');if(this._shakaTTVisible&&!0===n.track.active)return void c.Log.info('Track id "'+t+'" already showing')}n?(this._player.selectTextTrack(n.track),this._enableShakaTextTrack(!0)):this._enableShakaTextTrack(!1),this._ccTrackId=t,this.trigger(c.Events.PLAYBACK_SUBTITLE_CHANGED,{id:t})}}}]),e}(c.HTML5Video);e.default=f,t.exports=e.default},function(e,n){e.exports=t},function(t,e,n){(function(t){!function(){var n="undefined"!=typeof window?window:t,i={};(function(t,e){function n(){n=function(){},Bu.Symbol||(Bu.Symbol=Fu)}function i(){n();var t=Bu.Symbol.iterator;t||(t=Bu.Symbol.iterator=Bu.Symbol("iterator")),"function"!=typeof Array.prototype[t]&&ju(Array.prototype,t,{configurable:!0,writable:!0,value:function(){return r(this)}}),i=function(){}}function r(t){var e=0;return a(function(){return ee)throw Error("Bad port number "+e);t.Qa=e}else t.Qa=null}function j(t,e,n){e instanceof K?t.a=e:(n||(e=F(e,Xu)),t.a=new K(e))}function B(t,e){return t?e?decodeURI(t):decodeURIComponent(t):""}function F(t,e,n){return"string"==typeof t?(t=encodeURI(t).replace(e,V),n&&(t=t.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),t):null}function V(t){return t=t.charCodeAt(0),"%"+(t>>4&15).toString(16)+(15&t).toString(16)}function K(t){this.b=t||null}function H(t){var e=new K;if(e.b=t.b,t.a){var n,i={};for(n in t.a)i[n]=t.a[n].concat();e.a=i,e.c=t.c}return e}function q(){var t,e,n=new Promise(function(n,i){t=n,e=i});return n.resolve=t,n.reject=e,n}function G(t,e){var n=Y();this.i=null==t.maxAttempts?n.maxAttempts:t.maxAttempts,this.f=null==t.baseDelay?n.baseDelay:t.baseDelay,this.h=null==t.fuzzFactor?n.fuzzFactor:t.fuzzFactor,this.g=null==t.backoffFactor?n.backoffFactor:t.backoffFactor,this.a=0,this.b=this.f,(this.c=e||!1)&&(this.a=1)}function X(e){if(e.a>=e.i){if(!e.c)return Promise.reject();e.a=1,e.b=e.f}var n=new q;return e.a?(t.setTimeout(n.resolve,e.b*(1+(2*Math.random()-1)*e.h)),e.b*=e.g):n.resolve(),e.a++,n}function Y(){return{maxAttempts:2,baseDelay:1e3,backoffFactor:2,fuzzFactor:.5,timeout:0}}function z(t,e,n,i){this.severity=t,this.category=e,this.code=n,this.data=Array.prototype.slice.call(arguments,3),this.handled=!1}function W(t,e){this.promise=t,this.b=e,this.a=!1}function $(t){return new W(Promise.reject(t),function(){return Promise.resolve()})}function J(){var t=Promise.reject(new z(2,7,7001));return t.catch(function(){}),new W(t,function(){return Promise.resolve()})}function Q(t){return new W(Promise.resolve(t),function(){return Promise.resolve()})}function Z(t){return new W(t,function(){return t.catch(function(){})})}function tt(t){return new W(Promise.all(t.map(function(t){return t.promise})),function(){return Promise.all(t.map(function(t){return t.abort()}))})}function et(t,e,n){try{var i=t(e);return i&&i.promise&&i.abort?(n.resolve(i.promise),function(){return i.abort()}):(n.resolve(i),function(){return Promise.resolve(i).then(function(){}).catch(function(){})})}catch(t){return n.reject(t),function(){return Promise.resolve()}}}function nt(t,e){return!("number"!=typeof t||"number"!=typeof e||!isNaN(t)||!isNaN(e))||t===e}function it(t,e){e||(e=nt);for(var n=[],i=o(t),r=i.next();!r.done;r=i.next())r=r.value,-1==rt(n,r,e)&&n.push(r);return n}function rt(t,e,n){for(var i=0;i=i.priority)&&(zu[t]={priority:n,me:e})}function pt(t,e){return{uris:t,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:e}}function mt(t){return t.then=function(e,n){return C("The network request interface has changed! Please update your application to the new interface, which allows operations to be aborted. Support for the old API will be removed in v2.5."),t.promise.then(e,n)},t.catch=function(e){return C("The network request interface has changed! Please update your application to the new interface, which allows operations to be aborted. Support for the old API will be removed in v2.5."),t.promise.catch(e)},t}function vt(t,e,n){var i=Q(void 0);return t.a.forEach(function(t){i=i.X(function(){return t(e,n)})}),i.X(void 0,function(t){if(t&&7001==t.code)throw t;throw new z(2,1,1006,t)})}function yt(t,e,n,i,r,a){var o=new L(n.uris[r]),s=o.ia;s||(s=location.protocol,s=s.slice(0,-1),O(o,s),n.uris[r]=o.toString());var u=(s=zu[s])?s.me:null;if(!u)return $(new z(2,1,1e3,o));var c;return Z(X(i)).X(function(){if(t.c)return J();c=Date.now();var i=u(n.uris[r],n,e);return void 0==i.promise&&(C("The scheme plugin interface has changed! Please update your scheme plugins to the new interface to add support for abort(). Support for the old plugin interface will be removed in v2.5."),i=Z(i)),i}).X(function(t){return void 0==t.timeMs&&(t.timeMs=Date.now()-c),t},function(o){if(o&&7001==o.code)throw o;if(t.c)return J();if(o&&1==o.severity)return r=(r+1)%n.uris.length,yt(t,e,n,i,r,o);throw o||a})}function gt(t,e,n){var i=Q(void 0);return t.b.forEach(function(t){i=i.X(function(){return t(e,n)})}),i.X(function(){return n},function(t){if(t&&7001==t.code)throw t;var e=2;throw t instanceof z&&(e=t.severity),new z(e,1,1007,t)})}function bt(){this.a={}}function wt(){this.a=new bt}function Tt(t,e,n,i){t.a&&(e=new kt(e,n,i),t.a.push(n,e))}function Et(t,e,n,i){Tt(t,e,n,function(t){this.pa(e,n),i(t)}.bind(t))}function St(t){if(t.a){var e,n=t.a,i=[];for(e in n.a)i.push.apply(i,n.a[e]);for(n=0;n=t[e]}.bind(null,e);if(0==e[0]&&0==e[2])return Lt(t,!1);if(0==e[1]&&0==e[3])return Lt(t,!0);if(n(0)&&n(1)&&n(2)&&n(3))return Mt(t);throw new z(2,2,2003)}function Ut(t){t=encodeURIComponent(t),t=unescape(t);for(var e=new Uint8Array(t.length),n=0;nt.end(0)-t.start(0)?null:t.length?t.end(t.length-1):null}function pe(t,e,n){return n=void 0===n?0:n,!(!t||!t.length||1==t.length&&1e-6>t.end(0)-t.start(0)||e>t.end(t.length-1))&&e+n>=t.start(0)}function me(t,e){if(!t||!t.length||1==t.length&&1e-6>t.end(0)-t.start(0))return 0;for(var n=0,i=t.length-1;0<=i&&t.end(i)>e;--i)n+=t.end(i)-Math.max(t.start(i),e);return n}function ve(t){if(!t)return[];for(var e=[],n=0;n>4).toString(16),r+=(15&o).toString(16),n=n.replace(i[0],r)}return n}function Ee(t,e){t.f=!0,t.b=new q,t.g=[],t.c=[];var n=new Uint8Array(e);return t.a.push(n),t.a.flush(),t.f&&t.b.reject(new z(2,3,3018)),t.b}function Se(t){this.f=null,this.c=t,this.h=this.i=0,this.g=1/0,this.b=this.a=null}function ke(t,e,n,i){return Promise.resolve().then(function(){if(this.f&&this.c)if(null==n||null==i)this.f.parseInit(new Uint8Array(e));else{var t={periodStart:this.i,segmentStart:n,segmentEnd:i};t=this.f.parseMedia(new Uint8Array(e),t).filter(function(t){return t.startTime>=this.h&&t.startTimen.end(0)-n.start(0)?null:1==n.length&&0>n.start(0)?0:n.length?n.start(0):null;return n}function Pe(t,e){return"text"==e?t.a.b:de(Ne(t,e))}function Re(t,e,n){return"text"==e?(t=t.a,null==t.b||t.b=vc&&n==e.split("-")[0]||t>=yc&&n.split("-")[0]==e.split("-")[0]}function Be(t){t=t.toLowerCase().split("-");var e=gc[t[0]];return e&&(t[0]=e),t.join("-")}function Fe(t,e,n){var i=t.video;return!(i&&(i.widthe.maxWidth||i.width>n.width||i.heighte.maxHeight||i.height>n.height||i.width*i.heighte.maxPixels)||t.bandwidthe.maxBandwidth)}function Ve(t,e,n){var i=!1;return t.variants.forEach(function(t){var r=t.allowedByApplication;t.allowedByApplication=Fe(t,e,n),r!=t.allowedByApplication&&(i=!0)}),i}function Ke(t,e,n,i){i.variants=i.variants.filter(function(i){return!(t&&t.L&&!le(t,i))&&(He(i.audio,t,e)&&He(i.video,t,n))}),i.textStreams=i.textStreams.filter(function(t){return!!mc[Ct(t.mimeType,t.codecs)]})}function He(t,e,n){if(!t)return!0;var i=null;e&&e.L&&(i=e.u),e=Ct(t.mimeType,t.codecs);var r,a=Ct(t.mimeType,t.codecs),o=t.mimeType;for(r in Ju){var s=t[r],u=Ju[r];s&&(o+="; "+u+'="'+s+'"')}return!(!(mc[a]||MediaSource.isTypeSupported(o)||we(a,t.type))||i&&t.encrypted&&0>i.indexOf(e)||n&&(t.mimeType!=n.mimeType||t.codecs.split(".")[0]!=n.codecs.split(".")[0]))}function qe(t){var e=t.audio,n=t.video,i=e?e.codecs:null,r=n?n.codecs:null,a=[];r&&a.push(r),i&&a.push(i);var o=[];n&&o.push(n.mimeType),e&&o.push(e.mimeType),o=o[0]||null;var s=[];e&&s.push(e.kind),n&&s.push(n.kind),s=s[0]||null;var u=[];return e&&u.push.apply(u,e.roles),n&&u.push.apply(u,n.roles),u=it(u),t={id:t.id,active:!1,type:"variant",bandwidth:t.bandwidth,language:t.language,label:null,kind:s,width:null,height:null,frameRate:null,mimeType:o,codecs:a.join(", "),audioCodec:i,videoCodec:r,primary:t.primary,roles:u,videoId:null,audioId:null,channelsCount:null,audioBandwidth:null,videoBandwidth:null},n&&(t.videoId=n.id,t.width=n.width||null,t.height=n.height||null,t.frameRate=n.frameRate||null,t.videoBandwidth=n.bandwidth||null),e&&(t.audioId=e.id,t.channelsCount=e.channelsCount,t.audioBandwidth=e.bandwidth||null,t.label=e.label),t}function Ge(t){return{id:t.id,active:!1,type:"text",bandwidth:0,language:t.language,label:t.label,kind:t.kind||null,width:null,height:null,frameRate:null,mimeType:t.mimeType,codecs:t.codecs||null,audioCodec:null,videoCodec:null,primary:t.primary,roles:t.roles,videoId:null,audioId:null,channelsCount:null,audioBandwidth:null,videoBandwidth:null}}function Xe(t){var e=[],n=Je(t.variants);return t=t.textStreams,n.forEach(function(t){e.push(qe(t))}),t.forEach(function(t){e.push(Ge(t))}),e}function Ye(t,e,n){return Je(t.variants).map(function(t){var i=qe(t);return t.video&&t.audio?i.active=n==t.video.id&&e==t.audio.id:t.video?i.active=n==t.video.id:t.audio&&(i.active=e==t.audio.id),i})}function ze(t,e){return t.textStreams.map(function(t){var n=Ge(t);return n.active=e==t.id,n})}function We(t,e){for(var n=0;n=t.periods[n].startTime)return n;return 0}function un(t,e){for(var n=0;ne?"-Infinity":"Infinity":e;return i}})}function fn(t){return JSON.parse(t,function(t,e){return"NaN"==e?NaN:"-Infinity"==e?-1/0:"Infinity"==e?1/0:e&&"object"==typeof e&&"TimeRanges"==e.__type__?dn(e):e})}function dn(t){return{length:t.length,start:function(e){return t.start[e]},end:function(e){return t.end[e]}}}function pn(t,e,n,i,r,a){this.I=t,this.g=e,this.L=n,this.j=!1,this.A=i,this.G=r,this.s=a,this.b=this.h=!1,this.u="",this.i=null,this.l=this.Cc.bind(this),this.m=this.Pd.bind(this),this.a={video:{},player:{}},this.o=0,this.c={},this.f=null}function mn(t){var e=Nc;e.removeUpdateListener(t.l),e.removeMessageListener("urn:x-cast:com.google.shaka.v2",t.m)}function vn(t){for(var e in t.c){var n=t.c[e];delete t.c[e],n.reject(new z(1,7,7e3))}}function yn(t){t=ln(t),Nc.sendMessage("urn:x-cast:com.google.shaka.v2",t,function(){},M)}function gn(){this.Bb=new bt,this.jb=this}function bn(t,e,n){gn.call(this),this.c=t,this.b=e,this.i=this.g=this.f=this.j=this.h=null,this.a=new pn(n,this.Le.bind(this),this.Me.bind(this),this.Ne.bind(this),this.Oe.bind(this),this.tc.bind(this)),wn(this)}function wn(t){t.a.init(),t.i=new wt,bc.forEach(function(t){Tt(this.i,this.c,t,this.$e.bind(this))}.bind(t)),Sc.forEach(function(t){Tt(this.i,this.b,t,this.le.bind(this))}.bind(t)),t.h={};for(var e in t.c)Object.defineProperty(t.h,e,{configurable:!1,enumerable:!0,get:t.Ze.bind(t,e),set:t.af.bind(t,e)});t.j={};for(var n in t.b)Object.defineProperty(t.j,n,{configurable:!1,enumerable:!0,get:t.ke.bind(t,n)});t.f=new gn,t.f.jb=t.h,t.g=new gn,t.g.jb=t.j}function Tn(t,e,n,i){gn.call(this),this.a=t,this.b=e,this.c=new wt,this.s={video:t,player:e},this.u=n||function(){},this.A=i||function(t){return t},this.o=!1,this.h=!0,this.g=0,this.m=!1,this.j=!0,this.l=this.i=this.f=null,En(this)}function En(e){var n=cast.receiver.CastReceiverManager.getInstance();n.onSenderConnected=e.Hc.bind(e),n.onSenderDisconnected=e.Hc.bind(e),n.onSystemVolumeChanged=e.ld.bind(e),e.i=n.getCastMessageBus("urn:x-cast:com.google.cast.media"),e.i.onMessage=e.Kd.bind(e),e.f=n.getCastMessageBus("urn:x-cast:com.google.shaka.v2"),e.f.onMessage=e.Zd.bind(e),n.start(),bc.forEach(function(t){Tt(this.c,this.a,t,this.Kc.bind(this,"video"))}.bind(e)),Sc.forEach(function(t){Tt(this.c,this.b,t,this.Kc.bind(this,"player"))}.bind(e)),cast.__platform__&&cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=3840; height=2160')?e.b.cc(3840,2160):e.b.cc(1920,1080),Tt(e.c,e.a,"loadeddata",function(){this.m=!0}.bind(e)),Tt(e.c,e.b,"loading",function(){this.h=!1,Sn(this)}.bind(e)),Tt(e.c,e.a,"playing",function(){this.h=!1,Sn(this)}.bind(e)),Tt(e.c,e.a,"pause",function(){Sn(this)}.bind(e)),Tt(e.c,e.b,"unloading",function(){this.h=!0,Sn(this)}.bind(e)),Tt(e.c,e.a,"ended",function(){t.setTimeout(function(){this.a&&this.a.ended&&(this.h=!0,Sn(this))}.bind(this),5e3)}.bind(e))}function Sn(t){Promise.resolve().then(function(){this.b&&(this.dispatchEvent(new At("caststatuschanged")),An(this)||xn(this,0))}.bind(t))}function kn(t,e,n){for(var i in e.player)t.b[i](e.player[i]);t.u(n),n=Promise.resolve();var r=t.a.autoplay;e.manifest&&(t.a.autoplay=!1,n=t.b.load(e.manifest,e.startTime)),n.then(function(){if(t.b){for(var n in e.video)t.a[n]=e.video[n];for(var i in e.playerAfterLoad)t.b[i](e.playerAfterLoad[i]);t.a.autoplay=r,e.manifest&&(t.a.play(),xn(t,0))}},function(e){t.b.dispatchEvent(new At("error",{detail:e}))})}function An(t){return!(!t.j||!t.a.duration&&!t.b.P())&&(_n(t),t.j=!1,!0)}function _n(t){xn(t,0,{contentId:t.b.Ib(),streamType:t.b.P()?"LIVE":"BUFFERED",duration:t.a.duration,contentType:""})}function In(t,e,n,i){t.o&&(t=ln(e),i?n.getCastChannel(i).send(t):n.broadcast(t))}function xn(t,e,n){var i=t.a.playbackRate,r=Dc;r=t.h?r.IDLE:t.b.xc()?r.Yc:t.a.paused?r.$c:r.ad,i={mediaSessionId:0,playbackRate:i,playerState:r,currentTime:t.a.currentTime,supportedMediaCommands:15,volume:{level:t.a.volume,muted:t.a.muted}},n&&(i.media=n),In(t,{requestId:e,type:"MEDIA_STATUS",status:[i]},t.i)}function Pn(t,e){var n=Rn(t,e);return 1!=n.length?null:n[0]}function Rn(t,e){return Array.prototype.filter.call(t.childNodes,function(t){return t instanceof Element&&t.tagName==e})}function Nn(t){return Array.prototype.filter.call(t.childNodes,function(t){return t instanceof Element&&"pssh"==t.localName&&"urn:mpeg:cenc:2013"==t.namespaceURI})}function Dn(t,e,n){return t.hasAttributeNS(e,n)?t.getAttributeNS(e,n):null}function Cn(t){return Array.prototype.every.call(t.childNodes,function(t){return t.nodeType==Node.TEXT_NODE||t.nodeType==Node.CDATA_SECTION_NODE})?t.textContent.trim():null}function Mn(t,e,n,i){var r=null;return t=t.getAttribute(e),null!=t&&(r=n(t)),null==r?void 0!=i?i:null:r}function Ln(t){return t?(/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(t)&&(t+="Z"),t=Date.parse(t),isNaN(t)?null:Math.floor(t/1e3)):null}function On(t){return t&&(t=/^P(?:([0-9]*)Y)?(?:([0-9]*)M)?(?:([0-9]*)D)?(?:T(?:([0-9]*)H)?(?:([0-9]*)M)?(?:([0-9.]*)S)?)?$/.exec(t))?(t=31536e3*Number(t[1]||null)+2592e3*Number(t[2]||null)+86400*Number(t[3]||null)+3600*Number(t[4]||null)+60*Number(t[5]||null)+Number(t[6]||null),isFinite(t)?t:null):null}function Un(t){var e=/([0-9]+)-([0-9]+)/.exec(t);return e?(t=Number(e[1]),isFinite(t)?(e=Number(e[2]),isFinite(e)?{start:t,end:e}:null):null):null}function jn(t){return t=Number(t),0==t%1?t:null}function Bn(t){return t=Number(t),0==t%1&&0(f=f||0))if(l+1=f)break;f=Math.ceil((f-d)/p)-1}else{if(1/0==u)break;if(d/r>=u)break;f=Math.ceil((u*r-d)/p)-1}0>24&255,t>>16&255,t>>8&255,255&t)}function ci(t,e,n,i){var r,a=(new ii).Z("sidx",function(t){r=hi(e,i,n,t)});if(t&&a.parse(t),r)return r;throw new z(2,3,3004)}function hi(t,e,n,i){var r=[];i.reader.F(4);var a=i.reader.B();if(0==a)throw new z(2,3,3005);if(0==i.version)var o=i.reader.B(),s=i.reader.B();else o=i.reader.Ra(),s=i.reader.Ra();i.reader.F(2);var u=i.reader.bb();for(t=t+i.size+s,s=0;s>>31;c&=2147483647;var l=i.reader.B();if(i.reader.F(4),1==h)throw new z(2,3,3006);r.push(new ti(r.length,o/a-e,(o+l)/a-e,function(){return n},t,t+c-1)),o+=l,t+=c}return i.parser.stop(),r}function li(t){this.a=t}function fi(t,e){for(;t.a.length&&t.a[t.a.length-1].startTime>=e;)t.a.pop();for(;t.a.length&&0>=t.a[0].endTime;)t.a.shift();if(0!=t.a.length){var n=t.a[t.a.length-1];t.a[t.a.length-1]=new ti(n.position,n.startTime,e,n.c,n.b,n.a)}}function di(t){this.b=t,this.a=new ei(t,0),Lc||(Lc=[new Uint8Array([255]),new Uint8Array([127,255]),new Uint8Array([63,255,255]),new Uint8Array([31,255,255,255]),new Uint8Array([15,255,255,255,255]),new Uint8Array([7,255,255,255,255,255]),new Uint8Array([3,255,255,255,255,255,255]),new Uint8Array([1,255,255,255,255,255,255,255])])}function pi(t){var e=mi(t);if(7=e&&!(n&1<<8-e);e++);if(8t||n&&t>=n?null:Math.floor(t/i)},getSegmentReference:function(t){var e=t*i,h=e+i;return n&&(h=Math.min(h,n)),0>h||n&&e>=n?null:new ti(t,e,h,function(){var n=Xn(o,u,t+r,s,e*a);return Nt(c,[n])},0,null)}}}function Di(t,e){for(var n=[],i=0;ie.m||(e.g=t.setTimeout(e.Pe.bind(e),1e3*Math.max(3,e.m-n,N(e.o))))}function Xi(t,e,n){e=e||{contentType:"",mimeType:"",codecs:"",containsEmsgBoxes:!1,frameRate:void 0,Sb:null},n=n||e.ea;var i=Rn(t,"BaseURL").map(Cn),r=t.getAttribute("contentType")||e.contentType,a=t.getAttribute("mimeType")||e.mimeType,o=t.getAttribute("codecs")||e.codecs,s=Mn(t,"frameRate",Vn)||e.frameRate,u=!!Rn(t,"InbandEventStream").length,c=Rn(t,"AudioChannelConfiguration");return c=Yi(c)||e.Sb,r||(r=Ji(a,o)),{ea:Nt(n,i),cb:Pn(t,"SegmentBase")||e.cb,ta:Pn(t,"SegmentList")||e.ta,fb:Pn(t,"SegmentTemplate")||e.fb,width:Mn(t,"width",Fn)||e.width,height:Mn(t,"height",Fn)||e.height,contentType:r,mimeType:a,codecs:o,frameRate:s,containsEmsgBoxes:u||e.containsEmsgBoxes,id:t.getAttribute("id"),Sb:c}}function Yi(t){for(var e=0;e>=1;return t}}}return null}function zi(t){var e=t.cb?1:0;return e+=t.ta?1:0,0==(e+=t.fb?1:0)?"text"==t.contentType||"application"==t.contentType:(1!=e&&(t.cb&&(t.ta=null),t.fb=null),!0)}function Wi(t,e,n,i){return e=Nt(e,[n]),e=pt(e,t.b.retryParameters),e.method=i,e=t.a.networkingEngine.request(0,e),lt(t.f,e),e.promise.then(function(t){if("HEAD"==i){if(!t.headers||!t.headers.date)return 0;t=t.headers.date}else t=Mt(t.data);return t=Date.parse(t),isNaN(t)?0:t-Date.now()})}function $i(t,e,n,i){n=n.map(function(t){return{scheme:t.getAttribute("schemeIdUri"),value:t.getAttribute("value")}});var r=t.b.dash.clockSyncUri;return i&&!n.length&&r&&n.push({scheme:"urn:mpeg:dash:utc:http-head:2014",value:r}),_t(n,function(t){var n=t.value;switch(t.scheme){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":return Wi(this,e,n,"HEAD");case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":return Wi(this,e,n,"GET");case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":return t=Date.parse(n),isNaN(t)?0:t-Date.now();case"urn:mpeg:dash:utc:http-ntp:2014":case"urn:mpeg:dash:utc:ntp:2014":case"urn:mpeg:dash:utc:sntp:2014":default:return Promise.reject()}}.bind(t)).catch(function(){return 0})}function Ji(t,e){return mc[Ct(t,e)]?"text":t.split("/")[0]}function Qi(t,e,n,i){this.uri=t,this.type=e,this.a=n,this.segments=i||null}function Zi(t,e,n,i){this.id=t,this.name=e,this.a=n,this.value=i||null}function tr(t,e){this.name=t,this.value=e}function er(t,e,n){return n=n||null,(t=t.getAttribute(e))?t.value:n}function nr(t,e){this.a=e,this.uri=t}function ir(t,e){return t.filter(function(t){return t.name==e})}function rr(t,e){var n=ir(t,e);return n.length?n[0]:null}function ar(t,e,n){return t.filter(function(t){var i=t.getAttribute("TYPE");return t=t.getAttribute("GROUP-ID"),i.value==e&&t.value==n})}function or(t,e){return Nt([t],[e])[0]}function sr(t){this.b=t,this.a=0}function ur(t){cr(t,/[ \t]+/gm)}function cr(t,e){e.lastIndex=t.a;var n=e.exec(t.b);return n=null==n?null:{position:n.index,length:n[0].length,we:n},t.a==t.b.length||null==n||n.position!=t.a?null:(t.a+=n.length,n.we)}function hr(t){return t.a==t.b.length?null:(t=cr(t,/[^ \t\n]*/gm))?t[0]:null}function lr(){this.a=0}function fr(t,e,n){e=Mt(e),e=e.replace(/\r\n|\r(?=[^\n]|$)/gm,"\n").trim();var i=e.split(/\n+/m);if(!/^#EXTM3U($|[ \t\n])/m.test(i[0]))throw new z(2,4,4015);e=0;for(var r=1;rn.Qb&&(n.stream.presentationTimeOffset=-e,n.eb.offset(e))}else{this.b.ka(r);for(var u in this.a)s=this.a[u],s.stream.presentationTimeOffset=e,s.eb.offset(-e),fi(s.eb,r)}this.o={presentationTimeline:this.b,periods:[t],offlineSessionIds:[],minBufferTime:0}}.bind(t))}function br(t,e){var n=e.a,i=ir(e.a,"EXT-X-MEDIA").filter(function(t){return"SUBTITLES"==Br(t,"TYPE")}.bind(t)).map(function(t){return kr(this,t)}.bind(t));return Promise.all(i).then(function(t){var i=ir(n,"EXT-X-STREAM-INF").map(function(t){return wr(this,t,e)}.bind(this));return Promise.all(i).then(function(e){return{startTime:0,variants:e.reduce(It,[]),textStreams:t}}.bind(this))}.bind(t))}function wr(t,e,n){var i=er(e,"CODECS","avc1.42E01E,mp4a.40.2").split(/\s*,\s*/),r=e.getAttribute("RESOLUTION"),a=null,o=null,s=er(e,"FRAME-RATE"),u=Number(Br(e,"BANDWIDTH"));if(r){var c=r.value.split("x");a=c[0],o=c[1]}n=ir(n.a,"EXT-X-MEDIA");var h=er(e,"AUDIO"),l=er(e,"VIDEO");if(h?n=ar(n,"AUDIO",h):l&&(n=ar(n,"VIDEO",l)),c=Ur("text",i)){var f=er(e,"SUBTITLES");f&&(f=ar(n,"SUBTITLES",f),f.length&&(t.u[f[0].id].stream.codecs=c)),i.splice(i.indexOf(c),1)}n=n.map(function(t){return Ar(this,t,i)}.bind(t));var d=[],p=[];return Promise.all(n).then(function(t){if(h?d=t:l&&(p=t),t=!1,d.length||p.length)if(d.length)if(Br(e,"URI")==d[0].$b){var n="audio";t=!0}else n="video";else n="audio";else 1==i.length?(n=Ur("video",i),n=r||s||n?"video":"audio"):(n="video",i=[i.join(",")]);return t?Promise.resolve():Ir(this,e,i,n)}.bind(t)).then(function(t){return t&&("audio"==t.stream.type?d=[t]:p=[t]),p&&Tr(p),d&&Tr(d),Er(this,d,p,u,a,o,s)}.bind(t))}function Tr(t){t.forEach(function(t){var e=t.stream.codecs.split(",");e=e.filter(function(t){return"mp4a.40.34"!=t}),t.stream.codecs=e.join(",")})}function Er(t,e,n,i,r,a,o){n.forEach(function(t){(t=t.stream)&&(t.width=Number(r)||void 0,t.height=Number(a)||void 0,t.frameRate=Number(o)||void 0)}.bind(t)),e.length||(e=[null]),n.length||(n=[null]);for(var s=[],u=0;u>4,0!=i&&2!=i||e(),3==i&&(i=t.ca(),t.F(i)),1==t.B()>>8)return t.F(3),n=t.ca()>>6,0!=n&&1!=n||e(),0==t.ca()&&e(),n=t.ca(),i=t.bb(),t=t.bb(),(1073741824*((14&n)>>1)+((65534&i)<<14|(65534&t)>>1))/9e4;t.seek(n+188),i=t.ca(),71!=i&&(t.seek(n+192),i=t.ca()),71!=i&&(t.seek(n+204),i=t.ca()),71!=i&&e(),t.Oc(1)}}function Ur(t,e){for(var n=Fc[t],i=0;ie?0:e,!t.g&&0>e&&(t.b=new Bt(function(){t.a.currentTime+=e/4}),Vt(t.b,.25))}function Wr(t,e,n){function i(){!t.a||10<=r++||t.a.currentTime!=e||(t.a.currentTime=n,setTimeout(i,100))}t.a.currentTime=n;var r=0;setTimeout(i,100)}function $r(t,e,n,i,r,a){this.c=t,this.b=e,this.h=n,this.j=r,this.f=null,this.g=new qr(t,e,n,a),e=this.Xd.bind(this),n=this.b.presentationTimeline,null==i?i=1/0>n.T()?n.Ja():n.ma():0>i&&(i=n.ma()+i),i=Qr(this,ta(this,i)),this.a=new Gr(t,e,i),this.f=new Bt(this.Ud.bind(this)),Vt(this.f,.25)}function Jr(t){var e=Xr(t.a);return 0=n?n-t.h.durationBackoff:e}function Zr(t,e){var n=pe.bind(null,t.c.buffered),i=Math.max(t.b.minBufferTime||0,t.h.rebufferingGoal),r=t.b.presentationTimeline,a=r.Ja(),o=r.ma(),s=r.T();3>o-a&&(a=o-3);var u=r.Wa(i),c=r.Wa(5);return i=r.Wa(i+5),e>=s?Qr(t,e):e>o?o:e=u||n(e)?e:i}function ta(t,e){var n=t.b.presentationTimeline.Ja();return en?n:e)}function ea(t,e,n,i,r,a,o){this.a=t,this.u=e,this.g=n,this.s=i,this.l=r,this.h=a,this.A=o,this.c=[],this.j=new wt,this.b=!1,this.i=-1,this.f=null,ia(this)}function na(t){var e=ut(t);return e.eventElement=t.eventElement,e}function ia(e){ra(e),e.f=t.setTimeout(e.G.bind(e),250)}function ra(e){e.f&&(t.clearTimeout(e.f),e.f=null)}function aa(t,e){this.a=e,this.b=t,this.g=null,this.j=1,this.m=Promise.resolve(),this.h=[],this.i={},this.c={},this.o=!1,this.A=null,this.u=this.f=this.l=!1,this.s=0}function oa(t){var e=Jr(t.a.Pa);return t.b.periods[sn(t.b,e)]}function sa(t){var e=t.c.video||t.c.audio;return e?t.b.periods[e.Ba]:null}function ua(t){return ha(t,"audio")}function ca(t){return ha(t,"video")}function ha(t,e){var n=t.c[e];return n?n.sa||n.stream:null}function la(t,e){Ce(t.a.J,"text"),t.s++,t.u=!1;var n=t.s;return t.a.J.init({text:e},!1).then(function(){return Ta(t,[e])}).then(function(){if(!t.f&&t.s==n&&!t.c.text&&!t.u){var i=Jr(t.a.Pa);t.c.text=ba(e,sn(t.b,i)),Oa(t,t.c.text,0)}})}function fa(t){t.u=!0,t.c.text&&(Ua(t.c.text),delete t.c.text)}function da(t,e){var n=t.c.video;if(n){var i=n.stream;if(i)if(e){var r=i.trickModeVideo;r&&!n.sa&&(ma(t,r,!1),n.sa=i)}else(i=n.sa)&&(n.sa=null,ma(t,i,!0))}}function pa(t,e,n){e.video&&ma(t,e.video,n),e.audio&&ma(t,e.audio,n)}function ma(t,e,n){var i=t.c[e.type];if(!i&&"text"==e.type&&t.g.ignoreTextStreamFailures)la(t,e);else if(i){var r=un(t.b,e);n&&r!=i.Ba?ya(t):(i.sa&&(e.trickModeVideo?(i.sa=e,e=e.trickModeVideo):i.sa=null),(r=t.h[r])&&r.Sa&&(r=t.i[e.id])&&r.Sa&&i.stream!=e&&("text"==e.type&&Ie(t.a.J,Ct(e.mimeType,e.codecs)),i.stream=e,i.wb=!0,n&&(i.ya?i.zb=!0:i.Ca?(i.va=!0,i.zb=!0):(Ua(i),La(t,i,!0)))))}}function va(t){var e=Jr(t.a.Pa),n=t.g.smallGapLimit;Object.keys(t.c).every(function(t){var i=this.a.J;return"text"==t?(t=i.a,t=e>=t.a&&ee?t.a.J.ka(e):t.a.J.ka(Math.pow(2,32)),Ta(t,o)}}).then(function(){if(!t.f)for(var e in a){var i=a[e];t.c[e]||(t.c[e]=ba(i,r,n),Oa(t,t.c[e],0))}})}function ba(t,e,n){return{stream:t,type:t.type,La:null,na:null,sa:null,wb:!0,Ba:e,endOfStream:!1,Ca:!1,ua:null,va:!1,zb:!1,ya:!1,Zb:!1,Ya:!1,Nc:n||0}}function wa(t,e){var n=t.h[e];if(n)return n.promise;n={promise:new q,Sa:!1},t.h[e]=n;var i=t.b.periods[e].variants.map(function(t){var e=[];return t.audio&&e.push(t.audio),t.video&&e.push(t.video),t.video&&t.video.trickModeVideo&&e.push(t.video.trickModeVideo),e}).reduce(It,[]).filter(Rt);return i.push.apply(i,t.b.periods[e].textStreams),t.m=t.m.then(function(){if(!this.f)return Ta(this,i)}.bind(t)).then(function(){this.f||(this.h[e].promise.resolve(),this.h[e].Sa=!0)}.bind(t)).catch(function(t){this.f||(this.h[e].promise.catch(function(){}),this.h[e].promise.reject(),delete this.h[e],this.a.onError(t))}.bind(t)),n.promise}function Ta(t,e){e.map(function(t){return t.id}).filter(Rt);for(var n=[],i=0;i=t.b.presentationTimeline.T())return e.endOfStream=!0,null;if(e.endOfStream=!1,e.Ba=a,a!=r)return null;if(o>=s)return.5;if(a=Pe(t.a.J,e.type),!(a=ka(t,e,n,a,r)))return 1;var u=1/0;return $u.values(t.c).forEach(function(e){u=Math.min(u,Sa(t,e,n))}),i>=u+t.b.presentationTimeline.a?1:(e.Nc=0,_a(t,e,n,r,a),null)}function Sa(t,e,n){return e.La&&e.na?t.b.periods[un(t.b,e.La)].startTime+e.na.endTime:Math.max(n,e.Nc)}function ka(t,e,n,i,r){if(e.na&&e.stream==e.La)return Aa(t,e,r,e.na.position+1);if(null==(n=e.na?e.stream.findSegmentPosition(Math.max(0,t.b.periods[un(t.b,e.La)].startTime+e.na.endTime-t.b.periods[r].startTime)):e.stream.findSegmentPosition(Math.max(0,(i||n)-t.b.periods[r].startTime))))return null;var a=null;return null==i&&(a=Aa(t,e,r,Math.max(0,n-1))),a||Aa(t,e,r,n)}function Aa(t,e,n,i){return n=t.b.periods[n],(e=e.stream.getSegmentReference(i))?(i=t.b.presentationTimeline,t=i.Xa(),i=i.Ka(),n.startTime+e.endTimei?null:e):null}function _a(t,e,n,i,r){var a=t.b.periods[i],o=e.stream,s=t.b.presentationTimeline.T(),u=t.b.periods[i+1];i=xa(t,e,i,Math.max(0,a.startTime-.1),u?u.startTime:s),e.Ca=!0,e.wb=!1,s=Ma(t,r),Promise.all([i,s]).then(function(t){if(!this.f&&!this.l)return Pa(this,e,n,a,o,r,t[1])}.bind(t)).then(function(){this.f||this.l||(e.Ca=!1,e.Zb=!1,e.va||this.a.ab(),Oa(this,e,0),Na(this,o))}.bind(t)).catch(function(t){this.f||this.l||(e.Ca=!1,"text"==e.type&&this.g.ignoreTextStreamFailures?delete this.c.text:3017==t.code?Ia(this,e,t):(e.Ya=!0,t.severity=2,ja(this,t)))}.bind(t))}function Ia(t,e,n){if(!$u.values(t.c).some(function(t){return t!=e&&t.Zb})){var i=Math.round(100*t.j);if(20=n?Promise.resolve():t.a.J.remove(e.type,r,r+n).then(function(){}.bind(t)))}function Na(t,e){if(!t.o&&(t.o=$u.values(t.c).every(function(t){return"text"==t.type||!t.va&&!t.ya&&t.na}),t.o)){var n=un(t.b,e);for(t.h[n]||wa(t,n).then(function(){this.f||this.a.zc()}.bind(t)).catch(xt),n=0;n=n&&202!=n)return r&&(i=r),{uri:i,data:e,headers:t,fromCache:!!t["x-shaka-from-cache"]};r=null;try{r=Ot(e)}catch(t){}throw new z(401==n||403==n?2:1,1,1001,i,n,r,t,a)}function Fa(t,e,n){var i=new Fa.b;$u.forEach(e.headers,function(t,e){i.append(t,e)});var r,a=new Fa.a,o={body:e.body||void 0,headers:i,method:e.method,signal:a.signal,credentials:e.allowCrossSiteCredentials?"include":void 0},s={mc:!1,Xc:!1};return e.retryParameters.timeout&&(r=setTimeout(function(){s.Xc=!0,a.abort()},e.retryParameters.timeout)),t=Fa.f(t,n,o,s,r),new W(t,function(){return s.mc=!0,a.abort(),Promise.resolve()})}function Va(t,e,n){var i=new Va.g;return new W(new Promise(function(r,a){i.open(e.method,t,!0),i.responseType="arraybuffer",i.timeout=e.retryParameters.timeout,i.withCredentials=e.allowCrossSiteCredentials,i.onabort=function(){a(new z(1,1,7001,t,n))},i.onload=function(e){e=e.target;var i=e.getAllResponseHeaders().trim().split("\r\n").reduce(function(t,e){var n=e.split(": ");return t[n[0].toLowerCase()]=n.slice(1).join(": "),t},{});try{var o=Ba(i,e.response,e.status,t,e.responseURL,n);r(o)}catch(t){a(t)}},i.onerror=function(e){a(new z(1,1,1002,t,e,n))},i.ontimeout=function(){a(new z(1,1,1003,t,n))};for(var o in e.headers)i.setRequestHeader(o.toLowerCase(),e.headers[o]);i.send(e.body)}),function(){return i.abort(),Promise.resolve()})}function Ka(t){this.a={},this.c=Promise.resolve(),this.h=!1,this.i=t,this.f=this.b=this.g=0}function Ha(t,e,n,i,r){t.a[e]=t.a[e]||[],t.a[e].push({request:n,pc:i,Id:r})}function qa(t,e){var n=$u.values(t.a);t.a={},n.forEach(function(e){e.forEach(function(e){t.b+=e.pc})});var i=Promise.resolve().then(function(){return Ya(t),Promise.all(n.map(function(n){return Ga(t,e,n)}))});return t.c=t.c.then(function(){return i}),i}function Ga(t,e,n){var i=Promise.resolve();return n.forEach(function(n){i=i.then(function(){return Ya(t),Xa(t,e,n)})}),i}function Xa(t,e,n){return Promise.resolve().then(function(){return Ya(t),e.request(1,n.request).promise}).then(function(e){return Ya(t),t.g+=n.pc,t.f+=e.data.byteLength,t.i(t.b?t.g/t.b:0,t.f),n.Id(e.data)})}function Ya(t){if(t.h)throw new z(2,9,7001)}function za(t,e){var n=this;this.c=t,this.b=t.objectStore(e),this.a=new q,t.onabort=function(t){t.preventDefault(),n.a.reject()},t.onerror=function(t){t.preventDefault(),n.a.reject()},t.oncomplete=function(){n.a.resolve()}}function Wa(t){this.b=t,this.a=[]}function $a(t,e){return Ja(t,e,"readwrite")}function Ja(t,e,n){n=t.b.transaction([e],n);var i=new za(n,e);return t.a.push(i),i.promise().then(function(){at(t.a,i)},function(){at(t.a,i)}),i}function Qa(){this.a={}}function Za(t){var e=null;if($u.forEach(t.a,function(t,n){$u.forEach(n.getCells(),function(n,i){i.hasFixedKeySpace()||e||(e={path:{fa:t,N:n},N:i})})}),e)return e;throw new z(2,9,9013,"Could not find a cell that supports add-operations")}function to(t,e){$u.forEach(t.a,function(t,n){$u.forEach(n.getCells(),function(n,i){e({fa:t,N:n},i)})})}function eo(t,e,n){if(!(t=t.a[e]))throw new z(2,9,9013,"Could not find mechanism with name "+e);if(!(e=t.getCells()[n]))throw new z(2,9,9013,"Could not find cell with name "+n);return e}function no(t){return c(function e(){var n,i,r,a;return A(e,function(e){switch(e.w){case 1:return n=$u,i=Object.values(t.a),r=0=t.endTime)return null;var e=new VTTCue(t.startTime,t.endTime,t.payload);e.lineAlign=t.lineAlign,e.positionAlign=t.positionAlign,e.size=t.size;try{e.align=t.textAlign}catch(t){}return"center"==t.textAlign&&"center"!=e.align&&(e.align="middle"),2==t.writingDirection?e.vertical="lr":3==t.writingDirection&&(e.vertical="rl"),1==t.lineInterpretation&&(e.snapToLines=!1),null!=t.line&&(e.line=t.line),null!=t.position&&(e.position=t.position),e}function Lo(t,e){var n=t.mode;t.mode="showing"==n?"showing":"hidden";for(var i=t.cues,r=i.length-1;0<=r;r--){var a=i[r];a&&e(a)&&t.removeCue(a)}t.mode=n}function Oo(e,n){var i=this;gn.call(this),this.wa=!1,this.f=null,this.pb=!1,this.u=null,this.o=new wt,this.Ab=this.h=this.Cb=this.b=this.m=this.a=this.A=this.g=this.j=this.i=this.s=null,this.bd=1e9,this.lb=[],this.ob=!1,this.xa=!0,this.S=this.qb=this.Ha=null,this.kc=!1,this.G=null,this.nb=[],this.I={},this.c=Wo(this),this.mb={width:1/0,height:1/0},this.l=$o(),this.kb=0,this.L=this.c.preferredAudioLanguage,this.ga=this.c.preferredTextLanguage,this.Ga=this.c.preferredVariantRole,this.Ua=this.c.preferredTextRole,this.Y=this.c.preferredAudioChannelCount,n&&n(this),this.s=new ft(this.Je.bind(this)),e&&this.rb(e,!0),Tt(this.o,t,"online",function(){i.ac()})}function Uo(t){if(!t.Ha)return Promise.resolve();var e=Promise.resolve();return t.m&&(e=t.m.stop(),t.m=null),Promise.all([e,t.Ha()])}function jo(t,e,n){return c(function i(){var r,a;return A(i,function(i){switch(i.w){case 1:return d(i,Li(e,t.s,t.c.manifest.retryParameters,n),2);case 2:return r=i.K,t.m=new r,t.m.configure(t.c.manifest),a={networkingEngine:t.s,filterNewPeriod:t.tb.bind(t),filterAllPeriods:t.ec.bind(t),onTimelineRegionAdded:t.ae.bind(t),onEvent:t.gb.bind(t),onError:t.Ta.bind(t)},i.return(t.m.start(e,a))}})})}function Bo(t){function e(t){return t.video&&t.audio||t.video&&t.video.codecs.includes(",")}if(t.b.periods.some(function(t){return t.variants.some(e)})&&t.b.periods.forEach(function(t){t.variants=t.variants.filter(e)}),0==t.b.periods.length)throw new z(2,4,4014)}function Fo(t){var e=t.b.presentationTimeline.T(),n=t.c.playRangeEnd,i=t.c.playRangeStart;0=t.height});return u.length&&(u.sort(function(t,e){return e.height-t.height}),o=u.filter(function(t){return t.height==u[0].height})),o.sort(function(t,e){return t.bandwidth-e.bandwidth}),o.length&&n.push(o[Math.floor(o.length/2)]),n.push.apply(n,e.filter(function(t){return"text"==t.type})),n}function ys(t){return{trackSelectionCallback:function(e){return vs(t.a.getConfiguration().preferredAudioLanguage,e)},progressCallback:function(t,e){if(t||e)return null},usePersistentLicense:!0}}function gs(t,e,n){n.forEach(function(n){return bs(t,e,n)})}function bs(t,e,n){var i=null;if(t.c){var r=t.c.filter(function(t){return"variant"==t.type})[0];r&&(i=We(n,r))}var a=r=null;i&&(i.audio&&(r=i.audio),i.video&&(a=i.video)),Ke(e,r,a,n),Ve(n,t.a.getConfiguration().restrictions,{width:1/0,height:1/0})}function ws(t){var e=t.periods.map(function(t){return t.variants}).reduce(It,[]).map(function(t){var e=[];return t.audio&&e.push(t.audio),t.video&&e.push(t.video),e}).reduce(It,[]).filter(Rt);return t=t.periods.map(function(t){return t.textStreams}).reduce(It,[]),e.push.apply(e,t),Promise.all(e.map(function(t){return t.createSegmentIndex()}))}function Ts(t,e,n,i,r,a,o){var s=new ss,u=r.periods.map(function(a){return Es(t,e,n,s,i,r,a)}),c=i.b,h=Qt(i);if(c&&t.b.usePersistentLicense){if(!h.length)throw new z(2,9,9007,a);c.initData=[]}return{originalManifestUri:a,duration:r.presentationTimeline.T(),size:0,expiration:i.vb(),periods:u,sessionIds:t.b.usePersistentLicense?h:[],drmInfo:c,appMetadata:o}}function Es(t,e,n,i,r,a,o){var s=Ye(o,null,null),u=ze(o,null);s=t.b.trackSelectionCallback(s.concat(u)),null==t.c&&(t.c=s,gs(t,r,a.periods)),Ps(s),a.periods.forEach(function(t){t.variants.forEach(function(t){var e=t.audio,n=t.video;if(e&&!n&&(i.a[e.id]=e.bandwidth||t.bandwidth),!e&&n&&(i.a[n.id]=n.bandwidth||t.bandwidth),e&&n){var r=e.bandwidth||393216,a=n.bandwidth||t.bandwidth-r;0>=a&&(a=t.bandwidth),i.a[e.id]=r,i.a[n.id]=a}}),t.textStreams.forEach(function(t){i.a[t.id]=52})});var c={};s.forEach(function(t){"variant"==t.type&&null!=t.audioId&&(c[t.audioId]=!0),"variant"==t.type&&null!=t.videoId&&(c[t.videoId]=!0),"text"==t.type&&(c[t.id]=!0)});var h={};return Rs(a).filter(function(t){return!!c[t.id]}).forEach(function(r){h[r.id]=Ss(t,e,n,i,a,r)}),s.forEach(function(t){"variant"==t.type&&null!=t.audioId&&h[t.audioId].variantIds.push(t.id),"variant"==t.type&&null!=t.videoId&&h[t.videoId].variantIds.push(t.id)}),{startTime:o.startTime,streams:$u.values(h)}}function Ss(t,e,n,i,r,a){var o={id:a.id,primary:a.primary,presentationTimeOffset:a.presentationTimeOffset||0,contentType:a.type,mimeType:a.mimeType,codecs:a.codecs,frameRate:a.frameRate,kind:a.kind,language:a.language,label:a.label,width:a.width||null,height:a.height||null,initSegmentKey:null,encrypted:a.encrypted,keyId:a.keyId,segments:[],variantIds:[]};r=r.presentationTimeline.Xa();var s=a.id;return ks(a,r,function(r){Ha(e,s,Is(t,r),us(i,a.id,r),function(e){return n.addSegments([{data:e}]).then(function(e){t.f.push(e[0]),o.segments.push({startTime:r.startTime,endTime:r.endTime,dataKey:e[0]})})})}),(r=a.initSegmentReference)&&Ha(e,s,Is(t,r),.5*cs(i,a.id),function(e){return n.addSegments([{data:e}]).then(function(e){t.f.push(e[0]),o.initSegmentKey=e[0]})}),o}function ks(t,e,n){e=t.findSegmentPosition(e);for(var i=null==e?null:t.getSegmentReference(e);i;)n(i),i=t.getSegmentReference(++e)}function As(t){if(!t.a)throw new z(2,9,7001)}function _s(){if(!io())throw new z(2,9,9e3)}function Is(t,e){var n=t.a.getConfiguration().streaming.retryParameters;return n=pt(e.c(),n),0==e.b&&null==e.a||(n.headers.Range="bytes="+e.b+"-"+(null==e.a?"":e.a)),n}function xs(t){var e=[];return t.periods.forEach(function(t){t.streams.forEach(function(t){null!=t.initSegmentKey&&e.push(t.initSegmentKey),t.segments.forEach(function(t){e.push(t.dataKey)})})}),e}function Ps(t){t.some(function(e){return t.some(function(t){return e!=t&&e.type==t.type&&e.kind==t.kind&&e.language==t.language})})}function Rs(t){var e={};return t.periods.forEach(function(t){t.textStreams.forEach(function(t){e[t.id]=t}),t.variants.forEach(function(t){t.audio&&(e[t.audio.id]=t.audio),t.video&&(e[t.video.id]=t.video)})}),$u.values(e)}function Ns(t,e){e=e||0;for(var n={priority:e,dd:t},i=0;i=n.a.length)){for(var i=[],r=0;rt.textDecoration.indexOf("underline")&&t.textDecoration.push("underline");break;case"noUnderline":0<=t.textDecoration.indexOf("underline")&&at(t.textDecoration,"underline");break;case"lineThrough":0>t.textDecoration.indexOf("lineThrough")&&t.textDecoration.push("lineThrough");break;case"noLineThrough":0<=t.textDecoration.indexOf("lineThrough")&&at(t.textDecoration,"lineThrough");break;case"overline":0>t.textDecoration.indexOf("overline")&&t.textDecoration.push("overline");break;case"noOverline":0<=t.textDecoration.indexOf("overline")&&at(t.textDecoration,"overline")}}function Eu(t,e,n,i){return(t=ku(t,n,i))?t:Su(e,n,i)}function Su(t,e,n){for(var i=yu(t),r=0;rn.length)return null;var i=null,r=t;for(t=null;r&&!(t=r.getAttribute(e))&&(r=r.parentNode)instanceof Element;);if(e=t)for(t=0;tr&&(r=Math.max(r+i,0));rthis.a?t:Math.min(N(this.b),N(this.c))},t.console&&t.console.log.bind&&(C=console.warn.bind(console));var Ku=/^(?:([^:\/?#.]+):)?(?:\/\/(?:([^\/?#]*)@)?([^\/#?]*?)(?::([0-9]+))?(?=[\/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/;Uu=L.prototype,Uu.ia="",Uu.Fa="",Uu.la="",Uu.Qa=null,Uu.aa="",Uu.za="",Uu.toString=function(){var t=[],e=this.ia;if(e&&t.push(F(e,Hu,!0),":"),e=this.la){t.push("//");var n=this.Fa;n&&t.push(F(n,Hu,!0),"@"),t.push(encodeURIComponent(e).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),e=this.Qa,null!=e&&t.push(":",String(e))}return(e=this.aa)&&(this.la&&"/"!=e.charAt(0)&&t.push("/"),t.push(F(e,"/"==e.charAt(0)?Gu:qu,!0))),(e=this.a.toString())&&t.push("?",e),(e=this.za)&&t.push("#",F(e,Yu)),t.join("")},Uu.resolve=function(t){var e=new L(this);"data"===e.ia&&(e=new L);var n=!!t.ia;n?O(e,t.ia):n=!!t.Fa,n?e.Fa=t.Fa:n=!!t.la,n?e.la=t.la:n=null!=t.Qa;var i=t.aa;if(n)U(e,t.Qa);else if(n=!!t.aa){if("/"!=i.charAt(0))if(this.la&&!this.aa)i="/"+i;else{var r=e.aa.lastIndexOf("/");-1!=r&&(i=e.aa.substr(0,r+1)+i)}if(".."==i||"."==i)i="";else if(-1!=i.indexOf("./")||-1!=i.indexOf("/.")){r=0==i.lastIndexOf("/",0),i=i.split("/");for(var a=[],o=0;oi||n&&1e3>i)&&!this.a[e].qa&&(this.a.splice(e,1),t.close().catch(function(){})),this.a.every(function(t){return t.loaded})&&(this.i.resolve(),Ft(this.G))}},Uu.oe=function(){function t(t,e){return"expired"==e}this.m={};for(var e in this.S)this.m[e]=this.S[e];!$u.empty(this.m)&&$u.every(this.m,t)&&this.h(new z(2,6,6014)),this.s.Ub(this.m)},Uu.Td=function(){for(var t=0;t=this.b||(t<=this.a&&e>=this.b?this.a=this.b=null:t<=this.a&&ethis.a&&e>=this.b&&(this.b=t))}.bind(this))},Se.prototype.lc=function(t){this.c.append(t)},Se.prototype.appendCues=Se.prototype.lc,Uu=Ae.prototype,Uu.destroy=function(){this.m=!0;var t,e=[];for(t in this.c){var n=this.c[t],i=n[0];for(this.c[t]=n.slice(0,1),i&&e.push(i.p.catch(xt)),i=1;ie&&(e+=.001),this.b[t].timestampOffset=e,this.Oa(t)},Uu.De=function(t,e,n){this.b[t].appendWindowStart=0,this.b[t].appendWindowEnd=n,this.b[t].appendWindowStart=e,this.Oa(t)},Uu.Qe=function(t){this.c[t][0].p.reject(new z(2,3,3014,this.f.error?this.f.error.code:0))},Uu.Oa=function(t){var e=this.c[t][0];e&&(e.p.resolve(),Ue(this,t))};var vc=1,yc=2,gc={aar:"aa",abk:"ab",afr:"af",aka:"ak",alb:"sq",amh:"am",ara:"ar",arg:"an",arm:"hy",asm:"as",ava:"av",ave:"ae",aym:"ay",aze:"az",bak:"ba",bam:"bm",baq:"eu",bel:"be",ben:"bn",bih:"bh",bis:"bi",bod:"bo",bos:"bs",bre:"br",bul:"bg",bur:"my",cat:"ca",ces:"cs",cha:"ch",che:"ce",chi:"zh",chu:"cu",chv:"cv",cor:"kw",cos:"co",cre:"cr",cym:"cy",cze:"cs",dan:"da",deu:"de",div:"dv",dut:"nl",dzo:"dz",ell:"el",eng:"en",epo:"eo",est:"et",eus:"eu",ewe:"ee",fao:"fo",fas:"fa",fij:"fj",fin:"fi",fra:"fr",fre:"fr",fry:"fy",ful:"ff",geo:"ka",ger:"de",gla:"gd",gle:"ga",glg:"gl",glv:"gv",gre:"el",grn:"gn",guj:"gu",hat:"ht",hau:"ha",heb:"he",her:"hz",hin:"hi",hmo:"ho",hrv:"hr",hun:"hu",hye:"hy",ibo:"ig",ice:"is",ido:"io",iii:"ii",iku:"iu",ile:"ie",ina:"ia",ind:"id",ipk:"ik",isl:"is",ita:"it",jav:"jv",jpn:"ja",kal:"kl",kan:"kn",kas:"ks",kat:"ka",kau:"kr",kaz:"kk",khm:"km",kik:"ki",kin:"rw",kir:"ky",kom:"kv",kon:"kg",kor:"ko",kua:"kj",kur:"ku",lao:"lo",lat:"la",lav:"lv",lim:"li",lin:"ln",lit:"lt",ltz:"lb",lub:"lu",lug:"lg",mac:"mk",mah:"mh",mal:"ml",mao:"mi",mar:"mr",may:"ms",mkd:"mk",mlg:"mg",mlt:"mt",mon:"mn",mri:"mi",msa:"ms",mya:"my",nau:"na",nav:"nv",nbl:"nr",nde:"nd",ndo:"ng",nep:"ne",nld:"nl",nno:"nn",nob:"nb",nor:"no",nya:"ny",oci:"oc",oji:"oj",ori:"or",orm:"om",oss:"os",pan:"pa",per:"fa",pli:"pi",pol:"pl",por:"pt",pus:"ps",que:"qu",roh:"rm",ron:"ro",rum:"ro",run:"rn",rus:"ru",sag:"sg",san:"sa",sin:"si",slk:"sk",slo:"sk",slv:"sl",sme:"se",smo:"sm",sna:"sn",snd:"sd",som:"so",sot:"st",spa:"es",sqi:"sq",srd:"sc",srp:"sr",ssw:"ss",sun:"su",swa:"sw",swe:"sv",tah:"ty",tam:"ta",tat:"tt",tel:"te",tgk:"tg",tgl:"tl",tha:"th",tib:"bo",tir:"ti",ton:"to",tsn:"tn",tso:"ts",tuk:"tk",tur:"tr",twi:"tw",uig:"ug",ukr:"uk",urd:"ur",uzb:"uz",ven:"ve",vie:"vi",vol:"vo",wel:"cy",wln:"wa",wol:"wo",xho:"xh",yid:"yi",yor:"yo",zha:"za",zho:"zh",zul:"zu"};I("shaka.abr.SimpleAbrManager",cn),cn.prototype.stop=function(){this.h=null,this.f=!1,this.c=[],this.g=null},cn.prototype.stop=cn.prototype.stop,cn.prototype.init=function(t){this.h=t},cn.prototype.init=cn.prototype.init,cn.prototype.chooseVariant=function(){var t=hn(this.a.restrictions,this.c),e=this.b.getBandwidthEstimate(this.a.defaultBandwidthEstimate);this.c.length&&!t.length&&(t=hn(null,this.c),t=[t[0]]);for(var n=t[0]||null,i=0;i=r.bandwidth/this.a.bandwidthDowngradeTarget&&e<=a&&(n=r)}return this.g=Date.now(),n},cn.prototype.chooseVariant=cn.prototype.chooseVariant,cn.prototype.enable=function(){this.f=!0},cn.prototype.enable=cn.prototype.enable,cn.prototype.disable=function(){this.f=!1},cn.prototype.disable=cn.prototype.disable,cn.prototype.segmentDownloaded=function(t,e){var n=this.b;if(!(16e3>e)){var i=8e3*e/t,r=t/1e3;n.a+=e,R(n.b,r,i),R(n.c,r,i)}if(null!=this.g&&this.f)t:{if(this.i){if(Date.now()-this.g<1e3*this.a.switchInterval)break t}else{if(!(128e3<=this.b.a))break t;this.i=!0}n=this.chooseVariant(),this.b.getBandwidthEstimate(this.a.defaultBandwidthEstimate),this.h(n)}},cn.prototype.segmentDownloaded=cn.prototype.segmentDownloaded,cn.prototype.getBandwidthEstimate=function(){return this.b.getBandwidthEstimate(this.a.defaultBandwidthEstimate)},cn.prototype.getBandwidthEstimate=cn.prototype.getBandwidthEstimate,cn.prototype.setVariants=function(t){this.c=t},cn.prototype.setVariants=cn.prototype.setVariants,cn.prototype.configure=function(t){this.a=t},cn.prototype.configure=cn.prototype.configure;var bc="ended play playing pause pausing ratechange seeked seeking timeupdate volumechange".split(" "),wc="buffered currentTime duration ended loop muted paused playbackRate seeking videoHeight videoWidth volume".split(" "),Tc=["loop","playbackRate"],Ec=["pause","play"],Sc="adaptation buffering emsg error loading streaming texttrackvisibility timelineregionadded timelineregionenter timelineregionexit trackschanged unloading".split(" "),kc={getAudioLanguages:2,getAudioLanguagesAndRoles:2,getBufferedInfo:2,getConfiguration:2,getExpiration:2,getManifestUri:2,getPlaybackRate:2,getTextLanguages:2,getTextLanguagesAndRoles:2,getTextTracks:2,getStats:5,usingEmbeddedTextTrack:2,getVariantTracks:2,isAudioOnly:10,isBuffering:1,isInProgress:1,isLive:10,isTextTrackVisible:1,keySystem:10,seekRange:1},Ac={getPlayheadTimeAsDate:1,getPresentationStartTimeAsDate:20},_c=[["getConfiguration","configure"]],Ic=[["isTextTrackVisible","setTextTrackVisibility"]],xc="addTextTrack cancelTrickPlay configure resetConfiguration retryStreaming selectAudioLanguage selectEmbeddedTextTrack selectTextLanguage selectTextTrack selectVariantTrack setTextTrackVisibility trickPlay".split(" "),Pc=["attach","detach","load","unload"],Rc=!1,Nc=null;Uu=pn.prototype,Uu.destroy=function(){return vn(this),Nc&&mn(this),this.G=this.A=this.g=null,this.b=this.h=!1,this.m=this.l=this.f=this.c=this.a=this.i=null,Promise.resolve()},Uu.$=function(){return this.b},Uu.Yb=function(){return this.u},Uu.init=function(){if(t.chrome&&chrome.cast&&chrome.cast.isAvailable){delete t.__onGCastApiAvailable,this.h=!0,this.g();var e=new chrome.cast.SessionRequest(this.I);e=new chrome.cast.ApiConfig(e,this.Dc.bind(this),this.Wd.bind(this),"origin_scoped"),chrome.cast.initialize(e,function(){},function(){}),Rc&&setTimeout(this.g.bind(this),20),(e=Nc)&&e.status!=chrome.cast.SessionStatus.STOPPED?this.Dc(e):Nc=null}else t.__onGCastApiAvailable=function(t){t&&this.init()}.bind(this)},Uu.bc=function(t){this.i=t,this.b&&yn({type:"appData",appData:this.i})},Uu.cast=function(t){return this.h?Rc?this.b?Promise.reject(new z(1,8,8002)):(this.f=new q,chrome.cast.requestSession(this.Vb.bind(this,t),this.Bc.bind(this)),this.f):Promise.reject(new z(1,8,8001)):Promise.reject(new z(1,8,8e3))},Uu.ub=function(){this.b&&(vn(this),Nc&&(mn(this),Nc.stop(function(){},function(){}),Nc=null))},Uu.get=function(t,e){if("video"==t){if(0<=Ec.indexOf(e))return this.Mc.bind(this,t,e)}else if("player"==t){if(Ac[e]&&!this.get("player","isLive")())return function(){};if(0<=xc.indexOf(e))return this.Mc.bind(this,t,e);if(0<=Pc.indexOf(e))return this.se.bind(this,t,e);if(kc[e])return this.Jc.bind(this,t,e)}return this.Jc(t,e)},Uu.set=function(t,e,n){this.a[t][e]=n,yn({type:"set",targetName:t,property:e,value:n})},Uu.Vb=function(t,e){Nc=e,e.addUpdateListener(this.l),e.addMessageListener("urn:x-cast:com.google.shaka.v2",this.m),this.Cc(),yn({type:"init",initState:t,appData:this.i}),this.f.resolve()},Uu.Bc=function(t){var e=8003;switch(t.code){case"cancel":e=8004;break;case"timeout":e=8005;break;case"receiver_unavailable":e=8006}this.f.reject(new z(2,8,e,t))},Uu.Jc=function(t,e){return this.a[t][e]},Uu.Mc=function(t,e){yn({type:"call",targetName:t,methodName:e,args:Array.prototype.slice.call(arguments,2)})},Uu.se=function(t,e){var n=Array.prototype.slice.call(arguments,2),i=new q,r=this.o.toString();return this.o++,this.c[r]=i,yn({type:"asyncCall",targetName:t,methodName:e,args:n,id:r}),i},Uu.Dc=function(t){var e=this.s();this.f=new q,this.j=!0,this.Vb(e,t)},Uu.Wd=function(t){Rc="available"==t,this.g()},Uu.Cc=function(){var t=!!Nc&&"connected"==Nc.status;if(this.b&&!t){this.G();for(var e in this.a)this.a[e]={};vn(this)}this.u=(this.b=t)?Nc.receiver.friendlyName:"",this.g()},Uu.Pd=function(t,e){var n=fn(e);switch(n.type){case"event":var i=n.event;this.A(n.targetName,new At(i.type,i));break;case"update":i=n.update;for(var r in i){n=this.a[r]||{};for(var a in i[r])n[a]=i[r][a]}this.j&&(this.L(),this.j=!1);break;case"asyncComplete":if(r=n.id,n=n.error,a=this.c[r],delete this.c[r],a)if(n){r=new z(n.severity,n.category,n.code);for(i in n)r[i]=n[i];a.reject(r)}else a.resolve()}},gn.prototype.addEventListener=function(t,e){this.Bb.push(t,e)},gn.prototype.removeEventListener=function(t,e){this.Bb.remove(t,e)},gn.prototype.dispatchEvent=function(t){for(var e=this.Bb.get(t.type)||[],n=0;nthis.D.byteLength&&ni();var e=new Uint8Array(this.D.buffer,this.D.byteOffset+this.a,t);return this.a+=t,new Uint8Array(e)},ei.prototype.readBytes=ei.prototype.Da,ei.prototype.F=function(t){this.a+t>this.D.byteLength&&ni(),this.a+=t},ei.prototype.skip=ei.prototype.F,ei.prototype.Oc=function(t){this.at||t>this.D.byteLength)&&ni(),this.a=t},ei.prototype.seek=ei.prototype.seek,ei.prototype.Xb=function(){for(var t=this.a;this.ha()&&0!=this.D.getUint8(this.a);)this.a+=1;return t=new Uint8Array(this.D.buffer,this.D.byteOffset+t,this.a-t),this.a+=1,Mt(t)},ei.prototype.readTerminatedString=ei.prototype.Xb,I("shaka.util.Mp4Parser",ii),ii.prototype.C=function(t,e){var n=si(t);return this.c[n]=0,this.b[n]=e,this},ii.prototype.box=ii.prototype.C,ii.prototype.Z=function(t,e){var n=si(t);return this.c[n]=1,this.b[n]=e,this},ii.prototype.fullBox=ii.prototype.Z,ii.prototype.stop=function(){this.a=!0},ii.prototype.stop=ii.prototype.stop,ii.prototype.parse=function(t,e){var n=new Uint8Array(t);for(n=new ei(new DataView(n.buffer,n.byteOffset,n.byteLength),0),this.a=!1;n.ha()&&!this.a;)this.xb(0,n,e)},ii.prototype.parse=ii.prototype.parse,ii.prototype.xb=function(t,e,n){var i=e.U(),r=e.B(),a=e.B();switch(r){case 0:r=e.D.byteLength-i;break;case 1:r=e.Ra()}var o=this.b[a];if(o){var s=null,u=null;1==this.c[a]&&(u=e.B(),s=u>>>24,u&=16777215),a=i+r,n&&a>e.D.byteLength&&(a=e.D.byteLength),a-=e.U(),e=0=n.startTime&&tt||t>=this.a.length?null:this.a[t])},li.prototype.get=li.prototype.get,li.prototype.offset=function(t){for(var e=0;ea.startTime?0==n&&e.push(a):(.1t)return void this.a.splice(0,e);this.a=[]},li.prototype.evict=li.prototype.Fb;var Lc;di.prototype.ha=function(){return this.a.ha()},gi.prototype.parse=function(t,e,n,i){var r;if(e=new di(new DataView(e)),440786851!=pi(e).id)throw new z(2,3,3008);var a=pi(e);if(408125543!=a.id)throw new z(2,3,3009);for(e=a.a.byteOffset,a=new di(a.a),r=null;a.ha();){var o=pi(a);if(357149030==o.id){r=o;break}}if(!r)throw new z(2,3,3010);for(a=new di(r.a),r=1e6,o=null;a.ha();){var s=pi(a);if(2807729==s.id)r=yi(s);else if(17545==s.id)if(o=s,4==o.a.byteLength)o=o.a.getFloat32(0);else{if(8!=o.a.byteLength)throw new z(2,3,3003);o=o.a.getFloat64(0)}}if(null==o)throw new z(2,3,3011);if(a=r/1e9,r=o*a,t=pi(new di(new DataView(t))),475249515!=t.id)throw new z(2,3,3007);return bi(t,e,a,r,n,i)};var Oc={},Uc={};I("shaka.media.ManifestParser.registerParserByExtension",function(t,e){Uc[t]=e}),I("shaka.media.ManifestParser.registerParserByMime",function(t,e){Oc[t]=e}),I("shaka.media.PresentationTimeline",Oi),Oi.prototype.T=function(){return this.b},Oi.prototype.getDuration=Oi.prototype.T,Oi.prototype.ka=function(t){this.b=t},Oi.prototype.setDuration=Oi.prototype.ka,Oi.prototype.vd=function(){return this.f},Oi.prototype.getPresentationStartTime=Oi.prototype.vd,Oi.prototype.Rc=function(t){this.j=t},Oi.prototype.setClockOffset=Oi.prototype.Rc,Oi.prototype.yb=function(t){this.i=t},Oi.prototype.setStatic=Oi.prototype.yb,Oi.prototype.dc=function(t){this.c=t},Oi.prototype.setSegmentAvailabilityDuration=Oi.prototype.dc,Oi.prototype.Sc=function(t){this.l=t},Oi.prototype.setDelay=Oi.prototype.Sc,Oi.prototype.Na=function(t,e){0!=t.length&&(e&&(this.h=Math.max(this.h,t[0].startTime)),this.a=t.reduce(function(t,e){return Math.max(t,e.endTime-e.startTime)},this.a))},Oi.prototype.notifySegments=Oi.prototype.Na,Oi.prototype.Rb=function(t){this.a=Math.max(this.a,t)},Oi.prototype.notifyMaxSegmentDuration=Oi.prototype.Rb,Oi.prototype.P=function(){return 1/0==this.b&&!this.i},Oi.prototype.isLive=Oi.prototype.P,Oi.prototype.Aa=function(){return 1/0!=this.b&&!this.i},Oi.prototype.isInProgress=Oi.prototype.Aa,Oi.prototype.Xa=function(){if(1/0==this.c)return this.g;var t=this.Ka()-this.c;return Math.max(this.g,t)},Oi.prototype.getSegmentAvailabilityStart=Oi.prototype.Xa,Oi.prototype.Tc=function(t){this.g=t},Oi.prototype.setUserSeekStart=Oi.prototype.Tc,Oi.prototype.Ka=function(){return this.P()||this.Aa()?Math.min(Math.max(0,(Date.now()+this.j)/1e3-this.a-this.f),this.b):this.b},Oi.prototype.getSegmentAvailabilityEnd=Oi.prototype.Ka,Oi.prototype.Wa=function(t){var e=Math.max(this.h,this.g);if(1/0==this.c)return e;var n=this.Ka()-this.c;return t=Math.min(n+t,this.ma()),Math.max(e,t)},Oi.prototype.getSafeSeekRangeStart=Oi.prototype.Wa,Oi.prototype.Ja=function(){return this.Wa(0)},Oi.prototype.getSeekRangeStart=Oi.prototype.Ja,Oi.prototype.ma=function(){var t=this.P()||this.Aa()?this.l:0;return Math.max(0,this.Ka()-t)},Oi.prototype.getSeekRangeEnd=Oi.prototype.ma,I("shaka.dash.DashParser",Ui),Uu=Ui.prototype,Uu.configure=function(t){this.b=t},Uu.start=function(t,e){return this.h=[t],this.a=e,ji(this).then(function(t){return this.a&&Gi(this,t),this.c}.bind(this))},Uu.stop=function(){return this.b=this.a=null,this.h=[],this.c=null,this.j=[],this.l={},null!=this.g&&(t.clearTimeout(this.g),this.g=null),this.f.destroy()},Uu.update=function(){ji(this).catch(function(t){this.a&&this.a.onError(t)}.bind(this))},Uu.onExpirationUpdated=function(){},Uu.ge=function(t,e){t.W=Xi(e,t.ba,null);var n=!1,i=Rn(e,"Role"),r=i.map(function(t){return t.getAttribute("value")}).filter(Pt),a=void 0,o="text"==t.W.contentType;o&&(a="subtitle");for(var s=0;sn.length||"data"!=n[0])throw new z(2,1,1004,e);if(n=n.slice(1).join(":").split(","),2>n.length)throw new z(2,1,1004,e);var i=n[0];n=t.decodeURIComponent(n.slice(1).join(",")),i=i.split(";");var r=null;if(1n.end(0)-n.start(0))){var i=.1;/(Edge\/|Trident\/|Tizen)/.test(navigator.userAgent)&&(i=.5);for(var r=0;re&&(0==r||n.end(r-1)-e<=i)){i=r;break t}}i=null}if(null==i){if(n=this.a.currentTime,e=this.a.buffered,!this.a.paused&&0=e.start(i)&&n=a)){a=r-e,t=a<=t;var o=!1;.001>a||(t||this.c||(this.c=!0,e=new At("largegap",{currentTime:e,gapSize:a}),e.cancelable=!0,this.u(e),this.o.jumpLargeGaps&&!e.defaultPrevented&&(o=!0)),!t&&!o)||(0!=i&&n.end(i-1),this.a.currentTime=r)}}}}},Uu=Gr.prototype,Uu.destroy=function(){var t=this.c.destroy();return this.c=null,null!=this.b&&(this.b.cancel(),this.b=null),this.i=this.a=null,t},Uu.Va=function(){return this.f},Uu.Vd=function(){var t=this.g||0>this.f?0:this.f;this.a.playbackRate&&this.a.playbackRate!=t&&zr(this,this.a.playbackRate)},Uu.Fc=function(){.001>Math.abs(this.a.currentTime-this.h)?this.Gc():(Et(this.c,this.a,"seeking",this.Gc.bind(this)),this.a.currentTime=0==this.a.currentTime?this.h:this.a.currentTime)},Uu.Gc=function(){var t=this;Tt(this.c,this.a,"seeking",function(){return t.i()})},Uu=$r.prototype,Uu.destroy=function(){var t=Promise.all([this.a.destroy(),this.g.destroy()]);return this.g=this.a=null,null!=this.f&&(this.f.cancel(),this.f=null),this.j=this.h=this.b=this.c=null,t},Uu.Va=function(){return this.a.Va()},Uu.ab=function(){this.g.ab()},Uu.Ud=function(){if(0!=this.c.readyState&&!this.c.paused){var t=this.c.currentTime,e=this.b.presentationTimeline,n=e.Ja();e=e.ma(),3>e-n&&(n=e-3),tthis.a.currentTime?1:e.info.endTime=i,n=this.u,n=!n.g||"ended"==n.g.readyState,e=e||this.a.ended||n,this.b?(n=Math.max(this.g.minBufferTime||0,this.s.rebufferingGoal),(e||t>=n)&&0!=this.b&&(this.b=!1,this.l(!1))):!e&&.5>t&&1!=this.b&&(this.b=!0,this.l(!0)),this.c.forEach(this.m.bind(this,!1))},Uu=aa.prototype,Uu.destroy=function(){for(var t in this.c)Ua(this.c[t]);return this.g=this.c=this.i=this.h=this.m=this.b=this.a=null,this.f=!0,Promise.resolve()},Uu.configure=function(t){this.g=t,this.A=new G({maxAttempts:Math.max(t.retryParameters.maxAttempts,2),baseDelay:t.retryParameters.baseDelay,backoffFactor:t.retryParameters.backoffFactor,fuzzFactor:t.retryParameters.fuzzFactor,timeout:0},!0)},Uu.init=function(){var t=Jr(this.a.Pa);return t=this.a.Ac(this.b.periods[sn(this.b,t)]),t.variant||t.text?ga(this,t).then(function(){!this.f&&this.a&&this.a.Ld&&this.a.Ld()}.bind(this)):Promise.reject(new z(2,5,5005))},Uu.Re=function(t){if(!this.f&&!t.Ca&&null!=t.ua&&!t.ya)if(t.ua=null,t.va)La(this,t,t.zb);else{try{var e=Ea(this,t);null!=e&&(Oa(this,t,e),t.Ya=!1)}catch(t){return void ja(this,t)}e=$u.values(this.c),Da(this,t),e.every(function(t){return t.endOfStream})&&this.a.J.endOfStream().then(function(){if(!this.f){var t=this.a.J.T();te,u&&c)return d(r,a.updateManifestExpiration(n.key(),e),0);r.V(0)}})})}).catch(function(){})},Oc["application/x-offline-manifest"]=No,I("shaka.offline.OfflineScheme",Do),Do.a=function(t){return t={uri:t,data:new ArrayBuffer(0),headers:{"content-type":"application/x-offline-manifest"}},Q(t)},Do.b=function(t,e){var n=new Qa;return Z(ct([n],function(){return c(function t(){var i,r,a;return A(t,function(t){switch(t.w){case 1:return d(t,n.init(),2);case 2:return d(t,eo(n,e.fa(),e.N()),3);case 3:return i=t.K,d(t,i.getSegments([e.key()]),4);case 4:return r=t.K,a=r[0],t.return({uri:e,data:a.data,headers:{}})}})})}))},dt("offline",Do),I("shaka.text.SimpleTextDisplayer",Co),Co.prototype.remove=function(t,e){return!!this.a&&(Lo(this.a,function(n){return!(n.startTime>=e||n.endTime<=t)}),!0)},Co.prototype.remove=Co.prototype.remove,Co.prototype.append=function(t){for(var e=Mo,n=[],i=0;i(a=n.indexOf(".",a)));)0!=a&&"\\"==n[a-1]||(o=n.substring(o,a).replace(/\\\./g,"."),r[o]={},r=r[o],o=a+1),a+=1;r[n.substring(o).replace(/\\\./g,".")]=e,t=i}return n=st(this.c,t,Wo(this),zo(),""),Ko(this),n},Oo.prototype.configure=Oo.prototype.configure,Oo.prototype.getConfiguration=function(){var t=Wo(this);return st(t,this.c,Wo(this),zo(),""),t},Oo.prototype.getConfiguration=Oo.prototype.getConfiguration,Oo.prototype.ve=function(){this.c=Wo(this),Ko(this)},Oo.prototype.resetConfiguration=Oo.prototype.ve,Oo.prototype.sd=function(){return this.f},Oo.prototype.getMediaElement=Oo.prototype.sd,Oo.prototype.uc=function(){return this.s},Oo.prototype.getNetworkingEngine=Oo.prototype.uc,Oo.prototype.Ib=function(){return this.Cb},Oo.prototype.getManifestUri=Oo.prototype.Ib,Oo.prototype.P=function(){return!!this.b&&this.b.presentationTimeline.P()},Oo.prototype.isLive=Oo.prototype.P,Oo.prototype.Aa=function(){return!!this.b&&this.b.presentationTimeline.Aa()},Oo.prototype.isInProgress=Oo.prototype.Aa,Oo.prototype.Dd=function(){if(!this.b||!this.b.periods.length)return!1;var t=this.b.periods[0].variants;return!!t.length&&!t[0].video},Oo.prototype.isAudioOnly=Oo.prototype.Dd,Oo.prototype.xe=function(){var t=0,e=0;return this.b&&(e=this.b.presentationTimeline,t=e.Ja(),e=e.ma()),{start:t,end:e}},Oo.prototype.seekRange=Oo.prototype.xe,Oo.prototype.keySystem=function(){return this.i?this.i.keySystem():""},Oo.prototype.keySystem=Oo.prototype.keySystem,Oo.prototype.drmInfo=function(){return this.i?this.i.b:null},Oo.prototype.drmInfo=Oo.prototype.drmInfo,Oo.prototype.vb=function(){return this.i?this.i.vb():1/0},Oo.prototype.getExpiration=Oo.prototype.vb,Oo.prototype.xc=function(){return this.ob},Oo.prototype.isBuffering=Oo.prototype.xc,Oo.prototype.hb=function(t){var e=this;return c(function n(){return A(n,function(n){switch(n.w){case 1:return e.wa?n.return():(void 0===t&&(t=!0),e.dispatchEvent(new At("unloading")),d(n,Uo(e),2));case 2:return e.qb||(e.qb=Yo(e).then(function(){e.Uc(!1),e.qb=null})),d(n,e.qb,3);case 3:if(t)return e.j=new Ae(e.f),d(n,e.j.j,0);n.V(0)}})})},Oo.prototype.unload=Oo.prototype.hb,Oo.prototype.Va=function(){return this.g?this.g.Va():0},Oo.prototype.getPlaybackRate=Oo.prototype.Va,Oo.prototype.Te=function(t){this.g&&zr(this.g.a,t),this.a&&da(this.a,1!=t)},Oo.prototype.trickPlay=Oo.prototype.Te,Oo.prototype.gd=function(){this.g&&zr(this.g.a,1),this.a&&da(this.a,!1)},Oo.prototype.cancelTrickPlay=Oo.prototype.gd,Oo.prototype.Ad=function(){if(!this.b||!this.g)return[];var t=sn(this.b,Jr(this.g)),e=this.I[t]||{};return Ye(this.b.periods[t],e.audio,e.video)},Oo.prototype.getVariantTracks=Oo.prototype.Ad,Oo.prototype.zd=function(){if(!this.b||!this.g)return[];var t=sn(this.b,Jr(this.g)),e=this.I[t]||{};if(!e.text){var n=en(this.b.periods[t].textStreams,this.ga,this.Ua);n.length&&(e.text=n[0].id)}return ze(this.b.periods[t],e.text).filter(function(t){return 0>this.lb.indexOf(t.id)}.bind(this))},Oo.prototype.getTextTracks=Oo.prototype.zd,Oo.prototype.Be=function(t){if(this.a){var e=oa(this.a);t:{for(var n=0;n=this.b.periods.length?this.b.presentationTimeline.T():this.b.periods[s].startTime)-o.startTime;if(1/0==u)return Promise.reject(new z(1,4,4033));var c={id:this.bd++,createSegmentIndex:Promise.resolve.bind(Promise),findSegmentPosition:function(){return 1},getSegmentReference:function(e){return 1!=e?null:new ti(1,0,u,function(){return[t]},0,null)},initSegmentReference:null,presentationTimeOffset:0,mimeType:i,codecs:r||"",kind:n,encrypted:!1,keyId:null,language:e,label:a||null,type:"text",primary:!1,trickModeVideo:null,containsEmsgBoxes:!1,roles:[],channelsCount:null};return this.lb.push(c.id),o.textStreams.push(c),la(this.a,c).then(function(){if(!this.wa){var t=this.b.periods.indexOf(o),i=ha(this.a,"text");return i&&(this.I[t].text=i.id),this.lb.splice(this.lb.indexOf(c.id),1),es(this,o),is(this),{id:c.id,active:!1,type:"text",bandwidth:0,language:e,label:a||null,kind:n,width:null,height:null}}}.bind(this))},Oo.prototype.addTextTrack=Oo.prototype.addTextTrack,Oo.prototype.cc=function(t,e){this.mb.width=t,this.mb.height=e},Oo.prototype.setMaxHardwareResolution=Oo.prototype.cc,Oo.prototype.ac=function(){if(this.a){var t=this.a;if(t.f)t=!1;else if(t.l)t=!1;else{for(var e in t.c){var n=t.c[e];n.Ya&&(n.Ya=!1,Oa(t,n,.1))}t=!0}}else t=!1;return t},Oo.prototype.retryStreaming=Oo.prototype.ac,Oo.prototype.rd=function(){return this.b},Oo.prototype.getManifest=Oo.prototype.rd,Uu=Oo.prototype,Uu.kd=function(t){var e=[1001,1002,1003];this.P()&&0<=e.indexOf(t.code)&&(t.severity=1,this.ac())},Uu.ec=function(t){t.forEach(Ke.bind(null,this.i,this.a?ua(this.a):null,this.a?ca(this.a):null));var e=ot(t,function(t){return t.variants.some($e)});if(0==e)throw new z(2,4,4032);if(ee&&(e+=Math.pow(2,32)),e=e.toString(16)),this.Ta(new z(2,3,3016,t,e,this.f.error.message))}}},Uu.Md=function(t){var e=["output-restricted","internal-error"],n=oa(this.a),i=!1,r=Object.keys(t),a=1==r.length&&"00"==r[0];r.length&&n.variants.forEach(function(n){var r=[];n.audio&&r.push(n.audio),n.video&&r.push(n.video),r.forEach(function(r){var o=n.allowedByKeySystem;r.keyId&&(r=t[a?"00":r.keyId],n.allowedByKeySystem=!!r&&0>e.indexOf(r)),o!=n.allowedByKeySystem&&(i=!0)})}),(r=an(ua(this.a),ca(this.a),n.variants))&&!r.allowedByKeySystem&&es(this,n),i&&(is(this),n=Qe(n.variants,this.L,this.Ga,this.Y),this.h.setVariants(n))},Uu.Jd=function(t,e){this.m&&this.m.onExpirationUpdated&&this.m.onExpirationUpdated(t,e),this.dispatchEvent(new At("expirationupdated"))},I("shaka.offline.Storage",hs),hs.support=ls,hs.prototype.destroy=function(){return this.a=this.b=null,Promise.resolve()},hs.prototype.destroy=hs.prototype.destroy,hs.prototype.configure=function(t){st(this.b,t,ys(this),{},"")},hs.prototype.configure=hs.prototype.configure,hs.prototype.store=function(t,e,n){var i=this;return c(function r(){var a,o,s,u,h,l;return A(r,function(r){switch(r.w){case 1:return _s(),i.g?r.return(Promise.reject(new z(2,9,9006))):(i.g=!0,a=e||{},o=null,s=function(t){o=o||t},d(r,ms(i,t,s,n),2));case 2:if(u=r.K,!(h=!u.manifest.presentationTimeline.P()&&!u.manifest.presentationTimeline.Aa()))throw new z(2,9,9005,t);if(As(i),o)throw o;return l=new Qa,r.return(ct([l,u.Eb],function(){return c(function e(){var n,r,s,c,h,f,v;return A(e,function(e){switch(e.w){case 1:return m(e),d(e,l.init(),4);case 4:return As(i),gs(i,u.Eb,u.manifest.periods),d(e,Za(l),5);case 5:return n=e.K,As(i),p(e,6),d(e,fs(i,n.N,u.Eb,u.manifest,t,a||{}),8);case 8:return r=e.K,As(i),d(e,n.N.addManifests([r]),9);case 9:return s=e.K,As(i),c=new Eo("manifest",n.path.fa,n.path.N,s[0]),e.return(os(c,r));case 6:return h=y(e),f=i.f,v=function(){},d(e,n.N.removeSegments(f,v),10);case 10:throw o||h;case 2:g(e),i.g=!1,i.c=null,i.f=[],b(e,0)}})})}))}})})},hs.prototype.store=hs.prototype.store,hs.prototype.remove=function(t){var e=this;_s();var n=So(t);if(null==n||"manifest"!=n.a)return Promise.reject(new z(2,9,9004,t));var i=new Qa;return ct([i],function(){return c(function t(){var r,a,o;return A(t,function(t){switch(t.w){case 1:return d(t,i.init(),2);case 2:return d(t,eo(i,n.fa(),n.N()),3);case 3:return r=t.K,d(t,r.getManifests([n.key()]),4);case 4:return a=t.K,o=a[0],d(t,Promise.all([ds(e,n,o),ps(e,r,n,o)]),0)}})})})},hs.prototype.remove=hs.prototype.remove,hs.prototype.list=function(){function t(t,n){return c(function i(){var r;return A(i,function(i){switch(i.w){case 1:return d(i,n.getAllManifests(),2);case 2:r=i.K,$u.forEach(r,function(n,i){var r=os(new Eo("manifest",t.fa,t.N,n),i);e.push(r)}),i.w=0}})})}_s();var e=[],n=new Qa;return ct([n],function(){return c(function e(){var i;return A(e,function(e){switch(e.w){case 1:return d(e,n.init(),2);case 2:return i=Promise.resolve(),to(n,function(e,n){i=i.then(function(){return t(e,n)})}),d(e,i,0)}})})}).then(function(){return e})},hs.prototype.list=hs.prototype.list,hs.deleteAll=function(){return c(function t(){var e;return A(t,function(t){switch(t.w){case 1:return e=new Qa,m(t),d(t,no(e),2);case 2:return g(t),d(t,e.destroy(),5);case 5:b(t,0)}})})},Xc.offline=ls,I("shaka.polyfill.installAll",function(){for(var t=0;tnavigator.userAgent.indexOf("Trident/")||HTMLInputElement.prototype.addEventListener==Cs||(zc=HTMLInputElement.prototype.addEventListener,HTMLInputElement.prototype.addEventListener=Cs)}),Ns(function(){}),Ns(function(){if(t.MediaSource)if(t.cast&&cast.__platform__&&cast.__platform__.canDisplayType)Fs();else if(navigator.vendor&&0<=navigator.vendor.indexOf("Apple")){var e=navigator.appVersion;Bs(),0<=e.indexOf("Version/8")?t.MediaSource=null:0<=e.indexOf("Version/9")?Ms():0<=e.indexOf("Version/10")?(Ms(),Os()):0<=e.indexOf("Version/11")&&(Ms(),Ls())}}),Vs.prototype.c=function(t){if(!(1c[0].indexOf("--\x3e")&&(u=c[0],c.splice(0,1)),h=new sr(c[0]);var f=Cu(h),d=cr(h,/[ \t]+--\x3e[ \t]+/g),p=Cu(h);if(null==f||null==d||null==p)throw new z(2,2,2001);for(c=new ye(f+l,p+l,c.slice(1).join("\n").trim()),ur(h),l=hr(h);l;)Nu(c,l,o),ur(h),l=hr(h);null!=u&&(c.id=u),o=c}o&&r.push(o)}return r},mc["text/vtt"]=Ru,mc['text/vtt; codecs="vtt"']=Ru,Mu.prototype.parseInit=function(t){var e=!1;if((new ii).C("moov",ri).C("trak",ri).C("mdia",ri).Z("mdhd",function(t){0==t.version?(t.reader.F(4),t.reader.F(4),this.a=t.reader.B(),t.reader.F(4)):(t.reader.F(8),t.reader.F(8),this.a=t.reader.B(),t.reader.F(8)),t.reader.F(4)}.bind(this)).C("minf",ri).C("stbl",ri).Z("stsd",ai).C("wvtt",function(){e=!0}).parse(t),!this.a)throw new z(2,2,2008);if(!e)throw new z(2,2,2008)},Mu.prototype.parseMedia=function(t,e){var n=this;if(!this.a)throw new z(2,2,2008);var i,r=0,a=[],o=[],s=!1,u=!1,c=!1,h=null;if((new ii).C("moof",ri).C("traf",ri).Z("tfdt",function(t){s=!0,r=0==t.version?t.reader.B():t.reader.Ra()}).Z("tfhd",function(t){var e=t.flags;t=t.reader,t.F(4),1&e&&t.F(8),2&e&&t.F(4),h=8&e?t.B():null}).Z("trun",function(t){u=!0;var e=t.version,n=t.flags;t=t.reader;var i=t.B();1&n&&t.F(4),4&n&&t.F(4);for(var r=[],o=0;o/",t(0)}([/*!******************!*\ - !*** ./index.js ***! - \******************/ -function(e,t,l){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=l(/*! ./src/main.js */1),e.exports=t.default},/*!*********************!*\ - !*** ./src/main.js ***! - \*********************/ -function(e,t,l){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var l=0;l0;t&&this.fillLevels(e.levels)}},{key:"reload",value:function(){this.unBindEvents(),this.bindEvents(),this.bindPlaybackEvents()}},{key:"shouldRender",value:function(){if(!this.core.getCurrentContainer())return!1;var e=this.core.getCurrentPlayback();if(!e)return!1;var t=void 0!==e.currentLevel,l=!!(this.levels&&this.levels.length>1);return t&&l}},{key:"render",value:function(){if(this.shouldRender()){var e=a.Styler.getStyleFor(h.default,{baseUrl:this.core.options.baseUrl});this.$el.html(this.template({levels:this.levels,title:this.getTitle()})),this.$el.append(e),this.core.mediaControl.$(".media-control-right-panel").append(this.el),this.highlightCurrentLevel()}return this}},{key:"fillLevels",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?f:arguments[1];void 0===this.selectedLevelId&&(this.selectedLevelId=t),this.levels=e,this.configureLevelsLabels(),this.render()}},{key:"configureLevelsLabels",value:function(){if(this.levels.forEach(function(e){e.label=(e.height?e.height:e.level.height)+"p"}),void 0!==this.core.options.levelSelectorConfig){var e=this.core.options.levelSelectorConfig.labelCallback;if(e&&"function"!=typeof e)throw new TypeError("labelCallback must be a function");var t=this.core.options.levelSelectorConfig.labels,l=t?this.core.options.levelSelectorConfig.labels:{};if(e||t){var n,o;for(var r in this.levels)n=this.levels[r],o=l[n.id],e?n.label=e(n,o):o&&(n.label=o)}}}},{key:"findLevelBy",value:function(e){var t;return this.levels.forEach(function(l){l.id===e&&(t=l)}),t}},{key:"onLevelSelect",value:function(e){return this.selectedLevelId=parseInt(e.target.dataset.levelSelectorSelect,10),this.core.getCurrentPlayback().currentLevel!=this.selectedLevelId&&(this.core.getCurrentPlayback().currentLevel=this.selectedLevelId,this.toggleContextMenu(),e.stopPropagation(),!1)}},{key:"onShowLevelSelectMenu",value:function(e){this.toggleContextMenu()}},{key:"hideSelectLevelMenu",value:function(){this.$(".level_selector ul").hide()}},{key:"toggleContextMenu",value:function(){this.$(".level_selector ul").toggle()}},{key:"buttonElement",value:function(){return this.$(".level_selector button")}},{key:"levelElement",value:function(e){return this.$(".level_selector ul a"+(isNaN(e)?"":'[data-level-selector-select="'+e+'"]')).parent()}},{key:"getTitle",value:function(){return(this.core.options.levelSelectorConfig||{}).title}},{key:"updateText",value:function(e){e===f?this.buttonElement().text(this.currentLevel?"AUTO ("+this.currentLevel.label+")":"AUTO"):this.buttonElement().text(this.findLevelBy(e).label)}},{key:"handleAdaptation",value:function(e){var t=this.findLevelBy(e.level);this.currentLevel=t?t:null,this.highlightCurrentLevel()}},{key:"highlightCurrentLevel",value:function(){var e=this;this.updateText(this.selectedLevelId),this.levelElement().removeClass("current"),this.currentLevel&&this.levelElement(this.currentLevel.id).addClass("current");var t=this.currentLevel&&this.currentLevel.language;t&&(this.levelElement().removeClass("hidden"),this.levels.forEach(function(l){l.language!=t&&e.levelElement(l.id).addClass("hidden")}))}},{key:"name",get:function(){return"level_selector"}},{key:"template",get:function(){return(0,a.template)(u.default)}},{key:"attributes",get:function(){return{class:this.name,"data-level-selector":""}}},{key:"events",get:function(){return{"click [data-level-selector-select]":"onLevelSelect","click [data-level-selector-button]":"onShowLevelSelectMenu"}}}],[{key:"version",get:function(){return VERSION}}]),t}(a.UICorePlugin);t.default=d,e.exports=t.default},/*!*************************!*\ - !*** external "Clappr" ***! - \*************************/ -function(t,l){t.exports=e},/*!****************************************!*\ - !*** ./src/public/level-selector.html ***! - \****************************************/ -function(e,t){e.exports='\n
    \n <% if (title) { %>\n
  • <%= title %>
  • \n <% }; %>\n
  • AUTO
  • \n <% for (var i = 0; i < levels.length; i++) { %>\n
  • <%= levels[i].label %>
  • \n <% }; %>\n
\n'},/*!*******************************!*\ - !*** ./src/public/style.scss ***! - \*******************************/ -function(e,t,l){t=e.exports=l(/*! ../../~/css-loader/lib/css-base.js */5)(),t.push([e.id,".level_selector[data-level-selector]{float:right;margin-top:7px;position:relative}.level_selector[data-level-selector] button{background-color:transparent;color:#fff;font-family:Roboto,Open Sans,Arial,sans-serif;-webkit-font-smoothing:antialiased;border:none;font-size:12px}.level_selector[data-level-selector] button:hover{color:#c9c9c9}.level_selector[data-level-selector] button.changing{-webkit-animation:pulse .5s infinite alternate}.level_selector[data-level-selector]>ul{list-style-type:none;position:absolute;bottom:25px;border:1px solid #000;display:none;background-color:#e6e6e6}.level_selector[data-level-selector] li{font-size:12px}.level_selector[data-level-selector] li[data-title]{background-color:#c3c2c2;padding:5px}.level_selector[data-level-selector] li a{color:#444;padding:2px 10px;display:block;text-decoration:none}.level_selector[data-level-selector] li a:hover{background-color:#555;color:#fff}.level_selector[data-level-selector] li a:hover a{color:#fff;text-decoration:none}.level_selector[data-level-selector] li.current a{color:red}.level_selector[data-level-selector] li.hidden{display:none}@-webkit-keyframes pulse{0%{color:#fff}50%{color:#ff0101}to{color:#b80000}}",""])},/*!**************************************!*\ - !*** ./~/css-loader/lib/css-base.js ***! - \**************************************/ -function(e,t){"use strict";e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t [data-player] { - // force 16:9 aspect ratio - // https://gordonlesti.com/bootstrap-responsive-embed-aspect-ratio/ - padding-bottom: 56.25%; - max-width: 100%; - height: auto !important; - } - - //Change play button color from #FFF to grey. - .player-poster[data-poster] .play-wrapper[data-poster] svg path { - fill: #ccc; - } - - //Change loading indicator color from #FFF to grey. - .spinner-three-bounce[data-spinner] > div { - background-color: #ccc; - } - - } } .well, .alert { diff --git a/assets/css/_structure.less b/assets/css/_structure.less index eea4409..bf9e3b1 100644 --- a/assets/css/_structure.less +++ b/assets/css/_structure.less @@ -120,3 +120,4 @@ body { @import "_feedback.less"; @import "_allconferences.less"; @import "_subtitles.less"; +@import "_voc_player.less"; diff --git a/assets/css/_voc_player.less b/assets/css/_voc_player.less new file mode 100644 index 0000000..0a96288 --- /dev/null +++ b/assets/css/_voc_player.less @@ -0,0 +1,33 @@ +.video-wrap[data-voc-player] { + margin: 0 auto; + + & > [data-player] { + max-width: 100%; + padding-bottom: 56.25%; + height: auto !important; + } + & > .fullscreen { + padding-bottom: 0; + } + + .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] { + height: 40px; + } + + .media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] { + height: 2px; + background-color: #ccc; + } + + // Change play button color from #FFF to grey. + .player-poster[data-poster] .play-wrapper[data-poster] svg path { + // fill: rgba(255, 255, 255, 0.8); + fill: #ccc; + } + + // Change loading indicator color from #FFF to grey. + .spinner-three-bounce[data-spinner] > div { + // background-color: rgba(255, 255, 255, 0.8); + background-color: #ccc; + } +} \ No newline at end of file diff --git a/assets/js/lustiges-script.js b/assets/js/lustiges-script.js index 22c4e04..3b38a2d 100644 --- a/assets/js/lustiges-script.js +++ b/assets/js/lustiges-script.js @@ -32,54 +32,72 @@ $(function() { features: ['playpause', 'volume', 'current'] }); - var $relivePlayer = $('body.relive-player .video-wrap'); - if($relivePlayer.length > 0) { - var sprites = []; - - if($relivePlayer.data("sprites")) { - sprites = ClapprThumbnailsPlugin.buildSpriteConfig( - $relivePlayer.data("sprites"), - $relivePlayer.data("sprites-n"), - 160, 90, - $relivePlayer.data("sprites-cols"), - $relivePlayer.data("sprites-interval") - ); - } - - var player = new Clappr.Player({ - baseUrl: 'assets/clapprio/', - plugins: { - core: [ClapprThumbnailsPlugin, PlaybackRatePlugin] - }, - - source: $relivePlayer.data('m3u8'), - height: $relivePlayer.data('height'), - width: $relivePlayer.data('width'), + var $player = $('.video-wrap[data-voc-player]'); + if ($player.length > 0) { + var config = { + parent: $player.get(0), + plugins: [], + baseUrl: 'assets/voc-player/', autoPlay: true, - scrubThumbnails: { - backdropHeight: 64, - spotlightHeight: 84, - thumbs: sprites - }, + poster: $player.data("poster"), events: { onReady: function() { + var player = this; var playback = player.core.getCurrentContainer().playback; var params = deserialize(location.href) playback.once(Clappr.Events.PLAYBACK_PLAY, function() { + + // Allow custom skip via URL var seek = parseFloat(params.t); if (!isNaN(seek)) { player.seek(seek); + + // skip forward to scheduled beginning of the talk at + // ~ 0:14:30 (30 sec offset, if speaker starts on time) } else if (playback.getPlaybackType() == 'vod') { - // skip forward to scheduled beginning of the talk at ~ 0:14:30 (30 sec offset, if speaker starts on time) player.seek(14 * 60 + 30); } }); } } - }); + } - player.attachTo($relivePlayer.get(0)); + // Select source + if ($player.data("stream")) { + config.vocStream = $player.data("stream"); + } else if ($player.data("source")) { + config.source = $player.data('source'); + config.playbackRateConfig = { + defaultValue: 1, + options: [ + {value: 0.75, label: '0.75x'}, + {value: 1, label: '1x'}, + {value: 1.25, label: '1.25x'}, + {value: 1.5, label: '1.5x'}, + {value: 2, label: '2x'}, + ], + }; + config.plugins.push(PlaybackRatePlugin); + } + + // Show timeline previews if present + if ($player.data("sprites")) { + var sprites = ClapprThumbnailsPlugin.buildSpriteConfig( + $player.data("sprites"), + $player.data("sprites-n"), + 160, 90, + $player.data("sprites-cols"), + $player.data("sprites-interval") + ); + config.plugins.push(ClapprThumbnailsPlugin); + config.scrubThumbnails = { + backdropHeight: 64, + spotlightHeight: 84, + thumbs: sprites + }; + } + new VOCPlayer.Player(config); } $(window).on('load', function() { diff --git a/assets/js/player.js b/assets/js/player.js deleted file mode 100644 index 394d302..0000000 --- a/assets/js/player.js +++ /dev/null @@ -1,1451 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VOCPlayer=t():e.VOCPlayer=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=16)}([function(e,t,r){var n;window,n=function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="dist/",r(r.s="./src/main.js")}({"./node_modules/babel-runtime/core-js/array/from.js": -/*!**********************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/array/from.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/array/from */"./node_modules/core-js/library/fn/array/from.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/get-iterator.js": -/*!************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/get-iterator.js ***! - \************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/get-iterator */"./node_modules/core-js/library/fn/get-iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/json/stringify.js": -/*!**************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/json/stringify.js ***! - \**************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/json/stringify */"./node_modules/core-js/library/fn/json/stringify.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/assign.js": -/*!*************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/object/assign.js ***! - \*************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/object/assign */"./node_modules/core-js/library/fn/object/assign.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/create.js": -/*!*************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/object/create.js ***! - \*************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/object/create */"./node_modules/core-js/library/fn/object/create.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/define-property.js": -/*!**********************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/object/define-property.js ***! - \**********************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/object/define-property */"./node_modules/core-js/library/fn/object/define-property.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js ***! - \**********************************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/object/get-own-property-descriptor */"./node_modules/core-js/library/fn/object/get-own-property-descriptor.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/keys.js": -/*!***********************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/object/keys.js ***! - \***********************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/object/keys */"./node_modules/core-js/library/fn/object/keys.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/set-prototype-of.js": -/*!***********************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/object/set-prototype-of.js ***! - \***********************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/object/set-prototype-of */"./node_modules/core-js/library/fn/object/set-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol.js": -/*!******************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/symbol.js ***! - \******************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/symbol */"./node_modules/core-js/library/fn/symbol/index.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol/iterator.js": -/*!***************************************************************!*\ - !*** ./node_modules/babel-runtime/core-js/symbol/iterator.js ***! - \***************************************************************/ -/*! no static exports found */function(e,t,r){e.exports={default:r(/*! core-js/library/fn/symbol/iterator */"./node_modules/core-js/library/fn/symbol/iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/helpers/classCallCheck.js": -/*!**************************************************************!*\ - !*** ./node_modules/babel-runtime/helpers/classCallCheck.js ***! - \**************************************************************/ -/*! no static exports found */function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"./node_modules/babel-runtime/helpers/createClass.js": -/*!***********************************************************!*\ - !*** ./node_modules/babel-runtime/helpers/createClass.js ***! - \***********************************************************/ -/*! no static exports found */function(e,t,r){"use strict";t.__esModule=!0;var n,i=r(/*! ../core-js/object/define-property */"./node_modules/babel-runtime/core-js/object/define-property.js"),o=(n=i)&&n.__esModule?n:{default:n};t.default=function(){function e(e,t){for(var r=0;r]*>/,p=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,y=/([A-Z])/g,v=["val","css","html","text","data","width","height","offset"],b=u.createElement("table"),_=u.createElement("tr"),A={tr:u.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:_,th:_,"*":u.createElement("div")},E=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},w=S.toString,k={},x=u.createElement("div"),C={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},R=Array.isArray||function(e){return e instanceof Array};function j(e){return null==e?String(e):S[w.call(e)]||"object"}function L(e){return"function"==j(e)}function I(e){return null!=e&&e==e.window}function P(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function O(e){return"object"==j(e)}function D(e){return O(e)&&!I(e)&&Object.getPrototypeOf(e)==Object.prototype}function M(e){var r=!!e&&"length"in e&&e.length,n=t.type(e);return"function"!=n&&!I(e)&&("array"==n||0===r||"number"==typeof r&&r>0&&r-1 in e)}function N(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function U(e){return e in d?d[e]:d[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function F(e,t){return"number"!=typeof t||f[N(e)]?t:t+"px"}function B(e){return"children"in e?l.call(e.children):t.map(e.childNodes,(function(e){if(1==e.nodeType)return e}))}function K(e,t){var r,n=e?e.length:0;for(r=0;r")),void 0===r&&(r=h.test(e)&&RegExp.$1),r in A||(r="*"),(a=A[r]).innerHTML=""+e,i=t.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),D(n)&&(o=t(i),t.each(n,(function(e,t){v.indexOf(e)>-1?o[e](t):o.attr(e,t)}))),i},k.Z=function(e,t){return new K(e,t)},k.isZ=function(e){return e instanceof k.Z},k.init=function(e,r){var n,i;if(!e)return k.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&h.test(e))n=k.fragment(e,RegExp.$1,r),e=null;else{if(void 0!==r)return t(r).find(e);n=k.qsa(u,e)}else{if(L(e))return t(u).ready(e);if(k.isZ(e))return e;if(R(e))i=e,n=s.call(i,(function(e){return null!=e}));else if(O(e))n=[e],e=null;else if(h.test(e))n=k.fragment(e.trim(),RegExp.$1,r),e=null;else{if(void 0!==r)return t(r).find(e);n=k.qsa(u,e)}}return k.Z(n,e)},(t=function(e,t){return k.init(e,t)}).extend=function(e){var t,r=l.call(arguments,1);return"boolean"==typeof e&&(t=e,e=r.shift()),r.forEach((function(r){G(e,r,t)})),e},k.qsa=function(e,t){var r,n="#"==t[0],i=!n&&"."==t[0],o=n||i?t.slice(1):t,a=T.test(o);return e.getElementById&&a&&n?(r=e.getElementById(o))?[r]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(a&&!n&&e.getElementsByClassName?i?e.getElementsByClassName(o):e.getElementsByTagName(t):e.querySelectorAll(t))},t.contains=u.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},t.type=j,t.isFunction=L,t.isWindow=I,t.isArray=R,t.isPlainObject=D,t.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},t.isNumeric=function(e){var t=Number(e),r=typeof e;return null!=e&&"boolean"!=r&&("string"!=r||e.length)&&!isNaN(t)&&isFinite(t)||!1},t.inArray=function(e,t,r){return o.indexOf.call(t,e,r)},t.camelCase=n,t.trim=function(e){return null==e?"":String.prototype.trim.call(e)},t.uuid=0,t.support={},t.expr={},t.noop=function(){},t.map=function(e,r){var n,i,o,a,s=[];if(M(e))for(i=0;i0?t.fn.concat.apply([],a):a},t.each=function(e,t){var r,n;if(M(e)){for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(e){return o.every.call(this,(function(t,r){return!1!==e.call(t,r,t)})),this},filter:function(e){return L(e)?this.not(this.not(e)):t(s.call(this,(function(t){return k.matches(t,e)})))},add:function(e,r){return t(i(this.concat(t(e,r))))},is:function(e){return this.length>0&&k.matches(this[0],e)},not:function(e){var r=[];if(L(e)&&void 0!==e.call)this.each((function(t){e.call(this,t)||r.push(this)}));else{var n="string"==typeof e?this.filter(e):M(e)&&L(e.item)?l.call(e):t(e);this.forEach((function(e){n.indexOf(e)<0&&r.push(e)}))}return t(r)},has:function(e){return this.filter((function(){return O(e)?t.contains(this,e):t(this).find(e).size()}))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!O(e)?e:t(e)},last:function(){var e=this[this.length-1];return e&&!O(e)?e:t(e)},find:function(e){var r=this;return e?"object"==typeof e?t(e).filter((function(){var e=this;return o.some.call(r,(function(r){return t.contains(r,e)}))})):1==this.length?t(k.qsa(this[0],e)):this.map((function(){return k.qsa(this,e)})):t()},closest:function(e,r){var n=[],i="object"==typeof e&&t(e);return this.each((function(t,o){for(;o&&!(i?i.indexOf(o)>=0:k.matches(o,e));)o=o!==r&&!P(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)})),t(n)},parents:function(e){for(var r=[],n=this;n.length>0;)n=t.map(n,(function(e){if((e=e.parentNode)&&!P(e)&&r.indexOf(e)<0)return r.push(e),e}));return V(r,e)},parent:function(e){return V(i(this.pluck("parentNode")),e)},children:function(e){return V(this.map((function(){return B(this)})),e)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(e){return V(this.map((function(e,t){return s.call(B(t.parentNode),(function(e){return e!==t}))})),e)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(e){return t.map(this,(function(t){return t[e]}))},show:function(){return this.each((function(){var e,t,r;"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=(e=this.nodeName,c[e]||(t=u.createElement(e),u.body.appendChild(t),r=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==r&&(r="block"),c[e]=r),c[e]))}))},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var r=L(e);if(this[0]&&!r)var n=t(e).get(0),i=n.parentNode||this.length>1;return this.each((function(o){t(this).wrapAll(r?e.call(this,o):i?n.cloneNode(!0):n)}))},wrapAll:function(e){if(this[0]){var r;for(t(this[0]).before(e=t(e));(r=e.children()).length;)e=r.first();t(e).append(this)}return this},wrapInner:function(e){var r=L(e);return this.each((function(n){var i=t(this),o=i.contents(),a=r?e.call(this,n):e;o.length?o.wrapAll(a):i.append(a)}))},unwrap:function(){return this.parent().each((function(){t(this).replaceWith(t(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(e){return this.each((function(){var r=t(this);(void 0===e?"none"==r.css("display"):e)?r.show():r.hide()}))},prev:function(e){return t(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return t(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each((function(r){var n=this.innerHTML;t(this).empty().append(H(this,e,r,n))})):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each((function(t){var r=H(this,e,t,this.textContent);this.textContent=null==r?"":""+r})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var n;return"string"!=typeof t||1 in arguments?this.each((function(n){if(1===this.nodeType)if(O(t))for(e in t)Y(this,e,t[e]);else Y(this,t,H(this,r,n,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:void 0},removeAttr:function(e){return this.each((function(){1===this.nodeType&&e.split(" ").forEach((function(e){Y(this,e)}),this)}))},prop:function(e,t){return e=C[e]||e,1 in arguments?this.each((function(r){this[e]=H(this,t,r,this[e])})):this[0]&&this[0][e]},removeProp:function(e){return e=C[e]||e,this.each((function(){delete this[e]}))},data:function(e,t){var r="data-"+e.replace(y,"-$1").toLowerCase(),n=1 in arguments?this.attr(r,t):this.attr(r);return null!==n?W(n):void 0},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each((function(t){this.value=H(this,e,t,this.value)}))):this[0]&&(this[0].multiple?t(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(r){var n=t(this),i=H(this,e,r,n.offset()),o=n.offsetParent().offset(),a={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(a.position="relative"),n.css(a)}));if(!this.length)return null;if(u.documentElement!==this[0]&&!t.contains(u.documentElement,this[0]))return{top:0,left:0};var r=this[0].getBoundingClientRect();return{left:r.left+window.pageXOffset,top:r.top+window.pageYOffset,width:Math.round(r.width),height:Math.round(r.height)}},css:function(r,i){if(arguments.length<2){var o=this[0];if("string"==typeof r){if(!o)return;return o.style[n(r)]||getComputedStyle(o,"").getPropertyValue(r)}if(R(r)){if(!o)return;var a={},s=getComputedStyle(o,"");return t.each(r,(function(e,t){a[t]=o.style[n(t)]||s.getPropertyValue(t)})),a}}var l="";if("string"==j(r))i||0===i?l=N(r)+":"+F(r,i):this.each((function(){this.style.removeProperty(N(r))}));else for(e in r)r[e]||0===r[e]?l+=N(e)+":"+F(e,r[e])+";":this.each((function(){this.style.removeProperty(N(e))}));return this.each((function(){this.style.cssText+=";"+l}))},index:function(e){return e?this.indexOf(t(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&o.some.call(this,(function(e){return this.test(z(e))}),U(e))},addClass:function(e){return e?this.each((function(n){if("className"in this){r=[];var i=z(this);H(this,e,n,i).split(/\s+/g).forEach((function(e){t(this).hasClass(e)||r.push(e)}),this),r.length&&z(this,i+(i?" ":"")+r.join(" "))}})):this},removeClass:function(e){return this.each((function(t){if("className"in this){if(void 0===e)return z(this,"");r=z(this),H(this,e,t,r).split(/\s+/g).forEach((function(e){r=r.replace(U(e)," ")})),z(this,r.trim())}}))},toggleClass:function(e,r){return e?this.each((function(n){var i=t(this);H(this,e,n,z(this)).split(/\s+/g).forEach((function(e){(void 0===r?!i.hasClass(e):r)?i.addClass(e):i.removeClass(e)}))})):this},scrollTop:function(e){if(this.length){var t="scrollTop"in this[0];return void 0===e?t?this[0].scrollTop:this[0].pageYOffset:this.each(t?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var t="scrollLeft"in this[0];return void 0===e?t?this[0].scrollLeft:this[0].pageXOffset:this.each(t?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],r=this.offsetParent(),n=this.offset(),i=g.test(r[0].nodeName)?{top:0,left:0}:r.offset();return n.top-=parseFloat(t(e).css("margin-top"))||0,n.left-=parseFloat(t(e).css("margin-left"))||0,i.top+=parseFloat(t(r[0]).css("border-top-width"))||0,i.left+=parseFloat(t(r[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent||u.body;e&&!g.test(e.nodeName)&&"static"==t(e).css("position");)e=e.offsetParent;return e}))}},t.fn.detach=t.fn.remove,["width","height"].forEach((function(e){var r=e.replace(/./,(function(e){return e[0].toUpperCase()}));t.fn[e]=function(n){var i,o=this[0];return void 0===n?I(o)?o["inner"+r]:P(o)?o.documentElement["scroll"+r]:(i=this.offset())&&i[e]:this.each((function(r){(o=t(this)).css(e,H(this,n,r,o[e]()))}))}})),["after","prepend","before","append"].forEach((function(e,r){var n=r%2;t.fn[e]=function(){var e,i,o=t.map(arguments,(function(r){var n=[];return"array"==(e=j(r))?(r.forEach((function(e){return void 0!==e.nodeType?n.push(e):t.zepto.isZ(e)?n=n.concat(e.get()):void(n=n.concat(k.fragment(e)))})),n):"object"==e||null==r?r:k.fragment(r)})),a=this.length>1;return o.length<1?this:this.each((function(e,s){i=n?s:s.parentNode,s=0==r?s.nextSibling:1==r?s.firstChild:2==r?s:null;var l=t.contains(u.documentElement,i);o.forEach((function(e){if(a)e=e.cloneNode(!0);else if(!i)return t(e).remove();i.insertBefore(e,s),l&&$(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var t=e.ownerDocument?e.ownerDocument.defaultView:window;t.eval.call(t,e.innerHTML)}}))}))}))},t.fn[n?e+"To":"insert"+(r?"Before":"After")]=function(r){return t(r)[e](this),this}})),k.Z.prototype=K.prototype=t.fn,k.uniq=i,k.deserializeValue=W,t.zepto=k,t}();window.Zepto=n,void 0===window.$&&(window.$=n),function(e){var t,r,n=+new Date,i=window.document,o=/)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,s=/^(?:text|application)\/xml/i,l=/^\s*$/,u=i.createElement("a");function c(t,r,n,o){if(t.global)return function(t,r,n){var i=e.Event(r);return e(t).trigger(i,n),!i.isDefaultPrevented()}(r||i,n,o)}function d(e,t){var r=t.context;if(!1===t.beforeSend.call(r,e,t)||!1===c(t,r,"ajaxBeforeSend",[e,t]))return!1;c(t,r,"ajaxSend",[e,t])}function f(e,t,r,n){var i=r.context;r.success.call(i,e,"success",t),n&&n.resolveWith(i,[e,"success",t]),c(r,i,"ajaxSuccess",[t,r,e]),p("success",t,r)}function h(e,t,r,n,i){var o=n.context;n.error.call(o,r,t,e),i&&i.rejectWith(o,[r,t,e]),c(n,o,"ajaxError",[r,n,e||t]),p(t,r,n)}function p(t,r,n){var i=n.context;n.complete.call(i,r,t),c(n,i,"ajaxComplete",[r,n]),function(t){t.global&&!--e.active&&c(t,null,"ajaxStop")}(n)}function m(){}function g(e,t){return""==t?e:(e+"&"+t).replace(/[&?]{1,2}/,"?")}function y(t,r,n,i){return e.isFunction(r)&&(i=n,n=r,r=void 0),e.isFunction(n)||(i=n,n=void 0),{url:t,data:r,success:n,dataType:i}}u.href=window.location.href,e.active=0,e.ajaxJSONP=function(t,r){if(!("type"in t))return e.ajax(t);var o,a,s=t.jsonpCallback,l=(e.isFunction(s)?s():s)||"Zepto"+n++,u=i.createElement("script"),c=window[l],p=function(t){e(u).triggerHandler("error",t||"abort")},m={abort:p};return r&&r.promise(m),e(u).on("load error",(function(n,i){clearTimeout(a),e(u).off().remove(),"error"!=n.type&&o?f(o[0],m,t,r):h(null,i||"error",m,t,r),window[l]=c,o&&e.isFunction(c)&&c(o[0]),c=o=void 0})),!1===d(m,t)?(p("abort"),m):(window[l]=function(){o=arguments},u.src=t.url.replace(/\?(.+)=\?/,"?$1="+l),i.head.appendChild(u),t.timeout>0&&(a=setTimeout((function(){p("timeout")}),t.timeout)),m)},e.ajaxSettings={type:"GET",beforeSend:m,success:m,error:m,complete:m,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:"application/json",xml:"application/xml, text/xml",html:"text/html",text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:m},e.ajax=function(n){var o,p,y=e.extend({},n||{}),v=e.Deferred&&e.Deferred();for(t in e.ajaxSettings)void 0===y[t]&&(y[t]=e.ajaxSettings[t]);!function(t){t.global&&0==e.active++&&c(t,null,"ajaxStart")}(y),y.crossDomain||((o=i.createElement("a")).href=y.url,o.href=o.href,y.crossDomain=u.protocol+"//"+u.host!=o.protocol+"//"+o.host),y.url||(y.url=window.location.toString()),(p=y.url.indexOf("#"))>-1&&(y.url=y.url.slice(0,p)),function(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=g(t.url,t.data),t.data=void 0)}(y);var b=y.dataType,_=/\?.+=\?/.test(y.url);if(_&&(b="jsonp"),!1!==y.cache&&(n&&!0===n.cache||"script"!=b&&"jsonp"!=b)||(y.url=g(y.url,"_="+Date.now())),"jsonp"==b)return _||(y.url=g(y.url,y.jsonp?y.jsonp+"=?":!1===y.jsonp?"":"callback=?")),e.ajaxJSONP(y,v);var A,E=y.accepts[b],T={},S=function(e,t){T[e.toLowerCase()]=[e,t]},w=/^([\w-]+:)\/\//.test(y.url)?RegExp.$1:window.location.protocol,k=y.xhr(),x=k.setRequestHeader;if(v&&v.promise(k),y.crossDomain||S("X-Requested-With","XMLHttpRequest"),S("Accept",E||"*/*"),(E=y.mimeType||E)&&(E.indexOf(",")>-1&&(E=E.split(",",2)[0]),k.overrideMimeType&&k.overrideMimeType(E)),(y.contentType||!1!==y.contentType&&y.data&&"GET"!=y.type.toUpperCase())&&S("Content-Type",y.contentType||"application/x-www-form-urlencoded"),y.headers)for(r in y.headers)S(r,y.headers[r]);if(k.setRequestHeader=S,k.onreadystatechange=function(){if(4==k.readyState){k.onreadystatechange=m,clearTimeout(A);var t,r=!1;if(k.status>=200&&k.status<300||304==k.status||0==k.status&&"file:"==w){if(b=b||function(e){return e&&(e=e.split(";",2)[0]),e&&("text/html"==e?"html":"application/json"==e?"json":a.test(e)?"script":s.test(e)&&"xml")||"text"}(y.mimeType||k.getResponseHeader("content-type")),"arraybuffer"==k.responseType||"blob"==k.responseType)t=k.response;else{t=k.responseText;try{t=function(e,t,r){if(r.dataFilter==m)return e;var n=r.context;return r.dataFilter.call(n,e,t)}(t,b,y),"script"==b?(0,eval)(t):"xml"==b?t=k.responseXML:"json"==b&&(t=l.test(t)?null:e.parseJSON(t))}catch(e){r=e}if(r)return h(r,"parsererror",k,y,v)}f(t,k,y,v)}else h(k.statusText||null,k.status?"error":"abort",k,y,v)}},!1===d(k,y))return k.abort(),h(null,"abort",k,y,v),k;var C=!("async"in y)||y.async;if(k.open(y.type,y.url,C,y.username,y.password),y.xhrFields)for(r in y.xhrFields)k[r]=y.xhrFields[r];for(r in T)x.apply(k,T[r]);return y.timeout>0&&(A=setTimeout((function(){k.onreadystatechange=m,k.abort(),h(null,"timeout",k,y,v)}),y.timeout)),k.send(y.data?y.data:null),k},e.get=function(){return e.ajax(y.apply(null,arguments))},e.post=function(){var t=y.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=y.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,r,n){if(!this.length)return this;var i,a=this,s=t.split(/\s/),l=y(t,r,n),u=l.success;return s.length>1&&(l.url=s[0],i=s[1]),l.success=function(t){a.html(i?e("
").html(t.replace(o,"")).find(i):t),u&&u.apply(a,arguments)},e.ajax(l),this};var v=encodeURIComponent;e.param=function(t,r){var n=[];return n.add=function(t,r){e.isFunction(r)&&(r=r()),null==r&&(r=""),this.push(v(t)+"="+v(r))},function t(r,n,i,o){var a,s=e.isArray(n),l=e.isPlainObject(n);e.each(n,(function(n,u){a=e.type(u),o&&(n=i?o:o+"["+(l||"object"==a||"array"==a?n:"")+"]"),!o&&s?r.add(u.name,u.value):"array"==a||!i&&"object"==a?t(r,u,i,n):r.add(n,u)}))}(n,t,r),n.join("&").replace(/%20/g,"+")}}(n),(r=n).Callbacks=function(e){e=r.extend({},e);var t,n,i,o,a,s,l=[],u=!e.once&&[],c=function(r){for(t=e.memory&&r,n=!0,s=o||0,o=0,a=l.length,i=!0;l&&s-1;)l.splice(n,1),i&&(n<=a&&--a,n<=s&&--s)})),this},has:function(e){return!(!l||!(e?r.inArray(e,l)>-1:l.length))},empty:function(){return a=l.length=0,this},disable:function(){return l=u=t=void 0,this},disabled:function(){return!l},lock:function(){return u=void 0,t||d.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||n&&!u||(t=[e,(t=t||[]).slice?t.slice():t],i?u.push(t):c(t)),this},fire:function(){return d.fireWith(this,arguments)},fired:function(){return!!n}};return d},function(e){var t=Array.prototype.slice;function r(t){var n=[["resolve","done",e.Callbacks({once:1,memory:1}),"resolved"],["reject","fail",e.Callbacks({once:1,memory:1}),"rejected"],["notify","progress",e.Callbacks({memory:1})]],i="pending",o={state:function(){return i},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var t=arguments;return r((function(r){e.each(n,(function(n,i){var s=e.isFunction(t[n])&&t[n];a[i[1]]((function(){var t=s&&s.apply(this,arguments);if(t&&e.isFunction(t.promise))t.promise().done(r.resolve).fail(r.reject).progress(r.notify);else{var n=this===o?r.promise():this,a=s?[t]:arguments;r[i[0]+"With"](n,a)}}))})),t=null})).promise()},promise:function(t){return null!=t?e.extend(t,o):o}},a={};return e.each(n,(function(e,t){var r=t[2],s=t[3];o[t[1]]=r.add,s&&r.add((function(){i=s}),n[1^e][2].disable,n[2][2].lock),a[t[0]]=function(){return a[t[0]+"With"](this===a?o:this,arguments),this},a[t[0]+"With"]=r.fireWith})),o.promise(a),t&&t.call(a,a),a}e.when=function(n){var i,o,a,s=t.call(arguments),l=s.length,u=0,c=1!==l||n&&e.isFunction(n.promise)?l:0,d=1===c?n:r(),f=function(e,r,n){return function(o){r[e]=this,n[e]=arguments.length>1?t.call(arguments):o,n===i?d.notifyWith(r,n):--c||d.resolveWith(r,n)}};if(l>1)for(i=new Array(l),o=new Array(l),a=new Array(l);u-1)return this},has:function(e,r,n){if(t.qsa(this,n).length)return this}},a=new RegExp("(.*):(\\w+)(?:\\(([^)]+)\\))?$\\s*"),s=/^\s*>/,l="Zepto"+ +new Date;function u(e,t){e=e.replace(/=#\]/g,'="#"]');var r,n,i=a.exec(e);if(i&&i[2]in o&&(r=o[i[2]],n=i[3],e=i[1],n)){var s=Number(n);n=isNaN(s)?n.replace(/^["']|["']$/g,""):s}return t(e,r,n)}t.qsa=function(n,i){return u(i,(function(o,a,u){try{var c;!o&&a?o="*":s.test(o)&&(c=e(n).addClass(l),o="."+l+" "+o);var d=r(n,o)}catch(e){throw console.error("error performing selector: %o",i),e}finally{c&&c.removeClass(l)}return a?t.uniq(e.map(d,(function(e,t){return a.call(e,t,d,u)}))):d}))},t.matches=function(e,t){return u(t,(function(t,r,i){return(!t||n(e,t))&&(!r||r.call(e,null,i)===e)}))}}(n),e.exports=n},"./node_modules/core-js/library/fn/array/from.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/library/fn/array/from.js ***! - \*******************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.string.iterator */"./node_modules/core-js/library/modules/es6.string.iterator.js"),r(/*! ../../modules/es6.array.from */"./node_modules/core-js/library/modules/es6.array.from.js"),e.exports=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Array.from},"./node_modules/core-js/library/fn/get-iterator.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/library/fn/get-iterator.js ***! - \*********************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../modules/web.dom.iterable */"./node_modules/core-js/library/modules/web.dom.iterable.js"),r(/*! ../modules/es6.string.iterator */"./node_modules/core-js/library/modules/es6.string.iterator.js"),e.exports=r(/*! ../modules/core.get-iterator */"./node_modules/core-js/library/modules/core.get-iterator.js")},"./node_modules/core-js/library/fn/json/stringify.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/library/fn/json/stringify.js ***! - \***********************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js"),i=n.JSON||(n.JSON={stringify:JSON.stringify});e.exports=function(e){return i.stringify.apply(i,arguments)}},"./node_modules/core-js/library/fn/object/assign.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/library/fn/object/assign.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.object.assign */"./node_modules/core-js/library/modules/es6.object.assign.js"),e.exports=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Object.assign},"./node_modules/core-js/library/fn/object/create.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/library/fn/object/create.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.object.create */"./node_modules/core-js/library/modules/es6.object.create.js");var n=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Object;e.exports=function(e,t){return n.create(e,t)}},"./node_modules/core-js/library/fn/object/define-property.js": -/*!*******************************************************************!*\ - !*** ./node_modules/core-js/library/fn/object/define-property.js ***! - \*******************************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.object.define-property */"./node_modules/core-js/library/modules/es6.object.define-property.js");var n=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Object;e.exports=function(e,t,r){return n.defineProperty(e,t,r)}},"./node_modules/core-js/library/fn/object/get-own-property-descriptor.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***! - \*******************************************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.object.get-own-property-descriptor */"./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");var n=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Object;e.exports=function(e,t){return n.getOwnPropertyDescriptor(e,t)}},"./node_modules/core-js/library/fn/object/keys.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/library/fn/object/keys.js ***! - \********************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.object.keys */"./node_modules/core-js/library/modules/es6.object.keys.js"),e.exports=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Object.keys},"./node_modules/core-js/library/fn/object/set-prototype-of.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/library/fn/object/set-prototype-of.js ***! - \********************************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.object.set-prototype-of */"./node_modules/core-js/library/modules/es6.object.set-prototype-of.js"),e.exports=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf},"./node_modules/core-js/library/fn/symbol/index.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/library/fn/symbol/index.js ***! - \*********************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.symbol */"./node_modules/core-js/library/modules/es6.symbol.js"),r(/*! ../../modules/es6.object.to-string */"./node_modules/core-js/library/modules/es6.object.to-string.js"),r(/*! ../../modules/es7.symbol.async-iterator */"./node_modules/core-js/library/modules/es7.symbol.async-iterator.js"),r(/*! ../../modules/es7.symbol.observable */"./node_modules/core-js/library/modules/es7.symbol.observable.js"),e.exports=r(/*! ../../modules/_core */"./node_modules/core-js/library/modules/_core.js").Symbol},"./node_modules/core-js/library/fn/symbol/iterator.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/fn/symbol/iterator.js ***! - \************************************************************/ -/*! no static exports found */function(e,t,r){r(/*! ../../modules/es6.string.iterator */"./node_modules/core-js/library/modules/es6.string.iterator.js"),r(/*! ../../modules/web.dom.iterable */"./node_modules/core-js/library/modules/web.dom.iterable.js"),e.exports=r(/*! ../../modules/_wks-ext */"./node_modules/core-js/library/modules/_wks-ext.js").f("iterator")},"./node_modules/core-js/library/modules/_a-function.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_a-function.js ***! - \*************************************************************/ -/*! no static exports found */function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},"./node_modules/core-js/library/modules/_add-to-unscopables.js": -/*!*********************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_add-to-unscopables.js ***! - \*********************************************************************/ -/*! no static exports found */function(e,t){e.exports=function(){}},"./node_modules/core-js/library/modules/_an-object.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_an-object.js ***! - \************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_is-object */"./node_modules/core-js/library/modules/_is-object.js");e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},"./node_modules/core-js/library/modules/_array-includes.js": -/*!*****************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_array-includes.js ***! - \*****************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_to-iobject */"./node_modules/core-js/library/modules/_to-iobject.js"),i=r(/*! ./_to-length */"./node_modules/core-js/library/modules/_to-length.js"),o=r(/*! ./_to-index */"./node_modules/core-js/library/modules/_to-index.js");e.exports=function(e){return function(t,r,a){var s,l=n(t),u=i(l.length),c=o(a,u);if(e&&r!=r){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}}},"./node_modules/core-js/library/modules/_classof.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_classof.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_cof */"./node_modules/core-js/library/modules/_cof.js"),i=r(/*! ./_wks */"./node_modules/core-js/library/modules/_wks.js")("toStringTag"),o="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),i))?r:o?n(t):"Object"==(a=n(t))&&"function"==typeof t.callee?"Arguments":a}},"./node_modules/core-js/library/modules/_cof.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_cof.js ***! - \******************************************************/ -/*! no static exports found */function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},"./node_modules/core-js/library/modules/_core.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_core.js ***! - \*******************************************************/ -/*! no static exports found */function(e,t){var r=e.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},"./node_modules/core-js/library/modules/_create-property.js": -/*!******************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_create-property.js ***! - \******************************************************************/ -/*! no static exports found */function(e,t,r){"use strict";var n=r(/*! ./_object-dp */"./node_modules/core-js/library/modules/_object-dp.js"),i=r(/*! ./_property-desc */"./node_modules/core-js/library/modules/_property-desc.js");e.exports=function(e,t,r){t in e?n.f(e,t,i(0,r)):e[t]=r}},"./node_modules/core-js/library/modules/_ctx.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_ctx.js ***! - \******************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_a-function */"./node_modules/core-js/library/modules/_a-function.js");e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},"./node_modules/core-js/library/modules/_defined.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_defined.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},"./node_modules/core-js/library/modules/_descriptors.js": -/*!**************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_descriptors.js ***! - \**************************************************************/ -/*! no static exports found */function(e,t,r){e.exports=!r(/*! ./_fails */"./node_modules/core-js/library/modules/_fails.js")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},"./node_modules/core-js/library/modules/_dom-create.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_dom-create.js ***! - \*************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_is-object */"./node_modules/core-js/library/modules/_is-object.js"),i=r(/*! ./_global */"./node_modules/core-js/library/modules/_global.js").document,o=n(i)&&n(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},"./node_modules/core-js/library/modules/_enum-bug-keys.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_enum-bug-keys.js ***! - \****************************************************************/ -/*! no static exports found */function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"./node_modules/core-js/library/modules/_enum-keys.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_enum-keys.js ***! - \************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_object-keys */"./node_modules/core-js/library/modules/_object-keys.js"),i=r(/*! ./_object-gops */"./node_modules/core-js/library/modules/_object-gops.js"),o=r(/*! ./_object-pie */"./node_modules/core-js/library/modules/_object-pie.js");e.exports=function(e){var t=n(e),r=i.f;if(r)for(var a,s=r(e),l=o.f,u=0;s.length>u;)l.call(e,a=s[u++])&&t.push(a);return t}},"./node_modules/core-js/library/modules/_export.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_export.js ***! - \*********************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_global */"./node_modules/core-js/library/modules/_global.js"),i=r(/*! ./_core */"./node_modules/core-js/library/modules/_core.js"),o=r(/*! ./_ctx */"./node_modules/core-js/library/modules/_ctx.js"),a=r(/*! ./_hide */"./node_modules/core-js/library/modules/_hide.js"),s=function(e,t,r){var l,u,c,d=e&s.F,f=e&s.G,h=e&s.S,p=e&s.P,m=e&s.B,g=e&s.W,y=f?i:i[t]||(i[t]={}),v=y.prototype,b=f?n:h?n[t]:(n[t]||{}).prototype;for(l in f&&(r=t),r)(u=!d&&b&&void 0!==b[l])&&l in y||(c=u?b[l]:r[l],y[l]=f&&"function"!=typeof b[l]?r[l]:m&&u?o(c,n):g&&b[l]==c?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):p&&"function"==typeof c?o(Function.call,c):c,p&&((y.virtual||(y.virtual={}))[l]=c,e&s.R&&v&&!v[l]&&a(v,l,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},"./node_modules/core-js/library/modules/_fails.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_fails.js ***! - \********************************************************/ -/*! no static exports found */function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},"./node_modules/core-js/library/modules/_global.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_global.js ***! - \*********************************************************/ -/*! no static exports found */function(e,t){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},"./node_modules/core-js/library/modules/_has.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_has.js ***! - \******************************************************/ -/*! no static exports found */function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},"./node_modules/core-js/library/modules/_hide.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_hide.js ***! - \*******************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_object-dp */"./node_modules/core-js/library/modules/_object-dp.js"),i=r(/*! ./_property-desc */"./node_modules/core-js/library/modules/_property-desc.js");e.exports=r(/*! ./_descriptors */"./node_modules/core-js/library/modules/_descriptors.js")?function(e,t,r){return n.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},"./node_modules/core-js/library/modules/_html.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_html.js ***! - \*******************************************************/ -/*! no static exports found */function(e,t,r){e.exports=r(/*! ./_global */"./node_modules/core-js/library/modules/_global.js").document&&document.documentElement},"./node_modules/core-js/library/modules/_ie8-dom-define.js": -/*!*****************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***! - \*****************************************************************/ -/*! no static exports found */function(e,t,r){e.exports=!r(/*! ./_descriptors */"./node_modules/core-js/library/modules/_descriptors.js")&&!r(/*! ./_fails */"./node_modules/core-js/library/modules/_fails.js")((function(){return 7!=Object.defineProperty(r(/*! ./_dom-create */"./node_modules/core-js/library/modules/_dom-create.js")("div"),"a",{get:function(){return 7}}).a}))},"./node_modules/core-js/library/modules/_iobject.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iobject.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_cof */"./node_modules/core-js/library/modules/_cof.js");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},"./node_modules/core-js/library/modules/_is-array-iter.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_is-array-iter.js ***! - \****************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_iterators */"./node_modules/core-js/library/modules/_iterators.js"),i=r(/*! ./_wks */"./node_modules/core-js/library/modules/_wks.js")("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(n.Array===e||o[i]===e)}},"./node_modules/core-js/library/modules/_is-array.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_is-array.js ***! - \***********************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_cof */"./node_modules/core-js/library/modules/_cof.js");e.exports=Array.isArray||function(e){return"Array"==n(e)}},"./node_modules/core-js/library/modules/_is-object.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_is-object.js ***! - \************************************************************/ -/*! no static exports found */function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},"./node_modules/core-js/library/modules/_iter-call.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iter-call.js ***! - \************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_an-object */"./node_modules/core-js/library/modules/_an-object.js");e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){var o=e.return;throw void 0!==o&&n(o.call(e)),t}}},"./node_modules/core-js/library/modules/_iter-create.js": -/*!**************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iter-create.js ***! - \**************************************************************/ -/*! no static exports found */function(e,t,r){"use strict";var n=r(/*! ./_object-create */"./node_modules/core-js/library/modules/_object-create.js"),i=r(/*! ./_property-desc */"./node_modules/core-js/library/modules/_property-desc.js"),o=r(/*! ./_set-to-string-tag */"./node_modules/core-js/library/modules/_set-to-string-tag.js"),a={};r(/*! ./_hide */"./node_modules/core-js/library/modules/_hide.js")(a,r(/*! ./_wks */"./node_modules/core-js/library/modules/_wks.js")("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(a,{next:i(1,r)}),o(e,t+" Iterator")}},"./node_modules/core-js/library/modules/_iter-define.js": -/*!**************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iter-define.js ***! - \**************************************************************/ -/*! no static exports found */function(e,t,r){"use strict";var n=r(/*! ./_library */"./node_modules/core-js/library/modules/_library.js"),i=r(/*! ./_export */"./node_modules/core-js/library/modules/_export.js"),o=r(/*! ./_redefine */"./node_modules/core-js/library/modules/_redefine.js"),a=r(/*! ./_hide */"./node_modules/core-js/library/modules/_hide.js"),s=r(/*! ./_has */"./node_modules/core-js/library/modules/_has.js"),l=r(/*! ./_iterators */"./node_modules/core-js/library/modules/_iterators.js"),u=r(/*! ./_iter-create */"./node_modules/core-js/library/modules/_iter-create.js"),c=r(/*! ./_set-to-string-tag */"./node_modules/core-js/library/modules/_set-to-string-tag.js"),d=r(/*! ./_object-gpo */"./node_modules/core-js/library/modules/_object-gpo.js"),f=r(/*! ./_wks */"./node_modules/core-js/library/modules/_wks.js")("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,r,m,g,y,v){u(r,t,m);var b,_,A,E=function(e){if(!h&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},T=t+" Iterator",S="values"==g,w=!1,k=e.prototype,x=k[f]||k["@@iterator"]||g&&k[g],C=x||E(g),R=g?S?E("entries"):C:void 0,j="Array"==t&&k.entries||x;if(j&&(A=d(j.call(new e)))!==Object.prototype&&(c(A,T,!0),n||s(A,f)||a(A,f,p)),S&&x&&"values"!==x.name&&(w=!0,C=function(){return x.call(this)}),n&&!v||!h&&!w&&k[f]||a(k,f,C),l[t]=C,l[T]=p,g)if(b={values:S?C:E("values"),keys:y?C:E("keys"),entries:R},v)for(_ in b)_ in k||o(k,_,b[_]);else i(i.P+i.F*(h||w),t,b);return b}},"./node_modules/core-js/library/modules/_iter-detect.js": -/*!**************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iter-detect.js ***! - \**************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_wks */"./node_modules/core-js/library/modules/_wks.js")("iterator"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var r=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:r=!0}},o[n]=function(){return a},e(o)}catch(e){}return r}},"./node_modules/core-js/library/modules/_iter-step.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iter-step.js ***! - \************************************************************/ -/*! no static exports found */function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},"./node_modules/core-js/library/modules/_iterators.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_iterators.js ***! - \************************************************************/ -/*! no static exports found */function(e,t){e.exports={}},"./node_modules/core-js/library/modules/_keyof.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_keyof.js ***! - \********************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_object-keys */"./node_modules/core-js/library/modules/_object-keys.js"),i=r(/*! ./_to-iobject */"./node_modules/core-js/library/modules/_to-iobject.js");e.exports=function(e,t){for(var r,o=i(e),a=n(o),s=a.length,l=0;s>l;)if(o[r=a[l++]]===t)return r}},"./node_modules/core-js/library/modules/_library.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/library/modules/_library.js ***! - \**********************************************************/ -/*! no static exports found */function(e,t){e.exports=!0},"./node_modules/core-js/library/modules/_meta.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/library/modules/_meta.js ***! - \*******************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_uid */"./node_modules/core-js/library/modules/_uid.js")("meta"),i=r(/*! ./_is-object */"./node_modules/core-js/library/modules/_is-object.js"),o=r(/*! ./_has */"./node_modules/core-js/library/modules/_has.js"),a=r(/*! ./_object-dp */"./node_modules/core-js/library/modules/_object-dp.js").f,s=0,l=Object.isExtensible||function(){return!0},u=!r(/*! ./_fails */"./node_modules/core-js/library/modules/_fails.js")((function(){return l(Object.preventExtensions({}))})),c=function(e){a(e,n,{value:{i:"O"+ ++s,w:{}}})},d=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,n)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[n].i},getWeak:function(e,t){if(!o(e,n)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[n].w},onFreeze:function(e){return u&&d.NEED&&l(e)&&!o(e,n)&&c(e),e}}},"./node_modules/core-js/library/modules/_object-assign.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_object-assign.js ***! - \****************************************************************/ -/*! no static exports found */function(e,t,r){"use strict";var n=r(/*! ./_object-keys */"./node_modules/core-js/library/modules/_object-keys.js"),i=r(/*! ./_object-gops */"./node_modules/core-js/library/modules/_object-gops.js"),o=r(/*! ./_object-pie */"./node_modules/core-js/library/modules/_object-pie.js"),a=r(/*! ./_to-object */"./node_modules/core-js/library/modules/_to-object.js"),s=r(/*! ./_iobject */"./node_modules/core-js/library/modules/_iobject.js"),l=Object.assign;e.exports=!l||r(/*! ./_fails */"./node_modules/core-js/library/modules/_fails.js")((function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach((function(e){t[e]=e})),7!=l({},e)[r]||Object.keys(l({},t)).join("")!=n}))?function(e,t){for(var r=a(e),l=arguments.length,u=1,c=i.f,d=o.f;l>u;)for(var f,h=s(arguments[u++]),p=c?n(h).concat(c(h)):n(h),m=p.length,g=0;m>g;)d.call(h,f=p[g++])&&(r[f]=h[f]);return r}:l},"./node_modules/core-js/library/modules/_object-create.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/library/modules/_object-create.js ***! - \****************************************************************/ -/*! no static exports found */function(e,t,r){var n=r(/*! ./_an-object */"./node_modules/core-js/library/modules/_an-object.js"),i=r(/*! ./_object-dps */"./node_modules/core-js/library/modules/_object-dps.js"),o=r(/*! ./_enum-bug-keys */"./node_modules/core-js/library/modules/_enum-bug-keys.js"),a=r(/*! ./_shared-key */"./node_modules/core-js/library/modules/_shared-key.js")("IE_PROTO"),s=function(){},l=function(){var e,t=r(/*! ./_dom-create */"./node_modules/core-js/library/modules/_dom-create.js")("iframe"),n=o.length;for(t.style.display="none",r(/*! ./_html */"./node_modules/core-js/library/modules/_html.js").appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("\n * \n * ```\n * Now, create the player:\n * ```html\n * \n *
\n * \n * \n * ```\n */\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Player = function (_BaseObject) {\n (0, _inherits3.default)(Player, _BaseObject);\n (0, _createClass3.default)(Player, [{\n key: 'loader',\n set: function set(loader) {\n this._loader = loader;\n },\n get: function get() {\n if (!this._loader) this._loader = new _loader2.default(this.options.plugins || {}, this.options.playerId);\n\n return this._loader;\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this.core.activeContainer.ended;\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return this.core.activeContainer.buffering;\n }\n\n /*\n * determine if the player is ready.\n * @property isReady\n * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n */\n\n }, {\n key: 'isReady',\n get: function get() {\n return !!this._ready;\n }\n\n /**\n * An events map that allows the user to add custom callbacks in player's options.\n * @property eventsMapping\n * @type {Object}\n */\n\n }, {\n key: 'eventsMapping',\n get: function get() {\n return {\n onReady: _events2.default.PLAYER_READY,\n onResize: _events2.default.PLAYER_RESIZE,\n onPlay: _events2.default.PLAYER_PLAY,\n onPause: _events2.default.PLAYER_PAUSE,\n onStop: _events2.default.PLAYER_STOP,\n onEnded: _events2.default.PLAYER_ENDED,\n onSeek: _events2.default.PLAYER_SEEK,\n onError: _events2.default.PLAYER_ERROR,\n onTimeUpdate: _events2.default.PLAYER_TIMEUPDATE,\n onVolumeUpdate: _events2.default.PLAYER_VOLUMEUPDATE,\n onSubtitleAvailable: _events2.default.PLAYER_SUBTITLE_AVAILABLE\n };\n }\n\n /**\n * @typedef {Object} PlaybackConfig\n * @prop {boolean} disableContextMenu\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @prop {boolean} preload\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @prop {boolean} controls\n * enabled/disables displaying controls\n * @prop {boolean} crossOrigin\n * enables cross-origin capability for media-resources\n * @prop {boolean} playInline\n * enables in-line video elements\n * @prop {boolean} audioOnly\n * enforce audio-only playback (when possible)\n * @prop {Object} externalTracks\n * pass externaly loaded track to playback\n * @prop {Number} [maxBufferLength]\n * The default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @prop {Number} [maxBackBufferLength]\n * After how much distance of the playhead data should be pruned from the buffer (influences memory consumption\n * of adaptive media-engines like Hls.js or Shaka)\n * @prop {Number} [minBufferLength]\n * After how much data in the buffer at least we attempt to consume it (influences QoS-related behavior\n * of adaptive media-engines like Hls.js or Shaka). If this is too low, and the available bandwidth is varying a lot\n * and too close to the streamed bitrate, we may continuously hit under-runs.\n * @prop {Number} [initialBandwidthEstimate]\n * define an initial bandwidth \"guess\" (or previously stored/established value) for underlying adaptive-bitreate engines\n * of adaptive playback implementations, like Hls.js or Shaka\n * @prop {Number} [maxAdaptiveBitrate]\n * Limits the streamed bitrate (for adaptive media-engines in underlying playback implementations)\n * @prop {Object} [maxAdaptiveVideoDimensions]\n * Limits the video dimensions in adaptive media-engines. Should be a literal object with `height` and `width`.\n * @prop {Boolean}[enableAutomaticABR] **default**: `true`\n * Allows to enable/disable automatic bitrate switching in adaptive media-engines\n * @prop {String} [preferredTextLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred text language, that may be enabled by the media-engine if available.\n * @prop {String} [preferredAudioLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred audio language, that may be enabled by the media-engine if available.\n */\n\n /**\n * ## Player's constructor\n *\n * You might pass the options object to build the player.\n * ```javascript\n * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n * var player = new Clappr.Player(options);\n * ```\n *\n * @method constructor\n * @param {Object} options Data\n * options to build a player instance\n * @param {Number} [options.width]\n * player's width **default**: `640`\n * @param {Number} [options.height]\n * player's height **default**: `360`\n * @param {String} [options.parentId]\n * the id of the element on the page that the player should be inserted into\n * @param {Object} [options.parent]\n * a reference to a dom element that the player should be inserted into\n * @param {String} [options.source]\n * The media source URL, or {source: <>, mimeType: <>}\n * @param {Object} [options.sources]\n * An array of media source URL's, or an array of {source: <>, mimeType: <>}\n * @param {Boolean} [options.autoPlay]\n * automatically play after page load **default**: `false`\n * @param {Boolean} [options.loop]\n * automatically replay after it ends **default**: `false`\n * @param {Boolean} [options.chromeless]\n * player acts in chromeless mode **default**: `false`\n * @param {Boolean} [options.allowUserInteraction]\n * whether or not the player should handle click events when in chromeless mode **default**: `false` on desktops browsers, `true` on mobile.\n * @param {Boolean} [options.disableKeyboardShortcuts]\n * disable keyboard shortcuts. **default**: `false`. `true` if `allowUserInteraction` is `false`.\n * @param {Boolean} [options.mute]\n * start the video muted **default**: `false`\n * @param {String} [options.mimeType]\n * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n * @param {Boolean} [options.actualLiveTime]\n * show duration and seek time relative to actual time.\n * @param {String} [options.actualLiveServerTime]\n * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n * @param {Boolean} [options.persistConfig]\n * persist player's settings (volume) through the same domain **default**: `true`\n * @param {String} [options.preload] @deprecated\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @param {Number} [options.maxBufferLength] @deprecated\n * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @param {String} [options.gaAccount]\n * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n * @param {String} [options.gaTrackerName]\n * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n * @param {Object} [options.mediacontrol]\n * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n * @param {Boolean} [options.hideMediaControl]\n * control media control auto hide **default**: `true`\n * @param {Boolean} [options.hideVolumeBar]\n * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n * @param {String} [options.watermark]\n * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video.\n * You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n * @param {String} [options.watermarkLink]\n * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable.\n * @param {Boolean} [options.disableVideoTagContextMenu] @deprecated\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @param {Boolean} [options.autoSeekFromUrl]\n * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n * @param {Boolean} [options.exitFullscreenOnEnd]\n * Automatically exit full screen when the media finishes. **default**: `true`\n * @param {String} [options.poster]\n * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n * @param {String} [options.playbackNotSupportedMessage]\n * define a custom message to be displayed when a playback is not supported.\n * @param {Object} [options.events]\n * Specify listeners which will be registered with their corresponding player events.\n * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n * @param {PlaybackConfig} [options.playback]\n * Generic `Playback` component related configuration\n * @param {Boolean} [options.disableErrorScreen]\n * disables the error screen plugin.\n * @param {Number} [options.autoPlayTimeout]\n * autoplay check timeout.\n */\n\n }]);\n\n function Player(options) {\n (0, _classCallCheck3.default)(this, Player);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options));\n\n var playbackDefaultOptions = { recycleVideo: true };\n var defaultOptions = {\n playerId: (0, _utils.uniqueId)(''),\n persistConfig: true,\n width: 640,\n height: 360,\n baseUrl: baseUrl,\n allowUserInteraction: _browser2.default.isMobile,\n playback: playbackDefaultOptions\n };\n _this._options = _clapprZepto2.default.extend(defaultOptions, options);\n _this.options.sources = _this._normalizeSources(options);\n if (!_this.options.chromeless) {\n // \"allowUserInteraction\" cannot be false if not in chromeless mode.\n _this.options.allowUserInteraction = true;\n }\n if (!_this.options.allowUserInteraction) {\n // if user iteraction is not allowed ensure keyboard shortcuts are disabled\n _this.options.disableKeyboardShortcuts = true;\n }\n _this._registerOptionEventListeners(_this.options.events);\n _this._coreFactory = new _core_factory2.default(_this);\n _this.playerInfo = _player_info2.default.getInstance(_this.options.playerId);\n _this.playerInfo.currentSize = { width: options.width, height: options.height };\n _this.playerInfo.options = _this.options;\n if (_this.options.parentId) _this.setParentId(_this.options.parentId);else if (_this.options.parent) _this.attachTo(_this.options.parent);\n\n return _this;\n }\n\n /**\n * Specify a `parentId` to the player.\n * @method setParentId\n * @param {String} parentId the element parent id.\n * @return {Player} itself\n */\n\n\n Player.prototype.setParentId = function setParentId(parentId) {\n var el = document.querySelector(parentId);\n if (el) this.attachTo(el);\n\n return this;\n };\n\n /**\n * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n * @method attachTo\n * @param {Object} element a given element.\n * @return {Player} itself\n */\n\n\n Player.prototype.attachTo = function attachTo(element) {\n this.options.parentElement = element;\n this.core = this._coreFactory.create();\n this._addEventListeners();\n return this;\n };\n\n Player.prototype._addEventListeners = function _addEventListeners() {\n if (!this.core.isReady) this.listenToOnce(this.core, _events2.default.CORE_READY, this._onReady);else this._onReady();\n\n this.listenTo(this.core, _events2.default.CORE_ACTIVE_CONTAINER_CHANGED, this._containerChanged);\n this.listenTo(this.core, _events2.default.CORE_FULLSCREEN, this._onFullscreenChange);\n this.listenTo(this.core, _events2.default.CORE_RESIZE, this._onResize);\n return this;\n };\n\n Player.prototype._addContainerEventListeners = function _addContainerEventListeners() {\n var container = this.core.activeContainer;\n if (container) {\n this.listenTo(container, _events2.default.CONTAINER_PLAY, this._onPlay);\n this.listenTo(container, _events2.default.CONTAINER_PAUSE, this._onPause);\n this.listenTo(container, _events2.default.CONTAINER_STOP, this._onStop);\n this.listenTo(container, _events2.default.CONTAINER_ENDED, this._onEnded);\n this.listenTo(container, _events2.default.CONTAINER_SEEK, this._onSeek);\n this.listenTo(container, _events2.default.CONTAINER_ERROR, this._onError);\n this.listenTo(container, _events2.default.CONTAINER_TIMEUPDATE, this._onTimeUpdate);\n this.listenTo(container, _events2.default.CONTAINER_VOLUME, this._onVolumeUpdate);\n this.listenTo(container, _events2.default.CONTAINER_SUBTITLE_AVAILABLE, this._onSubtitleAvailable);\n }\n return this;\n };\n\n Player.prototype._registerOptionEventListeners = function _registerOptionEventListeners() {\n var _this2 = this;\n\n var newEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var hasNewEvents = (0, _keys2.default)(newEvents).length > 0;\n hasNewEvents && (0, _keys2.default)(events).forEach(function (userEvent) {\n var eventType = _this2.eventsMapping[userEvent];\n eventType && _this2.off(eventType, events[userEvent]);\n });\n\n (0, _keys2.default)(newEvents).forEach(function (userEvent) {\n var eventType = _this2.eventsMapping[userEvent];\n if (eventType) {\n var eventFunction = newEvents[userEvent];\n eventFunction = typeof eventFunction === 'function' && eventFunction;\n eventFunction && _this2.on(eventType, eventFunction);\n }\n });\n return this;\n };\n\n Player.prototype._containerChanged = function _containerChanged() {\n this.stopListening();\n this._addEventListeners();\n };\n\n Player.prototype._onReady = function _onReady() {\n this._ready = true;\n this._addContainerEventListeners();\n this.trigger(_events2.default.PLAYER_READY);\n };\n\n Player.prototype._onFullscreenChange = function _onFullscreenChange(fullscreen) {\n this.trigger(_events2.default.PLAYER_FULLSCREEN, fullscreen);\n };\n\n Player.prototype._onVolumeUpdate = function _onVolumeUpdate(volume) {\n this.trigger(_events2.default.PLAYER_VOLUMEUPDATE, volume);\n };\n\n Player.prototype._onSubtitleAvailable = function _onSubtitleAvailable() {\n this.trigger(_events2.default.PLAYER_SUBTITLE_AVAILABLE);\n };\n\n Player.prototype._onResize = function _onResize(size) {\n this.trigger(_events2.default.PLAYER_RESIZE, size);\n };\n\n Player.prototype._onPlay = function _onPlay() {\n this.trigger(_events2.default.PLAYER_PLAY);\n };\n\n Player.prototype._onPause = function _onPause() {\n this.trigger(_events2.default.PLAYER_PAUSE);\n };\n\n Player.prototype._onStop = function _onStop() {\n this.trigger(_events2.default.PLAYER_STOP, this.getCurrentTime());\n };\n\n Player.prototype._onEnded = function _onEnded() {\n this.trigger(_events2.default.PLAYER_ENDED);\n };\n\n Player.prototype._onSeek = function _onSeek(time) {\n this.trigger(_events2.default.PLAYER_SEEK, time);\n };\n\n Player.prototype._onTimeUpdate = function _onTimeUpdate(timeProgress) {\n this.trigger(_events2.default.PLAYER_TIMEUPDATE, timeProgress);\n };\n\n Player.prototype._onError = function _onError(error) {\n this.trigger(_events2.default.PLAYER_ERROR, error);\n };\n\n Player.prototype._normalizeSources = function _normalizeSources(options) {\n var sources = options.sources || (options.source !== undefined ? [options.source] : []);\n return sources.length === 0 ? [{ source: '', mimeType: '' }] : sources;\n };\n\n /**\n * resizes the current player canvas.\n * @method resize\n * @param {Object} size should be a literal object with `height` and `width`.\n * @return {Player} itself\n * @example\n * ```javascript\n * player.resize({height: 360, width: 640})\n * ```\n */\n\n\n Player.prototype.resize = function resize(size) {\n this.core.resize(size);\n return this;\n };\n\n /**\n * loads a new source.\n * @method load\n * @param {Array|String} sources source or sources of video.\n * An array item can be a string or {source: <>, mimeType: <>}\n * @param {String} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n * @param {Boolean} [autoPlay=false] whether playing should be started immediately\n * @return {Player} itself\n */\n\n\n Player.prototype.load = function load(sources, mimeType, autoPlay) {\n if (autoPlay !== undefined) this.configure({ autoPlay: !!autoPlay });\n\n this.core.load(sources, mimeType);\n return this;\n };\n\n /**\n * destroys the current player and removes it from the DOM.\n * @method destroy\n * @return {Player} itself\n */\n\n\n Player.prototype.destroy = function destroy() {\n this.stopListening();\n this.core.destroy();\n return this;\n };\n\n /**\n * Gives user consent to playback. Required by mobile device after a click event before Player.load().\n * @method consent\n * @return {Player} itself\n */\n\n\n Player.prototype.consent = function consent() {\n this.core.getCurrentPlayback().consent();\n return this;\n };\n\n /**\n * plays the current video (`source`).\n * @method play\n * @return {Player} itself\n */\n\n\n Player.prototype.play = function play() {\n this.core.activeContainer.play();\n return this;\n };\n\n /**\n * pauses the current video (`source`).\n * @method pause\n * @return {Player} itself\n */\n\n\n Player.prototype.pause = function pause() {\n this.core.activeContainer.pause();\n return this;\n };\n\n /**\n * stops the current video (`source`).\n * @method stop\n * @return {Player} itself\n */\n\n\n Player.prototype.stop = function stop() {\n this.core.activeContainer.stop();\n return this;\n };\n\n /**\n * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration.\n * @return {Player} itself\n */\n\n\n Player.prototype.seek = function seek(time) {\n this.core.activeContainer.seek(time);\n return this;\n };\n\n /**\n * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100.\n * @return {Player} itself\n */\n\n\n Player.prototype.seekPercentage = function seekPercentage(percentage) {\n this.core.activeContainer.seekPercentage(percentage);\n return this;\n };\n\n /**\n * mutes the current video (`source`).\n * @method mute\n * @return {Player} itself\n */\n\n\n Player.prototype.mute = function mute() {\n this._mutedVolume = this.getVolume();\n this.setVolume(0);\n return this;\n };\n\n /**\n * unmutes the current video (`source`).\n * @method unmute\n * @return {Player} itself\n */\n\n\n Player.prototype.unmute = function unmute() {\n this.setVolume(typeof this._mutedVolume === 'number' ? this._mutedVolume : 100);\n this._mutedVolume = null;\n return this;\n };\n\n /**\n * checks if the player is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current source is playing, otherwise `false`\n */\n\n\n Player.prototype.isPlaying = function isPlaying() {\n return this.core.activeContainer.isPlaying();\n };\n\n /**\n * returns `true` if DVR is enable otherwise `false`.\n * @method isDvrEnabled\n * @return {Boolean}\n */\n\n\n Player.prototype.isDvrEnabled = function isDvrEnabled() {\n return this.core.activeContainer.isDvrEnabled();\n };\n\n /**\n * returns `true` if DVR is in use otherwise `false`.\n * @method isDvrInUse\n * @return {Boolean}\n */\n\n\n Player.prototype.isDvrInUse = function isDvrInUse() {\n return this.core.activeContainer.isDvrInUse();\n };\n\n /**\n * enables to configure a player after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n * @return {Player} itself\n */\n\n\n Player.prototype.configure = function configure() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._registerOptionEventListeners(options.events, this.options.events);\n this.core.configure(options);\n return this;\n };\n\n /**\n * get a plugin by its name.\n * @method getPlugin\n * @param {String} name of the plugin.\n * @return {Object} the plugin instance\n * @example\n * ```javascript\n * var poster = player.getPlugin('poster');\n * poster.hidePlayButton();\n * ```\n */\n\n\n Player.prototype.getPlugin = function getPlugin(name) {\n var plugins = this.core.plugins.concat(this.core.activeContainer.plugins);\n return plugins.filter(function (plugin) {\n return plugin.name === name;\n })[0];\n };\n\n /**\n * the current time in seconds.\n * @method getCurrentTime\n * @return {Number} current time (in seconds) of the current source\n */\n\n\n Player.prototype.getCurrentTime = function getCurrentTime() {\n return this.core.activeContainer.getCurrentTime();\n };\n\n /**\n * The time that \"0\" now represents relative to when playback started.\n * For a stream with a sliding window this will increase as content is\n * removed from the beginning.\n * @method getStartTimeOffset\n * @return {Number} time (in seconds) that time \"0\" represents.\n */\n\n\n Player.prototype.getStartTimeOffset = function getStartTimeOffset() {\n return this.core.activeContainer.getStartTimeOffset();\n };\n\n /**\n * the duration time in seconds.\n * @method getDuration\n * @return {Number} duration time (in seconds) of the current source\n */\n\n\n Player.prototype.getDuration = function getDuration() {\n return this.core.activeContainer.getDuration();\n };\n\n return Player;\n}(_base_object2.default);\n\nexports.default = Player;\n\n\n(0, _assign2.default)(Player.prototype, _error_mixin2.default);\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/components/player_info.js\":\n/*!***************************************!*\\\n !*** ./src/components/player_info.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar PlayerInfo = function PlayerInfo() {\n (0, _classCallCheck3.default)(this, PlayerInfo);\n\n this.options = {};\n this.playbackPlugins = [];\n this.currentSize = { width: 0, height: 0 };\n};\n\nPlayerInfo._players = {};\n\nPlayerInfo.getInstance = function (playerId) {\n return PlayerInfo._players[playerId] || (PlayerInfo._players[playerId] = new PlayerInfo());\n};\n\nexports.default = PlayerInfo;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n\n/***/ \"./src/icons/01-play.svg\":\n/*!*******************************!*\\\n !*** ./src/icons/01-play.svg ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/02-pause.svg\":\n/*!********************************!*\\\n !*** ./src/icons/02-pause.svg ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/03-stop.svg\":\n/*!*******************************!*\\\n !*** ./src/icons/03-stop.svg ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/04-volume.svg\":\n/*!*********************************!*\\\n !*** ./src/icons/04-volume.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/05-mute.svg\":\n/*!*******************************!*\\\n !*** ./src/icons/05-mute.svg ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/06-expand.svg\":\n/*!*********************************!*\\\n !*** ./src/icons/06-expand.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/07-shrink.svg\":\n/*!*********************************!*\\\n !*** ./src/icons/07-shrink.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/08-hd.svg\":\n/*!*****************************!*\\\n !*** ./src/icons/08-hd.svg ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/09-cc.svg\":\n/*!*****************************!*\\\n !*** ./src/icons/09-cc.svg ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/icons/10-reload.svg\":\n/*!*********************************!*\\\n !*** ./src/icons/10-reload.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\"\n\n/***/ }),\n\n/***/ \"./src/main.js\":\n/*!*********************!*\\\n !*** ./src/main.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _player = __webpack_require__(/*! ./components/player */ \"./src/components/player.js\");\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _utils = __webpack_require__(/*! ./base/utils */ \"./src/base/utils.js\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _events = __webpack_require__(/*! ./base/events */ \"./src/base/events.js\");\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(/*! ./base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _container_plugin = __webpack_require__(/*! ./base/container_plugin */ \"./src/base/container_plugin.js\");\n\nvar _container_plugin2 = _interopRequireDefault(_container_plugin);\n\nvar _core_plugin = __webpack_require__(/*! ./base/core_plugin */ \"./src/base/core_plugin.js\");\n\nvar _core_plugin2 = _interopRequireDefault(_core_plugin);\n\nvar _ui_core_plugin = __webpack_require__(/*! ./base/ui_core_plugin */ \"./src/base/ui_core_plugin.js\");\n\nvar _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin);\n\nvar _ui_container_plugin = __webpack_require__(/*! ./base/ui_container_plugin */ \"./src/base/ui_container_plugin.js\");\n\nvar _ui_container_plugin2 = _interopRequireDefault(_ui_container_plugin);\n\nvar _base_object = __webpack_require__(/*! ./base/base_object */ \"./src/base/base_object.js\");\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _ui_object = __webpack_require__(/*! ./base/ui_object */ \"./src/base/ui_object.js\");\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _browser = __webpack_require__(/*! ./components/browser */ \"./src/components/browser/index.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _container = __webpack_require__(/*! ./components/container */ \"./src/components/container/index.js\");\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _core = __webpack_require__(/*! ./components/core */ \"./src/components/core/index.js\");\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _error = __webpack_require__(/*! ./components/error */ \"./src/components/error/index.js\");\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _loader = __webpack_require__(/*! ./components/loader */ \"./src/components/loader/index.js\");\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _mediator = __webpack_require__(/*! ./components/mediator */ \"./src/components/mediator.js\");\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nvar _player_info = __webpack_require__(/*! ./components/player_info */ \"./src/components/player_info.js\");\n\nvar _player_info2 = _interopRequireDefault(_player_info);\n\nvar _base_flash_playback = __webpack_require__(/*! ./playbacks/base_flash_playback */ \"./src/playbacks/base_flash_playback/index.js\");\n\nvar _base_flash_playback2 = _interopRequireDefault(_base_flash_playback);\n\nvar _flash = __webpack_require__(/*! ./playbacks/flash */ \"./src/playbacks/flash/index.js\");\n\nvar _flash2 = _interopRequireDefault(_flash);\n\nvar _flashls = __webpack_require__(/*! ./playbacks/flashls */ \"./src/playbacks/flashls/index.js\");\n\nvar _flashls2 = _interopRequireDefault(_flashls);\n\nvar _hls = __webpack_require__(/*! ./playbacks/hls */ \"./src/playbacks/hls/index.js\");\n\nvar _hls2 = _interopRequireDefault(_hls);\n\nvar _html5_audio = __webpack_require__(/*! ./playbacks/html5_audio */ \"./src/playbacks/html5_audio/index.js\");\n\nvar _html5_audio2 = _interopRequireDefault(_html5_audio);\n\nvar _html5_video = __webpack_require__(/*! ./playbacks/html5_video */ \"./src/playbacks/html5_video/index.js\");\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nvar _html_img = __webpack_require__(/*! ./playbacks/html_img */ \"./src/playbacks/html_img/index.js\");\n\nvar _html_img2 = _interopRequireDefault(_html_img);\n\nvar _no_op = __webpack_require__(/*! ./playbacks/no_op */ \"./src/playbacks/no_op/index.js\");\n\nvar _no_op2 = _interopRequireDefault(_no_op);\n\nvar _media_control = __webpack_require__(/*! ./plugins/media_control */ \"./src/plugins/media_control/index.js\");\n\nvar _media_control2 = _interopRequireDefault(_media_control);\n\nvar _click_to_pause = __webpack_require__(/*! ./plugins/click_to_pause */ \"./src/plugins/click_to_pause/index.js\");\n\nvar _click_to_pause2 = _interopRequireDefault(_click_to_pause);\n\nvar _dvr_controls = __webpack_require__(/*! ./plugins/dvr_controls */ \"./src/plugins/dvr_controls/index.js\");\n\nvar _dvr_controls2 = _interopRequireDefault(_dvr_controls);\n\nvar _favicon = __webpack_require__(/*! ./plugins/favicon */ \"./src/plugins/favicon/index.js\");\n\nvar _favicon2 = _interopRequireDefault(_favicon);\n\nvar _log = __webpack_require__(/*! ./plugins/log */ \"./src/plugins/log/index.js\");\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _poster = __webpack_require__(/*! ./plugins/poster */ \"./src/plugins/poster/index.js\");\n\nvar _poster2 = _interopRequireDefault(_poster);\n\nvar _spinner_three_bounce = __webpack_require__(/*! ./plugins/spinner_three_bounce */ \"./src/plugins/spinner_three_bounce/index.js\");\n\nvar _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce);\n\nvar _watermark = __webpack_require__(/*! ./plugins/watermark */ \"./src/plugins/watermark/index.js\");\n\nvar _watermark2 = _interopRequireDefault(_watermark);\n\nvar _styler = __webpack_require__(/*! ./base/styler */ \"./src/base/styler.js\");\n\nvar _styler2 = _interopRequireDefault(_styler);\n\nvar _vendor = __webpack_require__(/*! ./vendor */ \"./src/vendor/index.js\");\n\nvar _vendor2 = _interopRequireDefault(_vendor);\n\nvar _template = __webpack_require__(/*! ./base/template */ \"./src/base/template.js\");\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ \"./node_modules/clappr-zepto/zepto.js\");\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar version = \"0.3.12\"; // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = {\n Player: _player2.default,\n Mediator: _mediator2.default,\n Events: _events2.default,\n Browser: _browser2.default,\n PlayerInfo: _player_info2.default,\n MediaControl: _media_control2.default,\n ContainerPlugin: _container_plugin2.default,\n UIContainerPlugin: _ui_container_plugin2.default,\n CorePlugin: _core_plugin2.default,\n UICorePlugin: _ui_core_plugin2.default,\n Playback: _playback2.default,\n Container: _container2.default,\n Core: _core2.default,\n PlayerError: _error2.default,\n Loader: _loader2.default,\n BaseObject: _base_object2.default,\n UIObject: _ui_object2.default,\n Utils: _utils2.default,\n BaseFlashPlayback: _base_flash_playback2.default,\n Flash: _flash2.default,\n FlasHLS: _flashls2.default,\n HLS: _hls2.default,\n HTML5Audio: _html5_audio2.default,\n HTML5Video: _html5_video2.default,\n HTMLImg: _html_img2.default,\n NoOp: _no_op2.default,\n ClickToPausePlugin: _click_to_pause2.default,\n DVRControls: _dvr_controls2.default,\n Favicon: _favicon2.default,\n Log: _log2.default,\n Poster: _poster2.default,\n SpinnerThreeBouncePlugin: _spinner_three_bounce2.default,\n WaterMarkPlugin: _watermark2.default,\n Styler: _styler2.default,\n Vendor: _vendor2.default,\n version: version,\n template: _template2.default,\n $: _clapprZepto2.default\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/base_flash_playback/base_flash_playback.js\":\n/*!******************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/base_flash_playback.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _playback = __webpack_require__(/*! ../../base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _template = __webpack_require__(/*! ../../base/template */ \"./src/base/template.js\");\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _browser = __webpack_require__(/*! ../../components/browser */ \"./src/components/browser/index.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _flash = __webpack_require__(/*! ./public/flash.html */ \"./src/playbacks/base_flash_playback/public/flash.html\");\n\nvar _flash2 = _interopRequireDefault(_flash);\n\n__webpack_require__(/*! ./public/flash.scss */ \"./src/playbacks/base_flash_playback/public/flash.scss\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar IE_CLASSID = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'; // Copyright 2015 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar BaseFlashPlayback = function (_Playback) {\n (0, _inherits3.default)(BaseFlashPlayback, _Playback);\n\n function BaseFlashPlayback() {\n (0, _classCallCheck3.default)(this, BaseFlashPlayback);\n return (0, _possibleConstructorReturn3.default)(this, _Playback.apply(this, arguments));\n }\n\n BaseFlashPlayback.prototype.setElement = function setElement(element) {\n this.$el = element;\n this.el = element[0];\n };\n\n BaseFlashPlayback.prototype.render = function render() {\n this.$el.attr('data', this.swfPath);\n this.$el.html(this.template({\n cid: this.cid,\n swfPath: this.swfPath,\n baseUrl: this.baseUrl,\n playbackId: this.uniqueId,\n wmode: this.wmode,\n callbackName: 'window.Clappr.flashlsCallbacks.' + this.cid }));\n\n if (_browser2.default.isIE) {\n this.$('embed').remove();\n\n if (_browser2.default.isLegacyIE) this.$el.attr('classid', IE_CLASSID);\n }\n\n this.el.id = this.cid;\n\n return this;\n };\n\n (0, _createClass3.default)(BaseFlashPlayback, [{\n key: 'tagName',\n get: function get() {\n return 'object';\n }\n }, {\n key: 'swfPath',\n get: function get() {\n return '';\n }\n }, {\n key: 'wmode',\n get: function get() {\n return 'transparent';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_flash2.default);\n }\n }, {\n key: 'attributes',\n get: function get() {\n var type = 'application/x-shockwave-flash';\n\n if (_browser2.default.isLegacyIE) type = '';\n\n return {\n class: 'clappr-flash-playback',\n type: type,\n width: '100%',\n height: '100%',\n data: this.swfPath,\n 'data-flash-playback': this.name\n };\n }\n }]);\n return BaseFlashPlayback;\n}(_playback2.default);\n\nexports.default = BaseFlashPlayback;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/base_flash_playback/index.js\":\n/*!****************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/index.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = __webpack_require__(/*! ./base_flash_playback */ \"./src/playbacks/base_flash_playback/base_flash_playback.js\");\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/base_flash_playback/public/flash.html\":\n/*!*************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/public/flash.html ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\\">\\n\\n\\n\\n\\n\\n\\\">\\n\\n&callback=<%= callbackName %>\\\">\\n\\\"\\n type=\\\"application/x-shockwave-flash\\\"\\n disabled=\\\"disabled\\\"\\n tabindex=\\\"-1\\\"\\n enablecontextmenu=\\\"false\\\"\\n allowScriptAccess=\\\"always\\\"\\n quality=\\\"autohigh\\\"\\n pluginspage=\\\"http://www.macromedia.com/go/getflashplayer\\\"\\n wmode=\\\"<%= wmode %>\\\"\\n swliveconnect=\\\"true\\\"\\n allowfullscreen=\\\"false\\\"\\n bgcolor=\\\"#000000\\\"\\n FlashVars=\\\"playbackId=<%= playbackId %>&callback=<%= callbackName %>\\\"\\n data=\\\"<%= swfPath %>\\\"\\n src=\\\"<%= swfPath %>\\\"\\n width=\\\"100%\\\"\\n height=\\\"100%\\\">\\n\\n\";\n\n/***/ }),\n\n/***/ \"./src/playbacks/base_flash_playback/public/flash.scss\":\n/*!*************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/public/flash.scss ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader!../../../../node_modules/postcss-loader/lib!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno/workspace/clappr/clappr/src/base/scss!./flash.scss */ \"./node_modules/css-loader/index.js!./node_modules/postcss-loader/lib/index.js!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno/workspace/clappr/clappr/src/base/scss!./src/playbacks/base_flash_playback/public/flash.scss\");\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(/*! ../../../../node_modules/style-loader/lib/addStyles.js */ \"./node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n/***/ }),\n\n/***/ \"./src/playbacks/flash/flash.js\":\n/*!**************************************!*\\\n !*** ./src/playbacks/flash/flash.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(/*! ../../base/utils */ \"./src/base/utils.js\");\n\nvar _base_flash_playback = __webpack_require__(/*! ../../playbacks/base_flash_playback */ \"./src/playbacks/base_flash_playback/index.js\");\n\nvar _base_flash_playback2 = _interopRequireDefault(_base_flash_playback);\n\nvar _browser = __webpack_require__(/*! ../../components/browser */ \"./src/components/browser/index.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _mediator = __webpack_require__(/*! ../../components/mediator */ \"./src/components/mediator.js\");\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nvar _template = __webpack_require__(/*! ../../base/template */ \"./src/base/template.js\");\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ \"./node_modules/clappr-zepto/zepto.js\");\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _events = __webpack_require__(/*! ../../base/events */ \"./src/base/events.js\");\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(/*! ../../base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _Player = __webpack_require__(/*! ./public/Player.swf */ \"./src/playbacks/flash/public/Player.swf\");\n\nvar _Player2 = _interopRequireDefault(_Player);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MAX_ATTEMPTS = 60; // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Flash = function (_BaseFlashPlayback) {\n (0, _inherits3.default)(Flash, _BaseFlashPlayback);\n (0, _createClass3.default)(Flash, [{\n key: 'name',\n get: function get() {\n return 'flash';\n }\n }, {\n key: 'swfPath',\n get: function get() {\n return (0, _template2.default)(_Player2.default)({ baseUrl: this._baseUrl });\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this._currentState === 'ENDED';\n }\n\n /**\n * Determine if the playback is buffering.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return !!this._bufferingState && this._currentState !== 'ENDED';\n }\n }]);\n\n function Flash() {\n (0, _classCallCheck3.default)(this, Flash);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseFlashPlayback.call.apply(_BaseFlashPlayback, [this].concat(args)));\n\n _this._src = _this.options.src;\n _this._baseUrl = _this.options.baseUrl;\n _this._autoPlay = _this.options.autoPlay;\n _this.settings = { default: ['seekbar'] };\n _this.settings.left = ['playpause', 'position', 'duration'];\n _this.settings.right = ['fullscreen', 'volume'];\n _this.settings.seekEnabled = true;\n _this._isReadyState = false;\n _this._addListeners();\n return _this;\n }\n\n Flash.prototype._bootstrap = function _bootstrap() {\n var _this2 = this;\n\n if (this.el.playerPlay) {\n this.el.width = '100%';\n this.el.height = '100%';\n if (this._currentState === 'PLAYING') {\n this._firstPlay();\n } else {\n this._currentState = 'IDLE';\n this._autoPlay && this.play();\n }\n (0, _clapprZepto2.default)('
').insertAfter(this.$el);\n if (this.getDuration() > 0) this._metadataLoaded();else _mediator2.default.once(this.uniqueId + ':timeupdate', this._metadataLoaded, this);\n } else {\n this._attempts = this._attempts || 0;\n if (++this._attempts <= MAX_ATTEMPTS) setTimeout(function () {\n return _this2._bootstrap();\n }, 50);else this.trigger(_events2.default.PLAYBACK_ERROR, { message: 'Max number of attempts reached' }, this.name);\n }\n };\n\n Flash.prototype._metadataLoaded = function _metadataLoaded() {\n this._isReadyState = true;\n this.trigger(_events2.default.PLAYBACK_READY, this.name);\n this.trigger(_events2.default.PLAYBACK_SETTINGSUPDATE, this.name);\n };\n\n Flash.prototype.getPlaybackType = function getPlaybackType() {\n return _playback2.default.VOD;\n };\n\n Flash.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() {\n return false;\n };\n\n Flash.prototype._updateTime = function _updateTime() {\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: this.el.getPosition(), total: this.el.getDuration() }, this.name);\n };\n\n Flash.prototype._addListeners = function _addListeners() {\n _mediator2.default.on(this.uniqueId + ':progress', this._progress, this);\n _mediator2.default.on(this.uniqueId + ':timeupdate', this._updateTime, this);\n _mediator2.default.on(this.uniqueId + ':statechanged', this._checkState, this);\n _mediator2.default.on(this.uniqueId + ':flashready', this._bootstrap, this);\n };\n\n Flash.prototype.stopListening = function stopListening() {\n _BaseFlashPlayback.prototype.stopListening.call(this);\n _mediator2.default.off(this.uniqueId + ':progress');\n _mediator2.default.off(this.uniqueId + ':timeupdate');\n _mediator2.default.off(this.uniqueId + ':statechanged');\n _mediator2.default.off(this.uniqueId + ':flashready');\n };\n\n Flash.prototype._checkState = function _checkState() {\n if (this._isIdle || this._currentState === 'PAUSED') {\n return;\n } else if (this._currentState !== 'PLAYING_BUFFERING' && this.el.getState() === 'PLAYING_BUFFERING') {\n this._bufferingState = true;\n this.trigger(_events2.default.PLAYBACK_BUFFERING, this.name);\n this._currentState = 'PLAYING_BUFFERING';\n } else if (this.el.getState() === 'PLAYING') {\n this._bufferingState = false;\n this.trigger(_events2.default.PLAYBACK_BUFFERFULL, this.name);\n this._currentState = 'PLAYING';\n } else if (this.el.getState() === 'IDLE') {\n this._currentState = 'IDLE';\n } else if (this.el.getState() === 'ENDED') {\n this.trigger(_events2.default.PLAYBACK_ENDED, this.name);\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: 0, total: this.el.getDuration() }, this.name);\n this._currentState = 'ENDED';\n this._isIdle = true;\n }\n };\n\n Flash.prototype._progress = function _progress() {\n if (this._currentState !== 'IDLE' && this._currentState !== 'ENDED') {\n this.trigger(_events2.default.PLAYBACK_PROGRESS, {\n start: 0,\n current: this.el.getBytesLoaded(),\n total: this.el.getBytesTotal()\n });\n }\n };\n\n Flash.prototype._firstPlay = function _firstPlay() {\n var _this3 = this;\n\n if (this.el.playerPlay) {\n this._isIdle = false;\n this.el.playerPlay(this._src);\n this.listenToOnce(this, _events2.default.PLAYBACK_BUFFERFULL, function () {\n return _this3._checkInitialSeek();\n });\n this._currentState = 'PLAYING';\n } else {\n this.listenToOnce(this, _events2.default.PLAYBACK_READY, this._firstPlay);\n }\n };\n\n Flash.prototype._checkInitialSeek = function _checkInitialSeek() {\n var seekTime = (0, _utils.seekStringToSeconds)(window.location.href);\n if (seekTime !== 0) this.seekSeconds(seekTime);\n };\n\n Flash.prototype.play = function play() {\n this.trigger(_events2.default.PLAYBACK_PLAY_INTENT);\n if (this._currentState === 'PAUSED' || this._currentState === 'PLAYING_BUFFERING') {\n this._currentState = 'PLAYING';\n this.el.playerResume();\n this.trigger(_events2.default.PLAYBACK_PLAY, this.name);\n } else if (this._currentState !== 'PLAYING') {\n this._firstPlay();\n this.trigger(_events2.default.PLAYBACK_PLAY, this.name);\n }\n };\n\n Flash.prototype.volume = function volume(value) {\n var _this4 = this;\n\n if (this.isReady) this.el.playerVolume(value);else this.listenToOnce(this, _events2.default.PLAYBACK_BUFFERFULL, function () {\n return _this4.volume(value);\n });\n };\n\n Flash.prototype.pause = function pause() {\n this._currentState = 'PAUSED';\n this.el.playerPause();\n this.trigger(_events2.default.PLAYBACK_PAUSE, this.name);\n };\n\n Flash.prototype.stop = function stop() {\n this.el.playerStop();\n this.trigger(_events2.default.PLAYBACK_STOP);\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: 0, total: 0 }, this.name);\n };\n\n Flash.prototype.isPlaying = function isPlaying() {\n return !!(this.isReady && this._currentState.indexOf('PLAYING') > -1);\n };\n\n Flash.prototype.getDuration = function getDuration() {\n return this.el.getDuration();\n };\n\n Flash.prototype.seekPercentage = function seekPercentage(percentage) {\n var _this5 = this;\n\n if (this.el.getDuration() > 0) {\n var seekSeconds = this.el.getDuration() * (percentage / 100);\n this.seek(seekSeconds);\n } else {\n this.listenToOnce(this, _events2.default.PLAYBACK_BUFFERFULL, function () {\n return _this5.seekPercentage(percentage);\n });\n }\n };\n\n Flash.prototype.seek = function seek(time) {\n var _this6 = this;\n\n if (this.isReady && this.el.playerSeek) {\n this.el.playerSeek(time);\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: time, total: this.el.getDuration() }, this.name);\n if (this._currentState === 'PAUSED') this.el.playerPause();\n } else {\n this.listenToOnce(this, _events2.default.PLAYBACK_BUFFERFULL, function () {\n return _this6.seek(time);\n });\n }\n };\n\n Flash.prototype.destroy = function destroy() {\n clearInterval(this.bootstrapId);\n _BaseFlashPlayback.prototype.stopListening.call(this);\n this.$el.remove();\n };\n\n (0, _createClass3.default)(Flash, [{\n key: 'isReady',\n get: function get() {\n return this._isReadyState;\n }\n }]);\n return Flash;\n}(_base_flash_playback2.default);\n\nexports.default = Flash;\n\n\nFlash.canPlay = function (resource) {\n if (!_browser2.default.hasFlash || !resource || resource.constructor !== String) {\n return false;\n } else {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n return resourceParts.length > 1 && !_browser2.default.isMobile && resourceParts[1].toLowerCase().match(/^(mp4|mov|f4v|3gpp|3gp)$/);\n }\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/flash/index.js\":\n/*!**************************************!*\\\n !*** ./src/playbacks/flash/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _flash = __webpack_require__(/*! ./flash */ \"./src/playbacks/flash/flash.js\");\n\nvar _flash2 = _interopRequireDefault(_flash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _flash2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/flash/public/Player.swf\":\n/*!***********************************************!*\\\n !*** ./src/playbacks/flash/public/Player.swf ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<%=baseUrl%>/4b76590b32dab62bc95c1b7951efae78.swf\";\n\n/***/ }),\n\n/***/ \"./src/playbacks/flashls/flashls.js\":\n/*!******************************************!*\\\n !*** ./src/playbacks/flashls/flashls.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _base_flash_playback = __webpack_require__(/*! ../../playbacks/base_flash_playback */ \"./src/playbacks/base_flash_playback/index.js\");\n\nvar _base_flash_playback2 = _interopRequireDefault(_base_flash_playback);\n\nvar _events = __webpack_require__(/*! ../../base/events */ \"./src/base/events.js\");\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _template = __webpack_require__(/*! ../../base/template */ \"./src/base/template.js\");\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _playback = __webpack_require__(/*! ../../base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _mediator = __webpack_require__(/*! ../../components/mediator */ \"./src/components/mediator.js\");\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nvar _browser = __webpack_require__(/*! ../../components/browser */ \"./src/components/browser/index.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _error = __webpack_require__(/*! ../../components/error */ \"./src/components/error/index.js\");\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _flashls_events = __webpack_require__(/*! ./flashls_events */ \"./src/playbacks/flashls/flashls_events.js\");\n\nvar _flashls_events2 = _interopRequireDefault(_flashls_events);\n\nvar _HLSPlayer = __webpack_require__(/*! ./public/HLSPlayer.swf */ \"./src/playbacks/flashls/public/HLSPlayer.swf\");\n\nvar _HLSPlayer2 = _interopRequireDefault(_HLSPlayer);\n\nvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ \"./node_modules/clappr-zepto/zepto.js\");\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar MAX_ATTEMPTS = 60;\nvar AUTO = -1;\n\nvar FlasHLS = function (_BaseFlashPlayback) {\n (0, _inherits3.default)(FlasHLS, _BaseFlashPlayback);\n (0, _createClass3.default)(FlasHLS, [{\n key: 'name',\n get: function get() {\n return 'flashls';\n }\n }, {\n key: 'swfPath',\n get: function get() {\n return (0, _template2.default)(_HLSPlayer2.default)({ baseUrl: this._baseUrl });\n }\n }, {\n key: 'levels',\n get: function get() {\n return this._levels || [];\n }\n }, {\n key: 'currentLevel',\n get: function get() {\n if (this._currentLevel === null || this._currentLevel === undefined) return AUTO;else return this._currentLevel; //0 is a valid level ID\n },\n set: function set(id) {\n this._currentLevel = id;\n this.trigger(_events2.default.PLAYBACK_LEVEL_SWITCH_START);\n this.el.playerSetCurrentLevel(id);\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this._hasEnded;\n }\n\n /**\n * Determine if the playback is buffering.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return !!this._bufferingState && !this._hasEnded;\n }\n }]);\n\n function FlasHLS() {\n (0, _classCallCheck3.default)(this, FlasHLS);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseFlashPlayback.call.apply(_BaseFlashPlayback, [this].concat(args)));\n\n _this._src = _this.options.src;\n _this._baseUrl = _this.options.baseUrl;\n _this._initHlsParameters(_this.options);\n // TODO can this be private?\n _this.highDefinition = false;\n _this._autoPlay = _this.options.autoPlay;\n _this._loop = _this.options.loop;\n _this._defaultSettings = {\n left: ['playstop'],\n default: ['seekbar'],\n right: ['fullscreen', 'volume', 'hd-indicator'],\n seekEnabled: false\n };\n _this.settings = _clapprZepto2.default.extend({}, _this._defaultSettings);\n _this._playbackType = _playback2.default.LIVE;\n _this._hasEnded = false;\n _this._addListeners();\n return _this;\n }\n\n FlasHLS.prototype._initHlsParameters = function _initHlsParameters(options) {\n this._autoStartLoad = options.autoStartLoad === undefined ? true : options.autoStartLoad;\n this._capLevelToStage = options.capLevelToStage === undefined ? false : options.capLevelToStage;\n this._maxLevelCappingMode = options.maxLevelCappingMode === undefined ? 'downscale' : options.maxLevelCappingMode;\n this._minBufferLength = options.minBufferLength === undefined ? -1 : options.minBufferLength;\n this._minBufferLengthCapping = options.minBufferLengthCapping === undefined ? -1 : options.minBufferLengthCapping;\n this._maxBufferLength = options.maxBufferLength === undefined ? 120 : options.maxBufferLength;\n this._maxBackBufferLength = options.maxBackBufferLength === undefined ? 30 : options.maxBackBufferLength;\n this._lowBufferLength = options.lowBufferLength === undefined ? 3 : options.lowBufferLength;\n this._mediaTimePeriod = options.mediaTimePeriod === undefined ? 100 : options.mediaTimePeriod;\n this._fpsDroppedMonitoringPeriod = options.fpsDroppedMonitoringPeriod === undefined ? 5000 : options.fpsDroppedMonitoringPeriod;\n this._fpsDroppedMonitoringThreshold = options.fpsDroppedMonitoringThreshold === undefined ? 0.2 : options.fpsDroppedMonitoringThreshold;\n this._capLevelonFPSDrop = options.capLevelonFPSDrop === undefined ? false : options.capLevelonFPSDrop;\n this._smoothAutoSwitchonFPSDrop = options.smoothAutoSwitchonFPSDrop === undefined ? this.capLevelonFPSDrop : options.smoothAutoSwitchonFPSDrop;\n this._switchDownOnLevelError = options.switchDownOnLevelError === undefined ? true : options.switchDownOnLevelError;\n this._seekMode = options.seekMode === undefined ? 'ACCURATE' : options.seekMode;\n this._keyLoadMaxRetry = options.keyLoadMaxRetry === undefined ? 3 : options.keyLoadMaxRetry;\n this._keyLoadMaxRetryTimeout = options.keyLoadMaxRetryTimeout === undefined ? 64000 : options.keyLoadMaxRetryTimeout;\n this._fragmentLoadMaxRetry = options.fragmentLoadMaxRetry === undefined ? 3 : options.fragmentLoadMaxRetry;\n this._fragmentLoadMaxRetryTimeout = options.fragmentLoadMaxRetryTimeout === undefined ? 4000 : options.fragmentLoadMaxRetryTimeout;\n this._fragmentLoadSkipAfterMaxRetry = options.fragmentLoadSkipAfterMaxRetry === undefined ? true : options.fragmentLoadSkipAfterMaxRetry;\n this._maxSkippedFragments = options.maxSkippedFragments === undefined ? 5 : options.maxSkippedFragments;\n this._flushLiveURLCache = options.flushLiveURLCache === undefined ? false : options.flushLiveURLCache;\n this._initialLiveManifestSize = options.initialLiveManifestSize === undefined ? 1 : options.initialLiveManifestSize;\n this._manifestLoadMaxRetry = options.manifestLoadMaxRetry === undefined ? 3 : options.manifestLoadMaxRetry;\n this._manifestLoadMaxRetryTimeout = options.manifestLoadMaxRetryTimeout === undefined ? 64000 : options.manifestLoadMaxRetryTimeout;\n this._manifestRedundantLoadmaxRetry = options.manifestRedundantLoadmaxRetry === undefined ? 3 : options.manifestRedundantLoadmaxRetry;\n this._startFromBitrate = options.startFromBitrate === undefined ? -1 : options.startFromBitrate;\n this._startFromLevel = options.startFromLevel === undefined ? -1 : options.startFromLevel;\n this._autoStartMaxDuration = options.autoStartMaxDuration === undefined ? -1 : options.autoStartMaxDuration;\n this._seekFromLevel = options.seekFromLevel === undefined ? -1 : options.seekFromLevel;\n this._useHardwareVideoDecoder = options.useHardwareVideoDecoder === undefined ? false : options.useHardwareVideoDecoder;\n this._hlsLogEnabled = options.hlsLogEnabled === undefined ? true : options.hlsLogEnabled;\n this._logDebug = options.logDebug === undefined ? false : options.logDebug;\n this._logDebug2 = options.logDebug2 === undefined ? false : options.logDebug2;\n this._logWarn = options.logWarn === undefined ? true : options.logWarn;\n this._logError = options.logError === undefined ? true : options.logError;\n this._hlsMinimumDvrSize = options.hlsMinimumDvrSize === undefined ? 60 : options.hlsMinimumDvrSize;\n };\n\n FlasHLS.prototype._addListeners = function _addListeners() {\n var _this2 = this;\n\n _mediator2.default.on(this.cid + ':flashready', function () {\n return _this2._bootstrap();\n });\n _mediator2.default.on(this.cid + ':timeupdate', function (timeMetrics) {\n return _this2._updateTime(timeMetrics);\n });\n _mediator2.default.on(this.cid + ':playbackstate', function (state) {\n return _this2._setPlaybackState(state);\n });\n _mediator2.default.on(this.cid + ':levelchanged', function (level) {\n return _this2._levelChanged(level);\n });\n _mediator2.default.on(this.cid + ':error', function (code, url, message) {\n return _this2._flashPlaybackError(code, url, message);\n });\n _mediator2.default.on(this.cid + ':fragmentloaded', function (loadmetrics) {\n return _this2._onFragmentLoaded(loadmetrics);\n });\n _mediator2.default.on(this.cid + ':levelendlist', function (level) {\n return _this2._onLevelEndlist(level);\n });\n };\n\n FlasHLS.prototype.stopListening = function stopListening() {\n _BaseFlashPlayback.prototype.stopListening.call(this);\n _mediator2.default.off(this.cid + ':flashready');\n _mediator2.default.off(this.cid + ':timeupdate');\n _mediator2.default.off(this.cid + ':playbackstate');\n _mediator2.default.off(this.cid + ':levelchanged');\n _mediator2.default.off(this.cid + ':playbackerror');\n _mediator2.default.off(this.cid + ':fragmentloaded');\n _mediator2.default.off(this.cid + ':manifestloaded');\n _mediator2.default.off(this.cid + ':levelendlist');\n };\n\n FlasHLS.prototype._bootstrap = function _bootstrap() {\n var _this3 = this;\n\n if (this.el.playerLoad) {\n this.el.width = '100%';\n this.el.height = '100%';\n this._isReadyState = true;\n this._srcLoaded = false;\n this._currentState = 'IDLE';\n this._setFlashSettings();\n this._updatePlaybackType();\n if (this._autoPlay || this._shouldPlayOnManifestLoaded) this.play();\n\n this.trigger(_events2.default.PLAYBACK_READY, this.name);\n } else {\n this._bootstrapAttempts = this._bootstrapAttempts || 0;\n if (++this._bootstrapAttempts <= MAX_ATTEMPTS) {\n setTimeout(function () {\n return _this3._bootstrap();\n }, 50);\n } else {\n var formattedError = this.createError({\n code: 'playerLoadFail_maxNumberAttemptsReached',\n description: this.name + ' error: Max number of attempts reached',\n level: _error2.default.Levels.FATAL,\n raw: {}\n });\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n }\n }\n };\n\n FlasHLS.prototype._setFlashSettings = function _setFlashSettings() {\n this.el.playerSetAutoStartLoad(this._autoStartLoad);\n this.el.playerSetCapLevelToStage(this._capLevelToStage);\n this.el.playerSetMaxLevelCappingMode(this._maxLevelCappingMode);\n this.el.playerSetMinBufferLength(this._minBufferLength);\n this.el.playerSetMinBufferLengthCapping(this._minBufferLengthCapping);\n this.el.playerSetMaxBufferLength(this._maxBufferLength);\n this.el.playerSetMaxBackBufferLength(this._maxBackBufferLength);\n this.el.playerSetLowBufferLength(this._lowBufferLength);\n this.el.playerSetMediaTimePeriod(this._mediaTimePeriod);\n this.el.playerSetFpsDroppedMonitoringPeriod(this._fpsDroppedMonitoringPeriod);\n this.el.playerSetFpsDroppedMonitoringThreshold(this._fpsDroppedMonitoringThreshold);\n this.el.playerSetCapLevelonFPSDrop(this._capLevelonFPSDrop);\n this.el.playerSetSmoothAutoSwitchonFPSDrop(this._smoothAutoSwitchonFPSDrop);\n this.el.playerSetSwitchDownOnLevelError(this._switchDownOnLevelError);\n this.el.playerSetSeekMode(this._seekMode);\n this.el.playerSetKeyLoadMaxRetry(this._keyLoadMaxRetry);\n this.el.playerSetKeyLoadMaxRetryTimeout(this._keyLoadMaxRetryTimeout);\n this.el.playerSetFragmentLoadMaxRetry(this._fragmentLoadMaxRetry);\n this.el.playerSetFragmentLoadMaxRetryTimeout(this._fragmentLoadMaxRetryTimeout);\n this.el.playerSetFragmentLoadSkipAfterMaxRetry(this._fragmentLoadSkipAfterMaxRetry);\n this.el.playerSetMaxSkippedFragments(this._maxSkippedFragments);\n this.el.playerSetFlushLiveURLCache(this._flushLiveURLCache);\n this.el.playerSetInitialLiveManifestSize(this._initialLiveManifestSize);\n this.el.playerSetManifestLoadMaxRetry(this._manifestLoadMaxRetry);\n this.el.playerSetManifestLoadMaxRetryTimeout(this._manifestLoadMaxRetryTimeout);\n this.el.playerSetManifestRedundantLoadmaxRetry(this._manifestRedundantLoadmaxRetry);\n this.el.playerSetStartFromBitrate(this._startFromBitrate);\n this.el.playerSetStartFromLevel(this._startFromLevel);\n this.el.playerSetAutoStartMaxDuration(this._autoStartMaxDuration);\n this.el.playerSetSeekFromLevel(this._seekFromLevel);\n this.el.playerSetUseHardwareVideoDecoder(this._useHardwareVideoDecoder);\n this.el.playerSetLogInfo(this._hlsLogEnabled);\n this.el.playerSetLogDebug(this._logDebug);\n this.el.playerSetLogDebug2(this._logDebug2);\n this.el.playerSetLogWarn(this._logWarn);\n this.el.playerSetLogError(this._logError);\n };\n\n FlasHLS.prototype.setAutoStartLoad = function setAutoStartLoad(autoStartLoad) {\n this._autoStartLoad = autoStartLoad;\n this.el.playerSetAutoStartLoad(this._autoStartLoad);\n };\n\n FlasHLS.prototype.setCapLevelToStage = function setCapLevelToStage(capLevelToStage) {\n this._capLevelToStage = capLevelToStage;\n this.el.playerSetCapLevelToStage(this._capLevelToStage);\n };\n\n FlasHLS.prototype.setMaxLevelCappingMode = function setMaxLevelCappingMode(maxLevelCappingMode) {\n this._maxLevelCappingMode = maxLevelCappingMode;\n this.el.playerSetMaxLevelCappingMode(this._maxLevelCappingMode);\n };\n\n FlasHLS.prototype.setSetMinBufferLength = function setSetMinBufferLength(minBufferLength) {\n this._minBufferLength = minBufferLength;\n this.el.playerSetMinBufferLength(this._minBufferLength);\n };\n\n FlasHLS.prototype.setMinBufferLengthCapping = function setMinBufferLengthCapping(minBufferLengthCapping) {\n this._minBufferLengthCapping = minBufferLengthCapping;\n this.el.playerSetMinBufferLengthCapping(this._minBufferLengthCapping);\n };\n\n FlasHLS.prototype.setMaxBufferLength = function setMaxBufferLength(maxBufferLength) {\n this._maxBufferLength = maxBufferLength;\n this.el.playerSetMaxBufferLength(this._maxBufferLength);\n };\n\n FlasHLS.prototype.setMaxBackBufferLength = function setMaxBackBufferLength(maxBackBufferLength) {\n this._maxBackBufferLength = maxBackBufferLength;\n this.el.playerSetMaxBackBufferLength(this._maxBackBufferLength);\n };\n\n FlasHLS.prototype.setLowBufferLength = function setLowBufferLength(lowBufferLength) {\n this._lowBufferLength = lowBufferLength;\n this.el.playerSetLowBufferLength(this._lowBufferLength);\n };\n\n FlasHLS.prototype.setMediaTimePeriod = function setMediaTimePeriod(mediaTimePeriod) {\n this._mediaTimePeriod = mediaTimePeriod;\n this.el.playerSetMediaTimePeriod(this._mediaTimePeriod);\n };\n\n FlasHLS.prototype.setFpsDroppedMonitoringPeriod = function setFpsDroppedMonitoringPeriod(fpsDroppedMonitoringPeriod) {\n this._fpsDroppedMonitoringPeriod = fpsDroppedMonitoringPeriod;\n this.el.playerSetFpsDroppedMonitoringPeriod(this._fpsDroppedMonitoringPeriod);\n };\n\n FlasHLS.prototype.setFpsDroppedMonitoringThreshold = function setFpsDroppedMonitoringThreshold(fpsDroppedMonitoringThreshold) {\n this._fpsDroppedMonitoringThreshold = fpsDroppedMonitoringThreshold;\n this.el.playerSetFpsDroppedMonitoringThreshold(this._fpsDroppedMonitoringThreshold);\n };\n\n FlasHLS.prototype.setCapLevelonFPSDrop = function setCapLevelonFPSDrop(capLevelonFPSDrop) {\n this._capLevelonFPSDrop = capLevelonFPSDrop;\n this.el.playerSetCapLevelonFPSDrop(this._capLevelonFPSDrop);\n };\n\n FlasHLS.prototype.setSmoothAutoSwitchonFPSDrop = function setSmoothAutoSwitchonFPSDrop(smoothAutoSwitchonFPSDrop) {\n this._smoothAutoSwitchonFPSDrop = smoothAutoSwitchonFPSDrop;\n this.el.playerSetSmoothAutoSwitchonFPSDrop(this._smoothAutoSwitchonFPSDrop);\n };\n\n FlasHLS.prototype.setSwitchDownOnLevelError = function setSwitchDownOnLevelError(switchDownOnLevelError) {\n this._switchDownOnLevelError = switchDownOnLevelError;\n this.el.playerSetSwitchDownOnLevelError(this._switchDownOnLevelError);\n };\n\n FlasHLS.prototype.setSeekMode = function setSeekMode(seekMode) {\n this._seekMode = seekMode;\n this.el.playerSetSeekMode(this._seekMode);\n };\n\n FlasHLS.prototype.setKeyLoadMaxRetry = function setKeyLoadMaxRetry(keyLoadMaxRetry) {\n this._keyLoadMaxRetry = keyLoadMaxRetry;\n this.el.playerSetKeyLoadMaxRetry(this._keyLoadMaxRetry);\n };\n\n FlasHLS.prototype.setKeyLoadMaxRetryTimeout = function setKeyLoadMaxRetryTimeout(keyLoadMaxRetryTimeout) {\n this._keyLoadMaxRetryTimeout = keyLoadMaxRetryTimeout;\n this.el.playerSetKeyLoadMaxRetryTimeout(this._keyLoadMaxRetryTimeout);\n };\n\n FlasHLS.prototype.setFragmentLoadMaxRetry = function setFragmentLoadMaxRetry(fragmentLoadMaxRetry) {\n this._fragmentLoadMaxRetry = fragmentLoadMaxRetry;\n this.el.playerSetFragmentLoadMaxRetry(this._fragmentLoadMaxRetry);\n };\n\n FlasHLS.prototype.setFragmentLoadMaxRetryTimeout = function setFragmentLoadMaxRetryTimeout(fragmentLoadMaxRetryTimeout) {\n this._fragmentLoadMaxRetryTimeout = fragmentLoadMaxRetryTimeout;\n this.el.playerSetFragmentLoadMaxRetryTimeout(this._fragmentLoadMaxRetryTimeout);\n };\n\n FlasHLS.prototype.setFragmentLoadSkipAfterMaxRetry = function setFragmentLoadSkipAfterMaxRetry(fragmentLoadSkipAfterMaxRetry) {\n this._fragmentLoadSkipAfterMaxRetry = fragmentLoadSkipAfterMaxRetry;\n this.el.playerSetFragmentLoadSkipAfterMaxRetry(this._fragmentLoadSkipAfterMaxRetry);\n };\n\n FlasHLS.prototype.setMaxSkippedFragments = function setMaxSkippedFragments(maxSkippedFragments) {\n this._maxSkippedFragments = maxSkippedFragments;\n this.el.playerSetMaxSkippedFragments(this._maxSkippedFragments);\n };\n\n FlasHLS.prototype.setFlushLiveURLCache = function setFlushLiveURLCache(flushLiveURLCache) {\n this._flushLiveURLCache = flushLiveURLCache;\n this.el.playerSetFlushLiveURLCache(this._flushLiveURLCache);\n };\n\n FlasHLS.prototype.setInitialLiveManifestSize = function setInitialLiveManifestSize(initialLiveManifestSize) {\n this._initialLiveManifestSize = initialLiveManifestSize;\n this.el.playerSetInitialLiveManifestSize(this._initialLiveManifestSize);\n };\n\n FlasHLS.prototype.setManifestLoadMaxRetry = function setManifestLoadMaxRetry(manifestLoadMaxRetry) {\n this._manifestLoadMaxRetry = manifestLoadMaxRetry;\n this.el.playerSetManifestLoadMaxRetry(this._manifestLoadMaxRetry);\n };\n\n FlasHLS.prototype.setManifestLoadMaxRetryTimeout = function setManifestLoadMaxRetryTimeout(manifestLoadMaxRetryTimeout) {\n this._manifestLoadMaxRetryTimeout = manifestLoadMaxRetryTimeout;\n this.el.playerSetManifestLoadMaxRetryTimeout(this._manifestLoadMaxRetryTimeout);\n };\n\n FlasHLS.prototype.setManifestRedundantLoadmaxRetry = function setManifestRedundantLoadmaxRetry(manifestRedundantLoadmaxRetry) {\n this._manifestRedundantLoadmaxRetry = manifestRedundantLoadmaxRetry;\n this.el.playerSetManifestRedundantLoadmaxRetry(this._manifestRedundantLoadmaxRetry);\n };\n\n FlasHLS.prototype.setStartFromBitrate = function setStartFromBitrate(startFromBitrate) {\n this._startFromBitrate = startFromBitrate;\n this.el.playerSetStartFromBitrate(this._startFromBitrate);\n };\n\n FlasHLS.prototype.setStartFromLevel = function setStartFromLevel(startFromLevel) {\n this._startFromLevel = startFromLevel;\n this.el.playerSetStartFromLevel(this._startFromLevel);\n };\n\n FlasHLS.prototype.setAutoStartMaxDuration = function setAutoStartMaxDuration(autoStartMaxDuration) {\n this._autoStartMaxDuration = autoStartMaxDuration;\n this.el.playerSetAutoStartMaxDuration(this._autoStartMaxDuration);\n };\n\n FlasHLS.prototype.setSeekFromLevel = function setSeekFromLevel(seekFromLevel) {\n this._seekFromLevel = seekFromLevel;\n this.el.playerSetSeekFromLevel(this._seekFromLevel);\n };\n\n FlasHLS.prototype.setUseHardwareVideoDecoder = function setUseHardwareVideoDecoder(useHardwareVideoDecoder) {\n this._useHardwareVideoDecoder = useHardwareVideoDecoder;\n this.el.playerSetUseHardwareVideoDecoder(this._useHardwareVideoDecoder);\n };\n\n FlasHLS.prototype.setSetLogInfo = function setSetLogInfo(hlsLogEnabled) {\n this._hlsLogEnabled = hlsLogEnabled;\n this.el.playerSetLogInfo(this._hlsLogEnabled);\n };\n\n FlasHLS.prototype.setLogDebug = function setLogDebug(logDebug) {\n this._logDebug = logDebug;\n this.el.playerSetLogDebug(this._logDebug);\n };\n\n FlasHLS.prototype.setLogDebug2 = function setLogDebug2(logDebug2) {\n this._logDebug2 = logDebug2;\n this.el.playerSetLogDebug2(this._logDebug2);\n };\n\n FlasHLS.prototype.setLogWarn = function setLogWarn(logWarn) {\n this._logWarn = logWarn;\n this.el.playerSetLogWarn(this._logWarn);\n };\n\n FlasHLS.prototype.setLogError = function setLogError(logError) {\n this._logError = logError;\n this.el.playerSetLogError(this._logError);\n };\n\n FlasHLS.prototype._levelChanged = function _levelChanged(level) {\n var currentLevel = this.el.getLevels()[level];\n if (currentLevel) {\n this.highDefinition = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;\n this.trigger(_events2.default.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);\n\n if (!this._levels || this._levels.length === 0) this._fillLevels();\n\n this.trigger(_events2.default.PLAYBACK_BITRATE, {\n height: currentLevel.height,\n width: currentLevel.width,\n bandwidth: currentLevel.bitrate,\n bitrate: currentLevel.bitrate,\n level: level\n });\n this.trigger(_events2.default.PLAYBACK_LEVEL_SWITCH_END);\n }\n };\n\n FlasHLS.prototype._updateTime = function _updateTime(timeMetrics) {\n if (this._currentState === 'IDLE') return;\n\n var duration = this._normalizeDuration(timeMetrics.duration);\n var position = Math.min(Math.max(timeMetrics.position, 0), duration);\n var previousDVRStatus = this._dvrEnabled;\n var livePlayback = this._playbackType === _playback2.default.LIVE;\n this._dvrEnabled = livePlayback && duration > this._hlsMinimumDvrSize;\n\n if (duration === 100 || livePlayback === undefined) return;\n\n if (this._dvrEnabled !== previousDVRStatus) {\n this._updateSettings();\n this.trigger(_events2.default.PLAYBACK_SETTINGSUPDATE, this.name);\n }\n\n if (livePlayback && !this._dvrEnabled) position = duration;\n\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: position, total: duration }, this.name);\n };\n\n FlasHLS.prototype.play = function play() {\n this.trigger(_events2.default.PLAYBACK_PLAY_INTENT);\n if (this._currentState === 'PAUSED') this.el.playerResume();else if (!this._srcLoaded && this._currentState !== 'PLAYING') this._firstPlay();else this.el.playerPlay();\n };\n\n FlasHLS.prototype.getPlaybackType = function getPlaybackType() {\n return this._playbackType ? this._playbackType : null;\n };\n\n FlasHLS.prototype.getCurrentTime = function getCurrentTime() {\n return this.el.getPosition();\n };\n\n FlasHLS.prototype.getCurrentLevelIndex = function getCurrentLevelIndex() {\n return this._currentLevel;\n };\n\n FlasHLS.prototype.getCurrentLevel = function getCurrentLevel() {\n return this.levels[this.currentLevel];\n };\n\n FlasHLS.prototype.getCurrentBitrate = function getCurrentBitrate() {\n return this.levels[this.currentLevel].bitrate;\n };\n\n FlasHLS.prototype.setCurrentLevel = function setCurrentLevel(level) {\n this.currentLevel = level;\n };\n\n FlasHLS.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() {\n return this.highDefinition;\n };\n\n FlasHLS.prototype.getLevels = function getLevels() {\n return this.levels;\n };\n\n FlasHLS.prototype._setPlaybackState = function _setPlaybackState(state) {\n if (['PLAYING_BUFFERING', 'PAUSED_BUFFERING'].indexOf(state) >= 0) {\n this._bufferingState = true;\n this.trigger(_events2.default.PLAYBACK_BUFFERING, this.name);\n this._updateCurrentState(state);\n } else if (['PLAYING', 'PAUSED'].indexOf(state) >= 0) {\n if (['PLAYING_BUFFERING', 'PAUSED_BUFFERING', 'IDLE'].indexOf(this._currentState) >= 0) {\n this._bufferingState = false;\n this.trigger(_events2.default.PLAYBACK_BUFFERFULL, this.name);\n }\n this._updateCurrentState(state);\n } else if (state === 'IDLE') {\n this._srcLoaded = false;\n if (this._loop && ['PLAYING_BUFFERING', 'PLAYING'].indexOf(this._currentState) >= 0) {\n this.play();\n this.seek(0);\n } else {\n this._updateCurrentState(state);\n this._hasEnded = true;\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: 0, total: this.getDuration() }, this.name);\n this.trigger(_events2.default.PLAYBACK_ENDED, this.name);\n }\n }\n };\n\n FlasHLS.prototype._updateCurrentState = function _updateCurrentState(state) {\n this._currentState = state;\n if (state !== 'IDLE') this._hasEnded = false;\n\n this._updatePlaybackType();\n if (state === 'PLAYING') this.trigger(_events2.default.PLAYBACK_PLAY, this.name);else if (state === 'PAUSED') this.trigger(_events2.default.PLAYBACK_PAUSE, this.name);\n };\n\n FlasHLS.prototype._updatePlaybackType = function _updatePlaybackType() {\n this._playbackType = this.el.getType();\n if (this._playbackType) {\n this._playbackType = this._playbackType.toLowerCase();\n if (this._playbackType === _playback2.default.VOD) this._startReportingProgress();else this._stopReportingProgress();\n }\n this.trigger(_events2.default.PLAYBACK_PLAYBACKSTATE, { type: this._playbackType });\n };\n\n FlasHLS.prototype._startReportingProgress = function _startReportingProgress() {\n if (!this._reportingProgress) this._reportingProgress = true;\n };\n\n FlasHLS.prototype._stopReportingProgress = function _stopReportingProgress() {\n this._reportingProgress = false;\n };\n\n FlasHLS.prototype._onFragmentLoaded = function _onFragmentLoaded(loadmetrics) {\n this.trigger(_events2.default.PLAYBACK_FRAGMENT_LOADED, loadmetrics);\n if (this._reportingProgress && this.getCurrentTime()) {\n var buffered = this.getCurrentTime() + this.el.getbufferLength();\n this.trigger(_events2.default.PLAYBACK_PROGRESS, {\n start: this.getCurrentTime(),\n current: buffered,\n total: this.el.getDuration()\n });\n }\n };\n\n FlasHLS.prototype._onLevelEndlist = function _onLevelEndlist() {\n this._updatePlaybackType();\n };\n\n FlasHLS.prototype._firstPlay = function _firstPlay() {\n var _this4 = this;\n\n this._shouldPlayOnManifestLoaded = true;\n if (this.el.playerLoad) {\n _mediator2.default.once(this.cid + ':manifestloaded', function (duration, loadmetrics) {\n return _this4._manifestLoaded(duration, loadmetrics);\n });\n this._setFlashSettings(); //ensure flushLiveURLCache will work (#327)\n this.el.playerLoad(this._src);\n this._srcLoaded = true;\n }\n };\n\n FlasHLS.prototype.volume = function volume(value) {\n var _this5 = this;\n\n if (this.isReady) this.el.playerVolume(value);else this.listenToOnce(this, _events2.default.PLAYBACK_BUFFERFULL, function () {\n return _this5.volume(value);\n });\n };\n\n FlasHLS.prototype.pause = function pause() {\n if (this._playbackType !== _playback2.default.LIVE || this._dvrEnabled) {\n this.el.playerPause();\n if (this._playbackType === _playback2.default.LIVE && this._dvrEnabled) this._updateDvr(true);\n }\n };\n\n FlasHLS.prototype.stop = function stop() {\n this._srcLoaded = false;\n this.el.playerStop();\n this.trigger(_events2.default.PLAYBACK_STOP);\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: 0, total: 0 }, this.name);\n };\n\n FlasHLS.prototype.isPlaying = function isPlaying() {\n if (this._currentState) return !!this._currentState.match(/playing/i);\n\n return false;\n };\n\n FlasHLS.prototype.getDuration = function getDuration() {\n return this._normalizeDuration(this.el.getDuration());\n };\n\n FlasHLS.prototype._normalizeDuration = function _normalizeDuration(duration) {\n if (this._playbackType === _playback2.default.LIVE) {\n // estimate 10 seconds of buffer time for live streams for seek positions\n duration = Math.max(0, duration - 10);\n }\n return duration;\n };\n\n FlasHLS.prototype.seekPercentage = function seekPercentage(percentage) {\n var duration = this.el.getDuration();\n var time = 0;\n if (percentage > 0) time = duration * percentage / 100;\n\n this.seek(time);\n };\n\n FlasHLS.prototype.seek = function seek(time) {\n var duration = this.getDuration();\n if (this._playbackType === _playback2.default.LIVE) {\n // seek operations to a time within 3 seconds from live stream will position playhead back to live\n var dvrInUse = duration - time > 3;\n this._updateDvr(dvrInUse);\n }\n this.el.playerSeek(time);\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: time, total: duration }, this.name);\n };\n\n FlasHLS.prototype._updateDvr = function _updateDvr(dvrInUse) {\n var previousDvrInUse = !!this._dvrInUse;\n this._dvrInUse = dvrInUse;\n if (this._dvrInUse !== previousDvrInUse) {\n this._updateSettings();\n this.trigger(_events2.default.PLAYBACK_DVR, this._dvrInUse);\n this.trigger(_events2.default.PLAYBACK_STATS_ADD, { 'dvr': this._dvrInUse });\n }\n };\n\n FlasHLS.prototype._flashPlaybackError = function _flashPlaybackError(code, url, message) {\n var error = {\n code: code,\n description: message,\n level: _error2.default.Levels.FATAL,\n raw: { code: code, url: url, message: message }\n };\n var formattedError = this.createError(error);\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n this.trigger(_events2.default.PLAYBACK_STOP);\n };\n\n FlasHLS.prototype._manifestLoaded = function _manifestLoaded(duration, loadmetrics) {\n if (this._shouldPlayOnManifestLoaded) {\n this._shouldPlayOnManifestLoaded = false;\n // this method initialises the player (and starts playback)\n // this needs to happen before PLAYBACK_LOADEDMETADATA is fired\n // as the user may call seek() in a LOADEDMETADATA listener.\n /// when playerPlay() is called the player seeks to 0\n this.el.playerPlay();\n }\n\n this._fillLevels();\n this.trigger(_events2.default.PLAYBACK_LOADEDMETADATA, { duration: duration, data: loadmetrics });\n };\n\n FlasHLS.prototype._fillLevels = function _fillLevels() {\n var levels = this.el.getLevels();\n var levelsLength = levels.length;\n this._levels = [];\n\n for (var index = 0; index < levelsLength; index++) {\n this._levels.push({ id: index, label: levels[index].height + 'p', level: levels[index] });\n }this.trigger(_events2.default.PLAYBACK_LEVELS_AVAILABLE, this._levels);\n };\n\n FlasHLS.prototype.destroy = function destroy() {\n this.stopListening();\n this.$el.remove();\n };\n\n FlasHLS.prototype._updateSettings = function _updateSettings() {\n this.settings = _clapprZepto2.default.extend({}, this._defaultSettings);\n if (this._playbackType === _playback2.default.VOD || this._dvrInUse) {\n this.settings.left = ['playpause', 'position', 'duration'];\n this.settings.seekEnabled = true;\n } else if (this._dvrEnabled) {\n this.settings.left = ['playpause'];\n this.settings.seekEnabled = true;\n } else {\n this.settings.seekEnabled = false;\n }\n };\n\n FlasHLS.prototype._createCallbacks = function _createCallbacks() {\n var _this6 = this;\n\n if (!window.Clappr) window.Clappr = {};\n\n if (!window.Clappr.flashlsCallbacks) window.Clappr.flashlsCallbacks = {};\n\n this.flashlsEvents = new _flashls_events2.default(this.cid);\n window.Clappr.flashlsCallbacks[this.cid] = function (eventName, args) {\n _this6.flashlsEvents[eventName].apply(_this6.flashlsEvents, args);\n };\n };\n\n FlasHLS.prototype.render = function render() {\n _BaseFlashPlayback.prototype.render.call(this);\n this._createCallbacks();\n return this;\n };\n\n (0, _createClass3.default)(FlasHLS, [{\n key: 'isReady',\n get: function get() {\n return this._isReadyState;\n }\n }, {\n key: 'dvrEnabled',\n get: function get() {\n return !!this._dvrEnabled;\n }\n }]);\n return FlasHLS;\n}(_base_flash_playback2.default);\n\nexports.default = FlasHLS;\n\n\nFlasHLS.canPlay = function (resource, mimeType) {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n return _browser2.default.hasFlash && (resourceParts.length > 1 && resourceParts[1].toLowerCase() === 'm3u8' || mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl');\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/flashls/flashls_events.js\":\n/*!*************************************************!*\\\n !*** ./src/playbacks/flashls/flashls_events.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _mediator = __webpack_require__(/*! ../../components/mediator */ \"./src/components/mediator.js\");\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HLSEvents = function () {\n function HLSEvents(instanceId) {\n (0, _classCallCheck3.default)(this, HLSEvents);\n\n this.instanceId = instanceId;\n }\n\n HLSEvents.prototype.ready = function ready() {\n _mediator2.default.trigger(this.instanceId + ':flashready');\n };\n\n HLSEvents.prototype.videoSize = function videoSize(width, height) {\n _mediator2.default.trigger(this.instanceId + ':videosizechanged', width, height);\n };\n\n HLSEvents.prototype.complete = function complete() {\n _mediator2.default.trigger(this.instanceId + ':complete');\n };\n\n HLSEvents.prototype.error = function error(code, url, message) {\n _mediator2.default.trigger(this.instanceId + ':error', code, url, message);\n };\n\n HLSEvents.prototype.manifest = function manifest(duration, loadmetrics) {\n _mediator2.default.trigger(this.instanceId + ':manifestloaded', duration, loadmetrics);\n };\n\n HLSEvents.prototype.audioLevelLoaded = function audioLevelLoaded(loadmetrics) {\n _mediator2.default.trigger(this.instanceId + ':audiolevelloaded', loadmetrics);\n };\n\n HLSEvents.prototype.levelLoaded = function levelLoaded(loadmetrics) {\n _mediator2.default.trigger(this.instanceId + ':levelloaded', loadmetrics);\n };\n\n HLSEvents.prototype.levelEndlist = function levelEndlist(level) {\n _mediator2.default.trigger(this.instanceId + ':levelendlist', level);\n };\n\n HLSEvents.prototype.fragmentLoaded = function fragmentLoaded(loadmetrics) {\n _mediator2.default.trigger(this.instanceId + ':fragmentloaded', loadmetrics);\n };\n\n HLSEvents.prototype.fragmentPlaying = function fragmentPlaying(playmetrics) {\n _mediator2.default.trigger(this.instanceId + ':fragmentplaying', playmetrics);\n };\n\n HLSEvents.prototype.position = function position(timemetrics) {\n _mediator2.default.trigger(this.instanceId + ':timeupdate', timemetrics);\n };\n\n HLSEvents.prototype.state = function state(newState) {\n _mediator2.default.trigger(this.instanceId + ':playbackstate', newState);\n };\n\n HLSEvents.prototype.seekState = function seekState(newState) {\n _mediator2.default.trigger(this.instanceId + ':seekstate', newState);\n };\n\n HLSEvents.prototype.switch = function _switch(newLevel) {\n _mediator2.default.trigger(this.instanceId + ':levelchanged', newLevel);\n };\n\n HLSEvents.prototype.audioTracksListChange = function audioTracksListChange(trackList) {\n _mediator2.default.trigger(this.instanceId + ':audiotracklistchanged', trackList);\n };\n\n HLSEvents.prototype.audioTrackChange = function audioTrackChange(trackId) {\n _mediator2.default.trigger(this.instanceId + ':audiotrackchanged', trackId);\n };\n\n return HLSEvents;\n}();\n\nexports.default = HLSEvents;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/flashls/index.js\":\n/*!****************************************!*\\\n !*** ./src/playbacks/flashls/index.js ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _flashls = __webpack_require__(/*! ./flashls */ \"./src/playbacks/flashls/flashls.js\");\n\nvar _flashls2 = _interopRequireDefault(_flashls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _flashls2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/flashls/public/HLSPlayer.swf\":\n/*!****************************************************!*\\\n !*** ./src/playbacks/flashls/public/HLSPlayer.swf ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<%=baseUrl%>/8fa12a459188502b9f0d39b8a67d9e6c.swf\";\n\n/***/ }),\n\n/***/ \"./src/playbacks/hls/hls.js\":\n/*!**********************************!*\\\n !*** ./src/playbacks/hls/hls.js ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _html5_video = __webpack_require__(/*! ../../playbacks/html5_video */ \"./src/playbacks/html5_video/index.js\");\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nvar _hls = __webpack_require__(/*! hls.js */ \"./node_modules/hls.js/dist/hls.js\");\n\nvar _hls2 = _interopRequireDefault(_hls);\n\nvar _events = __webpack_require__(/*! ../../base/events */ \"./src/base/events.js\");\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(/*! ../../base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _utils = __webpack_require__(/*! ../../base/utils */ \"./src/base/utils.js\");\n\nvar _log = __webpack_require__(/*! ../../plugins/log */ \"./src/plugins/log/index.js\");\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _error = __webpack_require__(/*! ../../components/error */ \"./src/components/error/index.js\");\n\nvar _error2 = _interopRequireDefault(_error);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AUTO = -1; // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar HLS = function (_HTML5VideoPlayback) {\n (0, _inherits3.default)(HLS, _HTML5VideoPlayback);\n (0, _createClass3.default)(HLS, [{\n key: 'name',\n get: function get() {\n return 'hls';\n }\n }, {\n key: 'levels',\n get: function get() {\n return this._levels || [];\n }\n }, {\n key: 'currentLevel',\n get: function get() {\n if (this._currentLevel === null || this._currentLevel === undefined) return AUTO;else return this._currentLevel; //0 is a valid level ID\n },\n set: function set(id) {\n this._currentLevel = id;\n this.trigger(_events2.default.PLAYBACK_LEVEL_SWITCH_START);\n if (this.options.playback.hlsUseNextLevel) this._hls.nextLevel = this._currentLevel;else this._hls.currentLevel = this._currentLevel;\n }\n }, {\n key: 'isReady',\n get: function get() {\n return this._isReadyState;\n }\n }, {\n key: '_startTime',\n get: function get() {\n if (this._playbackType === _playback2.default.LIVE && this._playlistType !== 'EVENT') return this._extrapolatedStartTime;\n\n return this._playableRegionStartTime;\n }\n }, {\n key: '_now',\n get: function get() {\n return (0, _utils.now)();\n }\n\n // the time in the video element which should represent the start of the sliding window\n // extrapolated to increase in real time (instead of jumping as the early segments are removed)\n\n }, {\n key: '_extrapolatedStartTime',\n get: function get() {\n if (!this._localStartTimeCorrelation) return this._playableRegionStartTime;\n\n var corr = this._localStartTimeCorrelation;\n var timePassed = this._now - corr.local;\n var extrapolatedWindowStartTime = (corr.remote + timePassed) / 1000;\n // cap at the end of the extrapolated window duration\n return Math.min(extrapolatedWindowStartTime, this._playableRegionStartTime + this._extrapolatedWindowDuration);\n }\n\n // the time in the video element which should represent the end of the content\n // extrapolated to increase in real time (instead of jumping as segments are added)\n\n }, {\n key: '_extrapolatedEndTime',\n get: function get() {\n var actualEndTime = this._playableRegionStartTime + this._playableRegionDuration;\n if (!this._localEndTimeCorrelation) return actualEndTime;\n\n var corr = this._localEndTimeCorrelation;\n var timePassed = this._now - corr.local;\n var extrapolatedEndTime = (corr.remote + timePassed) / 1000;\n return Math.max(actualEndTime - this._extrapolatedWindowDuration, Math.min(extrapolatedEndTime, actualEndTime));\n }\n }, {\n key: '_duration',\n get: function get() {\n return this._extrapolatedEndTime - this._startTime;\n }\n\n // Returns the duration (seconds) of the window that the extrapolated start time is allowed\n // to move in before being capped.\n // The extrapolated start time should never reach the cap at the end of the window as the\n // window should slide as chunks are removed from the start.\n // This also applies to the extrapolated end time in the same way.\n //\n // If chunks aren't being removed for some reason that the start time will reach and remain fixed at\n // playableRegionStartTime + extrapolatedWindowDuration\n //\n // <-- window duration -->\n // I.e playableRegionStartTime |-----------------------|\n // | --> . . .\n // . --> | --> . .\n // . . --> | --> .\n // . . . --> |\n // . . . .\n // extrapolatedStartTime\n\n }, {\n key: '_extrapolatedWindowDuration',\n get: function get() {\n if (this._segmentTargetDuration === null) return 0;\n\n return this._extrapolatedWindowNumSegments * this._segmentTargetDuration;\n }\n }], [{\n key: 'HLSJS',\n get: function get() {\n return _hls2.default;\n }\n }]);\n\n function HLS() {\n (0, _classCallCheck3.default)(this, HLS);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // backwards compatibility (TODO: remove on 0.3.0)\n var _this = (0, _possibleConstructorReturn3.default)(this, _HTML5VideoPlayback.call.apply(_HTML5VideoPlayback, [this].concat(args)));\n\n _this.options.playback = (0, _extends3.default)({}, _this.options, _this.options.playback);\n _this._minDvrSize = typeof _this.options.hlsMinimumDvrSize === 'undefined' ? 60 : _this.options.hlsMinimumDvrSize;\n // The size of the start time extrapolation window measured as a multiple of segments.\n // Should be 2 or higher, or 0 to disable. Should only need to be increased above 2 if more than one segment is\n // removed from the start of the playlist at a time. E.g if the playlist is cached for 10 seconds and new chunks are\n // added/removed every 5.\n _this._extrapolatedWindowNumSegments = !_this.options.playback || typeof _this.options.playback.extrapolatedWindowNumSegments === 'undefined' ? 2 : _this.options.playback.extrapolatedWindowNumSegments;\n\n _this._playbackType = _playback2.default.VOD;\n _this._lastTimeUpdate = { current: 0, total: 0 };\n _this._lastDuration = null;\n // for hls streams which have dvr with a sliding window,\n // the content at the start of the playlist is removed as new\n // content is appended at the end.\n // this means the actual playable start time will increase as the\n // start content is deleted\n // For streams with dvr where the entire recording is kept from the\n // beginning this should stay as 0\n _this._playableRegionStartTime = 0;\n // {local, remote} remote is the time in the video element that should represent 0\n // local is the system time when the 'remote' measurment took place\n _this._localStartTimeCorrelation = null;\n // {local, remote} remote is the time in the video element that should represents the end\n // local is the system time when the 'remote' measurment took place\n _this._localEndTimeCorrelation = null;\n // if content is removed from the beginning then this empty area should\n // be ignored. \"playableRegionDuration\" excludes the empty area\n _this._playableRegionDuration = 0;\n // #EXT-X-PROGRAM-DATE-TIME\n _this._programDateTime = 0;\n // true when the actual duration is longer than hlsjs's live sync point\n // when this is false playableRegionDuration will be the actual duration\n // when this is true playableRegionDuration will exclude the time after the sync point\n _this._durationExcludesAfterLiveSyncPoint = false;\n // #EXT-X-TARGETDURATION\n _this._segmentTargetDuration = null;\n // #EXT-X-PLAYLIST-TYPE\n _this._playlistType = null;\n _this._recoverAttemptsRemaining = _this.options.hlsRecoverAttempts || 16;\n return _this;\n }\n\n HLS.prototype._setup = function _setup() {\n var _this2 = this;\n\n this._ccIsSetup = false;\n this._ccTracksUpdated = false;\n this._hls = new _hls2.default((0, _utils.assign)({}, this.options.playback.hlsjsConfig));\n this._hls.on(_hls2.default.Events.MEDIA_ATTACHED, function () {\n return _this2._hls.loadSource(_this2.options.src);\n });\n this._hls.on(_hls2.default.Events.LEVEL_LOADED, function (evt, data) {\n return _this2._updatePlaybackType(evt, data);\n });\n this._hls.on(_hls2.default.Events.LEVEL_UPDATED, function (evt, data) {\n return _this2._onLevelUpdated(evt, data);\n });\n this._hls.on(_hls2.default.Events.LEVEL_SWITCHING, function (evt, data) {\n return _this2._onLevelSwitch(evt, data);\n });\n this._hls.on(_hls2.default.Events.FRAG_LOADED, function (evt, data) {\n return _this2._onFragmentLoaded(evt, data);\n });\n this._hls.on(_hls2.default.Events.ERROR, function (evt, data) {\n return _this2._onHLSJSError(evt, data);\n });\n this._hls.on(_hls2.default.Events.SUBTITLE_TRACK_LOADED, function (evt, data) {\n return _this2._onSubtitleLoaded(evt, data);\n });\n this._hls.on(_hls2.default.Events.SUBTITLE_TRACKS_UPDATED, function () {\n return _this2._ccTracksUpdated = true;\n });\n this._hls.attachMedia(this.el);\n };\n\n HLS.prototype.render = function render() {\n this._ready();\n return _HTML5VideoPlayback.prototype.render.call(this);\n };\n\n HLS.prototype._ready = function _ready() {\n this._isReadyState = true;\n this.trigger(_events2.default.PLAYBACK_READY, this.name);\n };\n\n HLS.prototype._recover = function _recover(evt, data, error) {\n if (!this._recoveredDecodingError) {\n this._recoveredDecodingError = true;\n this._hls.recoverMediaError();\n } else if (!this._recoveredAudioCodecError) {\n this._recoveredAudioCodecError = true;\n this._hls.swapAudioCodec();\n this._hls.recoverMediaError();\n } else {\n _log2.default.error('hlsjs: failed to recover', { evt: evt, data: data });\n error.level = _error2.default.Levels.FATAL;\n var formattedError = this.createError(error);\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n this.stop();\n }\n };\n\n // override\n\n\n HLS.prototype._setupSrc = function _setupSrc(srcUrl) {// eslint-disable-line no-unused-vars\n // this playback manages the src on the video element itself\n };\n\n HLS.prototype._startTimeUpdateTimer = function _startTimeUpdateTimer() {\n var _this3 = this;\n\n if (this._timeUpdateTimer) return;\n\n this._timeUpdateTimer = setInterval(function () {\n _this3._onDurationChange();\n _this3._onTimeUpdate();\n }, 100);\n };\n\n HLS.prototype._stopTimeUpdateTimer = function _stopTimeUpdateTimer() {\n if (!this._timeUpdateTimer) return;\n\n clearInterval(this._timeUpdateTimer);\n this._timeUpdateTimer = null;\n };\n\n HLS.prototype.getProgramDateTime = function getProgramDateTime() {\n return this._programDateTime;\n };\n // the duration on the video element itself should not be used\n // as this does not necesarily represent the duration of the stream\n // https://github.com/clappr/clappr/issues/668#issuecomment-157036678\n\n\n HLS.prototype.getDuration = function getDuration() {\n return this._duration;\n };\n\n HLS.prototype.getCurrentTime = function getCurrentTime() {\n // e.g. can be < 0 if user pauses near the start\n // eventually they will then be kicked to the end by hlsjs if they run out of buffer\n // before the official start time\n return Math.max(0, this.el.currentTime - this._startTime);\n };\n\n // the time that \"0\" now represents relative to when playback started\n // for a stream with a sliding window this will increase as content is\n // removed from the beginning\n\n\n HLS.prototype.getStartTimeOffset = function getStartTimeOffset() {\n return this._startTime;\n };\n\n HLS.prototype.seekPercentage = function seekPercentage(percentage) {\n var seekTo = this._duration;\n if (percentage > 0) seekTo = this._duration * (percentage / 100);\n\n this.seek(seekTo);\n };\n\n HLS.prototype.seek = function seek(time) {\n if (time < 0) {\n _log2.default.warn('Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.');\n time = this.getDuration();\n }\n // assume live if time within 3 seconds of end of stream\n this.dvrEnabled && this._updateDvr(time < this.getDuration() - 3);\n time += this._startTime;\n _HTML5VideoPlayback.prototype.seek.call(this, time);\n };\n\n HLS.prototype.seekToLivePoint = function seekToLivePoint() {\n this.seek(this.getDuration());\n };\n\n HLS.prototype._updateDvr = function _updateDvr(status) {\n this.trigger(_events2.default.PLAYBACK_DVR, status);\n this.trigger(_events2.default.PLAYBACK_STATS_ADD, { 'dvr': status });\n };\n\n HLS.prototype._updateSettings = function _updateSettings() {\n if (this._playbackType === _playback2.default.VOD) this.settings.left = ['playpause', 'position', 'duration'];else if (this.dvrEnabled) this.settings.left = ['playpause'];else this.settings.left = ['playstop'];\n\n this.settings.seekEnabled = this.isSeekEnabled();\n this.trigger(_events2.default.PLAYBACK_SETTINGSUPDATE);\n };\n\n HLS.prototype._onHLSJSError = function _onHLSJSError(evt, data) {\n var error = {\n code: data.type + '_' + data.details,\n description: this.name + ' error: type: ' + data.type + ', details: ' + data.details,\n raw: data\n };\n var formattedError = void 0;\n if (data.response) error.description += ', response: ' + (0, _stringify2.default)(data.response);\n // only report/handle errors if they are fatal\n // hlsjs should automatically handle non fatal errors\n if (data.fatal) {\n if (this._recoverAttemptsRemaining > 0) {\n this._recoverAttemptsRemaining -= 1;\n switch (data.type) {\n case _hls2.default.ErrorTypes.NETWORK_ERROR:\n switch (data.details) {\n // The following network errors cannot be recovered with HLS.startLoad()\n // For more details, see https://github.com/video-dev/hls.js/blob/master/doc/design.md#error-detection-and-handling\n // For \"level load\" fatal errors, see https://github.com/video-dev/hls.js/issues/1138\n case _hls2.default.ErrorDetails.MANIFEST_LOAD_ERROR:\n case _hls2.default.ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n case _hls2.default.ErrorDetails.MANIFEST_PARSING_ERROR:\n case _hls2.default.ErrorDetails.LEVEL_LOAD_ERROR:\n case _hls2.default.ErrorDetails.LEVEL_LOAD_TIMEOUT:\n _log2.default.error('hlsjs: unrecoverable network fatal error.', { evt: evt, data: data });\n formattedError = this.createError(error);\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n this.stop();\n break;\n default:\n _log2.default.warn('hlsjs: trying to recover from network error.', { evt: evt, data: data });\n error.level = _error2.default.Levels.WARN;\n this.createError(error);\n this._hls.startLoad();\n break;\n }\n break;\n case _hls2.default.ErrorTypes.MEDIA_ERROR:\n _log2.default.warn('hlsjs: trying to recover from media error.', { evt: evt, data: data });\n error.level = _error2.default.Levels.WARN;\n this.createError(error);\n this._recover(evt, data, error);\n break;\n default:\n _log2.default.error('hlsjs: could not recover from error.', { evt: evt, data: data });\n formattedError = this.createError(error);\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n this.stop();\n break;\n }\n } else {\n _log2.default.error('hlsjs: could not recover from error after maximum number of attempts.', { evt: evt, data: data });\n formattedError = this.createError(error);\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n this.stop();\n }\n } else {\n // Transforms HLSJS.ErrorDetails.KEY_LOAD_ERROR non-fatal error to\n // playback fatal error if triggerFatalErrorOnResourceDenied playback\n // option is set. HLSJS.ErrorTypes.KEY_SYSTEM_ERROR are fatal errors\n // and therefore already handled.\n if (this.options.playback.triggerFatalErrorOnResourceDenied && this._keyIsDenied(data)) {\n _log2.default.error('hlsjs: could not load decrypt key.', { evt: evt, data: data });\n formattedError = this.createError(error);\n this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n this.stop();\n return;\n }\n\n error.level = _error2.default.Levels.WARN;\n this.createError(error);\n _log2.default.warn('hlsjs: non-fatal error occurred', { evt: evt, data: data });\n }\n };\n\n HLS.prototype._keyIsDenied = function _keyIsDenied(data) {\n return data.type === _hls2.default.ErrorTypes.NETWORK_ERROR && data.details === _hls2.default.ErrorDetails.KEY_LOAD_ERROR && data.response && data.response.code >= 400;\n };\n\n HLS.prototype._onTimeUpdate = function _onTimeUpdate() {\n var update = { current: this.getCurrentTime(), total: this.getDuration(), firstFragDateTime: this.getProgramDateTime() };\n var isSame = this._lastTimeUpdate && update.current === this._lastTimeUpdate.current && update.total === this._lastTimeUpdate.total;\n if (isSame) return;\n\n this._lastTimeUpdate = update;\n this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, update, this.name);\n };\n\n HLS.prototype._onDurationChange = function _onDurationChange() {\n var duration = this.getDuration();\n if (this._lastDuration === duration) return;\n\n this._lastDuration = duration;\n _HTML5VideoPlayback.prototype._onDurationChange.call(this);\n };\n\n HLS.prototype._onProgress = function _onProgress() {\n if (!this.el.buffered.length) return;\n\n var buffered = [];\n var bufferedPos = 0;\n for (var i = 0; i < this.el.buffered.length; i++) {\n buffered = [].concat((0, _toConsumableArray3.default)(buffered), [{\n // for a stream with sliding window dvr something that is buffered my slide off the start of the timeline\n start: Math.max(0, this.el.buffered.start(i) - this._playableRegionStartTime),\n end: Math.max(0, this.el.buffered.end(i) - this._playableRegionStartTime)\n }]);\n if (this.el.currentTime >= buffered[i].start && this.el.currentTime <= buffered[i].end) bufferedPos = i;\n }\n var progress = {\n start: buffered[bufferedPos].start,\n current: buffered[bufferedPos].end,\n total: this.getDuration()\n };\n this.trigger(_events2.default.PLAYBACK_PROGRESS, progress, buffered);\n };\n\n HLS.prototype.play = function play() {\n if (!this._hls) this._setup();\n\n _HTML5VideoPlayback.prototype.play.call(this);\n this._startTimeUpdateTimer();\n };\n\n HLS.prototype.pause = function pause() {\n if (!this._hls) return;\n\n _HTML5VideoPlayback.prototype.pause.call(this);\n if (this.dvrEnabled) this._updateDvr(true);\n };\n\n HLS.prototype.stop = function stop() {\n this._stopTimeUpdateTimer();\n if (this._hls) {\n _HTML5VideoPlayback.prototype.stop.call(this);\n this._hls.destroy();\n delete this._hls;\n }\n };\n\n HLS.prototype.destroy = function destroy() {\n this._stopTimeUpdateTimer();\n if (this._hls) {\n this._hls.destroy();\n delete this._hls;\n }\n _HTML5VideoPlayback.prototype.destroy.call(this);\n };\n\n HLS.prototype._updatePlaybackType = function _updatePlaybackType(evt, data) {\n this._playbackType = data.details.live ? _playback2.default.LIVE : _playback2.default.VOD;\n this._onLevelUpdated(evt, data);\n\n // Live stream subtitle tracks detection hack (may not immediately available)\n if (this._ccTracksUpdated && this._playbackType === _playback2.default.LIVE && this.hasClosedCaptionsTracks) this._onSubtitleLoaded();\n };\n\n HLS.prototype._fillLevels = function _fillLevels() {\n this._levels = this._hls.levels.map(function (level, index) {\n return { id: index, level: level, label: level.bitrate / 1000 + 'Kbps' };\n });\n this.trigger(_events2.default.PLAYBACK_LEVELS_AVAILABLE, this._levels);\n };\n\n HLS.prototype._onLevelUpdated = function _onLevelUpdated(evt, data) {\n this._segmentTargetDuration = data.details.targetduration;\n this._playlistType = data.details.type || null;\n\n var startTimeChanged = false;\n var durationChanged = false;\n var fragments = data.details.fragments;\n var previousPlayableRegionStartTime = this._playableRegionStartTime;\n var previousPlayableRegionDuration = this._playableRegionDuration;\n\n if (fragments.length === 0) return;\n\n // #EXT-X-PROGRAM-DATE-TIME\n if (fragments[0].rawProgramDateTime) this._programDateTime = fragments[0].rawProgramDateTime;\n\n if (this._playableRegionStartTime !== fragments[0].start) {\n startTimeChanged = true;\n this._playableRegionStartTime = fragments[0].start;\n }\n\n if (startTimeChanged) {\n if (!this._localStartTimeCorrelation) {\n // set the correlation to map to middle of the extrapolation window\n this._localStartTimeCorrelation = {\n local: this._now,\n remote: (fragments[0].start + this._extrapolatedWindowDuration / 2) * 1000\n };\n } else {\n // check if the correlation still works\n var corr = this._localStartTimeCorrelation;\n var timePassed = this._now - corr.local;\n // this should point to a time within the extrapolation window\n var startTime = (corr.remote + timePassed) / 1000;\n if (startTime < fragments[0].start) {\n // our start time is now earlier than the first chunk\n // (maybe the chunk was removed early)\n // reset correlation so that it sits at the beginning of the first available chunk\n this._localStartTimeCorrelation = {\n local: this._now,\n remote: fragments[0].start * 1000\n };\n } else if (startTime > previousPlayableRegionStartTime + this._extrapolatedWindowDuration) {\n // start time was past the end of the old extrapolation window (so would have been capped)\n // see if now that time would be inside the window, and if it would be set the correlation\n // so that it resumes from the time it was at at the end of the old window\n // update the correlation so that the time starts counting again from the value it's on now\n this._localStartTimeCorrelation = {\n local: this._now,\n remote: Math.max(fragments[0].start, previousPlayableRegionStartTime + this._extrapolatedWindowDuration) * 1000\n };\n }\n }\n }\n\n var newDuration = data.details.totalduration;\n // if it's a live stream then shorten the duration to remove access\n // to the area after hlsjs's live sync point\n // seeks to areas after this point sometimes have issues\n if (this._playbackType === _playback2.default.LIVE) {\n var fragmentTargetDuration = data.details.targetduration;\n var hlsjsConfig = this.options.playback.hlsjsConfig || {};\n var liveSyncDurationCount = hlsjsConfig.liveSyncDurationCount || _hls2.default.DefaultConfig.liveSyncDurationCount;\n var hiddenAreaDuration = fragmentTargetDuration * liveSyncDurationCount;\n if (hiddenAreaDuration <= newDuration) {\n newDuration -= hiddenAreaDuration;\n this._durationExcludesAfterLiveSyncPoint = true;\n } else {\n this._durationExcludesAfterLiveSyncPoint = false;\n }\n }\n\n if (newDuration !== this._playableRegionDuration) {\n durationChanged = true;\n this._playableRegionDuration = newDuration;\n }\n\n // Note the end time is not the playableRegionDuration\n // The end time will always increase even if content is removed from the beginning\n var endTime = fragments[0].start + newDuration;\n var previousEndTime = previousPlayableRegionStartTime + previousPlayableRegionDuration;\n var endTimeChanged = endTime !== previousEndTime;\n if (endTimeChanged) {\n if (!this._localEndTimeCorrelation) {\n // set the correlation to map to the end\n this._localEndTimeCorrelation = {\n local: this._now,\n remote: endTime * 1000\n };\n } else {\n // check if the correlation still works\n var _corr = this._localEndTimeCorrelation;\n var _timePassed = this._now - _corr.local;\n // this should point to a time within the extrapolation window from the end\n var extrapolatedEndTime = (_corr.remote + _timePassed) / 1000;\n if (extrapolatedEndTime > endTime) {\n this._localEndTimeCorrelation = {\n local: this._now,\n remote: endTime * 1000\n };\n } else if (extrapolatedEndTime < endTime - this._extrapolatedWindowDuration) {\n // our extrapolated end time is now earlier than the extrapolation window from the actual end time\n // (maybe a chunk became available early)\n // reset correlation so that it sits at the beginning of the extrapolation window from the end time\n this._localEndTimeCorrelation = {\n local: this._now,\n remote: (endTime - this._extrapolatedWindowDuration) * 1000\n };\n } else if (extrapolatedEndTime > previousEndTime) {\n // end time was past the old end time (so would have been capped)\n // set the correlation so that it resumes from the time it was at at the end of the old window\n this._localEndTimeCorrelation = {\n local: this._now,\n remote: previousEndTime * 1000\n };\n }\n }\n }\n\n // now that the values have been updated call any methods that use on them so they get the updated values\n // immediately\n durationChanged && this._onDurationChange();\n startTimeChanged && this._onProgress();\n };\n\n HLS.prototype._onFragmentLoaded = function _onFragmentLoaded(evt, data) {\n this.trigger(_events2.default.PLAYBACK_FRAGMENT_LOADED, data);\n };\n\n HLS.prototype._onSubtitleLoaded = function _onSubtitleLoaded() {\n // This event may be triggered multiple times\n // Setup CC only once (disable CC by default)\n if (!this._ccIsSetup) {\n this.trigger(_events2.default.PLAYBACK_SUBTITLE_AVAILABLE);\n var trackId = this._playbackType === _playback2.default.LIVE ? -1 : this.closedCaptionsTrackId;\n this.closedCaptionsTrackId = trackId;\n this._ccIsSetup = true;\n }\n };\n\n HLS.prototype._onLevelSwitch = function _onLevelSwitch(evt, data) {\n if (!this.levels.length) this._fillLevels();\n\n this.trigger(_events2.default.PLAYBACK_LEVEL_SWITCH_END);\n this.trigger(_events2.default.PLAYBACK_LEVEL_SWITCH, data);\n var currentLevel = this._hls.levels[data.level];\n if (currentLevel) {\n // TODO should highDefinition be private and maybe have a read only accessor if it's used somewhere\n this.highDefinition = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;\n this.trigger(_events2.default.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);\n this.trigger(_events2.default.PLAYBACK_BITRATE, {\n height: currentLevel.height,\n width: currentLevel.width,\n bandwidth: currentLevel.bitrate,\n bitrate: currentLevel.bitrate,\n level: data.level\n });\n }\n };\n\n HLS.prototype.getPlaybackType = function getPlaybackType() {\n return this._playbackType;\n };\n\n HLS.prototype.isSeekEnabled = function isSeekEnabled() {\n return this._playbackType === _playback2.default.VOD || this.dvrEnabled;\n };\n\n (0, _createClass3.default)(HLS, [{\n key: 'dvrEnabled',\n get: function get() {\n // enabled when:\n // - the duration does not include content after hlsjs's live sync point\n // - the playable region duration is longer than the configured duration to enable dvr after\n // - the playback type is LIVE.\n return this._durationExcludesAfterLiveSyncPoint && this._duration >= this._minDvrSize && this.getPlaybackType() === _playback2.default.LIVE;\n }\n }]);\n return HLS;\n}(_html5_video2.default);\n\nexports.default = HLS;\n\n\nHLS.canPlay = function (resource, mimeType) {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n var isHls = resourceParts.length > 1 && resourceParts[1].toLowerCase() === 'm3u8' || (0, _utils.listContainsIgnoreCase)(mimeType, ['application/vnd.apple.mpegurl', 'application/x-mpegURL']);\n\n return !!(_hls2.default.isSupported() && isHls);\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/hls/index.js\":\n/*!************************************!*\\\n !*** ./src/playbacks/hls/index.js ***!\n \\************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _hls = __webpack_require__(/*! ./hls */ \"./src/playbacks/hls/hls.js\");\n\nvar _hls2 = _interopRequireDefault(_hls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _hls2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/html5_audio/html5_audio.js\":\n/*!**************************************************!*\\\n !*** ./src/playbacks/html5_audio/html5_audio.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(/*! ../../base/events */ \"./src/base/events.js\");\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(/*! ../../base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _html5_video = __webpack_require__(/*! ../../playbacks/html5_video */ \"./src/playbacks/html5_video/index.js\");\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: remove this playback and change HTML5Video to HTML5Playback (breaking change, only after 0.3.0)\nvar HTML5Audio = function (_HTML5Video) {\n (0, _inherits3.default)(HTML5Audio, _HTML5Video);\n\n function HTML5Audio() {\n (0, _classCallCheck3.default)(this, HTML5Audio);\n return (0, _possibleConstructorReturn3.default)(this, _HTML5Video.apply(this, arguments));\n }\n\n HTML5Audio.prototype.updateSettings = function updateSettings() {\n this.settings.left = ['playpause', 'position', 'duration'];\n this.settings.seekEnabled = this.isSeekEnabled();\n this.trigger(_events2.default.PLAYBACK_SETTINGSUPDATE);\n };\n\n HTML5Audio.prototype.getPlaybackType = function getPlaybackType() {\n return _playback2.default.AOD;\n };\n\n (0, _createClass3.default)(HTML5Audio, [{\n key: 'name',\n get: function get() {\n return 'html5_audio';\n }\n }, {\n key: 'tagName',\n get: function get() {\n return 'audio';\n }\n }, {\n key: 'isAudioOnly',\n get: function get() {\n return true;\n }\n }]);\n return HTML5Audio;\n}(_html5_video2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = HTML5Audio;\n\n\nHTML5Audio.canPlay = function (resourceUrl, mimeType) {\n var mimetypes = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n };\n return _html5_video2.default._canPlay('audio', mimetypes, resourceUrl, mimeType);\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/html5_audio/index.js\":\n/*!********************************************!*\\\n !*** ./src/playbacks/html5_audio/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _html5_audio = __webpack_require__(/*! ./html5_audio */ \"./src/playbacks/html5_audio/html5_audio.js\");\n\nvar _html5_audio2 = _interopRequireDefault(_html5_audio);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _html5_audio2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ \"./src/playbacks/html5_video/html5_video.js\":\n/*!**************************************************!*\\\n !*** ./src/playbacks/html5_video/html5_video.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _from = __webpack_require__(/*! babel-runtime/core-js/array/from */ \"./node_modules/babel-runtime/core-js/array/from.js\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _utils = __webpack_require__(/*! ../../base/utils */ \"./src/base/utils.js\");\n\nvar _playback = __webpack_require__(/*! ../../base/playback */ \"./src/base/playback.js\");\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _browser = __webpack_require__(/*! ../../components/browser */ \"./src/components/browser/index.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _error = __webpack_require__(/*! ../../components/error */ \"./src/components/error/index.js\");\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _events = __webpack_require__(/*! ../../base/events */ \"./src/base/events.js\");\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _log = __webpack_require__(/*! ../../plugins/log */ \"./src/plugins/log/index.js\");\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ \"./node_modules/clappr-zepto/zepto.js\");\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _template = __webpack_require__(/*! ../../base/template */ \"./src/base/template.js\");\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _tracks = __webpack_require__(/*! ./public/tracks.html */ \"./src/playbacks/html5_video/public/tracks.html\");\n\nvar _tracks2 = _interopRequireDefault(_tracks);\n\n__webpack_require__(/*! ./public/style.scss */ \"./src/playbacks/html5_video/public/style.scss\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar MIMETYPES = {\n 'mp4': ['avc1.42E01E', 'avc1.58A01E', 'avc1.4D401E', 'avc1.64001E', 'mp4v.20.8', 'mp4v.20.240', 'mp4a.40.2'].map(function (codec) {\n return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"';\n }),\n 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n 'm3u8': ['application/x-mpegurl']\n};\nMIMETYPES['ogv'] = MIMETYPES['ogg'];\nMIMETYPES['3gp'] = MIMETYPES['3gpp'];\n\nvar AUDIO_MIMETYPES = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n};\n\nvar KNOWN_AUDIO_MIMETYPES = (0, _keys2.default)(AUDIO_MIMETYPES).reduce(function (acc, k) {\n return [].concat((0, _toConsumableArray3.default)(acc), (0, _toConsumableArray3.default)(AUDIO_MIMETYPES[k]));\n}, []);\n\nvar UNKNOWN_ERROR = { code: 'unknown', message: 'unknown'\n\n // TODO: rename this Playback to HTML5Playback (breaking change, only after 0.3.0)\n};\nvar HTML5Video = function (_Playback) {\n (0, _inherits3.default)(HTML5Video, _Playback);\n (0, _createClass3.default)(HTML5Video, [{\n key: 'name',\n get: function get() {\n return 'html5_video';\n }\n }, {\n key: 'tagName',\n get: function get() {\n return this.isAudioOnly ? 'audio' : 'video';\n }\n }, {\n key: 'isAudioOnly',\n get: function get() {\n var resourceUrl = this.options.src;\n var mimeTypes = HTML5Video._mimeTypesForUrl(resourceUrl, AUDIO_MIMETYPES, this.options.mimeType);\n return this.options.playback && this.options.playback.audioOnly || this.options.audioOnly || KNOWN_AUDIO_MIMETYPES.indexOf(mimeTypes[0]) >= 0;\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'data-html5-video': ''\n };\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'canplay': '_onCanPlay',\n 'canplaythrough': '_handleBufferingEvents',\n 'durationchange': '_onDurationChange',\n 'ended': '_onEnded',\n 'error': '_onError',\n 'loadeddata': '_onLoadedData',\n 'loadedmetadata': '_onLoadedMetadata',\n 'pause': '_onPause',\n 'playing': '_onPlaying',\n 'progress': '_onProgress',\n 'seeking': '_onSeeking',\n 'seeked': '_onSeeked',\n 'stalled': '_handleBufferingEvents',\n 'timeupdate': '_onTimeUpdate',\n 'waiting': '_onWaiting'\n };\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this.el.ended;\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return this._isBuffering;\n }\n }]);\n\n function HTML5Video() {\n (0, _classCallCheck3.default)(this, HTML5Video);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _Playback.call.apply(_Playback, [this].concat(args)));\n\n _this._destroyed = false;\n _this._loadStarted = false;\n _this._isBuffering = false;\n _this._playheadMoving = false;\n _this._playheadMovingTimer = null;\n _this._stopped = false;\n _this._ccTrackId = -1;\n _this._setupSrc(_this.options.src);\n // backwards compatibility (TODO: remove on 0.3.0)\n _this.options.playback || (_this.options.playback = _this.options || {});\n _this.options.playback.disableContextMenu = _this.options.playback.disableContextMenu || _this.options.disableVideoTagContextMenu;\n\n var playbackConfig = _this.options.playback;\n var preload = playbackConfig.preload || (_browser2.default.isSafari ? 'auto' : _this.options.preload);\n\n var posterUrl = void 0; // FIXME: poster plugin should always convert poster to object with expected properties ?\n if (_this.options.poster) {\n if (typeof _this.options.poster === 'string') posterUrl = _this.options.poster;else if (typeof _this.options.poster.url === 'string') posterUrl = _this.options.poster.url;\n }\n\n _clapprZepto2.default.extend(_this.el, {\n muted: _this.options.mute,\n defaultMuted: _this.options.mute,\n loop: _this.options.loop,\n poster: posterUrl,\n preload: preload || 'metadata',\n controls: (playbackConfig.controls || _this.options.useVideoTagDefaultControls) && 'controls',\n crossOrigin: playbackConfig.crossOrigin,\n 'x-webkit-playsinline': playbackConfig.playInline\n });\n\n playbackConfig.playInline && _this.$el.attr({ playsinline: 'playsinline' });\n playbackConfig.crossOrigin && _this.$el.attr({ crossorigin: playbackConfig.crossOrigin });\n\n // TODO should settings be private?\n _this.settings = { default: ['seekbar'] };\n _this.settings.left = ['playpause', 'position', 'duration'];\n _this.settings.right = ['fullscreen', 'volume', 'hd-indicator'];\n\n playbackConfig.externalTracks && _this._setupExternalTracks(playbackConfig.externalTracks);\n\n _this.options.autoPlay && _this.attemptAutoPlay();\n return _this;\n }\n\n HTML5Video.prototype.configure = function configure(options) {\n _Playback.prototype.configure.call(this, options);\n this.el.loop = !!options.loop;\n };\n\n // See Playback.attemptAutoPlay()\n\n\n HTML5Video.prototype.attemptAutoPlay = function attemptAutoPlay() {\n var _this2 = this;\n\n this.canAutoPlay(function (result, error) {\n error && _log2.default.warn(_this2.name, 'autoplay error.', { result: result, error: error });\n\n // https://github.com/clappr/clappr/issues/1076\n result && process.nextTick(function () {\n return !_this2._destroyed && _this2.play();\n });\n });\n };\n\n // See Playback.canAutoPlay()\n\n\n HTML5Video.prototype.canAutoPlay = function canAutoPlay(cb) {\n if (this.options.disableCanAutoPlay) cb(true, null);\n\n var opts = {\n timeout: this.options.autoPlayTimeout || 500,\n inline: this.options.playback.playInline || false,\n muted: this.options.mute || false // Known issue: mediacontrols may asynchronously mute video\n\n\n // Use current video element if recycling feature enabled with mobile devices\n };if (_browser2.default.isMobile && _utils.DomRecycler.options.recycleVideo) opts.element = this.el;\n\n // Desktop browser autoplay policy may require user action\n // Mobile browser autoplay require user consent and video recycling feature enabled\n // It may returns a false positive with source-less player consent\n (0, _utils.canAutoPlayMedia)(cb, opts);\n };\n\n HTML5Video.prototype._setupExternalTracks = function _setupExternalTracks(tracks) {\n this._externalTracks = tracks.map(function (track) {\n return {\n kind: track.kind || 'subtitles', // Default is 'subtitles'\n label: track.label,\n lang: track.lang,\n src: track.src\n };\n });\n };\n\n /**\n * Sets the source url on the