Newer
Older
CloudBrainNew / static / videoPlay / video.js
StephanieGitHub on 4 Feb 2021 431 KB first commit
/*! Aliplayer - v2.8.2 - 2019-05-09 16.34.41 */
!function n(a, s, l) {
    function u(t, e) {
        if (!s[t]) {
            if (!a[t]) {
                var i = "function" == typeof require && require;
                if (!e && i) return i(t, !0);
                if (c) return c(t, !0);
                var r = new Error("Cannot find module '" + t + "'");
                throw r.code = "MODULE_NOT_FOUND", r
            }
            var o = s[t] = {exports: {}};
            a[t][0].call(o.exports, function (e) {
                return u(a[t][1][e] || e)
            }, o, o.exports, n, a, s, l)
        }
        return s[t].exports
    }

    for (var c = "function" == typeof require && require, e = 0; e < l.length; e++) u(l[e]);
    return u
}({
    1: [function (e, t, i) {
        !function () {
            "use strict";

            function l(o, e) {
                var t;
                if (e = e || {}, this.trackingClick = !1, this.trackingClickStart = 0, this.targetElement = null, this.touchStartX = 0, this.touchStartY = 0, this.lastTouchIdentifier = 0, this.touchBoundary = e.touchBoundary || 10, this.layer = o, this.tapDelay = e.tapDelay || 200, this.tapTimeout = e.tapTimeout || 700, !l.notNeeded(o)) {
                    for (var i = ["onMouse", "onClick", "onTouchStart", "onTouchMove", "onTouchEnd", "onTouchCancel"], r = this, n = 0, a = i.length; n < a; n++) r[i[n]] = s(r[i[n]], r);
                    u && (o.addEventListener("mouseover", this.onMouse, !0), o.addEventListener("mousedown", this.onMouse, !0), o.addEventListener("mouseup", this.onMouse, !0)), o.addEventListener("click", this.onClick, !0), o.addEventListener("touchstart", this.onTouchStart, !1), o.addEventListener("touchmove", this.onTouchMove, !1), o.addEventListener("touchend", this.onTouchEnd, !1), o.addEventListener("touchcancel", this.onTouchCancel, !1), Event.prototype.stopImmediatePropagation || (o.removeEventListener = function (e, t, i) {
                        var r = Node.prototype.removeEventListener;
                        "click" === e ? r.call(o, e, t.hijacked || t, i) : r.call(o, e, t, i)
                    }, o.addEventListener = function (e, t, i) {
                        var r = Node.prototype.addEventListener;
                        "click" === e ? r.call(o, e, t.hijacked || (t.hijacked = function (e) {
                            e.propagationStopped || t(e)
                        }), i) : r.call(o, e, t, i)
                    }), "function" == typeof o.onclick && (t = o.onclick, o.addEventListener("click", function (e) {
                        t(e)
                    }, !1), o.onclick = null)
                }

                function s(e, t) {
                    return function () {
                        return e.apply(t, arguments)
                    }
                }
            }

            var e = 0 <= navigator.userAgent.indexOf("Windows Phone"),
                u = 0 < navigator.userAgent.indexOf("Android") && !e,
                s = /iP(ad|hone|od)/.test(navigator.userAgent) && !e,
                c = s && /OS 4_\d(_\d)?/.test(navigator.userAgent), d = s && /OS [6-7]_\d/.test(navigator.userAgent),
                o = 0 < navigator.userAgent.indexOf("BB10");
            l.prototype.needsClick = function (e) {
                switch (e.nodeName.toLowerCase()) {
                    case"button":
                    case"select":
                    case"textarea":
                        if (e.disabled) return !0;
                        break;
                    case"input":
                        if (s && "file" === e.type || e.disabled) return !0;
                        break;
                    case"label":
                    case"iframe":
                    case"video":
                        return !0
                }
                return /\bneedsclick\b/.test(e.className)
            }, l.prototype.needsFocus = function (e) {
                switch (e.nodeName.toLowerCase()) {
                    case"textarea":
                        return !0;
                    case"select":
                        return !u;
                    case"input":
                        switch (e.type) {
                            case"button":
                            case"checkbox":
                            case"file":
                            case"image":
                            case"radio":
                            case"submit":
                                return !1
                        }
                        return !e.disabled && !e.readOnly;
                    default:
                        return /\bneedsfocus\b/.test(e.className)
                }
            }, l.prototype.sendClick = function (e, t) {
                var i, r;
                document.activeElement && document.activeElement !== e && document.activeElement.blur(), r = t.changedTouches[0], (i = document.createEvent("MouseEvents")).initMouseEvent(this.determineEventType(e), !0, !0, window, 1, r.screenX, r.screenY, r.clientX, r.clientY, !1, !1, !1, !1, 0, null), i.forwardedTouchEvent = !0, e.dispatchEvent(i)
            }, l.prototype.determineEventType = function (e) {
                return u && "select" === e.tagName.toLowerCase() ? "mousedown" : "click"
            }, l.prototype.focus = function (e) {
                var t;
                s && e.setSelectionRange && 0 !== e.type.indexOf("date") && "time" !== e.type && "month" !== e.type ? (t = e.value.length, e.setSelectionRange(t, t)) : e.focus()
            }, l.prototype.updateScrollParent = function (e) {
                var t, i;
                if (!(t = e.fastClickScrollParent) || !t.contains(e)) {
                    i = e;
                    do {
                        if (i.scrollHeight > i.offsetHeight) {
                            t = i, e.fastClickScrollParent = i;
                            break
                        }
                        i = i.parentElement
                    } while (i)
                }
                t && (t.fastClickLastScrollTop = t.scrollTop)
            }, l.prototype.getTargetElementFromEventTarget = function (e) {
                return e.nodeType === Node.TEXT_NODE ? e.parentNode : e
            }, l.prototype.onTouchStart = function (e) {
                var t, i, r;
                if (1 < e.targetTouches.length) return !0;
                if (t = this.getTargetElementFromEventTarget(e.target), i = e.targetTouches[0], s) {
                    if ((r = window.getSelection()).rangeCount && !r.isCollapsed) return !0;
                    if (!c) {
                        if (i.identifier && i.identifier === this.lastTouchIdentifier) return e.preventDefault(), !1;
                        this.lastTouchIdentifier = i.identifier, this.updateScrollParent(t)
                    }
                }
                return this.trackingClick = !0, this.trackingClickStart = e.timeStamp, this.targetElement = t, this.touchStartX = i.pageX, this.touchStartY = i.pageY, e.timeStamp - this.lastClickTime < this.tapDelay && e.preventDefault(), !0
            }, l.prototype.touchHasMoved = function (e) {
                var t = e.changedTouches[0], i = this.touchBoundary;
                return Math.abs(t.pageX - this.touchStartX) > i || Math.abs(t.pageY - this.touchStartY) > i
            }, l.prototype.onTouchMove = function (e) {
                return this.trackingClick && (this.targetElement !== this.getTargetElementFromEventTarget(e.target) || this.touchHasMoved(e)) && (this.trackingClick = !1, this.targetElement = null), !0
            }, l.prototype.findControl = function (e) {
                return void 0 !== e.control ? e.control : e.htmlFor ? document.getElementById(e.htmlFor) : e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")
            }, l.prototype.onTouchEnd = function (e) {
                var t, i, r, o, n, a = this.targetElement;
                if (!this.trackingClick) return !0;
                if (e.timeStamp - this.lastClickTime < this.tapDelay) return this.cancelNextClick = !0;
                if (e.timeStamp - this.trackingClickStart > this.tapTimeout) return !0;
                if (this.cancelNextClick = !1, this.lastClickTime = e.timeStamp, i = this.trackingClickStart, this.trackingClick = !1, this.trackingClickStart = 0, d && (n = e.changedTouches[0], (a = document.elementFromPoint(n.pageX - window.pageXOffset, n.pageY - window.pageYOffset) || a).fastClickScrollParent = this.targetElement.fastClickScrollParent), "label" === (r = a.tagName.toLowerCase())) {
                    if (t = this.findControl(a)) {
                        if (this.focus(a), u) return !1;
                        a = t
                    }
                } else if (this.needsFocus(a)) return 100 < e.timeStamp - i || s && window.top !== window && "input" === r ? this.targetElement = null : (this.focus(a), this.sendClick(a, e), s && "select" === r || (this.targetElement = null, e.preventDefault())), !1;
                return !(!s || c || !(o = a.fastClickScrollParent) || o.fastClickLastScrollTop === o.scrollTop) || (this.needsClick(a) || (e.preventDefault(), this.sendClick(a, e)), !1)
            }, l.prototype.onTouchCancel = function () {
                this.trackingClick = !1, this.targetElement = null
            }, l.prototype.onMouse = function (e) {
                return !this.targetElement || (!!e.forwardedTouchEvent || (!e.cancelable || (!(!this.needsClick(this.targetElement) || this.cancelNextClick) || (e.stopImmediatePropagation ? e.stopImmediatePropagation() : e.propagationStopped = !0, e.stopPropagation(), e.preventDefault(), !1))))
            }, l.prototype.onClick = function (e) {
                var t;
                return this.trackingClick ? (this.targetElement = null, !(this.trackingClick = !1)) : "submit" === e.target.type && 0 === e.detail || ((t = this.onMouse(e)) || (this.targetElement = null), t)
            }, l.prototype.destroy = function () {
                var e = this.layer;
                u && (e.removeEventListener("mouseover", this.onMouse, !0), e.removeEventListener("mousedown", this.onMouse, !0), e.removeEventListener("mouseup", this.onMouse, !0)), e.removeEventListener("click", this.onClick, !0), e.removeEventListener("touchstart", this.onTouchStart, !1), e.removeEventListener("touchmove", this.onTouchMove, !1), e.removeEventListener("touchend", this.onTouchEnd, !1), e.removeEventListener("touchcancel", this.onTouchCancel, !1)
            }, l.notNeeded = function (e) {
                var t, i, r;
                if (void 0 === window.ontouchstart) return !0;
                if (i = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1]) {
                    if (!u) return !0;
                    if (t = document.querySelector("meta[name=viewport]")) {
                        if (-1 !== t.content.indexOf("user-scalable=no")) return !0;
                        if (31 < i && document.documentElement.scrollWidth <= window.outerWidth) return !0
                    }
                }
                if (o && 10 <= (r = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/))[1] && 3 <= r[2] && (t = document.querySelector("meta[name=viewport]"))) {
                    if (-1 !== t.content.indexOf("user-scalable=no")) return !0;
                    if (document.documentElement.scrollWidth <= window.outerWidth) return !0
                }
                return "none" === e.style.msTouchAction || "manipulation" === e.style.touchAction || (!!(27 <= +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1] && (t = document.querySelector("meta[name=viewport]")) && (-1 !== t.content.indexOf("user-scalable=no") || document.documentElement.scrollWidth <= window.outerWidth)) || ("none" === e.style.touchAction || "manipulation" === e.style.touchAction))
            }, l.attach = function (e, t) {
                return new l(e, t)
            }, "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function () {
                return l
            }) : void 0 !== t && t.exports ? (t.exports = l.attach, t.exports.FastClick = l) : window.FastClick = l
        }()
    }, {}],
    2: [function (e, t, i) {
        var r = e("../ui/component"), o = (e("../lib/util"), e("../lib/dom")), n = e("../lib/event"),
            a = (e("../lib/ua"), e("../lang/index")), s = e("../player/base/event/eventtype"), l = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-auto-stream-selector", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = "<div><p class='tip-text'></p></div><div class='operators'><a class='prism-button prism-button-ok' type='button'>" + a.get("OK_Text") + "</a><a class='prism-button prism-button-cancel'  target='_blank'>" + a.get("Cancel_Text") + "</a></div>", e
                }, bindEvent: function () {
                    var r = this;
                    r._player.on(s.Private.AutoStreamShow, function (e) {
                        var t = document.querySelector("#" + r.getId() + " .tip-text");
                        if (r._player._getLowerQualityLevel) {
                            var i = r._player._getLowerQualityLevel();
                            i && (r._switchUrl = i, t.innerText = a.get("Auto_Stream_Tip_Text").replace("$$", i.item.desc), o.css(r.el(), "display", "block"))
                        }
                    }), r._player.on(s.Private.AutoStreamHide, function (e) {
                        document.querySelector("#" + r.getId() + " .tip-text");
                        o.css(r.el(), "display", "none")
                    });
                    var e = document.querySelector("#" + r.getId() + " .prism-button-ok");
                    n.on(e, "click", function () {
                        r._player._changeStream && r._switchUrl && r._player._changeStream(r._switchUrl.index, a.get("Quality_Change_Text")), o.css(r.el(), "display", "none")
                    });
                    var t = document.querySelector("#" + r.getId() + " .prism-button-cancel");
                    n.on(t, "click", function () {
                        o.css(r.el(), "display", "none")
                    })
                }
            });
        t.exports = l
    }, {
        "../lang/index": 11,
        "../lib/dom": 18,
        "../lib/event": 19,
        "../lib/ua": 31,
        "../lib/util": 33,
        "../player/base/event/eventtype": 43,
        "../ui/component": 94
    }],
    3: [function (e, t, i) {
        var r = e("../ui/component"), s = e("../lib/dom"), o = e("../lib/event"), n = e("../lib/ua"),
            a = e("../lib/function"), l = (e("../lang/index"), e("../lib/util")), u = e("../config"),
            c = e("../lib/playerutil"), d = e("../player/base/event/eventtype"), p = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-liveshift-progress", this.addClass(this.className), this._liveshiftService = e._liveshiftService
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this);
                    return e.innerHTML = '<div class="prism-enable-liveshift"><div class="prism-progress-loaded"></div><div class="prism-progress-played"></div><div class="prism-progress-cursor"><img></img></div><p class="prism-progress-time"></p><div class="prism-liveshift-seperator">00:00:00</div></div><div class="prism-disable-liveshift"></div>', e
                }, bindEvent: function () {
                    var i = this;
                    this.loadedNode = document.querySelector("#" + this.id() + " .prism-progress-loaded"), this.playedNode = document.querySelector("#" + this.id() + " .prism-progress-played"), this.cursorNode = document.querySelector("#" + this.id() + " .prism-progress-cursor"), this.timeNode = document.querySelector("#" + this.id() + " .prism-progress-time"), this.controlNode = document.querySelector("#" + this._player._options.id + " .prism-controlbar"), this.seperatorNode = document.querySelector("#" + this.id() + " .prism-liveshift-seperator"), this.progressNode = document.querySelector("#" + this.id() + " .prism-enable-liveshift");
                    var e = document.querySelector("#" + this.id() + " .prism-progress-cursor img"),
                        t = "//" + u.domain + "/de/prismplayer/" + u.h5Version + "/skins/default/img/dragcursor.png";
                    u.domain ? -1 < u.domain.indexOf("localhost") && (t = "//" + u.domain + "/build/skins/default/img/dragcursor.png") : t = "de/prismplayer/" + u.h5Version + "/skins/default/img/dragcursor.png", e.src = t, o.on(this.cursorNode, "mousedown", function (e) {
                        i._onMouseDown(e)
                    }), o.on(this.cursorNode, "touchstart", function (e) {
                        i._onMouseDown(e)
                    }), o.on(this.progressNode, "mousemove", function (e) {
                        i._progressMove(e)
                    }), o.on(this.progressNode, "touchmove", function (e) {
                        i._progressMove(e)
                    }), o.on(this._el, "click", function (e) {
                        i._onMouseClick(e)
                    }), this._player.on(d.Private.HideProgress, function (e) {
                        i._hideProgress(e)
                    }), this._player.on(d.Private.CancelHideProgress, function (e) {
                        i._cancelHideProgress(e)
                    }), this._player.on(d.Private.ShowBar, function () {
                        i._updateLayout()
                    }), o.on(this.progressNode, d.Private.MouseOver, function (e) {
                        i._onMouseOver(e)
                    }), o.on(this.progressNode, d.Private.MouseOut, function (e) {
                        i._onMouseOut(e)
                    }), this.bindTimeupdate = a.bind(this, this._onTimeupdate), this._player.on(d.Player.TimeUpdate, this.bindTimeupdate), c.isLiveShift(this._player._options) && this._player.on(d.Player.Play, function () {
                        i._liveshiftService.start(6e4, function (e) {
                            var t = {
                                mediaId: i._player._options.vid ? i._player._options.vid : "",
                                error_code: e.Code,
                                error_msg: e.Message
                            };
                            i._player.logError(t), i._player.trigger(d.Player.Error, t)
                        })
                    }), this._player.on(d.Private.LiveShiftQueryCompleted, function () {
                        i._updateSeperator(), i._updateLayout()
                    }), this._player.on(d.Player.Pause, function () {
                        i._liveshiftService.stop()
                    }), n.IS_IPAD ? this.interval = setInterval(function () {
                        i._onProgress()
                    }, 500) : this._player.on(d.Video.Progress, function () {
                        i._onProgress()
                    })
                }, _updateSeperator: function () {
                    this._liveshiftService.currentTimeDisplay && (this.seperatorNode.innerText = this._liveshiftService.currentTimeDisplay)
                }, _updateLayout: function () {
                    var e = this.seperatorNode.offsetWidth, t = this.el().offsetWidth, i = t - e;
                    0 != e && 0 != i && (s.css(this.progressNode, "width", 100 * (i - 10) / t + "%"), s.css(this.seperatorNode, "right", -1 * (e + 10) + "px"))
                }, _progressMove: function (e) {
                    var t = this._getSeconds(e), i = this._liveshiftService.availableLiveShiftTime;
                    this.timeNode.innerText = "-" + l.formatTime(i - t);
                    var r = i ? t / i : 0, o = 1 - this.timeNode.clientWidth / this.el().clientWidth;
                    o < r && (r = o), this.timeNode && s.css(this.timeNode, "left", 100 * r + "%")
                }, _hideProgress: function (e) {
                    o.off(this.cursorNode, "mousedown"), o.off(this.cursorNode, "touchstart")
                }, _cancelHideProgress: function (e) {
                    var t = this;
                    o.on(this.cursorNode, "mousedown", function (e) {
                        t._onMouseDown(e)
                    }), o.on(this.cursorNode, "touchstart", function (e) {
                        t._onMouseDown(e)
                    })
                }, _canSeekable: function (e) {
                    var t = !0;
                    return "function" == typeof this._player.canSeekable && (t = this._player.canSeekable(e)), t
                }, _onMouseOver: function (e) {
                    this._updateCursorPosition(this._getCurrentTime()), s.css(this.timeNode, "display", "block")
                }, _onMouseOut: function (e) {
                    s.css(this.timeNode, "display", "none")
                }, _getSeconds: function (e) {
                    for (var t = this.el().offsetLeft, i = this.el(); i = i.offsetParent;) {
                        var r = s.getTranslateX(i);
                        t += i.offsetLeft + r
                    }
                    var o = (e.touches ? e.touches[0].pageX : e.pageX) - t, n = this.progressNode.offsetWidth,
                        a = this._liveshiftService.availableLiveShiftTime;
                    return sec = a ? o / n * a : 0, sec < 0 && (sec = 0), sec > a && (sec = a), sec
                }, _onMouseClick: function (e) {
                    var t = this, i = this._getSeconds(e), r = this._liveshiftService.availableLiveShiftTime - i;
                    this._player.trigger(d.Private.SeekStart, {fromTime: this._getCurrentTime()});
                    var o = this._liveshiftService.getSourceUrl(r), n = t._player._options.source,
                        a = c.isHls(t._player._options.source);
                    a && o == n ? t._player.seek(i) : t._player._loadByUrlInner(o, i, !0), t._player.trigger(d.Private.Play_Btn_Hide), t._liveshiftService.seekTime = i, t._player.trigger(d.Private.EndStart, {toTime: i}), t._updateCursorPosition(i), a && setTimeout(function () {
                        t._player.play()
                    })
                }, _onMouseDown: function (e) {
                    var t = this;
                    e.preventDefault(), this._player.trigger(d.Private.SeekStart, {fromTime: this._getCurrentTime()}), o.on(this.controlNode, "mousemove", function (e) {
                        t._onMouseMove(e)
                    }), o.on(this.controlNode, "touchmove", function (e) {
                        t._onMouseMove(e)
                    }), o.on(this._player.tag, "mouseup", function (e) {
                        t._onMouseUp(e)
                    }), o.on(this._player.tag, "touchend", function (e) {
                        t._onMouseUp(e)
                    }), o.on(this.controlNode, "mouseup", function (e) {
                        t._onMouseUp(e)
                    }), o.on(this.controlNode, "touchend", function (e) {
                        t._onMouseUp(e)
                    })
                }, _onMouseUp: function (e) {
                    e.preventDefault(), o.off(this.controlNode, "mousemove"), o.off(this.controlNode, "touchmove"), o.off(this._player.tag, "mouseup"), o.off(this._player.tag, "touchend"), o.off(this.controlNode, "mouseup"), o.off(this.controlNode, "touchend");
                    var t = this._liveshiftService.availableLiveShiftTime,
                        i = this.playedNode.offsetWidth / this.el().offsetWidth * t;
                    this._player.seek(i), this._player.trigger(d.Private.Play_Btn_Hide), this._liveshiftService.seekTime = i, this._player.trigger(d.Private.EndStart, {toTime: i})
                }, _onMouseMove: function (e) {
                    e.preventDefault();
                    var t = this._getSeconds(e);
                    this._updateProgressBar(this.playedNode, t), this._updateCursorPosition(t)
                }, _onTimeupdate: function (e) {
                    this._updateProgressBar(this.playedNode, this._getCurrentTime()), this._updateCursorPosition(this._getCurrentTime()), this._player.trigger(d.Private.UpdateProgressBar, {time: this._getCurrentTime()})
                }, _getCurrentTime: function () {
                    var e = this._liveshiftService.seekTime;
                    return -1 == e && (e = 0), this._player.getCurrentTime() + e
                }, _onProgress: function (e) {
                    this._player.getDuration() && 1 <= this._player.getBuffered().length && this._updateProgressBar(this.loadedNode, this._player.getBuffered().end(this._player.getBuffered().length - 1))
                }, _updateProgressBar: function (e, t) {
                    if (1 != this._player._switchSourcing) {
                        var i = 0;
                        if (-1 == this._liveshiftService.seekTime) i = 1; else {
                            var r = this._liveshiftService.availableLiveShiftTime;
                            1 < (i = r ? t / r : 0) && (i = 1, this._liveshiftService.seekTime = -1)
                        }
                        this.liveShiftStartDisplay;
                        e && s.css(e, "width", 100 * i + "%")
                    }
                }, _updateCursorPosition: function (e) {
                    if (this._player.el() && 1 != this._player._switchSourcing && (0 != e || 0 != this._player.tag.readyState)) {
                        var t = 0, i = 1, r = this._player.el().clientWidth;
                        if (-1 == this._liveshiftService.seekTime) t = 1; else {
                            var o = this._liveshiftService.availableLiveShiftTime;
                            1 < (t = o ? e / o : 0) && (this._liveshiftService.seekTime = -1)
                        }
                        if (0 != r) {
                            var n = 18 / r;
                            i = 1 - n, t -= n
                        }
                        this.cursorNode && (i < t ? (s.css(this.cursorNode, "right", "0px"), s.css(this.cursorNode, "left", "auto")) : (s.css(this.cursorNode, "right", "auto"), s.css(this.cursorNode, "left", 100 * t + "%")))
                    }
                }
            });
        t.exports = p
    }, {
        "../config": 5,
        "../lang/index": 11,
        "../lib/dom": 18,
        "../lib/event": 19,
        "../lib/function": 20,
        "../lib/playerutil": 29,
        "../lib/ua": 31,
        "../lib/util": 33,
        "../player/base/event/eventtype": 43,
        "../ui/component": 94
    }],
    4: [function (e, t, i) {
        var r = e("../ui/component"), n = e("../lib/util"), a = e("../player/base/event/eventtype"), o = r.extend({
            init: function (e, t) {
                r.call(this, e, t), this.className = t.className ? t.className : "prism-live-time-display", this.addClass(this.className), this._liveshiftService = e._liveshiftService
            }, createEl: function () {
                var e = r.prototype.createEl.call(this, "div");
                return e.innerHTML = '<span class="current-time">00:00</span> <span class="time-bound">/</span> <span class="end-time">00:00</span><span class="live-text">Live: </span><span class="live-time"></span>', e
            }, bindEvent: function () {
                var o = this;
                this._player.on(a.Video.TimeUpdate, function () {
                    var e = o._liveshiftService, t = document.querySelector("#" + o.id() + " .current-time");
                    if (e.liveShiftStartDisplay && e.availableLiveShiftTime > e.seekTime && -1 != e.seekTime) {
                        var i = o._liveshiftService.getBaseTime(), r = n.formatTime(i + o._player.getCurrentTime());
                        t.innerText = r
                    } else e.currentTimeDisplay && (t.innerText = e.currentTimeDisplay)
                }), this._player.on(a.Private.LiveShiftQueryCompleted, function () {
                    o.updateTime()
                })
            }, updateTime: function () {
                document.querySelector("#" + this.id() + " .end-time").innerText = this._liveshiftService.liveTimeRange.endDisplay, document.querySelector("#" + this.id() + " .live-time").innerText = this._liveshiftService.currentTimeDisplay
            }
        });
        t.exports = o
    }, {"../lib/util": 33, "../player/base/event/eventtype": 43, "../ui/component": 94}],
    5: [function (e, t, i) {
        t.exports = {
            domain: "g.alicdn.com",
            flashVersion: "2.8.2",
            h5Version: "2.8.2",
            cityBrain: !0,
            logDuration: 10,
            logCount: 100,
            logReportTo: "https://videocloud.cn-hangzhou.log.aliyuncs.com/logstores/newplayer/track"
        }
    }, {}],
    6: [function (e, t, i) {
        e("./lang/index").load();
        var r = e("./player/adaptivePlayer"), o = e("./lib/componentutil"), n = e("./config"), a = function (e, t) {
            return r.create(e, t)
        };
        a.getVersion = function () {
            return n.h5Version
        }, o.register(a);
        var s = window.Aliplayer = a;
        a.players = {}, "function" == typeof define && define.amd ? define([], function () {
            return s
        }) : "object" == typeof i && "object" == typeof t && (t.exports = s), "undefined" != typeof Uint8Array && (Uint8Array.prototype.slice || Object.defineProperty(Uint8Array.prototype, "slice", {value: Array.prototype.slice}))
    }, {"./config": 5, "./lang/index": 11, "./lib/componentutil": 14, "./player/adaptivePlayer": 40}],
    7: [function (e, t, i) {
        var r = e("../lib/oo"), o = e("../lang/index"), n = r.extend({
            init: function (e, t) {
                this._player = e, this._options = e.options()
            }
        });
        n.prototype.handle = function (e) {
            if (this._options.autoPlayDelay) {
                var t = this._options.autoPlayDelayDisplayText;
                t || (t = o.get("AutoPlayDelayDisplayText").replace("$$", this._options.autoPlayDelay)), this._player.trigger("info_show", t), this._player.trigger("h5_loading_hide"), this._player.trigger("play_btn_hide");
                var i = this;
                this._timeHandler = setTimeout(function () {
                    i._player.trigger("info_hide"), i._options.autoPlayDelay = 0, e && e()
                }, 1e3 * this._options.autoPlayDelay), this._player.on("play", function () {
                    a(i)
                }), this._player.on("pause", function () {
                    a(i)
                })
            }
        }, n.prototype.dispose = function () {
            a(this), this._player = null
        };
        var a = function (e) {
            e._timeHandler && (clearTimeout(e._timeHandler), e._timeHandler = null)
        };
        t.exports = n
    }, {"../lang/index": 11, "../lib/oo": 27}],
    8: [function (e, t, i) {
        t.exports = t.exports = {
            OD: "OD",
            FD: "360p",
            LD: "540p",
            SD: "720p",
            HD: "1080p",
            "2K": "2K",
            "4K": "4K",
            FHD: "FHD",
            XLD: "XLD",
            SQ: "SQ",
            HQ: "HQ",
            Speed: "Speed",
            Speed_05X_Text: "0.5X",
            Speed_1X_Text: "Normal",
            Speed_125X_Text: "1.25X",
            Speed_15X_Text: "1.5X",
            Speed_2X_Text: "2X",
            Refresh_Text: "Refresh",
            Cancel: "Cancel",
            Mute: "Mute",
            Snapshot: "Snapshot",
            Detection_Text: "Diagnosis",
            Play_DateTime: "Time",
            Quality_Change_Fail_Switch_Text: "Cannot play, switch to ",
            Quality_Change_Text: "Switch to ",
            Quality_The_Url: "The url",
            AutoPlayDelayDisplayText: "Play in $$ seconds",
            Error_Load_Abort_Text: "Data abort erro",
            Error_Network_Text: "Loading failed due to network error",
            Error_Decode_Text: "Decode error",
            Error_Server_Network_NotSupport_Text: "Network error or \xa0the format of video is unsupported",
            Error_Offline_Text: "The network is unreachable, please click Refresh",
            Error_Play_Text: "Error occured while playing",
            Error_Retry_Text: " Please close or refresh",
            Error_AuthKey_Text: "Authentication expired or the domain is not in white list",
            Error_H5_Not_Support_Text: "The format of video is not supported by\xa0h5 player\uff0cplease use flash player",
            Error_Not_Support_M3U8_Text: "The format of m3u8 is not supported by this explorer",
            Error_Not_Support_MP4_Text: "The format of mp4\xa0is not supported by this explorer",
            Error_Not_Support_encrypt_Text: "Play the encrypted video,please set encryptType to 1",
            Error_Vod_URL_Is_Empty_Text: "The url is empty",
            Error_Vod_Fetch_Urls_Text: "Error occured when fetch urls\uff0cplease close or refresh",
            Fetch_Playauth_Error: "Error occured when fetch playauth close or refresh",
            Error_Playauth_Decode_Text: "PlayAuth parse failed",
            Error_Vid_Not_Same_Text: "Cannot renew url due to vid changed",
            Error_Playauth_Expired_Text: "Playauth expired, please close or refresh",
            Error_MTS_Fetch_Urls_Text: "Error occurred while requesting mst server",
            Error_Load_M3U8_Failed_Text: "The\xa0m3u8 file loaded failed",
            Error_Load_M3U8_Timeout_Text: "Timeout error occored\xa0when the\xa0m3u8 file loaded",
            Error_M3U8_Decode_Text: "The m3u8 file decoded failed",
            Error_TX_Decode_Text: "Video decoded failed",
            Error_Waiting_Timeout_Text: "Buffering timeout,\xa0please close or refresh",
            Error_Invalidate_Source: "Video shoud be mp4\u3001mp3\u3001m3u8\u3001mpd or flv",
            Error_Empty_Source: "Video URL shouldn't be empty",
            Error_Vid_Empty_Source: "vid's video URL hasn't been fetched",
            Error_Fetch_NotStream: "The vid has no stream to play",
            Error_Not_Found: "Url is not found",
            Live_End: "Live has finished",
            Play_Before_Fullscreen: "Please play before fullscreen",
            Can_Not_Seekable: "Can not seek to this position",
            Cancel_Text: "Cancel",
            OK_Text: "OK",
            Auto_Stream_Tip_Text: "Internet is slow, does switch to $$",
            Request_Block_Text: "This request is blocked, the video Url should be over https",
            Open_Html_By_File: "Html page should be on the server",
            Maybe_Cors_Error: "please make sure enable cors,<a href='https://help.aliyun.com/document_detail/62950.html?spm=a2c4g.11186623.2.21.Y3n2oi' target='_blank'>refer to document</a>",
            Speed_Switch_To: "Speed switch to ",
            Curent_Volume: "Current volume:",
            Volume_Mute: "set to mute",
            Volume_UnMute: "set to unmute",
            ShiftLiveTime_Error: "Live start time should not be greater than over time",
            Error_Not_Support_Format_On_Mobile: "flv\u3001rmtp can't be supported on mobile\uff0cplease use m3u8",
            SessionId_Ticket_Invalid: "please assign value for sessionId and ticket properties",
            Http_Error: " An HTTP network request failed with an error, but not from the server.",
            Http_Timeout: "A network request timed out",
            DRM_License_Expired: "DRM license is expired, please refresh",
            Not_Support_DRM: "Browser doesn't support DRM",
            CC_Switch_To: "Subtitle switch to ",
            AudioTrack_Switch_To: "Audio tracks switch to ",
            Subtitle: "Subtitle/CC",
            AudioTrack: "Audio Track",
            Quality: "Quality",
            Auto: "Auto",
            Quality_Switch_To: "Quality switch to ",
            Fullscreen: "Full Screen",
            Setting: "Settings",
            Volume: "Volume",
            Play: "Play",
            Pause: "Pause",
            CloseSubtitle: "Close CC",
            OpenSubtitle: "Open CC",
            ExistFullScreen: "Exit Full Screen",
            Muted: "Muted",
            Retry: "Retry",
            SwitchToLive: "Return to live",
            iOSNotSupportVodEncription: "iOS desn't suport Vod's encription video",
            UseChromeForVodEncription: "This browser desn't suport Vod's encription video, please use latest Chrome"
        }
    }, {}],
    9: [function (e, t, i) {
        t.exports = t.exports = {
            OD: "OD",
            LD: "360p",
            FD: "540p",
            SD: "720p",
            HD: "1080p",
            "2K": "2K",
            "4K": "4K",
            FHD: "FHD",
            XLD: "XLD",
            SQ: "SQ",
            HQ: "HQ",
            Forbidden_Text: "Internal information is strictly forbidden to outsider",
            Refresh: "Refresh",
            Diagnosis: "Diagnosis",
            Live_Finished: "Live has finished, thanks for watching",
            Play: "Play",
            Pause: "Pause",
            Snapshot: "Snapshot",
            Replay: "Replay",
            Live: "Live",
            Encrypt: "Encrypt",
            Sound: "Sound",
            Fullscreen: "Full Screen",
            Exist_Fullscreen: "Exit Full-screen",
            Resolution: "Resolution",
            Next: "Next Video",
            Brightness: "Brightness",
            Default: "Default",
            Contrast: "Contrast",
            Titles_Credits: "Titles\xa0and\xa0Credits",
            Skip_Titles: "Skip Titles",
            Skip_Credits: "Skip Credits",
            Not_Support_Out_Site: "The video is not supported for outside website, please watch it by TaoTV",
            Watch_Now: "Watch now",
            Network_Error: "Network is unreachable, please try to refresh",
            Video_Error: "Playing a video error,\xa0please try to refresh",
            Decode_Error: "Data decoding\xa0error",
            Live_Not_Start: "Live has not started, to be expected",
            Live_Loading: "Live information is loading,\xa0please try to refresh",
            Fetch_Playauth_Error: "Error occured when fetch playauth close or refresh",
            Live_End: "Live has finished",
            Live_Abrot: "Signal aborted,\xa0please try to refresh",
            Corss_Domain_Error: "Please ensure your domain has obtained IPC license and combined CNAME, \r\n or to set\xa0\xa0cross-domain accessing available",
            Url_Timeout_Error: "The video url is timeout,\xa0please try to refresh",
            Connetction_Error: "Sorry\uff0cthe video cannot play because of connection error, please try to watch other videos",
            Fetch_MTS_Error: "Fetching video list failed, please ensure",
            Token_Expired_Error: "Requesting open api failed, please ensure token expired or not",
            Video_Lists_Empty_Error: "The video list is empty, please check the format of video",
            Encrypted_Failed_Error: "Fetching encrypted file failed, please check the permission of player",
            Fetch_Failed_Permission_Error: "Fetching video list failed, please check the permission of player",
            Invalidate_Param_Error: "No video url, please check the parameters",
            AutoPlayDelayDisplayText: "Play in $$ seconds",
            Fetch_MTS_NOT_NotStream_Error: "The vid has no stream to play",
            Cancel_Text: "Cancel",
            OK_Text: "OK",
            Auto_Stream_Tip_Text: "Internet is slow, does switch to $$",
            Open_Html_By_File: "Html page should be on the server",
            Cant_Use_Flash_On_Mobile: "Mobile doesn't support flash player\uff0cplease use h5 player",
            Flash_Not_Ready: "Flash Player plugin hasn't been installed <a href='https://www.flash.cn/' target='_blank'>install plugin</a>, or check if disable Flash plugin"
        }
    }, {}],
    10: [function (e, t, i) {
        t.exports = t.exports = {
            OD: "\u539f\u753b",
            FD: "\u6d41\u7545",
            LD: "\u6807\u6e05",
            SD: "\u9ad8\u6e05",
            HD: "\u8d85\u6e05",
            "2K": "2K",
            "4K": "4K",
            FHD: "\u5168\u9ad8\u6e05",
            XLD: "\u6781\u901f",
            SQ: "\u666e\u901a\u97f3\u8d28",
            HQ: "\u9ad8\u97f3\u8d28",
            Forbidden_Text: "\u5185\u90e8\u4fe1\u606f\uff0c\u4e25\u7981\u5916\u4f20",
            Refresh: "\u5237\u65b0",
            Diagnosis: "\u8bca\u65ad",
            Live_Finished: "\u76f4\u64ad\u5df2\u7ed3\u675f,\u8c22\u8c22\u89c2\u770b",
            Play: "\u64ad\u653e",
            Pause: "\u6682\u505c",
            Snapshot: "\u622a\u56fe",
            Replay: "\u91cd\u64ad",
            Live: "\u76f4\u64ad",
            Encrypt: "\u52a0\u5bc6",
            Sound: "\u58f0\u97f3",
            Fullscreen: "\u5168\u5c4f",
            Exist_Fullscreen: "\u9000\u51fa\u5168\u5c4f",
            Resolution: "\u6e05\u6670\u5ea6",
            Next: "\u4e0b\u4e00\u96c6",
            Brightness: "\u4eae\u5ea6",
            Default: "\u9ed8\u8ba4",
            Contrast: "\u5bf9\u6bd4\u5ea6",
            Titles_Credits: "\u7247\u5934\u7247\u5c3e",
            Skip_Titles: "\u8df3\u8fc7\u7247\u5934",
            Skip_Credits: "\u8df3\u8fc7\u7247\u5c3e",
            Not_Support_Out_Site: "\u8be5\u89c6\u9891\u6682\u4e0d\u652f\u6301\u7ad9\u5916\u64ad\u653e\uff0c\u8bf7\u5230\u6dd8TV\u89c2\u770b",
            Watch_Now: "\u7acb\u5373\u89c2\u770b",
            Network_Error: "\u7f51\u7edc\u65e0\u6cd5\u8fde\u63a5\uff0c\u8bf7\u5c1d\u8bd5\u68c0\u67e5\u7f51\u7edc\u540e\u5237\u65b0\u8bd5\u8bd5",
            Video_Error: "\u89c6\u9891\u64ad\u653e\u5f02\u5e38\uff0c\u8bf7\u5237\u65b0\u8bd5\u8bd5",
            Decode_Error: "\u64ad\u653e\u6570\u636e\u89e3\u7801\u9519\u8bef",
            Live_Not_Start: "\u4eb2\uff0c\u76f4\u64ad\u8fd8\u672a\u5f00\u59cb\u54e6\uff0c\u656c\u8bf7\u671f\u5f85",
            Live_Loading: "\u76f4\u64ad\u4fe1\u606f\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u5237\u65b0\u8bd5\u8bd5",
            Live_End: "\u4eb2\uff0c\u76f4\u64ad\u5df2\u7ed3\u675f",
            Live_Abrot: "\u5f53\u524d\u76f4\u64ad\u4fe1\u53f7\u4e2d\u65ad\uff0c\u8bf7\u5237\u65b0\u540e\u91cd\u8bd5",
            Corss_Domain_Error: "\u8bf7\u786e\u8ba4\u60a8\u7684\u57df\u540d\u5df2\u5b8c\u6210\u5907\u6848\u548cCNAME\u7ed1\u5b9a\uff0c\r\n\u5e76\u5904\u4e8e\u542f\u7528\u72b6\u6001\uff0c\u6216\u8d44\u6e90\u5141\u8bb8\u8de8\u8d8a\u8bbf\u95ee",
            Url_Timeout_Error: "\u60a8\u6240\u89c2\u770b\u7684\u89c6\u9891\u5730\u5740\u8fde\u63a5\u8d85\u65f6\uff0c\u8bf7\u5237\u65b0\u540e\u91cd\u8bd5",
            Connetction_Error: "\u62b1\u6b49,\u8be5\u89c6\u9891\u7531\u4e8e\u8fde\u63a5\u9519\u8bef\u6682\u65f6\u4e0d\u80fd\u64ad\u653e,\u8bf7\u89c2\u770b\u5176\u5b83\u89c6\u9891",
            Fetch_MTS_Error: "\u83b7\u53d6\u89c6\u9891\u5217\u8868\u5931\u8d25\uff0c\u8bf7\u786e\u8ba4",
            Token_Expired_Error: "\u8bf7\u6c42\u63a5\u53e3\u5931\u8d25\uff0c\u8bf7\u786e\u8ba4Token\u662f\u5426\u8fc7\u671f",
            Video_Lists_Empty_Error: "\u83b7\u53d6\u89c6\u9891\u5217\u8868\u4e3a\u7a7a\uff0c\u8bf7\u786e\u8ba4\u64ad\u653e\u6570\u636e\u4e0e\u683c\u5f0f",
            Encrypted_Failed_Error: "\u83b7\u53d6\u89c6\u9891\u52a0\u5bc6\u79d8\u94a5\u9519\u8bef\uff0c\u8bf7\u786e\u8ba4\u64ad\u653e\u6743\u9650",
            Fetch_Failed_Permission_Error: "\u83b7\u53d6\u89c6\u9891\u5217\u8868\u5931\u8d25\uff0c\u8bf7\u786e\u8ba4\u64ad\u653e\u6743\u9650",
            Invalidate_Param_Error: "\u65e0\u8f93\u5165\u89c6\u9891\uff0c\u8bf7\u786e\u8ba4\u8f93\u5165\u53c2\u6570",
            AutoPlayDelayDisplayText: "$$\u79d2\u4ee5\u540e\u5f00\u59cb\u64ad\u653e",
            Fetch_MTS_NOT_NotStream_Error: "\u6b64vid\u6ca1\u6709\u53ef\u64ad\u653e\u89c6\u9891",
            Cancel_Text: "\u53d6\u6d88",
            OK_Text: "\u786e\u8ba4",
            Auto_Stream_Tip_Text: "\u7f51\u7edc\u4e0d\u7ed9\u529b\uff0c\u662f\u5426\u5207\u6362\u5230$$",
            Fetch_Playauth_Error: "\u83b7\u53d6\u64ad\u653e\u51ed\u8bc1\u51fa\u9519\u5566\uff0c\u8bf7\u5c1d\u8bd5\u9000\u51fa\u91cd\u8bd5\u6216\u5237\u65b0",
            Open_Html_By_File: "\u4e0d\u80fd\u76f4\u63a5\u5728\u6d4f\u89c8\u5668\u6253\u5f00html\u6587\u4ef6\uff0c\u8bf7\u90e8\u7f72\u5230\u670d\u52a1\u7aef",
            Cant_Use_Flash_On_Mobile: "\u79fb\u52a8\u7aef\u4e0d\u652f\u6301Flash\u64ad\u653e\u5668\uff0c\u8bf7\u4f7f\u7528h5\u64ad\u653e\u5668",
            Flash_Not_Ready: "Flash Player\u63d2\u4ef6\u672a\u5b89\u88c5<a href='https://www.flash.cn/' target='_blank'>\u5b89\u88c5\u63d2\u4ef6</a>\uff0c\u5982\u679c\u5df2\u7ecf\u5b89\u88c5\u8bf7\u68c0\u67e5\u662f\u5426\u88ab\u7981\u7528"
        }
    }, {}],
    11: [function (n, e, t) {
        var i = n("../config"), a = n("../lib/storage"), o = (n("../lib/io"), "aliplayer_lang"), s = function () {
            if (void 0 === window[o] || !window[o]) {
                var e = (navigator.language || navigator.browserLanguage).toLowerCase();
                e = e && -1 < e.indexOf("zh") ? "zh-cn" : "en-us", window[o] = e
            }
            return window[o]
        }, l = function (e, t) {
            var i = d(e), r = "", o = c();
            r = "flash" == e ? "en-us" == o ? n("./flash/en-us") : "zh-cn" == o ? n("./flash/zh-cn") : t[o] : "en-us" == o ? n("./en-us") : "zh-cn" == o ? n("./zh-cn") : t[o], a.set(i, JSON.stringify(r)), u(e, r)
        }, u = function (e, t) {
            var i = d(e);
            window[i] = t
        }, c = function () {
            return s()
        }, d = function (e) {
            var t = c();
            return e || (e = "h5"), "aliplayer_lang_data_" + e + "_" + i.h5Version.replace(/\./g, "_") + "_" + t
        };
        e.exports.setCurrentLanguage = function (e, t, i) {
            var r = window[o];
            if (void 0 !== e && e || (e = s()), "en-us" != e && "zh-cn" != e && (!i || i && !i[e])) throw new Error("There is not language resource for " + e + ", please specify the language resource by languageTexts property");
            window[o] = e, l(t, i), e != r && n("../lib/constants").updateByLanguage()
        }, e.exports.getCurrentLanguage = s, e.exports.getLanguageData = function (e, t) {
            var i = d(e);
            return window[i]
        }, e.exports.load = l, e.exports.get = function (e, t) {
            t || (t = "h5");
            var i = d(t), r = window[i];
            if (r) return r[e]
        }
    }, {
        "../config": 5,
        "../lib/constants": 15,
        "../lib/io": 24,
        "../lib/storage": 30,
        "./en-us": 8,
        "./flash/en-us": 9,
        "./flash/zh-cn": 10,
        "./zh-cn": 12
    }],
    12: [function (e, t, i) {
        t.exports = t.exports = {
            OD: "\u539f\u753b",
            FD: "\u6d41\u7545",
            LD: "\u6807\u6e05",
            SD: "\u9ad8\u6e05",
            HD: "\u8d85\u6e05",
            "2K": "2K",
            "4K": "4K",
            FHD: "\u5168\u9ad8\u6e05",
            XLD: "\u6781\u901f",
            SQ: "\u666e\u901a\u97f3\u8d28",
            HQ: "\u9ad8\u97f3\u8d28",
            Speed: "\u500d\u901f",
            Speed_05X_Text: "0.5X",
            Speed_1X_Text: "\u6b63\u5e38",
            Speed_125X_Text: "1.25X",
            Speed_15X_Text: "1.5X",
            Speed_2X_Text: "2X",
            Quality_Change_Fail_Switch_Text: "\u4e0d\u80fd\u64ad\u653e\uff0c\u5207\u6362\u4e3a",
            Quality_Change_Text: "\u6b63\u5728\u4e3a\u60a8\u5207\u6362\u5230 ",
            Quality_The_Url: "\u6b64\u5730\u5740",
            Refresh_Text: "\u5237\u65b0",
            Detection_Text: "\u8bca\u65ad",
            Cancel: "\u53d6\u6d88",
            Mute: "\u9759\u97f3",
            Snapshot: "\u622a\u56fe",
            Play_DateTime: "\u64ad\u653e\u65f6\u95f4",
            AutoPlayDelayDisplayText: "$$\u79d2\u4ee5\u540e\u5f00\u59cb\u64ad\u653e",
            Error_Load_Abort_Text: "\u83b7\u53d6\u6570\u636e\u8fc7\u7a0b\u88ab\u4e2d\u6b62",
            Error_Network_Text: "\u7f51\u7edc\u9519\u8bef\u52a0\u8f7d\u6570\u636e\u5931\u8d25",
            Error_Decode_Text: "\u89e3\u7801\u9519\u8bef",
            Error_Server_Network_NotSupport_Text: "\u670d\u52a1\u5668\u3001\u7f51\u7edc\u9519\u8bef\u6216\u683c\u5f0f\u4e0d\u652f\u6301",
            Error_Offline_Text: "\u7f51\u7edc\u4e0d\u53ef\u7528\uff0c\u8bf7\u786e\u5b9a",
            Error_Play_Text: "\u64ad\u653e\u51fa\u9519\u5566",
            Error_Retry_Text: "\u8bf7\u5c1d\u8bd5\u9000\u51fa\u91cd\u8bd5\u6216\u5237\u65b0",
            Error_AuthKey_Text: "\u53ef\u80fd\u9274\u6743\u8fc7\u671f\u3001\u57df\u540d\u4e0d\u5728\u767d\u540d\u5355\u6216\u8bf7\u6c42\u88ab\u62e6\u622a",
            Error_H5_Not_Support_Text: "h5\u4e0d\u652f\u6301\u6b64\u683c\u5f0f\uff0c\u8bf7\u4f7f\u7528flash\u64ad\u653e\u5668",
            Error_Not_Support_M3U8_Text: "\u6d4f\u89c8\u5668\u4e0d\u652f\u6301m3u8\u89c6\u9891\u64ad\u653e",
            Error_Not_Support_MP4_Text: "\u6d4f\u89c8\u5668\u4e0d\u652f\u6301mp4\u89c6\u9891\u64ad\u653e",
            Error_Not_Support_encrypt_Text: "\u64ad\u653e\u52a0\u5bc6\u89c6\u9891\uff0c\u8bf7\u8bbe\u7f6e\u5c5e\u6027encryptType to 1",
            Error_Vod_URL_Is_Empty_Text: "\u83b7\u53d6\u64ad\u653e\u5730\u5740\u4e3a\u7a7a",
            Error_Vod_Fetch_Urls_Text: "\u83b7\u53d6\u5730\u5740\u51fa\u9519\u5566\uff0c\u8bf7\u5c1d\u8bd5\u9000\u51fa\u91cd\u8bd5\u6216\u5237\u65b0",
            Fetch_Playauth_Error: "\u83b7\u53d6\u64ad\u653e\u51ed\u8bc1\u51fa\u9519\u5566\uff0c\u8bf7\u5c1d\u8bd5\u9000\u51fa\u91cd\u8bd5\u6216\u5237\u65b0",
            Error_Playauth_Decode_Text: "playauth\u89e3\u6790\u9519\u8bef",
            Error_Vid_Not_Same_Text: "\u4e0d\u80fd\u66f4\u65b0\u5730\u5740\uff0cvid\u548c\u64ad\u653e\u4e2d\u7684\u4e0d\u4e00\u81f4",
            Error_Playauth_Expired_Text: "\u51ed\u8bc1\u5df2\u8fc7\u671f\uff0c\u8bf7\u5c1d\u8bd5\u9000\u51fa\u91cd\u8bd5\u6216\u5237\u65b0",
            Error_MTS_Fetch_Urls_Text: "MTS\u83b7\u53d6\u53d6\u6570\u5931\u8d25",
            Error_Load_M3U8_Failed_Text: "\u83b7\u53d6m3u8\u6587\u4ef6\u5931\u8d25",
            Error_Load_M3U8_Timeout_Text: "\u83b7\u53d6m3u8\u6587\u4ef6\u8d85\u65f6",
            Error_M3U8_Decode_Text: "\u83b7\u53d6m3u8\u6587\u4ef6\u89e3\u6790\u5931\u8d25",
            Error_TX_Decode_Text: "\u89e3\u6790\u6570\u636e\u51fa\u9519",
            Error_Waiting_Timeout_Text: "\u7f13\u51b2\u6570\u636e\u8d85\u65f6\uff0c\u8bf7\u5c1d\u8bd5\u9000\u51fa\u91cd\u8bd5\u6216\u5237\u65b0",
            Error_Invalidate_Source: "\u64ad\u653e\u5730\u5740\u683c\u5f0f\u9700\u8981\u4e3amp4\u3001mp3\u3001m3u8\u3001mpd\u6216flv",
            Error_Empty_Source: "\u64ad\u653e\u5730\u5740\u4e0d\u80fd\u4e3a\u7a7a",
            Error_Vid_Empty_Source: "vid\u5bf9\u5e94\u7684\u89c6\u9891\u5730\u5740\u8fd8\u672a\u83b7\u53d6\u5230",
            Error_Fetch_NotStream: "\u6b64vid\u6ca1\u6709\u53ef\u64ad\u653e\u89c6\u9891",
            Error_Not_Found: "\u64ad\u653e\u5730\u5740\u4e0d\u5b58\u5728",
            Live_End: "\u4eb2\uff0c\u76f4\u64ad\u5df2\u7ed3\u675f",
            Play_Before_Fullscreen: "\u64ad\u653e\u540e\u518d\u5168\u5c4f",
            Can_Not_Seekable: "\u4e0d\u80fdseek\u5230\u8fd9\u91cc",
            Cancel_Text: "\u53d6\u6d88",
            OK_Text: "\u786e\u8ba4",
            Auto_Stream_Tip_Text: "\u7f51\u7edc\u4e0d\u7ed9\u529b\uff0c\u662f\u5426\u5207\u6362\u5230$$",
            Request_Block_Text: "\u6d4f\u89c8\u5668\u5b89\u5168\u7b56\u7565\u89c6\u9891\u5730\u5740\u4e0d\u80fd\u4e3ahttp\u534f\u8bae\uff0c\u4e0e\u7f51\u7ad9https\u534f\u8bae\u4e0d\u4e00\u81f4",
            Open_Html_By_File: "\u4e0d\u80fd\u76f4\u63a5\u5728\u6d4f\u89c8\u5668\u6253\u5f00html\u6587\u4ef6\uff0c\u8bf7\u90e8\u7f72\u5230\u670d\u52a1\u7aef",
            Maybe_Cors_Error: "\u8bf7\u786e\u8ba4\u662f\u5426\u5f00\u542f\u4e86\u5141\u8bb8\u8de8\u57df\u8bbf\u95ee<a href='https://help.aliyun.com/document_detail/62950.html' target='_blank'>\u53c2\u8003\u6587\u6863</a>",
            Speed_Switch_To: "\u500d\u901f\u5207\u6362\u5230 ",
            Curent_Volume: "\u5f53\u524d\u97f3\u91cf\uff1a",
            Volume_Mute: "\u8bbe\u7f6e\u4e3a\u9759\u97f3",
            Volume_UnMute: "\u8bbe\u7f6e\u4e3a\u975e\u9759\u97f3",
            ShiftLiveTime_Error: "\u76f4\u64ad\u5f00\u59cb\u65f6\u95f4\u4e0d\u80fd\u5927\u4e8e\u76f4\u64ad\u7ed3\u675f\u65f6\u95f4",
            Error_Not_Support_Format_On_Mobile: "\u79fb\u52a8\u7aef\u4e0d\u652f\u6301flv\u3001rmtp\u89c6\u9891\uff0c\u8bf7\u4f7f\u7528m3u8",
            SessionId_Ticket_Invalid: "DRM\u89c6\u9891\u64ad\u653e\uff0csessionId\u548cticket\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a",
            Http_Error: "Http\u7f51\u7edc\u8bf7\u6c42\u5931\u8d25",
            Http_Timeout: "http\u8bf7\u6c42\u8d85\u65f6",
            DRM_License_Expired: "DRM license\u8d85\u65f6\uff0c\u8bf7\u5237\u65b0",
            Not_Support_DRM: "\u6d4f\u89c8\u5668\u4e0d\u652f\u6301DRM\u89c6\u9891\u7684\u64ad\u653e",
            CC_Switch_To: "\u5b57\u5e55\u5207\u6362\u5230 ",
            AudioTrack_Switch_To: "\u97f3\u8f68\u5207\u6362\u5230 ",
            Subtitle: "\u5b57\u5e55",
            AudioTrack: "\u97f3\u8f68",
            Quality: "\u6e05\u6670\u5ea6",
            Auto: "\u81ea\u52a8",
            Quality_Switch_To: "\u6e05\u6670\u5ea6\u5207\u6362\u5230 ",
            Fullscreen: "\u5168\u5c4f",
            Setting: "\u8bbe\u7f6e",
            Volume: "\u97f3\u91cf",
            Play: "\u64ad\u653e",
            Pause: "\u6682\u505c",
            CloseSubtitle: "\u5173\u95ed\u5b57\u5e55",
            OpenSubtitle: "\u6253\u5f00\u5b57\u5e55",
            ExistFullScreen: "\u9000\u51fa\u5168\u5c4f",
            Muted: "\u9759\u97f3",
            Retry: "\u91cd\u8bd5",
            SwitchToLive: "\u8fd4\u56de\u76f4\u64ad",
            iOSNotSupportVodEncription: "iOS\u4e0d\u652f\u6301\u70b9\u64ad\u52a0\u5bc6\u64ad\u653e",
            UseChromeForVodEncription: "\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u70b9\u64ad\u52a0\u5bc6\u64ad\u653e\uff0c\u8bf7\u4f7f\u7528\u6700\u65b0Chrome\u6d4f\u89c8\u5668"
        }
    }, {}],
    13: [function (e, t, i) {
        var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        if (window.Uint8Array) for (var d = new Uint8Array(256), r = 0; r < n.length; r++) d[n.charCodeAt(r)] = r;
        var u = function (e) {
            for (var t = "", i = 0; i < e.length; i += 16e3) {
                var r = e.subarray(i, i + 16e3);
                t += String.fromCharCode.apply(null, r)
            }
            return t
        };
        var unpackPlayReady = function (e) {
            var t = function (e, t, i) {
                if (!e) return "";
                var r;
                if (i || e.byteLength % 2 == 0 || console.log("Data has an incorrect length, must be even."), e instanceof ArrayBuffer) r = e; else {
                    var o = new Uint8Array(e.byteLength);
                    o.set(new Uint8Array(e)), r = o.buffer
                }
                for (var n = Math.floor(e.byteLength / 2), a = new Uint16Array(n), s = new DataView(r), l = 0; l < n; l++) a[l] = s.getUint16(2 * l, t);
                return u(a)
            }(e, !0, !0);
            if (-1 != t.indexOf("PlayReadyKeyMessage")) {
                for (var i = (new DOMParser).parseFromString(t, "application/xml"), r = i.getElementsByTagName("HttpHeader"), o = {}, n = 0; n < r.length; ++n) {
                    var a = r[n].querySelector("name"), s = r[n].querySelector("value");
                    o[a.textContent] = s.textContent
                }
                return {header: o, changange: i.querySelector("Challenge").textContent}
            }
            console.log("PlayReady request is already unwrapped.")
        }; t.exports = {
            decode: function (e) {
                var t, i, r, o, n, a = .75 * e.length, s = e.length, l = 0;
                "=" === e[e.length - 1] && (a--, "=" === e[e.length - 2] && a--);
                var u = new ArrayBuffer(a), c = new Uint8Array(u);
                for (t = 0; t < s; t += 4) i = d[e.charCodeAt(t)], r = d[e.charCodeAt(t + 1)], o = d[e.charCodeAt(t + 2)], n = d[e.charCodeAt(t + 3)], c[l++] = i << 2 | r >> 4, c[l++] = (15 & r) << 4 | o >> 2, c[l++] = (3 & o) << 6 | 63 & n;
                return u
            }, encode: function (e) {
                var t, i = new Uint8Array(e), r = i.length, o = "";
                for (t = 0; t < r; t += 3) o += n[i[t] >> 2], o += n[(3 & i[t]) << 4 | i[t + 1] >> 4], o += n[(15 & i[t + 1]) << 2 | i[t + 2] >> 6], o += n[63 & i[t + 2]];
                return r % 3 == 2 ? o = o.substring(0, o.length - 1) + "=" : r % 3 == 1 && (o = o.substring(0, o.length - 2) + "=="), o
            }, unpackPlayReady: unpackPlayReady
        }
    }, {}],
    14: [function (e, t, i) {
        var r = e("./oo"), o = e("../player/base/event/eventtype");
        t.exports.stopPropagation = function (e) {
            window.event ? window.event.cancelBubble = !0 : e.stopPropagation()
        }, t.exports.register = function (e) {
            e.util = {stopPropagation: t.exports.stopPropagation}, e.Component = r.extend, e.EventType = o.Player
        }
    }, {"../player/base/event/eventtype": 43, "./oo": 27}],
    15: [function (e, t, i) {
        var r = e("../lang/index");
        t.exports.LOAD_START = "loadstart", t.exports.LOADED_METADATA = "loadedmetadata", t.exports.LOADED_DATA = "loadeddata", t.exports.PROGRESS = "progress", t.exports.CAN_PLAY = "canplay", t.exports.CAN_PLYA_THROUGH = "canplaythrough", t.exports.PLAY = "play", t.exports.PAUSE = "pause", t.exports.ENDED = "ended", t.exports.PLAYING = "playing", t.exports.WAITING = "waiting", t.exports.ERROR = "error", t.exports.SUSPEND = "suspend", t.exports.STALLED = "stalled", t.exports.AuthKeyExpiredEvent = "authkeyexpired", t.exports.DRMKeySystem = {
            4: "com.microsoft.playready",
            5: "com.widevine.alpha"
        }, t.exports.EncryptionType = {
            Private: 1,
            Standard: 2,
            ChinaDRM: 3,
            PlayReady: 4,
            Widevine: 5
        }, t.exports.VodEncryptionType = {
            AliyunVoDEncryption: 1,
            HLSEncryption: 2
        }, t.exports.DRMType = {
            Widevine: "Widevine",
            PlayReady: "PlayReady"
        }, t.exports.ErrorCode = {
            InvalidParameter: 4001,
            AuthKeyExpired: 4002,
            InvalidSourceURL: 4003,
            NotFoundSourceURL: 4004,
            StartLoadData: 4005,
            LoadedMetadata: 4006,
            PlayingError: 4007,
            LoadingTimeout: 4008,
            RequestDataError: 4009,
            EncrptyVideoNotSupport: 4010,
            FormatNotSupport: 4011,
            PlayauthDecode: 4012,
            PlayDataDecode: 4013,
            NetworkUnavaiable: 4014,
            UserAbort: 4015,
            NetworkError: 4016,
            URLsIsEmpty: 4017,
            CrossDomain: 4027,
            OtherError: 4400,
            ServerAPIError: 4500,
            FlashNotInstalled: 4600
        }, t.exports.AuthKeyExpired = 7200, t.exports.AuthKeyRefreshExpired = 7e3, t.exports.AuthInfoExpired = 100, t.exports.VideoErrorCode = {
            1: 4015,
            2: 4016,
            3: 4013,
            4: 4400
        }, t.exports.IconType = {
            FontClass: "fontclass",
            Symbol: "symbol",
            Sprite: "Sprite"
        }, t.exports.SelectedStreamLevel = "selectedStreamLevel", t.exports.SelectedCC = "selectedCC", t.exports.WidthMapToLevel = {
            0: "OD",
            640: "FD",
            960: "LD",
            1280: "SD",
            1920: "HD",
            2580: "2K",
            3840: "4K"
        };
        var o = function () {
            t.exports.VideoErrorCodeText = {
                1: r.get("Error_Load_Abort_Text"),
                2: r.get("Error_Network_Text"),
                3: r.get("Error_Decode_Text"),
                4: r.get("Error_Server_Network_NotSupport_Text")
            }, t.exports.VideoLevels = {
                0: r.get("OD"),
                640: r.get("FD"),
                960: r.get("LD"),
                1280: r.get("SD"),
                1920: r.get("HD"),
                2580: r.get("2K"),
                3840: r.get("4K")
            }, t.exports.QualityLevels = {
                OD: r.get("OD"),
                LD: r.get("LD"),
                FD: r.get("FD"),
                SD: r.get("SD"),
                HD: r.get("HD"),
                "2K": r.get("2K"),
                "4K": r.get("4K"),
                XLD: r.get("XLD"),
                FHD: r.get("FHD"),
                SQ: r.get("SQ"),
                HQ: r.get("HQ")
            }, t.exports.SpeedLevels = [{key: .5, text: r.get("Speed_05X_Text")}, {
                key: 1,
                text: r.get("Speed_1X_Text")
            }, {key: 1.25, text: r.get("Speed_125X_Text")}, {key: 1.5, text: r.get("Speed_15X_Text")}, {
                key: 2,
                text: r.get("Speed_2X_Text")
            }]
        };
        o(), t.exports.updateByLanguage = o
    }, {"../lang/index": 11}],
    16: [function (e, t, i) {
        t.exports.get = function (e) {
            for (var t = e + "", i = document.cookie.split(";"), r = 0; r < i.length; r++) {
                var o = i[r].trim();
                if (0 == o.indexOf(t)) return unescape(o.substring(t.length + 1, o.length))
            }
            return ""
        }, t.exports.set = function (e, t, i) {
            var r = new Date;
            r.setTime(r.getTime() + 24 * i * 60 * 60 * 1e3);
            var o = "expires=" + r.toGMTString();
            document.cookie = e + "=" + escape(t) + "; " + o
        }
    }, {}],
    17: [function (e, i, t) {
        var r = e("./object");
        i.exports.cache = {}, i.exports.guid = function (e, t) {
            var i, r, o = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), n = [];
            if (t = t || o.length, e) for (i = 0; i < e; i++) n[i] = o[0 | Math.random() * t]; else for (n[8] = n[13] = n[18] = n[23] = "-", n[14] = "4", i = 0; i < 36; i++) n[i] || (r = 0 | 16 * Math.random(), n[i] = o[19 == i ? 3 & r | 8 : r]);
            return n.join("")
        }, i.exports.expando = "vdata" + (new Date).getTime(), i.exports.getData = function (e) {
            var t = e[i.exports.expando];
            return t || (t = e[i.exports.expando] = i.exports.guid(), i.exports.cache[t] = {}), i.exports.cache[t]
        }, i.exports.hasData = function (e) {
            var t = "";
            return e && (t = e[i.exports.expando]), !(!t || r.isEmpty(i.exports.cache[t]))
        }, i.exports.removeData = function (t) {
            var e = "";
            if (t && (e = t[i.exports.expando]), e) {
                delete i.exports.cache[e];
                try {
                    delete t[i.exports.expando]
                } catch (e) {
                    t.removeAttribute ? t.removeAttribute(i.exports.expando) : t[i.exports.expando] = null
                }
            }
        }
    }, {"./object": 26}],
    18: [function (e, c, t) {
        var r = e("./object");
        c.exports.el = function (e) {
            return document.getElementById(e)
        }, c.exports.createEl = function (e, t) {
            var i;
            return e = e || "div", t = t || {}, i = document.createElement(e), r.each(t, function (e, t) {
                -1 !== e.indexOf("aria-") || "role" == e ? i.setAttribute(e, t) : i[e] = t
            }), i
        }, c.exports.addClass = function (e, t) {
            -1 == (" " + e.className + " ").indexOf(" " + t + " ") && (e.className = "" === e.className ? t : e.className + " " + t)
        }, c.exports.removeClass = function (e, t) {
            var i, r;
            if (-1 != e.className.indexOf(t)) {
                for (r = (i = e.className.split(" ")).length - 1; 0 <= r; r--) i[r] === t && i.splice(r, 1);
                e.className = i.join(" ")
            }
        }, c.exports.hasClass = function (e, t) {
            return -1 != e.className.indexOf(t)
        }, c.exports.getClasses = function (e) {
            return e.className ? e.className.split(" ") : []
        }, c.exports.getElementAttributes = function (e) {
            var t, i, r, o, n;
            if (t = {}, i = ",autoplay,controls,loop,muted,default,", e && e.attributes && 0 < e.attributes.length) for (var a = (r = e.attributes).length - 1; 0 <= a; a--) o = r[a].name, n = r[a].value, "boolean" != typeof e[o] && -1 === i.indexOf("," + o + ",") || (n = null !== n), t[o] = n;
            return t
        }, c.exports.insertFirst = function (e, t) {
            t.firstChild ? t.insertBefore(e, t.firstChild) : t.appendChild(e)
        }, c.exports.blockTextSelection = function () {
            document.body.focus(), document.onselectstart = function () {
                return !1
            }
        }, c.exports.unblockTextSelection = function () {
            document.onselectstart = function () {
                return !0
            }
        }, c.exports.css = function (i, e, t) {
            return !(!i || !i.style) && (e && t ? (i.style[e] = t, !0) : t || "string" != typeof e ? !t && "object" == typeof e && (r.each(e, function (e, t) {
                i.style[e] = t
            }), !0) : i.style[e])
        }, c.exports.getTransformName = function (e) {
            var t, i, r = ["transform", "WebkitTransform", "MozTransform", "msTransform", "OTransform"], o = r[0];
            for (t = 0, i = r.length; t < i; t++) if (void 0 !== e.style[r[t]]) {
                o = r[t];
                break
            }
            return o
        }, c.exports.getTransformEventName = function (e, t) {
            var i, r, o = ["", "Webkit", "Moz", "ms", "O"], n = t.toLowerCase(),
                a = ["transform", "WebkitTransform", "MozTransform", "msTransform", "OTransform"];
            for (i = 0, r = a.length; i < r; i++) if (void 0 !== e.style[a[i]]) {
                0 != i && (n = o[i] + t);
                break
            }
            return n
        }, c.exports.addCssByStyle = function (e) {
            var t = document, i = t.createElement("style");
            if (i.setAttribute("type", "text/css"), i.styleSheet) i.styleSheet.cssText = e; else {
                var r = t.createTextNode(e);
                i.appendChild(r)
            }
            var o = t.getElementsByTagName("head");
            o.length ? o[0].appendChild(i) : t.documentElement.appendChild(i)
        }, c.exports.getTranslateX = function (e) {
            var t = 0;
            if (e) try {
                var i = window.getComputedStyle(e), r = c.exports.getTransformName(e);
                t = new WebKitCSSMatrix(i[r]).m41
            } catch (e) {
                console.log(e)
            }
            return t
        }, c.exports.getPointerPosition = function (e, t) {
            var i = {}, r = c.exports.findPosition(e), o = e.offsetWidth, n = e.offsetHeight, a = r.top, s = r.left,
                l = t.pageY, u = t.pageX;
            return t.changedTouches && (u = t.changedTouches[0].pageX, l = t.changedTouches[0].pageY), i.y = Math.max(0, Math.min(1, (a - l + n) / n)), i.x = Math.max(0, Math.min(1, (u - s) / o)), i
        }, c.exports.findPosition = function (e) {
            var t;
            if (e.getBoundingClientRect && e.parentNode && (t = e.getBoundingClientRect()), !t) return {
                left: 0,
                top: 0
            };
            var i = document.documentElement, r = document.body, o = i.clientLeft || r.clientLeft || 0,
                n = window.pageXOffset || r.scrollLeft, a = t.left + n - o, s = i.clientTop || r.clientTop || 0,
                l = window.pageYOffset || r.scrollTop, u = t.top + l - s;
            return {left: Math.round(a), top: Math.round(u)}
        }
    }, {"./object": 26}],
    19: [function (e, l, t) {
        var u = e("./object"), c = e("./data"), i = e("./ua"), r = e("fastclick");

        function d(t, i, e, r) {
            u.each(e, function (e) {
                t(i, e, r)
            })
        }

        l.exports.on = function (n, e, t) {
            if (n) {
                if (u.isArray(e)) return d(l.exports.on, n, e, t);
                i.IS_MOBILE && "click" == e && r(n);
                var a = c.getData(n);
                a.handlers || (a.handlers = {}), a.handlers[e] || (a.handlers[e] = []), t.guid || (t.guid = c.guid()), a.handlers[e].push(t), a.dispatcher || (a.disabled = !1, a.dispatcher = function (e) {
                    if (!a.disabled) {
                        e = l.exports.fixEvent(e);
                        var t = a.handlers[e.type];
                        if (t) for (var i = t.slice(0), r = 0, o = i.length; r < o && !e.isImmediatePropagationStopped(); r++) i[r].call(n, e)
                    }
                }), 1 == a.handlers[e].length && (n.addEventListener ? n.addEventListener(e, a.dispatcher, !1) : n.attachEvent && n.attachEvent("on" + e, a.dispatcher))
            }
        }, l.exports.off = function (t, e, i) {
            if (t && c.hasData(t)) {
                var r = c.getData(t);
                if (r.handlers) {
                    if (u.isArray(e)) return d(l.exports.off, t, e, i);
                    var o = function (e) {
                        r.handlers[e] = [], l.exports.cleanUpEvents(t, e)
                    };
                    if (e) {
                        var n = r.handlers[e];
                        if (n) if (i) {
                            if (i.guid) for (var a = 0; a < n.length; a++) n[a].guid === i.guid && n.splice(a--, 1);
                            l.exports.cleanUpEvents(t, e)
                        } else o(e)
                    } else for (var s in r.handlers) o(s)
                }
            }
        }, l.exports.cleanUpEvents = function (e, t) {
            var i = c.getData(e);
            0 === i.handlers[t].length && (delete i.handlers[t], e.removeEventListener ? e.removeEventListener(t, i.dispatcher, !1) : e.detachEvent && e.detachEvent("on" + t, i.dispatcher)), u.isEmpty(i.handlers) && (delete i.handlers, delete i.dispatcher, delete i.disabled), u.isEmpty(i) && c.removeData(e)
        }, l.exports.fixEvent = function (e) {
            function t() {
                return !0
            }

            function i() {
                return !1
            }

            if (!e || !e.isPropagationStopped) {
                var r = e || window.event;
                for (var o in e = {}, r) "layerX" !== o && "layerY" !== o && "keyboardEvent.keyLocation" !== o && ("returnValue" == o && r.preventDefault || (e[o] = r[o]));
                if (e.target || (e.target = e.srcElement || document), e.relatedTarget = e.fromElement === e.target ? e.toElement : e.fromElement, e.preventDefault = function () {
                    r.preventDefault && r.preventDefault(), e.returnValue = !1, e.isDefaultPrevented = t, e.defaultPrevented = !0
                }, e.isDefaultPrevented = i, e.defaultPrevented = !1, e.stopPropagation = function () {
                    r.stopPropagation && r.stopPropagation(), e.cancelBubble = !0, e.isPropagationStopped = t
                }, e.isPropagationStopped = i, e.stopImmediatePropagation = function () {
                    r.stopImmediatePropagation && r.stopImmediatePropagation(), e.isImmediatePropagationStopped = t, e.stopPropagation()
                }, e.isImmediatePropagationStopped = i, null != e.clientX) {
                    var n = document.documentElement, a = document.body;
                    e.pageX = e.clientX + (n && n.scrollLeft || a && a.scrollLeft || 0) - (n && n.clientLeft || a && a.clientLeft || 0), e.pageY = e.clientY + (n && n.scrollTop || a && a.scrollTop || 0) - (n && n.clientTop || a && a.clientTop || 0)
                }
                e.which = e.charCode || e.keyCode, null != e.button && (e.button = 1 & e.button ? 0 : 4 & e.button ? 1 : 2 & e.button ? 2 : 0)
            }
            return e
        }, l.exports.trigger = function (e, t) {
            if (e) {
                var i = c.hasData(e) ? c.getData(e) : {}, r = e.parentNode || e.ownerDocument;
                if ("string" == typeof t) {
                    var o = null;
                    (e.paramData || 0 == e.paramData) && (o = e.paramData, e.paramData = null, e.removeAttribute(o)), t = {
                        type: t,
                        target: e,
                        paramData: o
                    }
                }
                if (t = l.exports.fixEvent(t), i.dispatcher && i.dispatcher.call(e, t), r && !t.isPropagationStopped() && !1 !== t.bubbles) l.exports.trigger(r, t); else if (!r && !t.defaultPrevented) {
                    var n = c.getData(t.target);
                    t.target[t.type] && (n.disabled = !0, "function" == typeof t.target[t.type] && t.target[t.type](), n.disabled = !1)
                }
                return !t.defaultPrevented
            }
        }, l.exports.one = function (e, t, i) {
            if (e) {
                if (u.isArray(t)) return d(l.exports.one, e, t, i);
                var r = function () {
                    l.exports.off(e, t, r), i.apply(this, arguments)
                };
                r.guid = i.guid = i.guid || c.guid(), l.exports.on(e, t, r)
            }
        }
    }, {"./data": 17, "./object": 26, "./ua": 31, fastclick: 1}],
    20: [function (e, t, i) {
        var o = e("./data");
        t.exports.bind = function (e, t, i) {
            t.guid || (t.guid = o.guid());
            var r = function () {
                return t.apply(e, arguments)
            };
            return r.guid = i ? i + "_" + t.guid : t.guid, r
        }
    }, {"./data": 17}],
    21: [function (e, t, i) {
        var r = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/, c = /^([^\/;?#]*)(.*)$/,
            o = /(?:\/|^)\.(?=\/)/g, n = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g, d = {
                buildAbsoluteURL: function (e, t, i) {
                    if (i = i || {}, e = e.trim(), !(t = t.trim())) {
                        if (!i.alwaysNormalize) return e;
                        var r = d.parseURL(e);
                        if (!r) throw new Error("Error trying to parse base URL.");
                        return r.path = d.normalizePath(r.path), d.buildURLFromParts(r)
                    }
                    var o = d.parseURL(t);
                    if (!o) throw new Error("Error trying to parse relative URL.");
                    if (o.scheme) return i.alwaysNormalize ? (o.path = d.normalizePath(o.path), d.buildURLFromParts(o)) : t;
                    var n = d.parseURL(e);
                    if (!n) throw new Error("Error trying to parse base URL.");
                    if (!n.netLoc && n.path && "/" !== n.path[0]) {
                        var a = c.exec(n.path);
                        n.netLoc = a[1], n.path = a[2]
                    }
                    n.netLoc && !n.path && (n.path = "/");
                    var s = {
                        scheme: n.scheme,
                        netLoc: o.netLoc,
                        path: null,
                        params: o.params,
                        query: o.query,
                        fragment: o.fragment
                    };
                    if (!o.netLoc && (s.netLoc = n.netLoc, "/" !== o.path[0])) if (o.path) {
                        var l = n.path, u = l.substring(0, l.lastIndexOf("/") + 1) + o.path;
                        s.path = d.normalizePath(u)
                    } else s.path = n.path, o.params || (s.params = n.params, o.query || (s.query = n.query));
                    return null === s.path && (s.path = i.alwaysNormalize ? d.normalizePath(o.path) : o.path), d.buildURLFromParts(s)
                }, parseURL: function (e) {
                    var t = r.exec(e);
                    return t ? {
                        scheme: t[1] || "",
                        netLoc: t[2] || "",
                        path: t[3] || "",
                        params: t[4] || "",
                        query: t[5] || "",
                        fragment: t[6] || ""
                    } : null
                }, normalizePath: function (e) {
                    for (e = e.split("").reverse().join("").replace(o, ""); e.length !== (e = e.replace(n, "")).length;) ;
                    return e.split("").reverse().join("")
                }, buildURLFromParts: function (e) {
                    return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
                }
            };
        t.exports = d
    }, {}],
    22: [function (e, t, i) {
        var r = /^(\d+)x(\d+)$/, o = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g, n = function (e) {
            for (var t in"string" == typeof e && (e = this.parseAttrList(e)), e) e.hasOwnProperty(t) && (this[t] = e[t])
        };
        n.prototype = {
            decimalInteger: function (e) {
                var t = parseInt(this[e], 10);
                return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t
            }, hexadecimalInteger: function (e) {
                if (this[e]) {
                    var t = (this[e] || "0x").slice(2);
                    t = (1 & t.length ? "0" : "") + t;
                    for (var i = new Uint8Array(t.length / 2), r = 0; r < t.length / 2; r++) i[r] = parseInt(t.slice(2 * r, 2 * r + 2), 16);
                    return i
                }
                return null
            }, hexadecimalIntegerAsNumber: function (e) {
                var t = parseInt(this[e], 16);
                return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t
            }, decimalFloatingPoint: function (e) {
                return parseFloat(this[e])
            }, enumeratedString: function (e) {
                return this[e]
            }, decimalResolution: function (e) {
                var t = r.exec(this[e]);
                if (null !== t) return {width: parseInt(t[1], 10), height: parseInt(t[2], 10)}
            }, parseAttrList: function (e) {
                var t, i = {};
                for (o.lastIndex = 0; null !== (t = o.exec(e));) {
                    var r = t[2];
                    0 === r.indexOf('"') && r.lastIndexOf('"') === r.length - 1 && (r = r.slice(1, -1)), i[t[1]] = r
                }
                return i
            }
        }, t.exports = n
    }, {}],
    23: [function (e, t, i) {
        var P = e("./attrlist"), r = e("../io"), o = e("./URLToolkit"),
            c = /#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g, u = /#EXT-X-MEDIA:(.*)/g,
            w = new RegExp([/#EXTINF:(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, /|(?!#)(\S+)/.source, /|#EXT-X-BYTERANGE:*(.+)/.source, /|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, /|#.*/.source].join(""), "g"),
            C = /(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)(.*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,
            k = function () {
                this.method = null, this.key = null, this.iv = null, this._uri = null
            }, I = function () {
                this._url = null, this._byteRange = null, this._decryptdata = null, this.tagList = []
            };
        I.prototype.getUrl = function () {
            return !this._url && this.relurl && (this._url = o.buildAbsoluteURL(this.baseurl, this.relurl, {alwaysNormalize: !0})), this._url
        }, I.prototype.Seturl = function (e) {
            this._url = e
        }, I.prototype.getProgramDateTime = function () {
            return !this._programDateTime && this.rawProgramDateTime && (this._programDateTime = new Date(Date.parse(this.rawProgramDateTime))), this._programDateTime
        }, I.prototype.GetbyteRange = function () {
            if (!this._byteRange) {
                var e = this._byteRange = [];
                if (this.rawByteRange) {
                    var t = this.rawByteRange.split("@", 2);
                    if (1 === t.length) {
                        var i = this.lastByteRangeEndOffset;
                        e[0] = i || 0
                    } else e[0] = parseInt(t[1]);
                    e[1] = parseInt(t[0]) + e[0]
                }
            }
            return this._byteRange
        }, I.prototype.getByteRangeStartOffset = function () {
            return this.byteRange[0]
        }, I.prototype.getByteRangeEndOffset = function () {
            return this.byteRange[1]
        };
        I.prototype.getDecryptdata = function () {
            return this._decryptdata || (this._decryptdata = this.fragmentDecryptdataFromLevelkey(this.levelkey, this.sn)), this._decryptdata
        };
        var n = function () {
            this.loaders = {}
        };
        n.prototype = {
            parseMasterPlaylist: function (e, t) {
                var i, r = [];
                for (c.lastIndex = 0; null != (i = c.exec(e));) {
                    var o = {}, n = o.attrs = new P(i[1]);
                    o.url = this.resolve(i[2], t);
                    var a = n.decimalResolution("RESOLUTION");
                    a && (o.width = a.width, o.height = a.height), o.bitrate = n.decimalInteger("AVERAGE-BANDWIDTH") || n.decimalInteger("BANDWIDTH"), o.name = n.NAME;
                    var s = n.CODECS;
                    if (s) {
                        s = s.split(/[ ,]+/);
                        for (var l = 0; l < s.length; l++) {
                            var u = s[l];
                            -1 !== u.indexOf("avc1") ? o.videoCodec = this.avc1toavcoti(u) : -1 !== u.indexOf("hvc1") ? o.videoCodec = u : o.audioCodec = u
                        }
                    }
                    r.push(o)
                }
                return r
            }, parseMasterPlaylistMedia: function (e, t, i, r) {
                var o, n = [], a = 0;
                for (u.lastIndex = 0; null != (o = u.exec(e));) {
                    var s = {}, l = new P(o[1]);
                    l.TYPE === i && (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, t)), s.lang = l.LANGUAGE, s.name || (s.name = s.lang), r && (s.audioCodec = r), s.id = a++, n.push(s))
                }
                return n
            }, avc1toavcoti: function (e) {
                var t, i = e.split(".");
                return 2 < i.length ? (t = i.shift() + ".", t += parseInt(i.shift()).toString(16), t += ("000" + parseInt(i.shift()).toString(16)).substr(-4)) : t = e, t
            }, parseLevelPlaylist: function (e, t, i, r) {
                var o, n, a = 0, s = 0, l = {type: null, version: null, url: t, fragments: [], live: !0, startSN: 0},
                    u = new k, c = 0, d = null, p = new I;
                for (w.lastIndex = 0; null !== (o = w.exec(e));) {
                    var h = o[1];
                    if (h) {
                        p.duration = parseFloat(h);
                        var f = (" " + o[2]).slice(1);
                        p.title = f || null, p.tagList.push(f ? ["INF", h, f] : ["INF", h])
                    } else if (o[3]) {
                        if (!isNaN(p.duration)) {
                            var _ = a++;
                            p.type = r, p.start = s, p.levelkey = u, p.sn = _, p.level = i, p.cc = c, p.baseurl = t, p.relurl = (" " + o[3]).slice(1), l.fragments.push(p), s += (d = p).duration, p = new I
                        }
                    } else if (o[4]) {
                        if (p.rawByteRange = (" " + o[4]).slice(1), d) {
                            var g = d.byteRangeEndOffset;
                            g && (p.lastByteRangeEndOffset = g)
                        }
                    } else if (o[5]) p.rawProgramDateTime = (" " + o[5]).slice(1), p.tagList.push(["PROGRAM-DATE-TIME", p.rawProgramDateTime]), void 0 === l.programDateTime && (l.programDateTime = new Date(new Date(Date.parse(o[5])) - 1e3 * s)); else {
                        for (o = o[0].match(C), n = 1; n < o.length && void 0 === o[n]; n++) ;
                        var y = (" " + o[n + 1]).slice(1), v = (" " + o[n + 2]).slice(1);
                        switch (o[n]) {
                            case"#":
                                p.tagList.push(v ? [y, v] : [y]);
                                break;
                            case"PLAYLIST-TYPE":
                                l.type = y.toUpperCase();
                                break;
                            case"MEDIA-SEQUENCE":
                                a = l.startSN = parseInt(y);
                                break;
                            case"TARGETDURATION":
                                l.targetduration = parseFloat(y);
                                break;
                            case"VERSION":
                                l.version = parseInt(y);
                                break;
                            case"EXTM3U":
                                break;
                            case"ENDLIST":
                                l.live = !1;
                                break;
                            case"DIS":
                                c++, p.tagList.push(["DIS"]);
                                break;
                            case"DISCONTINUITY-SEQ":
                                c = parseInt(y);
                                break;
                            case"KEY":
                                var m = new P(y), S = m.enumeratedString("METHOD"), T = m.URI,
                                    b = m.hexadecimalInteger("IV");
                                S && (u = new k, T && 0 <= ["AES-128", "SAMPLE-AES"].indexOf(S) && (u.method = S, u.baseuri = t, u.reluri = T, u.key = null, u.iv = b));
                                break;
                            case"START":
                                var x = new P(y).decimalFloatingPoint("TIME-OFFSET");
                                isNaN(x) || (l.startTimeOffset = x);
                                break;
                            case"MAP":
                                var E = new P(y);
                                p.relurl = E.URI, p.rawByteRange = E.BYTERANGE, p.baseurl = t, p.level = i, p.type = r, p.sn = "initSegment", l.initSegment = p, p = new I;
                                break;
                            default:
                                console.log("line parsed but not handled: result")
                        }
                    }
                }
                return (p = d) && !p.relurl && (l.fragments.pop(), s -= p.duration), l.totalduration = s, l.averagetargetduration = s / l.fragments.length, l.endSN = a - 1, l
            }, load: function (n, a) {
                var s = this;
                r.get(n, function (e) {
                    var t = s.parseMasterPlaylist(e, n);
                    if (t.length) {
                        var i = s.parseMasterPlaylistMedia(e, n, "AUDIO", t[0].audioCodec),
                            r = s.parseMasterPlaylistMedia(e, n, "SUBTITLES");
                        if (i.length) {
                            var o = !1;
                            i.forEach(function (e) {
                                e.url || (o = !0)
                            }), !1 === o && t[0].audioCodec && !t[0].attrs.AUDIO && (console.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"), i.unshift({
                                type: "main",
                                name: "main"
                            }))
                        }
                    }
                    a({levels: t, audioTracks: i, subtitles: r, url: n})
                }, function (e) {
                    console.log(e)
                })
            }, resolve: function (e, t) {
                return o.buildAbsoluteURL(t, e, {alwaysNormalize: !0})
            }, parseMasterPlaylist: function (e, t) {
                var i, r = [];
                for (c.lastIndex = 0; null != (i = c.exec(e));) {
                    var o = {}, n = o.attrs = new P(i[1]);
                    o.url = this.resolve(i[2], t);
                    var a = n.decimalResolution("RESOLUTION");
                    a && (o.width = a.width, o.height = a.height), o.bitrate = n.decimalInteger("AVERAGE-BANDWIDTH") || n.decimalInteger("BANDWIDTH"), o.name = n.NAME;
                    var s = n.CODECS;
                    if (s) {
                        s = s.split(/[ ,]+/);
                        for (var l = 0; l < s.length; l++) {
                            var u = s[l];
                            -1 !== u.indexOf("avc1") ? o.videoCodec = this.avc1toavcoti(u) : -1 !== u.indexOf("hvc1") ? o.videoCodec = u : o.audioCodec = u
                        }
                    }
                    r.push(o)
                }
                return r
            }, parseMasterPlaylistMedia: function (e, t, i, r) {
                var o, n = [], a = 0;
                for (u.lastIndex = 0; null != (o = u.exec(e));) {
                    var s = {}, l = new P(o[1]);
                    l.TYPE === i && (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, t)), s.lang = l.LANGUAGE, s.name || (s.name = s.lang), r && (s.audioCodec = r), s.id = a++, n.push(s))
                }
                return n
            }, avc1toavcoti: function (e) {
                var t, i = e.split(".");
                return 2 < i.length ? (t = i.shift() + ".", t += parseInt(i.shift()).toString(16), t += ("000" + parseInt(i.shift()).toString(16)).substr(-4)) : t = e, t
            }, parseLevelPlaylist: function (e, t, i, r) {
                var o, n, a = 0, s = 0, l = {type: null, version: null, url: t, fragments: [], live: !0, startSN: 0},
                    u = new k, c = 0, d = null, p = new I;
                for (w.lastIndex = 0; null !== (o = w.exec(e));) {
                    var h = o[1];
                    if (h) {
                        p.duration = parseFloat(h);
                        var f = (" " + o[2]).slice(1);
                        p.title = f || null, p.tagList.push(f ? ["INF", h, f] : ["INF", h])
                    } else if (o[3]) {
                        if (!isNaN(p.duration)) {
                            var _ = a++;
                            p.type = r, p.start = s, p.levelkey = u, p.sn = _, p.level = i, p.cc = c, p.baseurl = t, p.relurl = (" " + o[3]).slice(1), l.fragments.push(p), s += (d = p).duration, p = new I
                        }
                    } else if (o[4]) {
                        if (p.rawByteRange = (" " + o[4]).slice(1), d) {
                            var g = d.byteRangeEndOffset;
                            g && (p.lastByteRangeEndOffset = g)
                        }
                    } else if (o[5]) p.rawProgramDateTime = (" " + o[5]).slice(1), p.tagList.push(["PROGRAM-DATE-TIME", p.rawProgramDateTime]), void 0 === l.programDateTime && (l.programDateTime = new Date(new Date(Date.parse(o[5])) - 1e3 * s)); else {
                        for (o = o[0].match(C), n = 1; n < o.length && void 0 === o[n]; n++) ;
                        var y = (" " + o[n + 1]).slice(1), v = (" " + o[n + 2]).slice(1);
                        switch (o[n]) {
                            case"#":
                                p.tagList.push(v ? [y, v] : [y]);
                                break;
                            case"PLAYLIST-TYPE":
                                l.type = y.toUpperCase();
                                break;
                            case"MEDIA-SEQUENCE":
                                a = l.startSN = parseInt(y);
                                break;
                            case"TARGETDURATION":
                                l.targetduration = parseFloat(y);
                                break;
                            case"VERSION":
                                l.version = parseInt(y);
                                break;
                            case"EXTM3U":
                                break;
                            case"ENDLIST":
                                l.live = !1;
                                break;
                            case"DIS":
                                c++, p.tagList.push(["DIS"]);
                                break;
                            case"DISCONTINUITY-SEQ":
                                c = parseInt(y);
                                break;
                            case"KEY":
                                var m = new P(y), S = m.enumeratedString("METHOD"), T = m.URI,
                                    b = m.hexadecimalInteger("IV");
                                S && (u = new k, T && 0 <= ["AES-128", "SAMPLE-AES"].indexOf(S) && (u.method = S, u.baseuri = t, u.reluri = T, u.key = null, u.iv = b));
                                break;
                            case"START":
                                var x = new P(y).decimalFloatingPoint("TIME-OFFSET");
                                isNaN(x) || (l.startTimeOffset = x);
                                break;
                            case"MAP":
                                var E = new P(y);
                                p.relurl = E.URI, p.rawByteRange = E.BYTERANGE, p.baseurl = t, p.level = i, p.type = r, p.sn = "initSegment", l.initSegment = p, p = new I;
                                break;
                            default:
                                console.log("line parsed but not handled: " + o)
                        }
                    }
                }
                return (p = d) && !p.relurl && (l.fragments.pop(), s -= p.duration), l.totalduration = s, l.averagetargetduration = s / l.fragments.length, l.endSN = a - 1, l
            }
        }, t.exports = n
    }, {"../io": 24, "./URLToolkit": 21, "./attrlist": 22}],
    24: [function (e, s, t) {
        var h = e("./url");
        s.exports.get = function (e, t, i, r, o) {
            s.exports.ajax("GET", e, {}, t, i, r, o)
        }, s.exports.post = function (e, t, i, r, o, n) {
            var a = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", Accept: "application/json"};
            s.exports.ajax("POST", e, t, i, r, o, n, a)
        }, s.exports.postWithHeader = function (e, t, i, r, o) {
            s.exports.ajax("POST", e, t, r, o, !0, !1, i)
        }, s.exports.ajax = function (e, t, i, r, o, n, a, s) {
            var l, u, c, d;
            o = o || function () {
            }, "undefined" == typeof XMLHttpRequest && (window.XMLHttpRequest = function () {
                try {
                    return new window.ActiveXObject("Msxml2.XMLHTTP.6.0")
                } catch (e) {
                }
                try {
                    return new window.ActiveXObject("Msxml2.XMLHTTP.3.0")
                } catch (e) {
                }
                try {
                    return new window.ActiveXObject("Msxml2.XMLHTTP")
                } catch (e) {
                }
                throw new Error("This browser does not support XMLHttpRequest.")
            }), u = new XMLHttpRequest, c = h.parseUrl(t), d = window.location, !(c.protocol + c.host !== d.protocol + d.host) || !window.XDomainRequest || "withCredentials" in u ? (l = "file:" == c.protocol || "file:" == d.protocol, u.onreadystatechange = function () {
                4 === u.readyState && (200 === u.status || l && 0 === u.status ? r(u.responseText) : o(u.responseText))
            }) : ((u = new window.XDomainRequest).onload = function () {
                r(u.responseText)
            }, u.onerror = o, u.onprogress = function () {
            }, u.ontimeout = o);
            try {
                if (void 0 === n && (n = !0), u.open(e, t, n), a && (u.withCredentials = !0), s) for (var p in s) s.hasOwnProperty(p) && u.setRequestHeader(p, s[p])
            } catch (e) {
                return void o(e)
            }
            try {
                u.send(i)
            } catch (e) {
                o(e)
            }
        }, s.exports.jsonp = function (e, t, i) {
            var r = "jsonp_callback_" + Math.round(1e5 * Math.random()), o = document.createElement("script");
            e && (o.src = e + (0 <= e.indexOf("?") ? "&" : "?") + "callback=" + r + "&cb=" + r, o.onerror = function () {
                delete window[r], document.body.removeChild(o), i()
            }, o.onload = function () {
                setTimeout(function () {
                    window[r] && (delete window[r], document.body.removeChild(o))
                }, 0)
            }, window[r] = function (e) {
                delete window[r], document.body.removeChild(o), t(e)
            }, document.body.appendChild(o))
        }, s.exports.loadJS = function (e, t) {
            var i = document.getElementsByTagName("HEAD").item(0), r = document.createElement("script");
            r.type = "text/javascript", r.src = e, r.onload = function () {
                t && t()
            }, i.appendChild(r)
        }
    }, {"./url": 32}],
    25: [function (e, t, i) {
        var s = e("./dom");
        t.exports.render = function (e, t) {
            var i = t.align ? t.align : "tl", r = t.x ? t.x : 0, o = t.y ? t.y : 0,
                n = r.indexOf && 0 < r.indexOf("%") ? "" : "px", a = o.indexOf && 0 < o.indexOf("%") ? "" : "px";
            "tl" === i ? s.css(e, {
                "float": "left",
                "margin-left": r + n,
                "margin-top": o + a
            }) : "tr" === i ? s.css(e, {
                "float": "right",
                "margin-right": r + n,
                "margin-top": o + a
            }) : "tlabs" === i ? s.css(e, {
                position: "absolute",
                left: r + n,
                top: o + a
            }) : "trabs" === i ? s.css(e, {
                position: "absolute",
                right: r + n,
                top: o + a
            }) : "blabs" === i ? s.css(e, {
                position: "absolute",
                left: r + n,
                bottom: o + a
            }) : "brabs" === i ? s.css(e, {
                position: "absolute",
                right: r + n,
                bottom: o + a
            }) : "cc" === i && s.addClass(e, "center")
        }
    }, {"./dom": 18}],
    26: [function (e, a, t) {
        var s = Object.prototype.hasOwnProperty;
        a.exports.create = Object.create || function (e) {
            function t() {
            }

            return t.prototype = e, new t
        }, a.exports.isArray = function (e) {
            return "[object Array]" === Object.prototype.toString.call(arg)
        }, a.exports.isEmpty = function (e) {
            for (var t in e) if (null !== e[t]) return !1;
            return !0
        }, a.exports.each = function (e, t, i) {
            if (a.exports.isArray(e)) for (var r = 0, o = e.length; r < o && !1 !== t.call(i || this, e[r], r); ++r) ; else for (var n in e) if (s.call(e, n) && !1 === t.call(i || this, n, e[n])) break;
            return e
        }, a.exports.merge = function (e, t) {
            if (!t) return e;
            for (var i in t) s.call(t, i) && (e[i] = t[i]);
            return e
        }, a.exports.deepMerge = function (e, t) {
            var i, r, o;
            for (i in e = a.exports.copy(e), t) s.call(t, i) && (r = e[i], o = t[i], a.exports.isPlain(r) && a.exports.isPlain(o) ? e[i] = a.exports.deepMerge(r, o) : e[i] = t[i]);
            return e
        }, a.exports.copy = function (e) {
            return a.exports.merge({}, e)
        }, a.exports.isPlain = function (e) {
            return !!e && "object" == typeof e && "[object Object]" === e.toString() && e.constructor === Object
        }, a.exports.isArray = Array.isArray || function (e) {
            return "[object Array]" === Object.prototype.toString.call(e)
        }, a.exports.unescape = function (e) {
            return e.replace(/&([^;]+);/g, function (e, t) {
                return {amp: "&", lt: "<", gt: ">", quot: '"', "#x27": "'", "#x60": "`"}[t.toLowerCase()] || e
            })
        }
    }, {}],
    27: [function (e, t, i) {
        var o = e("./object"), n = function () {
        };
        (n = function () {
        }).extend = function (e) {
            var t, i;
            for (var r in t = (e = e || {}).init || e.init || this.prototype.init || this.prototype.init || function () {
            }, (((i = function () {
                t.apply(this, arguments)
            }).prototype = o.create(this.prototype)).constructor = i).extend = n.extend, i.create = n.create, e) e.hasOwnProperty(r) && (i.prototype[r] = e[r]);
            return i
        }, n.create = function () {
            var e = o.create(this.prototype);
            return this.apply(e, arguments), e
        }, t.exports = n
    }, {"./object": 26}],
    28: [function (e, f, t) {
        var _ = e("./object"), i = e("../config"), r = e("./dom"), o = e("./cookie"), n = e("./constants"),
            a = e("../lang/index"), s = e("./ua"), g = e("../player/base/plugin/defaultemptycomponent"), y = {
                preload: !0,
                autoplay: !0,
                useNativeControls: !1,
                width: "100%",
                height: "100%",
                cover: "",
                from: "",
                trackLog: !0,
                logBatched: !0,
                isLive: !1,
                playsinline: !0,
                showBarTime: 5e3,
                rePlay: !1,
                liveRetry: 5,
                liveRetryInterval: 1,
                liveRetryStep: 0,
                vodRetry: 3,
                format: "",
                definition: "",
                defaultDefinition: "",
                loadDataTimeout: 20,
                waitingTimeout: 60,
                delayLoadingShow: 1,
                controlBarForOver: !1,
                controlBarVisibility: "hover",
                enableSystemMenu: !1,
                qualitySort: "asc",
                x5_video_position: "normal",
                x5_type: "",
                x5_fullscreen: !1,
                x5_orientation: "landscape|portrait",
                x5LandscapeAsFullScreen: !0,
                autoPlayDelay: 0,
                autoPlayDelayDisplayText: "",
                useHlsPluginForSafari: !1,
                enableMSEForAndroid: !0,
                encryptType: 0,
                language: "zh-cn",
                languageTexts: {},
                mediaType: "video",
                outputType: "",
                playConfig: {},
                reAuthInfo: {},
                components: [],
                liveTimeShiftUrl: "",
                liveShiftSource: "",
                liveShiftTime: "",
                videoHeight: "100%",
                videoWidth: "100%",
                enableWorker: !0,
                authTimeout: "",
                enableMockFullscreen: !1,
                region: "cn-shanghai",
                debug: !1,
                progressMarkers: [],
                snapshotWatermark: {
                    left: "500",
                    top: "100",
                    text: "",
                    font: "16px \u5b8b\u4f53",
                    fillColor: "#FFFFFF",
                    strokeColor: "#FFFFFF"
                },
                liveStartTime: "",
                liveOverTime: "",
                enableStashBufferForFlv: !0,
                stashInitialSizeForFlv: 32,
                flvOption: {},
                hlsOption: {stopLoadAsPaused: !1},
                hlsLoadingTimeOut: 2e4,
                useHlsPlugOnMobile: !0,
                nudgeMaxRetry: 5,
                tracks: [],
                recreatePlayer: function () {
                },
                diagnosisButtonVisible: !0,
                _native: !0,
                ai: {
                    label: !1,
                    meta: {url: "http://172.19.61.105:8085/meta/query", getMeta: ""},
                    boxes: "",
                    host: "",
                    app: "",
                    streamName: "",
                    startDateTime: 0,
                    waitMetaDataTime: 2,
                    displayAttrs: {
                        header: "\u59d3\u540d",
                        "\u8bc1\u4ef6\u53f7\u7801": "text",
                        "\u6027\u522b": "text",
                        "\u5e74\u9f84": "text",
                        "\u53d1\u578b": "text",
                        "\u4eba\u8138\u5927\u56fe": function (e) {
                        },
                        "\u4eba\u8138\u5c0f\u56fe": function (e) {
                        }
                    },
                    getClass: function (e, t) {
                        return ""
                    }
                },
                thumbnailUrl: "",
                skinRes: "//" + i.domain + "/de/prismplayer-flash/" + i.flashVersion + "/atlas/defaultSkin"
            };
        f.exports.defaultH5Layout = [{name: "bigPlayButton", align: "blabs", x: 30, y: 80}, {
            name: "H5Loading",
            align: "cc"
        }, {name: "errorDisplay", align: "tlabs", x: 0, y: 0}, {name: "infoDisplay"}, {
            name: "tooltip",
            align: "blabs",
            x: 0,
            y: 50
        }, {name: "thumbnail"}, {
            name: "controlBar",
            align: "blabs",
            x: 0,
            y: 0,
            children: [{name: "progress", align: "blabs", x: 0, y: 44}, {
                name: "playButton",
                align: "tl",
                x: 15,
                y: 12
            }, {name: "timeDisplay", align: "tl", x: 10, y: 5}, {
                name: "fullScreenButton",
                align: "tr",
                x: 10,
                y: 12
            }, {name: "subtitle", align: "tr", x: 15, y: 12}, {
                name: "setting",
                align: "tr",
                x: 15,
                y: 12
            }, {name: "volume", align: "tr", x: 5, y: 10}]
        }], f.exports.defaultAudioLayout = [{
            name: "controlBar",
            align: "blabs",
            x: 0,
            y: 0,
            children: [{name: "progress", align: "blabs", x: 0, y: 44}, {
                name: "playButton",
                align: "tl",
                x: 15,
                y: 12
            }, {name: "timeDisplay", align: "tl", x: 10, y: 5}, {name: "volume", align: "tr", x: 5, y: 10}]
        }], f.exports.defaultFlashLayout = [{name: "bigPlayButton", align: "blabs", x: 30, y: 80}, {
            name: "controlBar",
            align: "blabs",
            x: 0,
            y: 0,
            children: [{name: "progress", align: "tlabs", x: 0, y: 0}, {
                name: "playButton",
                align: "tl",
                x: 15,
                y: 26
            }, {name: "nextButton", align: "tl", x: 10, y: 26}, {
                name: "timeDisplay",
                align: "tl",
                x: 10,
                y: 24
            }, {name: "fullScreenButton", align: "tr", x: 10, y: 25}, {
                name: "streamButton",
                align: "tr",
                x: 10,
                y: 23
            }, {name: "volume", align: "tr", x: 10, y: 25}]
        }, {
            name: "fullControlBar",
            align: "tlabs",
            x: 0,
            y: 0,
            children: [{name: "fullTitle", align: "tl", x: 25, y: 6}, {
                name: "fullNormalScreenButton",
                align: "tr",
                x: 24,
                y: 13
            }, {name: "fullTimeDisplay", align: "tr", x: 10, y: 12}, {name: "fullZoom", align: "cc"}]
        }], f.exports.canPlayType = function (e) {
            var t = document.createElement("video");
            return t.canPlayType ? t.canPlayType(e) : ""
        }, f.exports.canPlayHls = function () {
            return "" != f.exports.canPlayType("application/x-mpegURL")
        }, f.exports.isUsedHlsPluginOnMobile = function (e) {
            return !(!s.IS_MOBILE || !s.IS_CHROME && !s.IS_FIREFOX)
        }, f.exports.isSafariUsedHlsPlugin = function (e) {
            return !!(s.os.pc && s.browser.safari && e)
        }, f.exports.hasUIComponent = function (e, t) {
            if (void 0 === e || !e || 0 == e.length) return !1;
            for (var i = 0, r = e.length; i < r; i++) {
                var o = e[i].name;
                if (o == t) return !0;
                if ("controlBar" == o) return f.exports.hasUIComponent(e[i].children, t)
            }
            return !1
        }, f.exports.validateSource = function (e) {
            return !0
        }, f.exports.supportH5Video = function () {
            return void 0 !== document.createElement("video").canPlayType
        }, f.exports.createWrapper = function (e) {
            var t, i = e.id;
            if (!(t = "string" == typeof i ? (0 === i.indexOf("#") && (i = i.slice(1)), r.el(i)) : i) || !t.nodeName) throw new TypeError("\u6ca1\u6709\u4e3a\u64ad\u653e\u5668\u6307\u5b9a\u5bb9\u5668");
            return f.exports.adjustContainerLayout(t, e), t
        }, f.exports.adjustContainerLayout = function (e, t) {
            t.width && !e.style.width && (e.style.width = t.width), t.height && !e.style.height && (e.style.height = t.height)
        }, f.exports.isSupportHls = function () {
            var e = window.MediaSource = window.MediaSource || window.WebKitMediaSource,
                t = window.SourceBuffer = window.SourceBuffer || window.WebKitSourceBuffer,
                i = e && "function" == typeof e.isTypeSupported && e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),
                r = !t || t.prototype && "function" == typeof t.prototype.appendBuffer && "function" == typeof t.prototype.remove;
            return i && r
        }, f.exports.isSupportFlv = function () {
            return f.exports.isSupportHls()
        }, f.exports.isSupportMSE = function () {
            return !!window.Promise && !!window.Uint8Array && !!Array.prototype.forEach && f.exports.isSupportedMediaSource()
        }, f.exports.isSupportedMediaSource = function () {
            return !!window.MediaSource && !!MediaSource.isTypeSupported
        }, f.exports.isSupportedDrm = function () {
            return !!(window.MediaKeys && window.navigator && window.navigator.requestMediaKeySystemAccess && window.MediaKeySystemAccess && window.MediaKeySystemAccess.prototype.getConfiguration) && f.exports.isSupportMSE()
        }, f.exports.isAudio = function (e) {
            return e && 0 < e.toLowerCase().indexOf(".mp3")
        }, f.exports.isLiveShift = function (e) {
            return e.isLive && e.liveStartTime && e.liveOverTime
        }, f.exports.isHls = function (e) {
            return e && 0 < e.toLowerCase().indexOf(".m3u8")
        }, f.exports.isDash = function (e) {
            return e && 0 < e.toLowerCase().indexOf(".mpd")
        }, f.exports.isFlv = function (e) {
            return e && 0 < e.toLowerCase().indexOf(".flv")
        }, f.exports.isRTMP = function (e) {
            return e && -1 < e.toLowerCase().indexOf("rtmp:")
        }, f.exports.checkSecuritSupport = function () {
            return f.exports.isSupportHls() ? "" : s.IS_IOS ? a.get("iOSNotSupportVodEncription") : a.get("UseChromeForVodEncription")
        }, f.exports.findSelectedStreamLevel = function (e, t) {
            var i = t;
            if (!i && !(i = o.get(n.SelectedStreamLevel))) return o.set(n.SelectedStreamLevel, e[0].definition, 365), 0;
            for (var r = 0; r < e.length; r++) if (e[r].definition == i) return r;
            return 0
        }, f.exports.handleOption = function (e, t) {
            var i = _.merge(_.copy(y), e), r = [{name: "fullScreenButton", align: "tr", x: 20, y: 12}, {
                name: "subtitle",
                align: "tr",
                x: 15,
                y: 12
            }, {name: "setting", align: "tr", x: 15, y: 12}, {name: "volume", align: "tr", x: 5, y: 10}], o = !1;
            if (e.useFlashPrism || f.exports.isRTMP(e.source)) o = !0, r = [{
                name: "liveIco",
                align: "tlabs",
                x: 15,
                y: 25
            }, {name: "fullScreenButton", align: "tr", x: 10, y: 25}, {
                name: "volume",
                align: "tr",
                x: 10,
                y: 25
            }]; else {
                var n = f.exports.isLiveShift(i);
                n ? (r.push({name: "liveShiftProgress", align: "tlabs", x: 0, y: 0}), r.push({
                    name: "playButton",
                    align: "tl",
                    x: 15,
                    y: 12
                }), r.push({name: "liveDisplay", align: "tl", x: 15, y: 6})) : r.push({
                    name: "liveDisplay",
                    align: "tlabs",
                    x: 15,
                    y: 6
                })
            }
            if (e.isLive) if (void 0 === e.skinLayout) i.skinLayout = [{
                name: "errorDisplay",
                align: "tlabs",
                x: 0,
                y: 0
            }, {name: "infoDisplay"}, {name: "bigPlayButton", align: "blabs", x: 30, y: 80}, {
                name: "tooltip",
                align: "blabs",
                x: 0,
                y: 56
            }, {name: "H5Loading", align: "cc"}, {
                name: "controlBar",
                align: "blabs",
                x: 0,
                y: 0,
                children: r
            }]; else if (0 != e.skinLayout) {
                for (var a = e.skinLayout.length, s = [], l = -1, u = 0; u < a; u++) if ("controlBar" == i.skinLayout[u].name) {
                    l = u;
                    for (var c = i.skinLayout[u].children.length, d = 0; d < c; d++) {
                        var p = i.skinLayout[u].children[d].name;
                        if ("liveDisplay" == p || "liveIco" == p || "fullScreenButton" == p || "volume" == p || "snapshot" == p || "setting" == p || "subtitle" == p || n && ("progress" == p || "playButton" == p || "timeDisplay" == p)) {
                            var h = i.skinLayout[u].children[d];
                            "progress" == p ? h.name = "liveShiftProgress" : "timeDisplay" == p ? h.name = "liveShiftTimeDisplay" : o && "liveDisplay" == p && (h.name = "liveIco"), s.push(h)
                        }
                    }
                    break
                }
                -1 != l && (i.skinLayout[l].children = s)
            }
            return (void 0 === e.components || !e.components || _.isArray(e.components) && 0 == e.components.length) && "false" != e.components && (i.components = [g]), i
        }
    }, {
        "../config": 5,
        "../lang/index": 11,
        "../player/base/plugin/defaultemptycomponent": 63,
        "./constants": 15,
        "./cookie": 16,
        "./dom": 18,
        "./object": 26,
        "./ua": 31
    }],
    29: [function (e, t, i) {
        arguments[4][28][0].apply(i, arguments)
    }, {
        "../config": 5,
        "../lang/index": 11,
        "../player/base/plugin/defaultemptycomponent": 63,
        "./constants": 15,
        "./cookie": 16,
        "./dom": 18,
        "./object": 26,
        "./ua": 31,
        dup: 28
    }],
    30: [function (e, t, i) {
        t.exports.set = function (t, i) {
            try {
                window.localStorage && localStorage.setItem(t, i)
            } catch (e) {
                window[t + "_localStorage"] = i
            }
        }, t.exports.get = function (t) {
            try {
                if (window.localStorage) return localStorage.getItem(t)
            } catch (e) {
                return window[t + "_localStorage"]
            }
            return ""
        }
    }, {}],
    31: [function (e, C, t) {
        if (C.exports.USER_AGENT = navigator.userAgent, C.exports.IS_IPHONE = /iPhone/i.test(C.exports.USER_AGENT), C.exports.IS_IPAD = /iPad/i.test(C.exports.USER_AGENT), C.exports.IS_IPOD = /iPod/i.test(C.exports.USER_AGENT), C.exports.IS_MAC = /mac/i.test(C.exports.USER_AGENT), C.exports.IS_EDGE = /Edge/i.test(C.exports.USER_AGENT), C.exports.IS_IE11 = /Trident\/7.0/i.test(C.exports.USER_AGENT), C.exports.IS_X5 = /qqbrowser/i.test(C.exports.USER_AGENT.toLowerCase()), C.exports.IS_CHROME = /Chrome/i.test(C.exports.USER_AGENT) && !C.exports.IS_EDGE && !C.exports.IS_X5, C.exports.IS_SAFARI = /Safari/i.test(C.exports.USER_AGENT) && !C.exports.IS_CHROME, C.exports.IS_FIREFOX = /Firefox/i.test(C.exports.USER_AGENT), document.all) try {
            var i = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            C.exports.HAS_FLASH = !!i
        } catch (e) {
            C.exports.HAS_FLASH = !1
        } else if (navigator.plugins && 0 < navigator.plugins.length) {
            i = navigator.plugins["Shockwave Flash"];
            C.exports.HAS_FLASH = !!i
        } else C.exports.HAS_FLASH = !1;
        var r, o, n, a;
        C.exports.IS_MAC_SAFARI = C.exports.IS_MAC && C.exports.IS_SAFARI && !C.exports.IS_CHROME && !C.exports.HAS_FLASH, C.exports.IS_IOS = C.exports.IS_IPHONE || C.exports.IS_IPAD || C.exports.IS_IPOD, C.exports.IOS_VERSION = function () {
            var e = C.exports.USER_AGENT.match(/OS (\d+)_/i);
            if (e && e[1]) return e[1]
        }(), C.exports.IS_ANDROID = /Android/i.test(C.exports.USER_AGENT), C.exports.ANDROID_VERSION = (n = C.exports.USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i)) ? (r = n[1] && parseFloat(n[1]), o = n[2] && parseFloat(n[2]), r && o ? parseFloat(n[1] + "." + n[2]) : r || null) : null, C.exports.IS_OLD_ANDROID = C.exports.IS_ANDROID && /webkit/i.test(C.exports.USER_AGENT) && C.exports.ANDROID_VERSION < 2.3, C.exports.TOUCH_ENABLED = !!("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch), C.exports.IS_MOBILE = C.exports.IS_IOS || C.exports.IS_ANDROID, C.exports.IS_H5 = C.exports.IS_MOBILE || !C.exports.HAS_FLASH, C.exports.IS_PC = !C.exports.IS_MOBILE, C.exports.is_X5 = /micromessenger/i.test(C.exports.USER_AGENT) || /qqbrowser/i.test(C.exports.USER_AGENT), C.exports.getHost = function (e) {
            var t = "";
            if (void 0 === e || null == e || "" == e) return "";
            var i = e.indexOf("//"), r = e;
            -1 < i && (r = e.substring(i + 2));
            t = r;
            var o = r.split("/");
            return o && 0 < o.length && (t = o[0]), (o = t.split(":")) && 0 < o.length && (t = o[0]), t
        }, C.exports.dingTalk = function () {
            var e = C.exports.USER_AGENT.toLowerCase();
            return /dingtalk/i.test(e)
        }, C.exports.wechat = function () {
            var e = C.exports.USER_AGENT.toLowerCase();
            return /micromessenger/i.test(e)
        }, C.exports.inIFrame = function () {
            return self != top
        }, C.exports.getReferer = function () {
            var t = document.referrer;
            if (C.exports.inIFrame()) try {
                t = top.document.referrer
            } catch (e) {
                t = document.referrer
            }
            return t
        }, C.exports.getHref = function () {
            location.href;
            if (C.exports.inIFrame()) try {
                top.location.href
            } catch (e) {
                location.href
            }
            return location.href
        }, a = C.exports, function (e, t) {
            var i = this.os = {}, r = this.browser = {}, o = e.match(/Web[kK]it[\/]{0,1}([\d.]+)/),
                n = e.match(/(Android);?[\s\/]+([\d.]+)?/), a = !!e.match(/\(Macintosh\; Intel /),
                s = e.match(/(iPad).*OS\s([\d_]+)/), l = e.match(/(iPod)(.*OS\s([\d_]+))?/),
                u = !s && e.match(/(iPhone\sOS)\s([\d_]+)/), c = e.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),
                d = /Win\d{2}|Windows/.test(t), p = e.match(/Windows Phone ([\d.]+)/), h = c && e.match(/TouchPad/),
                f = e.match(/Kindle\/([\d.]+)/), _ = e.match(/Silk\/([\d._]+)/),
                g = e.match(/(BlackBerry).*Version\/([\d.]+)/), y = e.match(/(BB10).*Version\/([\d.]+)/),
                v = e.match(/(RIM\sTablet\sOS)\s([\d.]+)/), m = e.match(/PlayBook/),
                S = e.match(/Chrome\/([\d.]+)/) || e.match(/CriOS\/([\d.]+)/), T = e.match(/Firefox\/([\d.]+)/),
                b = e.match(/\((?:Mobile|Tablet); rv:([\d.]+)\).*Firefox\/[\d.]+/),
                x = e.match(/MSIE\s([\d.]+)/) || e.match(/Trident\/[\d](?=[^\?]+).*rv:([0-9.].)/),
                E = !S && e.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/),
                P = E || e.match(/Version\/([\d.]+)([^S](Safari)|[^M]*(Mobile)[^S]*(Safari))/);
            if ((r.webkit = !!o) && (r.version = o[1]), n && (i.android = !0, i.version = n[2]), u && !l && (i.ios = i.iphone = !0, i.version = u[2].replace(/_/g, ".")), s && (i.ios = i.ipad = !0, i.version = s[2].replace(/_/g, ".")), l && (i.ios = i.ipod = !0, i.version = l[3] ? l[3].replace(/_/g, ".") : null), p && (i.wp = !0, i.version = p[1]), c && (i.webos = !0, i.version = c[2]), h && (i.touchpad = !0), g && (i.blackberry = !0, i.version = g[2]), y && (i.bb10 = !0, i.version = y[2]), v && (i.rimtabletos = !0, i.version = v[2]), m && (r.playbook = !0), f && (i.kindle = !0, i.version = f[1]), _ && (r.silk = !0, r.version = _[1]), !_ && i.android && e.match(/Kindle Fire/) && (r.silk = !0), S && (r.chrome = !0, r.version = S[1]), T && (r.firefox = !0, r.version = T[1]), b && (i.firefoxos = !0, i.version = b[1]), x && (r.ie = !0, r.version = x[1]), P && (a || i.ios || d || n) && (r.safari = !0, i.ios || (r.version = P[1])), E && (r.webview = !0), a) {
                var w = e.match(/[\d]*_[\d]*_[\d]*/);
                w && 0 < w.length && w[0] && (i.version = w[0].replace(/_/g, "."))
            }
            i.tablet = !!(s || m || n && !e.match(/Mobile/) || T && e.match(/Tablet/) || x && !e.match(/Phone/) && e.match(/Touch/)), i.phone = !(i.tablet || i.ipod || !(n || u || c || g || y || S && e.match(/Android/) || S && e.match(/CriOS\/([\d.]+)/) || T && e.match(/Mobile/) || x && e.match(/Touch/))), i.pc = !i.tablet && !i.phone, a ? i.name = "macOS" : d ? (i.name = "windows", i.version = function () {
                var e = navigator.userAgent, t = "";
                return (-1 < e.indexOf("Windows NT 5.0") || -1 < e.indexOf("Windows 2000")) && (t = "2000"), (-1 < e.indexOf("Windows NT 5.1") || -1 < e.indexOf("Windows XP")) && (t = "XP"), (-1 < e.indexOf("Windows NT 5.2") || -1 < e.indexOf("Windows 2003")) && (t = "2003"), (-1 < e.indexOf("Windows NT 6.0") || -1 < e.indexOf("Windows Vista")) && (t = "Vista"), (-1 < e.indexOf("Windows NT 6.1") || -1 < e.indexOf("Windows 7")) && (t = "7"), (-1 < e.indexOf("Windows NT 6.2") || -1 < e.indexOf("Windows 8")) && (t = "8"), (-1 < e.indexOf("Windows NT 6.3") || -1 < e.indexOf("Windows 8.1")) && (t = "8.1"), (-1 < e.indexOf("Windows NT 10") || -1 < e.indexOf("Windows 10")) && (t = "10"), t
            }()) : i.name = function () {
                var e = navigator.userAgent, t = "other", i = C.exports.os;
                if (i.ios) return "iOS";
                if (i.android) return "android";
                if (-1 < e.indexOf("Baiduspider")) return "Baiduspider";
                if (-1 < e.indexOf("PlayStation")) return "PS4";
                var r = "Win32" == navigator.platform || "Windows" == navigator.platform || -1 < e.indexOf("Windows"),
                    o = "Mac68K" == navigator.platform || "MacPPC" == navigator.platform || "Macintosh" == navigator.platform || "MacIntel" == navigator.platform;
                return o && (t = "macOS"), "X11" != navigator.platform || r || o || (t = "Unix"), -1 < String(navigator.platform).indexOf("Linux") && (t = "Linux"), r ? "windows" : t
            }(), r.name = function () {
                var e = navigator.userAgent.toLowerCase(), t = C.exports.browser;
                return t.firefox ? "Firefox" : t.ie ? /edge/.test(e) ? "Edge" : "IE" : /micromessenger/.test(e) ? "\u5fae\u4fe1\u5185\u7f6e\u6d4f\u89c8\u5668" : /qqbrowser/.test(e) ? "QQ\u6d4f\u89c8\u5668" : t.webview ? "webview" : t.chrome ? "Chrome" : t.safari ? "Safari" : /baiduspider/.test(e) ? "Baiduspider" : /ucweb/.test(e) || /UCBrowser/.test(e) ? "UC" : /opera/.test(e) ? "Opera" : /ucweb/.test(e) ? "UC" : /360se/.test(e) ? "360\u6d4f\u89c8\u5668" : /bidubrowser/.test(e) ? "\u767e\u5ea6\u6d4f\u89c8\u5668" : /metasr/.test(e) ? "\u641c\u72d7\u6d4f\u89c8\u5668" : /lbbrowser/.test(e) ? "\u730e\u8c79\u6d4f\u89c8\u5668" : /playstation/.test(e) ? "PS4\u6d4f\u89c8\u5668" : void 0
            }()
        }.call(a, navigator.userAgent, navigator.platform)
    }, {}],
    32: [function (e, t, i) {
        var s = e("./dom");
        t.exports.getAbsoluteURL = function (e) {
            return e.match(/^https?:\/\//) || (e = s.createEl("div", {innerHTML: '<a href="' + e + '">x</a>'}).firstChild.href), e
        }, t.exports.parseUrl = function (e) {
            var t, i, r, o, n;
            o = ["protocol", "hostname", "port", "pathname", "search", "hash", "host"], (r = "" === (i = s.createEl("a", {href: e})).host && "file:" !== i.protocol) && ((t = s.createEl("div")).innerHTML = '<a href="' + e + '"></a>', i = t.firstChild, t.setAttribute("style", "display:none; position:absolute;"), document.body.appendChild(t)), n = {};
            for (var a = 0; a < o.length; a++) n[o[a]] = i[o[a]];
            return n.segments = i.pathname.replace(/^\//, "").split("/"), r && document.body.removeChild(t), n
        }
    }, {"./dom": 18}],
    33: [function (e, r, t) {
        var i = e("./dom"), o = e("./ua"), n = e("./playerutil");
        r.exports.formatTime = function (e) {
            var t, i, r, o = Math.floor(e);
            return t = Math.floor(o / 3600), o %= 3600, i = Math.floor(o / 60), r = o % 60, !(t === 1 / 0 || isNaN(t) || i === 1 / 0 || isNaN(i) || r === 1 / 0 || isNaN(r)) && ("00" === (t = 10 <= t ? t : "0" + t) ? "" : t + ":") + (i = 10 <= i ? i : "0" + i) + ":" + (r = 10 <= r ? r : "0" + r)
        }, r.exports.extractTime = function (e) {
            if (e) {
                var t = parseInt(e.getHours()), i = parseInt(e.getMinutes()), r = parseInt(e.getSeconds());
                return ("00" === (t = 10 <= t ? t : "0" + t) ? "" : t + ":") + (i = 10 <= i ? i : "0" + i) + ":" + (r = 10 <= r ? r : "0" + r)
            }
            return ""
        }, r.exports.convertToTimestamp = function (e, t) {
            var i = "";
            return e && (t ? i = e.gettime() : (i = Date.parse(e), i /= 1e3)), i
        }, r.exports.convertToDate = function (e, t) {
            var i = "";
            if (e) {
                t || 1e3, (i = new Date).setTime(1e3 * e)
            }
            return i
        }, r.exports.parseTime = function (e) {
            if (!e) return "00:00:00";
            var t = e.split(":"), i = 0, r = 0, o = 0;
            return 3 === t.length ? (i = t[0], r = t[1], o = t[2]) : 2 === t.length ? (r = t[0], o = t[1]) : 1 === t.length && (o = t[0]), 3600 * (i = parseInt(i, 10)) + 60 * (r = parseInt(r, 10)) + (o = Math.ceil(parseFloat(o)))
        }, r.exports.formatDate = function (e, t) {
            var i = {
                "M+": e.getMonth() + 1,
                "d+": e.getDate(),
                "H+": e.getHours(),
                "m+": e.getMinutes(),
                "s+": e.getSeconds(),
                "q+": Math.floor((e.getMonth() + 3) / 3),
                S: e.getMilliseconds()
            };
            for (var r in/(y+)/.test(t) && (t = t.replace(RegExp.$1, (e.getFullYear() + "").substr(4 - RegExp.$1.length))), i) new RegExp("(" + r + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[r] : ("00" + i[r]).substr(("" + i[r]).length)));
            return t
        }, r.exports.sleep = function (e) {
            for (var t = Date.now(); Date.now() - t <= e;) ;
        }, r.exports.htmlEncodeAll = function (e) {
            return null == e ? "" : e.replace(/\</g, "&lt;").replace(/\>/g, "&gt;").replace(/\&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&apos;")
        }, r.exports.toBinary = function (e) {
            if (!window.atob) return "";
            for (var t = atob(e), i = t.length, r = new Uint8Array(i), o = 0; o < i; o++) r[o] = t.charCodeAt(o);
            return r
        }, r.exports.readyBinary = function (e) {
            for (var t = new Uint8Array(e), i = t.length, r = "", o = 0; o < i; o++) r += t[o];
            return r
        }, r.exports.delayHide = function (e, t) {
            e && (void 0 === t && (t = 1e3), e.delayHanlder && clearTimeout(e.delayHanlder), e.delayHanlder = setTimeout(function () {
                i.css(e, "display", "none")
            }, t))
        }, r.exports.openInFile = function () {
            return -1 != window.location.protocol.toLowerCase().indexOf("file")
        }, r.exports.contentProtocolMixed = function (e) {
            return !!(o.os.pc && (n.isHls(e) && !o.browser.safari || n.isFlv(e)) && "https:" == window.location.protocol.toLowerCase() && e && -1 < e.toLowerCase().indexOf("http://"))
        }, r.exports.queryString = function (e) {
            var t, i, r, o, n;
            return 2 !== (i = (e = decodeURIComponent(e)).split("?")).length ? {} : (n = i[1], (t = n.split("&")) ? (r = {}, o = 0, $(t).each(function () {
                var e;
                2 === (e = t[o].split("=")).length && (r[e[0]] = e[1].replace(/\+/g, " ")), o++
            }), r) : {})
        }, r.exports.log = function (e) {
            var t = window.location.href, i = r.exports.queryString(t);
            i && 1 == i.debug && console.log(e)
        }
    }, {"./dom": 18, "./playerutil": 29, "./ua": 31}],
    34: [function (e, t, i) {
        var s = e("./vttparse"), l = function (e) {
            for (var t = 5381, i = e.length; i;) t = 33 * t ^ e.charCodeAt(--i);
            return (t >>> 0).toString()
        }, r = {
            parse: function (e, t, i) {
                var r, o = e.trim().replace(/\r\n|\n\r|\n|\r/g, "\n").split("\n"), n = [], a = new s;
                a.oncue = function (e) {
                    e.id = l(e.startTime) + l(e.endTime) + l(e.text), e.text = decodeURIComponent(escape(e.text)), e.isBig = !1;
                    var t = e.text.split("#xywh=");
                    if (2 == t.length) {
                        var i = t[1].split(",");
                        e.x = i[0], e.y = i[1], e.w = i[2], e.h = i[3], e.isBig = !0
                    }
                    0 < e.endTime && n.push(e)
                }, a.onparsingerror = function (e) {
                    r = e
                }, a.onflush = function () {
                    if (r && i) return i(r), void console.log(r);
                    t(n)
                }, o.forEach(function (e) {
                    a.parse(e + "\n")
                }), a.flush()
            }
        };
        t.exports = r
    }, {"./vttparse": 36}],
    35: [function (e, t, i) {
        t.exports = function () {
            if ("undefined" != typeof window && window.VTTCue) return window.VTTCue;
            var S = {"": !0, lr: !0, rl: !0}, t = {start: !0, middle: !0, end: !0, left: !0, right: !0};

            function T(e) {
                return "string" == typeof e && (!!t[e.toLowerCase()] && e.toLowerCase())
            }

            function b(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var i = arguments[t];
                    for (var r in i) e[r] = i[r]
                }
                return e
            }

            function e(e, t, i) {
                var r = this, o = function () {
                    if ("undefined" != typeof navigator) return /MSIE\s8\.0/.test(navigator.userAgent)
                }(), n = {};
                o ? r = document.createElement("custom") : n.enumerable = !0, r.hasBeenReset = !1;
                var a = "", s = !1, l = e, u = t, c = i, d = null, p = "", h = !0, f = "auto", _ = "start", g = 50,
                    y = "middle", v = 50, m = "middle";
                if (Object.defineProperty(r, "id", b({}, n, {
                    get: function () {
                        return a
                    }, set: function (e) {
                        a = "" + e
                    }
                })), Object.defineProperty(r, "pauseOnExit", b({}, n, {
                    get: function () {
                        return s
                    }, set: function (e) {
                        s = !!e
                    }
                })), Object.defineProperty(r, "startTime", b({}, n, {
                    get: function () {
                        return l
                    }, set: function (e) {
                        if ("number" != typeof e) throw new TypeError("Start time must be set to a number.");
                        l = e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "endTime", b({}, n, {
                    get: function () {
                        return u
                    }, set: function (e) {
                        if ("number" != typeof e) throw new TypeError("End time must be set to a number.");
                        u = e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "text", b({}, n, {
                    get: function () {
                        return c
                    }, set: function (e) {
                        c = "" + e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "region", b({}, n, {
                    get: function () {
                        return d
                    }, set: function (e) {
                        d = e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "vertical", b({}, n, {
                    get: function () {
                        return p
                    }, set: function (e) {
                        var t = function (e) {
                            return "string" == typeof e && !!S[e.toLowerCase()] && e.toLowerCase()
                        }(e);
                        if (!1 === t) throw new SyntaxError("An invalid or illegal string was specified.");
                        p = t, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "snapToLines", b({}, n, {
                    get: function () {
                        return h
                    }, set: function (e) {
                        h = !!e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "line", b({}, n, {
                    get: function () {
                        return f
                    }, set: function (e) {
                        if ("number" != typeof e && "auto" !== e) throw new SyntaxError("An invalid number or illegal string was specified.");
                        f = e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "lineAlign", b({}, n, {
                    get: function () {
                        return _
                    }, set: function (e) {
                        var t = T(e);
                        if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
                        _ = t, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "position", b({}, n, {
                    get: function () {
                        return g
                    }, set: function (e) {
                        if (e < 0 || 100 < e) throw new Error("Position must be between 0 and 100.");
                        g = e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "positionAlign", b({}, n, {
                    get: function () {
                        return y
                    }, set: function (e) {
                        var t = T(e);
                        if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
                        y = t, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "size", b({}, n, {
                    get: function () {
                        return v
                    }, set: function (e) {
                        if (e < 0 || 100 < e) throw new Error("Size must be between 0 and 100.");
                        v = e, this.hasBeenReset = !0
                    }
                })), Object.defineProperty(r, "align", b({}, n, {
                    get: function () {
                        return m
                    }, set: function (e) {
                        var t = T(e);
                        if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
                        m = t, this.hasBeenReset = !0
                    }
                })), r.displayState = void 0, o) return r
            }

            return e.prototype.getCueAsHTML = function () {
                return window.WebVTT.convertCueToDOMTree(window, this.text)
            }, e
        }()
    }, {}],
    36: [function (e, t, i) {
        var s = e("./vttcue"), r = function () {
            return {
                decode: function (e) {
                    if (!e) return "";
                    if ("string" != typeof e) throw new Error("Error - expected string data.");
                    return decodeURIComponent(encodeURIComponent(e))
                }
            }
        };

        function o() {
            this.window = window, this.state = "INITIAL", this.buffer = "", this.decoder = new r, this.regionList = []
        }

        function l() {
            this.values = Object.create(null)
        }

        function u(e, t, i, r) {
            var o = r ? e.split(r) : [e];
            for (var n in o) if ("string" == typeof o[n]) {
                var a = o[n].split(i);
                if (2 === a.length) t(a[0], a[1])
            }
        }

        l.prototype = {
            set: function (e, t) {
                this.get(e) || "" === t || (this.values[e] = t)
            }, get: function (e, t, i) {
                return i ? this.has(e) ? this.values[e] : t[i] : this.has(e) ? this.values[e] : t
            }, has: function (e) {
                return e in this.values
            }, alt: function (e, t, i) {
                for (var r = 0; r < i.length; ++r) if (t === i[r]) {
                    this.set(e, t);
                    break
                }
            }, integer: function (e, t) {
                /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10))
            }, percent: function (e, t) {
                return !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && 0 <= (t = parseFloat(t)) && t <= 100) && (this.set(e, t), !0)
            }
        };
        var c = new s(0, 0, 0), d = "middle" === c.align ? "middle" : "center";

        function p(t, e, a) {
            var i = t;

            function r() {
                var e = function (e) {
                    function t(e, t, i, r) {
                        return 3600 * (0 | e) + 60 * (0 | t) + (0 | i) + (0 | r) / 1e3
                    }

                    var i = e.match(/^(\d+):(\d{2})(:\d{2})?(\.\d{3})?/);
                    if (!i) return null;
                    var r = i[4];
                    return r && (r = r.replace(".", "")), i[3] ? t(i[1], i[2], i[3].replace(":", ""), r) : 59 < i[1] ? t(i[1], i[2], 0, r) : t(0, i[1], i[2], r)
                }(t);
                if (null === e) throw new Error("Malformed timestamp: " + i);
                return t = t.replace(/^[^\sa-zA-Z-]+/, ""), e
            }

            function o() {
                t = t.replace(/^\s+/, "")
            }

            if (o(), e.startTime = r(), o(), "--\x3e" !== t.substr(0, 3)) throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
            t = t.substr(3), o(), e.endTime = r(), o(), function (e, t) {
                var n = new l;
                u(e, function (e, t) {
                    switch (e) {
                        case"region":
                            for (var i = a.length - 1; 0 <= i; i--) if (a[i].id === t) {
                                n.set(e, a[i].region);
                                break
                            }
                            break;
                        case"vertical":
                            n.alt(e, t, ["rl", "lr"]);
                            break;
                        case"line":
                            var r = t.split(","), o = r[0];
                            n.integer(e, o), n.percent(e, o) && n.set("snapToLines", !1), n.alt(e, o, ["auto"]), 2 === r.length && n.alt("lineAlign", r[1], ["start", d, "end"]);
                            break;
                        case"position":
                            r = t.split(","), n.percent(e, r[0]), 2 === r.length && n.alt("positionAlign", r[1], ["start", d, "end", "line-left", "line-right", "auto"]);
                            break;
                        case"size":
                            n.percent(e, t);
                            break;
                        case"align":
                            n.alt(e, t, ["start", d, "end", "left", "right"])
                    }
                }, /:/, /\s/), t.region = n.get("region", null), t.vertical = n.get("vertical", "");
                var i = n.get("line", "auto");
                "auto" === i && -1 === c.line && (i = -1), t.line = i, t.lineAlign = n.get("lineAlign", "start"), t.snapToLines = n.get("snapToLines", !0), t.size = n.get("size", 100), t.align = n.get("align", d);
                var r = n.get("position", "auto");
                "auto" === r && 50 === c.position && (r = "start" === t.align || "left" === t.align ? 0 : "end" === t.align || "right" === t.align ? 100 : 50), t.position = r
            }(t, e)
        }

        o.prototype = {
            parse: function (e) {
                var r = this;

                function t() {
                    var e = r.buffer, t = 0;
                    for (e = function (e) {
                        return e.replace(/<br(?: \/)?>/gi, "\n")
                    }(e); t < e.length && "\r" !== e[t] && "\n" !== e[t];) ++t;
                    var i = e.substr(0, t);
                    return "\r" === e[t] && ++t, "\n" === e[t] && ++t, r.buffer = e.substr(t), i
                }

                e && (r.buffer += r.decoder.decode(e, {stream: !0}));
                try {
                    var i;
                    if ("INITIAL" === r.state) {
                        if (!/\r\n|\n/.test(r.buffer)) return this;
                        var o = (i = t()).match(/^WEBVTT([ \t].*)?$/);
                        if (!o || !o[0]) throw new Error("Malformed WebVTT signature.");
                        r.state = "HEADER"
                    }
                    for (var n = !1; r.buffer;) {
                        if (!/\r\n|\n/.test(r.buffer)) return this;
                        switch (n ? n = !1 : i = t(), r.state) {
                            case"HEADER":
                                /:/.test(i) ? u(i, function (e, t) {
                                    switch (e) {
                                        case"Region":
                                            console.log("parse region", t)
                                    }
                                }, /:/) : i || (r.state = "ID");
                                continue;
                            case"NOTE":
                                i || (r.state = "ID");
                                continue;
                            case"ID":
                                if (/^NOTE($|[ \t])/.test(i)) {
                                    r.state = "NOTE";
                                    break
                                }
                                if (!i) continue;
                                if (r.cue = new s(0, 0, ""), r.state = "CUE", -1 === i.indexOf("--\x3e")) {
                                    r.cue.id = i;
                                    continue
                                }
                            case"CUE":
                                try {
                                    p(i, r.cue, r.regionList)
                                } catch (e) {
                                    r.cue = null, r.state = "BADCUE";
                                    continue
                                }
                                r.state = "CUETEXT";
                                continue;
                            case"CUETEXT":
                                var a = -1 !== i.indexOf("--\x3e");
                                if (!i || a && (n = !0)) {
                                    r.oncue && r.oncue(r.cue), r.cue = null, r.state = "ID";
                                    continue
                                }
                                r.cue.text && (r.cue.text += "\n"), r.cue.text += i;
                                continue;
                            case"BADCUE":
                                i || (r.state = "ID");
                                continue
                        }
                    }
                } catch (e) {
                    "CUETEXT" === r.state && r.cue && r.oncue && r.oncue(r.cue), r.cue = null, r.state = "INITIAL" === r.state ? "BADWEBVTT" : "BADCUE"
                }
                return this
            }, flush: function () {
                var e = this;
                try {
                    if (e.buffer += e.decoder.decode(), (e.cue || "HEADER" === e.state) && (e.buffer += "\n\n", e.parse()), "INITIAL" === e.state) throw new Error("Malformed WebVTT signature.")
                } catch (e) {
                    throw e
                }
                return e.onflush && e.onflush(), this
            }
        }, t.exports = o
    }, {"./vttcue": 35}],
    37: [function (e, t, i) {
        var o = e("../lib/io");
        e("../lib/storage");

        function r(e) {
            this._uploadDuration = e.logDuration || 5, this._uploadCount = e.logCount || 10, this._logReportTo = e.logReportTo, this._logs = [], this._retry = 0, this._disposed = !1, this._supportLocalStorage = !0;
            var t = this;
            window && (window.onbeforeunload = function (e) {
                if (0 < t._logs.length) if (t._supportLocalStorage) localStorage.setItem("__aliplayer_log_data", JSON.stringify(t._logs)); else {
                    t._report();
                    !function (e) {
                        for (var t = (new Date).getTime(), i = t; i < t + e;) i = (new Date).getTime()
                    }(500)
                }
            });
            try {
                if (localStorage) {
                    var i = localStorage.getItem("__aliplayer_log_data");
                    localStorage.removeItem("__aliplayer_log_data"), i && (this._logs = JSON.parse(i))
                } else this._supportLocalStorage = !1
            } catch (e) {
                this._supportLocalStorage = !1
            }
            this._start()
        }

        r.prototype.add = function (e) {
            var t = this._logs.length;
            if (e.__time__ = Math.round(new Date / 1e3), 0 < t && "4001" == e.e) {
                var i = this._logs[t - 1];
                if ("4001" == i.e && i.__time__ - e.__time__ < 5) return
            }
            this._logs.push(e), (this._logs.length > this._uploadCount || "4001" == e.e || "2002" == e.e) && this._report()
        }, r.prototype.dispose = function () {
            this._report(), this._disposed = !0
        }, r.prototype._start = function () {
            this._disposed = !1;
            this._retry = 0, this._report()
        }, r.prototype._report = function (t) {
            if (this._tickHandler && (clearTimeout(this._tickHandler), this._tickHandler = null), t || (t = this._logs.splice(0, this._uploadCount)), 0 < t.length) {
                var e = JSON.stringify({__logs__: t, __source__: ""}), i = this, r = {
                    "Content-Type": "application/json;charset=UTF-8",
                    "x-log-apiversion": "0.6.0",
                    "x-log-bodyrawsize": e.length
                };
                o.postWithHeader(this._logReportTo, e, r, function (e) {
                    i._tick()
                }, function (e) {
                    0 == i._retry ? (i._retry = 1, i._report(t)) : i._tick()
                })
            } else this._tick()
        }, r.prototype._tick = function () {
            if (!this._disposed) {
                this._retry = 0;
                var e = this;
                this._logs.length > this._uploadCount ? e._report() : this._tickHandler = setTimeout(function () {
                    e._report()
                }, 1e3 * this._uploadDuration)
            }
        }, t.exports = r
    }, {"../lib/io": 24, "../lib/storage": 30}],
    38: [function (e, t, i) {
        var r = e("../lib/oo"), u = e("../lib/object"), v = e("../lib/data"), c = e("../lib/io"), m = e("../lib/ua"),
            S = e("../config"), o = e("../player/base/event/eventtype"), T = e("./util"), b = e("./log"), n = 0, d = {
                STARTFETCHDATA: 1003,
                COMPLETEFETCHDATA: 1004,
                PREPARE: 1101,
                PREPAREEND: 1102,
                STARTPLAY: 2e3,
                PLAY: 2001,
                STOP: 2002,
                PAUSE: 2003,
                SEEK: 2004,
                FULLSREEM: 2005,
                QUITFULLSCREEM: 2006,
                RESOLUTION: 2007,
                RESOLUTION_DONE: 2008,
                RECOVER: 2010,
                SEEK_END: 2011,
                FETCHEDIP: 2020,
                CDNDETECT: 2021,
                DETECT: 2022,
                UNDERLOAD: 3002,
                LOADED: 3001,
                HEARTBEAT: 9001,
                ERROR: 4001,
                ERRORRETRY: 4002,
                SNAPSHOT: 2027,
                ROTATE: 2028,
                IMAGE: 2029,
                THUMBNAILSTART: 2031,
                THUMBNAILCOMPLETE: 2032,
                CCSTART: 2033,
                CCCOMPLETE: 2034,
                AUDIOTRACKSTART: 2033,
                AUDIOTRACKCOMPLETE: 2034
            }, a = r.extend({
                init: function (e, t, i) {
                    void 0 === i && (i = !0), this.trackLog = i, this.player = e, this.requestId = "", this.sessionId = v.guid(), this.playId = 0, this.firstPlay = !0, this.osName = m.os.name, this.osVersion = m.os.version || "", this.exName = m.browser.name, this.exVersion = m.browser.version || "", this._logService = "", t.logBatched && (this._logService = new b(S));
                    var r = this.player.getOptions(), o = t.from ? t.from : "", n = (r.isLive, r.isLive ? "live" : "vod"),
                        a = "pc";
                    m.IS_IPAD ? a = "pad" : m.os.phone && (a = "phone");
                    var s = this.encodeURL(m.getReferer()), l = m.getHref(), u = this.encodeURL(l), c = "";
                    l && (c = m.getHost(l));
                    var d = S.h5Version, p = T.getUuid(), h = r.source ? this.encodeURL(r.source) : "",
                        f = m.getHost(r.source), _ = r.userId ? r.userId + "" : "0", g = this.sessionId,
                        y = (new Date).getTime();
                    this._userNetInfo = {cdnIp: "", localIp: ""};
                    this.opt = {
                        APIVersion: "0.6.0",
                        t: y,
                        ll: "info",
                        lv: "1.0",
                        pd: "player",
                        md: "saas_player",
                        ui: "saas_player",
                        sm: "play",
                        os: this.osName,
                        ov: this.osVersion,
                        et: this.exName,
                        ev: this.exVersion,
                        uat: m.USER_AGENT,
                        hn: "0.0.0.0",
                        bi: o,
                        ri: g,
                        e: "0",
                        args: "0",
                        vt: n,
                        tt: a,
                        dm: "h5",
                        av: d,
                        uuid: p,
                        vu: h,
                        vd: f,
                        ua: _,
                        dn: "custom",
                        cdn_ip: "0.0.0.0",
                        app_n: c,
                        r: s,
                        pu: u
                    }, this.bindEvent()
                }, updateVideoInfo: function (e) {
                    var t = e.from ? e.from : "";
                    this.opt.bi = t + "", this.updateSourceInfo()
                }, updateSourceInfo: function () {
                    var e = this.player.getOptions();
                    if (e) {
                        var t = e.source ? this.encodeURL(e.source) : "", i = m.getHost(e.source);
                        this.opt.vu = t, this.opt.vd = i
                    }
                }, replay: function () {
                    this.reset(), this.player.trigger(o.Video.LoadStart), this.player.trigger(o.Video.LoadedMetadata), this.player.trigger(o.Video.LoadedData)
                }, bindEvent: function () {
                    var t = this;
                    this.player.on(o.Player.Init, function () {
                        t._onPlayerInit()
                    }), this.player.on(o.Video.LoadStart, function () {
                        t._onPlayerloadstart()
                    }), this.player.on(o.Video.LoadedMetadata, function () {
                        t._onPlayerLoadMetadata()
                    }), this.player.on(o.Video.LoadedData, function () {
                        t._onPlayerLoaddata()
                    }), this.player.on(o.Video.Play, function () {
                        t._onPlayerPlay()
                    }), this.player.on(o.Video.Playing, function () {
                        t._onPlayerReady()
                    }), this.player.on(o.Video.Ended, function () {
                        t._onPlayerFinish()
                    }), this.player.on(o.Video.Pause, function () {
                        t._onPlayerPause()
                    }), this.player.on(o.Private.SeekStart, function (e) {
                        t._onPlayerSeekStart(e)
                    }), this.player.on(o.Private.EndStart, function (e) {
                        t._seekEndData = e.paramData
                    }), this.player.on(o.Player.Waiting, function () {
                        t._waitingDelayLoadingShowHandle && (clearTimeout(t._waitingDelayLoadingShowHandle), t._waitingDelayLoadingShowHandle = null), t._waitingDelayLoadingShowHandle = setTimeout(function () {
                            t._onPlayerLoaded()
                        }, 1e3 * t.player._options.delayLoadingShow)
                    }), this.player.on(o.Video.CanPlayThrough, function () {
                    }), this.player.on(o.Video.CanPlay, function () {
                        t._waitingDelayLoadingShowHandle && (clearTimeout(t._waitingDelayLoadingShowHandle), t._waitingDelayLoadingShowHandle = null), t._onPlayerUnderload(), t._onPlayerCanplay()
                    }), this.player.on(o.Video.TimeUpdate, function () {
                        t._waitingDelayLoadingShowHandle && (clearTimeout(t._waitingDelayLoadingShowHandle), t._waitingDelayLoadingShowHandle = null), t._seekEndData && t.seeking && t._onPlayerSeekEnd()
                    }), this.player.on(o.Player.Error, function () {
                        t._onPlayerError()
                    }), this.player.on(o.Player.RequestFullScreen, function () {
                        t._onFullscreenChange(1)
                    }), this.player.on(o.Player.CancelFullScreen, function () {
                        t._onFullscreenChange(0)
                    }), this.player.on(o.Private.PREPARE, function (e) {
                        t._prepareTime = (new Date).getTime(), t._log("PREPARE", {dn: e.paramData})
                    }), this.player.on(o.Player.Snapshoted, function () {
                        t._log("SNAPSHOT")
                    }), setInterval(function () {
                        if (t.player.getCurrentTime()) {
                            var e = Math.floor(1e3 * t.player.getCurrentTime());
                            t.player.paused() || 30 <= ++n && (t._log("HEARTBEAT", {vt: e, interval: 1e3 * n}), n = 0)
                        }
                    }, 1e3)
                }, removeEvent: function () {
                    this.player.off("init"), this.player.off("ready"), this.player.off("ended"), this.player.off("play"), this.player.off("pause"), this.player.off("seekStart"), this.player.off("seekEnd"), this.player.off("canplaythrough"), this.player.off("playing"), this.player.off("timeupdate"), this.player.off("error"), this.player.off("fullscreenchange"), this.player.off(o.Private.PREPARE), this._logService && this._logService.dispose()
                }, reset: function () {
                    this.startTimePlay = 0, this.buffer_flag = 0, this.firstPlay = !1, this.playId = 0, this.loadstarted = 0, this._LoadedData = 0, this._canPlay = 0
                }, encodeURL: function (e) {
                    if (!e) return "";
                    var t = this.player.getOptions();
                    return t && !t.logBatched ? encodeURIComponent(e) : e
                }, _onFullscreenChange: function (e) {
                    e ? this._log("FULLSREEM", {}) : this._log("QUITFULLSCREEM", {})
                }, _onPlayerloadstart: function () {
                    this.loadstartTime = (new Date).getTime(), this.playId = v.guid(), !this.loadstarted && this.player._isPreload() && (this.loadstarted = 1, this._log("STARTPLAY", {vt: (new Date).getTime()}))
                }, _onPlayerLoadMetadata: function () {
                    this.loadMetaDataCost = (new Date).getTime() - this.loadstartTime
                }, _onPlayerLoaddata: function () {
                    if (!this._LoadedData && !this.buffer_flag) {
                        var e = 0, t = 0;
                        this.player.tag && (e = this.player.tag.videoWidth, t = this.player.tag.videoHeight), this._log("PREPAREEND", {
                            tc: (new Date).getTime() - this._prepareTime,
                            cc: (new Date).getTime() - this.loadstartTime,
                            md: this.loadMetaDataCost,
                            mi: JSON.stringify({type: "video", definition: e + "*" + t})
                        })
                    }
                    this._LoadedData = 1
                }, _onPlayerCanplay: function () {
                    this._canPlay = 1, this._reportPlay()
                }, _onPlayerInit: function () {
                    this.buffer_flag = 0, this.pause_flag = 0, this.startTimePlay = 0, this.loadstarted = 0, this._LoadedData = 0, this._canPlay = 0
                }, _onPlayerReady: function () {
                    this.startTimePlay || (this.startTimePlay = (new Date).getTime())
                }, _onPlayerFinish: function () {
                    this._log("STOP", {vt: Math.floor(1e3 * this.player.getCurrentTime())}), this.reset()
                }, _reportPlay: function () {
                    return !(this.buffer_flag || !this._LoadedData || !this.playstartTime) && (this.first_play_time = (new Date).getTime(), this._log("PLAY", {
                        dsm: "fix",
                        tc: this.first_play_time - this.loadstartTime,
                        fc: this.first_play_time - this.playstartTime
                    }), this.buffer_flag = 1, !0)
                }, _onPlayerPlay: function () {
                    this.playstartTime = (new Date).getTime(), 0 == this.playId && (this.playId = v.guid()), this.firstPlay || 0 != this.pause_flag || this.seeking || (this.sessionId = v.guid()), this.player._isPreload() || (this._log("STARTPLAY", {vt: (new Date).getTime()}), this.loadstartTime = (new Date).getTime()), this._canPlay && this._reportPlay() || this.buffer_flag && this.pause_flag && (this.pause_flag = 0, this.pauseEndTime = (new Date).getTime(), this._log("RECOVER", {
                        vt: Math.floor(1e3 * this.player.getCurrentTime()),
                        cost: this.pauseEndTime - this.pauseTime
                    }))
                }, _onPlayerPause: function () {
                    this.buffer_flag && this.startTimePlay && (this.seeking || (this.pause_flag = 1, this.pauseTime = (new Date).getTime(), this._log("PAUSE", {vt: Math.floor(1e3 * this.player.getCurrentTime())})))
                }, _onPlayerSeekStart: function (e) {
                    this.seekStartTime = e.paramData.fromTime, this.seeking = !0, this.startTimePlay = 0, this.seekStartStamp = (new Date).getTime()
                }, _onPlayerSeekEnd: function () {
                    this.seekEndStamp = (new Date).getTime(), this._log("SEEK", {
                        drag_from_timestamp: Math.floor(1e3 * this.seekStartTime),
                        drag_to_timestamp: Math.floor(1e3 * this._seekEndData.toTime)
                    }), this._log("SEEK_END", {
                        vt: Math.floor(1e3 * this.player.getCurrentTime()),
                        cost: this.seekEndStamp - this.seekStartStamp
                    }), this.seeking = !1, this._seekEndData = null
                }, _onPlayerLoaded: function () {
                    this.buffer_flag && this.startTimePlay && (this.stucking || this.seeking || (this.stuckStartTime = (new Date).getTime(), this.stuckStartTime - this.startTimePlay <= 1e3 || (this.stucking = !0, this._log("UNDERLOAD", {vt: Math.floor(1e3 * this.player.getCurrentTime())}), this.stuckStartTime = (new Date).getTime())))
                }, _onPlayerUnderload: function () {
                    if ((this.buffer_flag || !this.player._options || !this.player._options.autoplay) && this.stucking && !this.seeking) {
                        var e = Math.floor(1e3 * this.player.getCurrentTime()),
                            t = this.stuckStartTime || (new Date).getTime(), i = Math.floor((new Date).getTime() - t);
                        0 < i && this._log("LOADED", {vt: e, cost: i}), this.stucking = !1
                    }
                }, _onPlayerHeartBeat: function () {
                    if (!this.seeking) {
                        var e = Math.floor(1e3 * this.player.getCurrentTime()), t = this;
                        this.timer || (this.timer = setTimeout(function () {
                            !t.seeking && t._log("HEARTBEAT", {progress: e}), clearTimeout(t.timer), t.timer = null
                        }, 6e4)), console.log("timeupdate")
                    }
                }, _onPlayerError: function () {
                    this.playId = 0, this._LoadedData = 1, this.buffer_flag || this._reportPlay()
                }, _log: function (e, t) {
                    if (this.trackLog) {
                        this.updateSourceInfo();
                        var i = u.copy(this.opt);
                        this.requestId = v.guid();
                        var r = S.logReportTo;
                        i.e = d[e] + "", i.ri = this.sessionId, i.t = (new Date).getTime() + "", i.cdn_ip = this._userNetInfo.cdnIp, i.hn = this._userNetInfo.localIp;
                        var o = this.player.getCurrentQuality();
                        "" != o && (i.definition = o.definition);
                        var n = [];
                        u.each(t, function (e, t) {
                            n.push(e + "=" + t)
                        });
                        var a = "", s = this.player.getOptions();
                        s && s.vid && (a = s.vid), n.push("vid=" + a);
                        try {
                            Aliplayer && Aliplayer.__logCallback__ && (i.args = n, Aliplayer.__logCallback__(i))
                        } catch (e) {
                            console.log(e)
                        }
                        if ("" == (n = n.join("&")) && (n = "0"), i.args = this.encodeURL(n), this._logService) this._logService.add(i); else {
                            var l = [];
                            u.each(i, function (e, t) {
                                l.push(e + "=" + t)
                            }), l = l.join("&"), c.jsonp(r + "?" + l, function () {
                            }, function () {
                            })
                        }
                        return this.sessionId
                    }
                }
            });
        t.exports = a
    }, {
        "../config": 5,
        "../lib/data": 17,
        "../lib/io": 24,
        "../lib/object": 26,
        "../lib/oo": 27,
        "../lib/ua": 31,
        "../player/base/event/eventtype": 43,
        "./log": 37,
        "./util": 39
    }],
    39: [function (e, t, i) {
        var r = e("../lib/cookie"), o = e("../lib/data"), n = e("../lib/ua");
        t.exports.getUuid = function () {
            var e = r.get("p_h5_u");
            return e || (e = o.guid(), r.set("p_h5_u", e, 730)), e
        }, t.exports.getTerminalType = function () {
            var e = "pc";
            return n.IS_IPAD ? e = "pad" : n.IS_ANDROID ? e = "android" : n.IS_IOS && (e = "iphone"), e
        }, t.exports.returnUTCDate = function (e) {
            var t = e.getUTCFullYear(), i = e.getUTCMonth(), r = e.getUTCDate(), o = e.getUTCHours(),
                n = e.getUTCMinutes(), a = e.getUTCSeconds(), s = e.getUTCMilliseconds();
            return Date.UTC(t, i, r, o, n, a, s)
        }, t.exports.getRfc822 = function (e) {
            return e.toUTCString().replace("UTC", "GMT")
        }
    }, {"../lib/cookie": 16, "../lib/data": 17, "../lib/ua": 31}],
    40: [function (e, t, i) {
        var s = e("./base/player"), l = e("./flash/flashplayer"), u = e("./saas/mtsplayer"), c = e("./saas/vodplayer"),
            d = e("./taotv/taotvplayer"), p = e("./audio/audioplayer"), h = e("./hls/hlsplayer"),
            f = e("./flv/flvplayer"), _ = e("./drm/drmplayer"), g = e("../lib/ua"), y = e("../lib/playerutil"),
            v = (e("../lib/dom"), e("../lib/io"), e("../lang/index"));
        t.exports.create = function (e, t) {
            "function" != typeof t && (t = function () {
            }), e.readyCallback = t, v.setCurrentLanguage(e.language, "h5", e.languageTexts);
            var i = y.handleOption(e), r = i.source, o = y.isAudio(r);
            o && (i.mediaType = "audio");
            var n, a = y.createWrapper(i);
            return a.player ? a.player : (o ? n = new p(a, i) : !i.useFlashPrism && y.isFlv(r) && y.isSupportFlv() ? n = new f(a, i) : g.IS_MOBILE || !i.useFlashPrism && !y.isRTMP(r) ? i.vid && !i.source ? n = i.authInfo ? new u(a, i) : i.playauth || i.accessKeyId && i.accessKeySecret ? new c(a, i) : new d(a, i) : y.isDash(r) && y.isSupportMSE() ? n = new _(a, i) : y.isHls(r) ? y.canPlayHls() ? n = y.isSupportHls() && (y.isUsedHlsPluginOnMobile() || y.isSafariUsedHlsPlugin(i.useHlsPluginForSafari)) ? new h(a, i) : new s(a, i) : y.isSupportHls() ? n = new h(a, i) : g.os.pc ? i.userH5Prism || i.useH5Prism || (n = new l(a, i)) : n = new s(a, i) : n = (g.os.pc, new s(a, i)) : n = new l(a, i), n)
        }
    }, {
        "../lang/index": 11,
        "../lib/dom": 18,
        "../lib/io": 24,
        "../lib/playerutil": 29,
        "../lib/ua": 31,
        "./audio/audioplayer": 41,
        "./base/player": 62,
        "./drm/drmplayer": 69,
        "./flash/flashplayer": 70,
        "./flv/flvplayer": 72,
        "./hls/hlsplayer": 74,
        "./saas/mtsplayer": 78,
        "./saas/vodplayer": 84,
        "./taotv/taotvplayer": 93
    }],
    41: [function (e, t, i) {
        var r = e("../base/player"), o = e("../../ui/component"), n = e("../../lib/dom"), a = e("../../lib/object"),
            s = e("../../lib/playerutil"), l = r.extend({
                init: function (e, t) {
                    this._isAudio = !0, void 0 === t.skinLayout && (t.skinLayout = s.defaultAudioLayout), r.call(this, e, t)
                }
            });
        l.prototype.createEl = function () {
            "AUDIO" !== this.tag.tagName && (this._el = this.tag, this.tag = o.prototype.createEl.call(this, "audio"));
            var t = this._el, e = this.tag;
            e.player = this;
            var i = n.getElementAttributes(e);
            return a.each(i, function (e) {
                t.setAttribute(e, i[e])
            }), this.setVideoAttrs(), e.parentNode && e.parentNode.insertBefore(t, e), n.insertFirst(e, t), t
        }, t.exports = l
    }, {
        "../../lib/dom": 18,
        "../../lib/object": 26,
        "../../lib/playerutil": 29,
        "../../ui/component": 94,
        "../base/player": 62
    }],
    42: [function (e, t, i) {
        var a = e("../../../lib/event"), s = e("./eventtype"), r = e("../eventHandler/video/index"),
            o = e("../eventHandler/player/index");
        t.exports.offAll = function (e) {
            var t = e.tag, i = e._el;
            for (var r in s.Video) a.off(t, s.Video[r]);
            for (var o in s.Player) a.off(i, s.Player[o]);
            for (var n in s.Private) a.off(i, s.Private[n])
        }, t.exports.onAll = function (e) {
            r.bind(e), o.bind(e)
        }
    }, {
        "../../../lib/event": 19,
        "../eventHandler/player/index": 47,
        "../eventHandler/video/index": 56,
        "./eventtype": 43
    }],
    43: [function (e, t, i) {
        t.exports = {
            Video: {
                TimeUpdate: "timeupdate",
                Play: "play",
                Playing: "playing",
                Pause: "pause",
                CanPlay: "canplay",
                Waiting: "waiting",
                Ended: "ended",
                Error: "error",
                Suspend: "suspend",
                Stalled: "stalled",
                LoadStart: "loadstart",
                DurationChange: "durationchange",
                LoadedData: "loadeddata",
                LoadedMetadata: "loadedmetadata",
                Progress: "progress",
                CanPlayThrough: "canplaythrough",
                ContextMenu: "contextmenu",
                Seeking: "seeking",
                Seeked: "seeked",
                ManualEnded: "manualended"
            },
            Player: {
                TimeUpdate: "timeupdate",
                DurationChange: "durationchange",
                Init: "init",
                Ready: "ready",
                Play: "play",
                Pause: "pause",
                CanPlay: "canplay",
                Waiting: "waiting",
                Ended: "ended",
                Error: "error",
                RequestFullScreen: "requestFullScreen",
                CancelFullScreen: "cancelFullScreen",
                Snapshoted: "snapshoted",
                Snapshoting: "snapshoting",
                OnM3u8Retry: "onM3u8Retry",
                LiveStreamStop: "liveStreamStop",
                AutoPlayPrevented: "autoPlayPrevented",
                AutoPlay: "autoplay",
                StartSeek: "startSeek",
                CompleteSeek: "completeSeek",
                TextTrackReady: "textTrackReady",
                AudioTrackReady: "audioTrackReady",
                AudioTrackUpdated: "audioTrackUpdated",
                LevelsLoaded: "levelsLoaded",
                AudioTrackSwitch: "audioTrackSwitch",
                AudioTrackSwitched: "audioTrackSwitched",
                LevelSwitch: "levelSwitch",
                LevelSwitched: "levelSwitched",
                MarkerDotOver: "markerDotOver",
                MarkerDotOut: "markerDotOut"
            },
            Private: {
                Play_Btn_Show: "play_btn_show",
                UiH5Ready: "uiH5Ready",
                Error_Hide: "error_hide",
                Error_Show: "error_show",
                Info_Show: "info_show",
                Info_Hide: "info_hide",
                H5_Loading_Show: "h5_loading_show",
                H5_Loading_Hide: "h5_loading_hide",
                HideProgress: "hideProgress",
                CancelHideProgress: "cancelHideProgress",
                Click: "click",
                MouseOver: "mouseover",
                MouseOut: "mouseout",
                MouseEnter: "mouseenter",
                MouseLeave: "mouseleave",
                TouchStart: "touchstart",
                TouchMove: "touchmove",
                TouchEnd: "touchend",
                HideBar: "hideBar",
                ShowBar: "showBar",
                ReadyState: "readyState",
                SourceLoaded: "sourceloaded",
                QualityChange: "qualitychange",
                Play_Btn_Hide: "play_btn_hide",
                Cover_Hide: "cover_hide",
                Cover_Show: "cover_show",
                SeekStart: "seekStart",
                EndStart: "endStart",
                UpdateProgressBar: "updateProgressBar",
                LifeCycleChanged: "lifeCycleChanged",
                Dispose: "dispose",
                Created: "created",
                Snapshot_Hide: "snapshot_hide",
                AutoStreamShow: "auto_stream_show",
                AutoStreamHide: "auto_stream_hide",
                VolumnChanged: "volumnchanged",
                LiveShiftQueryCompleted: "liveShiftQueryCompleted",
                StreamSelectorHide: "streamSelectorHide",
                SpeedSelectorHide: "speedSelectorHide",
                SettingShow: "settingShow",
                SettingHide: "settingHide",
                SelectorShow: "selectorShow",
                SelectorHide: "selectorHide",
                SettingListShow: "settingListShow",
                SettingListHide: "settingListHide",
                ThumbnailHide: "thumbnailHide",
                ThumbnailShow: "thumbnailShow",
                ThumbnailLoaded: "thumbnailLoaded",
                TooltipShow: "tooltipShow",
                TooltipHide: "tooltipHide",
                SelectorUpdateList: "selectorUpdateList",
                SelectorValueChange: "selectorValueChange",
                VolumeVisibilityChange: "volumeVisibilityChange",
                ChangeURL: "changeURL",
                UpdateToSettingList: "updateToSettingList",
                CCChanged: "CCChanged",
                CCStateChanged: "CCStateChanged",
                PlayClick: "click",
                ProgressMarkerLoaded: "progressMarkerLoaded",
                MarkerTextShow: "markerTextShow",
                MarkerTextHide: "markerTextHide",
                PREPARE: "prepare",
                ProgressMarkerChanged: "progressMarkerChanged"
            }
        }
    }, {}],
    44: [function (e, t, i) {
        e("../../event/eventtype");
        var r = e("../../../../lib/dom"), o = e("../../../../lib/ua");
        t.exports.handle = function () {
            o.IS_IOS || r.removeClass(this.el(), "prism-fullscreen")
        }
    }, {"../../../../lib/dom": 18, "../../../../lib/ua": 31, "../../event/eventtype": 43}],
    45: [function (e, t, i) {
        var r = e("../../event/eventtype");
        t.exports.handle = function (e) {
            var t = this;
            this._enteredProgressMarker && t.one(r.Player.CanPlay, function () {
                t.pause()
            }), t._seeking = !1, t.trigger(r.Player.CompleteSeek, e.paramData.toTime)
        }
    }, {"../../event/eventtype": 43}],
    46: [function (e, t, i) {
        var r = e("../../event/eventtype"),
            o = (e("../../../../lib/constants"), e("../../../../lang/index"), e("../../../../monitor/util"));
        t.exports.handle = function (e) {
            var t = this, i = e.paramData;
            t.trigger(r.Private.H5_Loading_Hide), t.trigger(r.Private.Cover_Hide), t.trigger(r.Private.Play_Btn_Hide), t.trigger(r.Private.SettingListHide), t.trigger(r.Private.SelectorHide), t.trigger(r.Private.VolumeVisibilityChange, ""), i = i || {}, t._monitor && (i.uuid = o.getUuid(), i.requestId = t._serverRequestId, i.cdnIp = t._monitor._userNetInfo.cdnIp, i.localIp = t._monitor._userNetInfo.localIp), t._isError = !0, t.trigger(r.Private.Error_Show, i), t.trigger(r.Private.LifeCycleChanged, {
                type: r.Player.Error,
                data: i
            })
        }
    }, {
        "../../../../lang/index": 11,
        "../../../../lib/constants": 15,
        "../../../../monitor/util": 39,
        "../../event/eventtype": 43
    }],
    47: [function (e, t, i) {
        var r = e("../../event/eventtype"), o = e("../../../../lib/event"), n = e("./lifecyclecommon"), a = {
                endStart: e("./endstart"),
                seekStart: e("./seekstart"),
                requestFullScreen: e("./requestfullscreen"),
                cancelFullScreen: e("./cancelfullscreen"),
                error: e("./error")
            },
            s = [r.Private.EndStart, r.Private.SeekStart, r.Player.RequestFullScreen, r.Player.CancelFullScreen, r.Player.Error, r.Player.Ready, r.Private.Dispose, r.Private.Created],
            l = function (t, i, r) {
                var e = t.el();
                o.on(e, i, function (e) {
                    (r && r.handle ? r.handle : n.handle).call(t, e, i)
                })
            };
        t.exports.bind = function (e) {
            e.el();
            for (var t = 0; t < s.length; t++) {
                var i = s[t];
                "undefined" != a[i] && l(e, i, a[i])
            }
        }
    }, {
        "../../../../lib/event": 19,
        "../../event/eventtype": 43,
        "./cancelfullscreen": 44,
        "./endstart": 45,
        "./error": 46,
        "./lifecyclecommon": 48,
        "./requestfullscreen": 49,
        "./seekstart": 50
    }],
    48: [function (e, t, i) {
        var r = e("../../event/eventtype");
        t.exports.handle = function (e, t) {
            this.trigger(r.Private.LifeCycleChanged, {type: t, data: e})
        }
    }, {"../../event/eventtype": 43}],
    49: [function (e, t, i) {
        e("../../event/eventtype");
        var r = e("../../../../lib/dom"), o = e("../../../../lib/ua");
        t.exports.handle = function () {
            o.IS_IOS || r.addClass(this.el(), "prism-fullscreen")
        }
    }, {"../../../../lib/dom": 18, "../../../../lib/ua": 31, "../../event/eventtype": 43}],
    50: [function (e, t, i) {
        var r = e("../../event/eventtype");
        t.exports.handle = function (e) {
            this._seeking = !0, this.trigger(r.Player.StartSeek, e.paramData.fromTime)
        }
    }, {"../../event/eventtype": 43}],
    51: [function (e, t, i) {
        var r = e("../../event/eventtype");
        t.exports.handle = function (e) {
            var t = this;
            t._retrySwitchUrlCount = 0, t._liveRetryCount = 0, t._clearLiveErrorHandle();
            var i = (new Date).getTime() - t.readyTime;
            t._options.autoplay || t._options._autoplay || !t.paused() || (t.trigger(r.Private.H5_Loading_Hide), t.trigger(r.Private.Play_Btn_Show)), t.trigger(r.Player.CanPlay, {loadtime: i})
        }
    }, {"../../event/eventtype": 43}],
    52: [function (e, t, i) {
        var r = e("../../event/eventtype"), o = e("../../../../lib/dom"), n = e("../../../../lib/ua");
        t.exports.handle = function (e) {
            var t = this.tag;
            "none" === t.style.display && n.IS_IOS && setTimeout(function () {
                o.css(t, "display", "block")
            }, 100), this.trigger(r.Video.CanPlayThrough)
        }
    }, {"../../../../lib/dom": 18, "../../../../lib/ua": 31, "../../event/eventtype": 43}],
    53: [function (e, t, i) {
        t.exports.handle = function (e, t) {
            var i = "";
            e && e.paramData && (i = e.paramData), this.trigger(t, i)
        }
    }, {}],
    54: [function (e, t, i) {
        var r = e("../../event/eventtype");
        e("../../../../lang/index");
        t.exports.handle = function (e) {
            var t = this;
            t.waiting = !1, t._ended = !0, t._monitor && t._monitor._onPlayerInit(), t._options.rePlay ? (t.seek(0), t.tag.play()) : t._options.isLive && t.trigger(r.Private.H5_Loading_Hide), t.trigger(r.Private.Play_Btn_Show), t.trigger(r.Player.Ended)
        }
    }, {"../../../../lang/index": 11, "../../event/eventtype": 43}],
    55: [function (e, t, i) {
        var c = e("../../event/eventtype"),
            d = (e("../../../../lib/ua"), e("../../../../lib/playerutil"), e("../../../../lib/constants")),
            p = e("../../../../lang/index");
        t.exports.handle = function (e) {
            var t = this;
            if (t.waiting = !1, t._clearTimeout(), t.checkOnline()) {
                var i, r = "", o = e.target || e.srcElement, n = o.error.message;
                r = "";
                if (o.error.code && (i = o.error.code, r = d.VideoErrorCode[o.error.code], n = i + " || " + n), t._options.isLive) t._options.liveRetry > t._liveRetryCount ? t._reloadAndPlayForM3u8() : (t._liveRetryCount = 0, t.trigger(c.Player.LiveStreamStop), t._liveErrorHandle = setTimeout(function () {
                    var e = {
                        mediaId: "ISLIVE",
                        error_code: r,
                        error_msg: p.get("Error_Play_Text") + "\uff0c" + p.get("Error_Retry_Text")
                    };
                    t.logError(e), t.trigger("error", e)
                })); else if (t._reloadForVod()) ; else {
                    var a = p.get("Error_Play_Text"), s = !1;
                    if (i < 4) {
                        if (3 == i && t._firstDecodeError) {
                            var l = t.getCurrentTime() + 1;
                            return t._loadByUrlInner(t._options.source, l, !0), void(t._firstDecodeError = !1)
                        }
                        a = d.VideoErrorCodeText[i]
                    } else t._eventState == d.SUSPEND ? (a = p.get("Error_Load_Abort_Text"), r = d.ErrorCode.RequestDataError) : t._eventState == d.LOAD_START ? (a = p.get("Error_Network_Text"), 0 < t._options.source.indexOf("auth_key") && (a = a + "\uff0c" + p.get("Error_AuthKey_Text")), r = d.ErrorCode.StartLoadData) : t._eventState == d.LOADED_METADATA && (a = p.get("Error_Play_Text"), r = d.ErrorCode.PlayingError);
                    a = a + "\uff0c" + p.get("Error_Retry_Text"), 1 < t._urls.length && t._retrySwitchUrlCount < 3 && -1 == t._options.source.indexOf(".mpd") && (t.switchUrl(), s = !0);
                    var u = {mediaId: t._options.vid ? t._options.vid : "", error_code: r, error_msg: n};
                    s || (t.logError(u), u.display_msg = a, t.trigger(c.Player.Error, u))
                }
            }
        }
    }, {
        "../../../../lang/index": 11,
        "../../../../lib/constants": 15,
        "../../../../lib/playerutil": 29,
        "../../../../lib/ua": 31,
        "../../event/eventtype": 43
    }],
    56: [function (e, t, i) {
        var o = e("../../../../lib/event"), n = e("../../event/eventtype"), r = {
            canplay: e("./canplay"),
            canplaythrough: e("./canplaythrough"),
            common: e("./common"),
            ended: e("./ended"),
            error: e("./error"),
            pause: e("./pause"),
            play: e("./play"),
            playing: e("./playing"),
            waiting: e("./waiting"),
            timeupdate: e("./timeupdate"),
            manualended: e("./ended")
        }, a = function (t, i, r) {
            var e = t.tag;
            o.on(e, i, function (e) {
                r.handle.call(t, e, i), i != n.Video.Error && (i == n.Video.ManualEnded && (i = n.Video.Ended), t.trigger(n.Private.LifeCycleChanged, {
                    type: i,
                    data: e
                }))
            })
        };
        t.exports.bind = function (e) {
            e.tag;
            for (var t in n.Video) {
                var i = n.Video[t];
                a(e, i, void 0 !== r[i] ? r[i] : r.common)
            }
        }
    }, {
        "../../../../lib/event": 19,
        "../../event/eventtype": 43,
        "./canplay": 51,
        "./canplaythrough": 52,
        "./common": 53,
        "./ended": 54,
        "./error": 55,
        "./pause": 57,
        "./play": 58,
        "./playing": 59,
        "./timeupdate": 60,
        "./waiting": 61
    }],
    57: [function (e, t, i) {
        var r = e("../../event/eventtype");
        t.exports.handle = function (e) {
            var t = this;
            t._clearTimeout(), t.trigger(r.Private.AutoStreamHide), t.trigger(r.Player.Pause), t._isManualPause && (t.trigger(r.Private.Play_Btn_Show), t.trigger(r.Private.H5_Loading_Hide)), t.waiting = !1
        }
    }, {"../../event/eventtype": 43}],
    58: [function (e, t, i) {
        var r = e("../../event/eventtype");
        t.exports.handle = function (e) {
            var t = this;
            t.trigger(r.Private.Error_Hide), t.trigger(r.Private.Cover_Hide), t.trigger(r.Private.AutoStreamHide), t.waiting = !1, t.trigger(r.Player.Play)
        }
    }, {"../../event/eventtype": 43}],
    59: [function (e, t, i) {
        var o = e("../../event/eventtype");
        t.exports.handle = function (e) {
            var t = this;
            t.trigger(o.Private.H5_Loading_Hide), t.trigger(o.Private.Cover_Hide), t.trigger(o.Private.Info_Hide), t.waiting = !1, t._ended = !1, t._liveRetryCount = 0, t._vodRetryCount = 0, t._firstDecodeError = !0;
            var i = t.getCurrentTime();
            if (t._waitingReloadTime != i && (t._waitingTimeoutCount = 0), t._checkTimeoutHandle && (clearTimeout(t._checkTimeoutHandle), t._checkTimeoutHandle = null), t._waitingLoadedHandle && (clearTimeout(t._waitingLoadedHandle), t._waitingLoadedHandle = null), t._waitingDelayLoadingShowHandle && (clearTimeout(t._waitingDelayLoadingShowHandle), t._waitingDelayLoadingShowHandle = null), t._waitingTimeoutHandle && (clearTimeout(t._waitingTimeoutHandle), t._waitingTimeoutHandle = null, t._ccService && t._options.isLive)) {
                var r = t._ccService.getCurrentSubtitle();
                t._setDefaultCC = !0, r && t._ccService["switch"](r)
            }
            t.trigger(o.Private.AutoStreamHide), t.trigger(o.Player.Playing), t.trigger(o.Private.Play_Btn_Hide), t.trigger(o.Private.Error_Hide)
        }
    }, {"../../event/eventtype": 43}],
    60: [function (e, t, i) {
        var n = e("../../event/eventtype"), a = e("../../../../lib/ua"), s = e("../../../../lib/event"),
            l = e("../../plugin/status");
        t.exports.handle = function (e) {
            var i = this;
            i.trigger(n.Player.TimeUpdate, e.timeStamp);
            var t = i.getCurrentTime();
            if (i.waiting && !i._TimeUpdateStamp && (i._TimeUpdateStamp = t), 0 != i.waiting && i._TimeUpdateStamp == t || (i.trigger(n.Private.H5_Loading_Hide), i.trigger(n.Private.AutoStreamHide), i._checkTimeoutHandle && clearTimeout(i._checkTimeoutHandle), i._waitingTimeoutHandle && clearTimeout(i._waitingTimeoutHandle), i._waitingLoadedHandle && clearTimeout(i._waitingLoadedHandle), i.waiting = !1), i._TimeUpdateStamp = t, !i._options.isLive) {
                var r = i.getDuration(), o = !1;
                r < t && !i.paused() ? o = !0 : r - t < .2 && 0 <= a.browser.version.indexOf("49.") && !i.paused() ? o = !0 : i.exceedPreviewTime(t) && (o = !0), o && !i._ended && (i.pause(), s.trigger(i.tag, n.Video.ManualEnded))
            }
            i._playingSlientPause && (clearTimeout(i._playingSlientPause), i._playingSlientPause = null), i._playingSlientPause = setTimeout(function () {
                if (i._status == l.playing) {
                    var e = i.getCurrentTime(), t = i._options.isLive ? 0 : e;
                    i._loadByUrlInner(i._options.source, t, !0)
                }
            }, 2e3)
        }
    }, {"../../../../lib/event": 19, "../../../../lib/ua": 31, "../../event/eventtype": 43, "../../plugin/status": 66}],
    61: [function (e, t, i) {
        var n = e("../../event/eventtype"), a = e("../../../../lib/constants"), s = e("../../../../lib/event"),
            l = e("../../../../lang/index");
        t.exports.handle = function (e) {
            var i = this;
            if (!i._options.isLive) {
                var t = this.getCurrentTime(), r = this.getDuration();
                if (r - t < .5 || r < t) return i.pause(), i._ended = !0, void s.trigger(this.tag, n.Video.ManualEnded)
            }
            i.waiting = !0;
            var o = function () {
                i._checkTimeoutHandle && (clearTimeout(i._checkTimeoutHandle), i._checkTimeoutHandle = null), i._waitingTimeoutHandle && (clearTimeout(i._waitingTimeoutHandle), i._waitingTimeoutHandle = null), i._waitingLoadedHandle && (clearTimeout(i._waitingLoadedHandle), i._waitingLoadedHandle = null), i._waitingDelayLoadingShowHandle && (clearTimeout(i._waitingDelayLoadingShowHandle), i._waitingDelayLoadingShowHandle = null)
            };
            o(), i._waitingDelayLoadingShowHandle = setTimeout(function () {
                i.trigger(n.Private.H5_Loading_Show)
            }, 1e3 * i._options.delayLoadingShow), i._TimeUpdateStamp = null, i._checkTimeoutHandle = setTimeout(function () {
                i.trigger(n.Private.AutoStreamShow)
            }, 1e3 * i._options.loadDataTimeout), i.trigger(n.Player.Waiting), i._waitingTimeoutHandle = setTimeout(function () {
                if (i.tag && i._options) {
                    i.pause();
                    var e = {
                        mediaId: i._options.vid ? i._options.vid : "",
                        error_code: a.ErrorCode.LoadingTimeout,
                        error_msg: l.get("Error_Waiting_Timeout_Text")
                    };
                    i.logError(e), i.trigger("error", e)
                }
            }, 1e3 * i._options.waitingTimeout), i._waitingLoadedHandle = setTimeout(function () {
                var e = i.getCurrentTime();
                if (0 == i._waitingTimeoutCount && e != i._waitingReloadTime) {
                    i._waitingTimeoutCount = 1, i._waitingReloadTime = e;
                    var t = i._options.isLive ? 0 : e;
                    i._loadByUrlInner(i._options.source, t, !0)
                }
            }, i._options.waitingTimeout / 2 * 1e3), i.on("error", function () {
                o()
            })
        }
    }, {
        "../../../../lang/index": 11,
        "../../../../lib/constants": 15,
        "../../../../lib/event": 19,
        "../../event/eventtype": 43
    }],
    62: [function (e, t, i) {
        var n = e("../../ui/component"), a = e("../../lib/object"), o = e("../../lib/dom"), s = e("../../lib/event"),
            l = (e("../../lib/io"), e("../../ui/exports")), u = e("../../monitor/monitor"), r = e("../../lib/ua"),
            c = e("../../lib/constants"), d = e("../../lib/util"), p = (e("../../config"), e("../../lib/playerutil")),
            h = e("./x5play"), f = e("../../lib/cookie"), _ = e("../../lang/index"),
            g = e("../../feature/autoPlayDelay"), y = e("./event/eventmanager"), v = e("../../ui/component/cover"),
            m = e("../../ui/component/play-animation"), S = e("../../commonui/autostreamselector"),
            T = e("./event/eventtype"), b = e("./plugin/lifecyclemanager"), x = e("../service/export"),
            E = e("../../ui/component/progressmarker"), P = n.extend({
                init: function (e, t) {
                    if (this.tag = e, this.loaded = !1, this.played = !1, this.waiting = !1, this._urls = [], this._currentPlayIndex = 0, this._retrySwitchUrlCount = 0, this._isError = !1, this._isHls = !1, this._liveRetryCount = 0, this._vodRetryCount = 0, this._seeking = !1, this._serverRequestId = 0, this._waitingTimeoutCount = 0, this._waitingReloadTime = 0, this._created = !1, this._firstDecodeError = !0, this._enteredProgressMarker = !1, this._liveShiftSeekStartTime = 0, this._duration = 0, this.__disposed = !1, void 0 === t.skinLayout && (t.skinLayout = p.defaultH5Layout), n.call(this, this, t), this.addClass("prism-player"), t.plugins && a.each(t.plugins, function (e, t) {
                        this[e](t)
                    }, this), this._createService(), this.UI = {}, t.useNativeControls ? this.tag.setAttribute("controls", "controls") : this.UI = l, this.initChildren(), y.onAll(this), this._lifeCycleManager = new b(this), this._options.trackLog && (this._monitor = new u(this, {
                        video_id: 0,
                        album_id: 0,
                        from: this._options.from,
                        source: this._options.source,
                        logBatched: this._options.logBatched
                    }, this._options.trackLog)), this._overrideNativePlay(), !this._liveshiftService || this._liveshiftService.validate()) {
                        if (this._options.extraInfo) {
                            var i = this._options.extraInfo;
                            i.liveRetry && (this._options.liveRetry = i.liveRetry)
                        }
                        if (this.on(T.Private.ReadyState, function () {
                            this.trigger(T.Player.Ready)
                        }), this._thumbnailService && this._options.thumbnailUrl && this._thumbnailService.get(this._options.thumbnailUrl), 0 < this._options.progressMarkers.length && this.trigger(T.Private.ProgressMarkerLoaded, this._options.progressMarkers), this._options.source && this._options._native && this._executeReadyCallback(), this._options.autoplay || this._options.preload ? this.trigger(T.Private.H5_Loading_Show) : this.trigger(T.Private.Play_Btn_Show), this._extraMultiSources(), this._options.source) if (this.trigger(T.Private.PREPARE, "custom"), this._options.autoPlayDelay) {
                            this._autoPlayDelay = new g(this);
                            var r = this;
                            this._autoPlayDelay.handle(function () {
                                r.initPlay()
                            })
                        } else this.initPlay()
                    } else {
                        var o = {
                            mediaId: this._options.vid ? this._options.vid : "",
                            error_code: c.ErrorCode.InvalidParameter,
                            error_msg: _.get("ShiftLiveTime_Error")
                        };
                        this.trigger(T.Player.Error, o)
                    }
                }
            });
        P.prototype.initPlay = function (e) {
            this._initPlayBehavior(e, this._options.source)
        }, P.prototype.initChildren = function () {
            var e = this.options(), t = e.skinLayout;
            if (!1 !== t && !a.isArray(t)) throw new Error("PrismPlayer Error: skinLayout should be false or type of array!");
            !1 !== t && 0 !== t.length && (this.options({children: t}), n.prototype.initChildren.call(this)), this.UI.cover = v, this.addChild("cover", e), this.UI.playanimation = m, this.addChild("playanimation", e), this.UI.autoStreamSelector = S, this.addChild("autoStreamSelector", e), this.UI.progressMarker = E, this.addChild("progressMarker", e), this.trigger(T.Private.UiH5Ready)
        }, P.prototype.createEl = function () {
            var e = !1;
            "VIDEO" !== this.tag.tagName ? (this._el = this.tag, this.tag = n.prototype.createEl.call(this, "video"), this._options.playsinline && (this.tag.setAttribute("webkit-playsinline", ""), this.tag.setAttribute("playsinline", ""), this.tag.setAttribute("x-webkit-airplay", ""), this.tag.setAttribute("x5-playsinline", ""))) : (e = !0, this._el = this.tag.parentNode);
            var t = this._el, i = this.tag;
            this._options.enableSystemMenu || (i.addEventListener ? i.addEventListener("contextmenu", function (e) {
                e.preventDefault()
            }, !1) : i.attachEvent("oncontextmenu", function () {
                window.event.returnValue = !1
            })), i.player = this;
            var r = o.getElementAttributes(i);
            return a.each(r, function (e) {
                t.setAttribute(e, r[e])
            }), this.setVideoAttrs(), e || (i.parentNode && i.parentNode.insertBefore(t, i), o.insertFirst(i, t)), t
        }, P.prototype.setVideoAttrs = function () {
            var e = this._options.preload, t = this._options.autoplay;
            if (this.tag.style.width = this._options.videoWidth || "100%", this.tag.style.height = this._options.videoHeight || "100%", e && this.tag.setAttribute("preload", "preload"), t && !this._isEnabledAILabel() && this.tag.setAttribute("autoplay", "autoplay"), r.IS_IOS && this.tag.setAttribute("poster", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAAMZJREFUeAHt0DEBAAAAwqD1T20LL4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAc2CcpAABaODCqQAAAABJRU5ErkJggg=="), this._options.extraInfo) for (var i in this._options.extraInfo) this.tag.setAttribute(i, this._options.extraInfo[i]);
            h.adaptX5Play(this)
        }, P.prototype.checkOnline = function () {
            if (!this._options || this._options.debug) return !0;
            if (0 != navigator.onLine) return !0;
            var e = {
                mediaId: this._options.vid ? this._options.vid : "",
                error_code: c.ErrorCode.NetworkUnavaiable,
                error_msg: _.get("Error_Offline_Text")
            };
            return e.display_msg = _.get("Error_Offline_Text"), this.trigger(T.Player.Error, e), !1
        }, P.prototype.id = function () {
            return this.el().id
        }, P.prototype.renderUI = function () {
        }, P.prototype.switchUrl = function () {
            if (0 != this._urls.length) {
                this._currentPlayIndex = this._currentPlayIndex + 1, this._urls.length <= this._currentPlayIndex && (this._currentPlayIndex = 0, this._retrySwitchUrlCount++);
                var e = this._urls[this._currentPlayIndex];
                f.set(c.SelectedStreamLevel, e.definition, 365), this.trigger(T.Private.QualityChange, _.get("Quality_Change_Fail_Switch_Text"));
                var t = this.getCurrentTime();
                this._vodRetryCount = 0, this._originalSource = "", this._loadByUrlInner(e.Url, t, !0)
            }
        }, P.prototype.setControls = function () {
            var e = this.options();
            if (e.useNativeControls) this.tag.setAttribute("controls", "controls"); else if ("object" == typeof e.controls) {
                var t = this._initControlBar(e.controls);
                this.addChild(t)
            }
        }, P.prototype._initControlBar = function (e) {
            return new ControlBar(this, e)
        }, P.prototype.getMetaData = function () {
            var t = this, i = this.tag;
            t._readyStateTimer && clearInterval(t._readyStateTimer), t._readyStateTimer = window.setInterval(function (e) {
                t.tag ? i && 0 < i.readyState && (t._duration = i.duration < 1 ? 0 : i.duration, t.trigger(T.Private.ReadyState), clearInterval(t._readyStateTimer)) : clearInterval(t._readyStateTimer)
            }, 100)
        }, P.prototype.getReadyTime = function () {
            return this.readyTime
        }, P.prototype.readyState = function () {
            return this.tag.readyState
        }, P.prototype.getError = function () {
            return this.tag.error
        }, P.prototype.getRecentOccuredEvent = function () {
            return this._eventState
        }, P.prototype.getSourceUrl = function () {
            return this._options ? this._options.source : ""
        }, P.prototype.getMonitorInfo = function () {
            return this._monitor ? this._monitor.opt : {}
        }, P.prototype.getCurrentQuality = function () {
            if (0 < this._urls.length) {
                var e = this._urls[this._currentPlayIndex];
                return {width: e.width, url: e.Url, definition: e.definition}
            }
            return ""
        }, P.prototype.setSpeed = function (e) {
            this.tag && (this._originalPlaybackRate = e, this.tag.playbackRate = e)
        }, P.prototype.play = function (e) {
            return this.tag && (this.tag.ended || this._ended ? this.replay() : ((this._options.preload || this.loaded) && this.tag.src || this._initLoad(this._options.source), this.trigger(T.Private.Cover_Hide), this.tag.play())), this._isManualPlay = e || !1, this
        }, P.prototype.replay = function () {
            return this._monitor && this._monitor.replay(), this.seek(0), this.tag.play(), this
        }, P.prototype.pause = function (e) {
            return this.tag && this.tag.pause(), this._isManualPause = e || !1, this
        }, P.prototype.stop = function () {
            return this.tag.setAttribute("src", null), this
        }, P.prototype.paused = function () {
            if (this.tag) return !1 !== this.tag.paused
        }, P.prototype.getDuration = function () {
            var e = 0;
            return this.tag && (e = this.isPreview() ? this._vodDuration || this.tag.duration : this._duration && this._duration != 1 / 0 ? this._duration : this.tag.duration), e
        }, P.prototype.getDisplayDuration = function () {
            var e = 0;
            return this.tag && (e = this._vodDuration || this.getDuration()), e
        }, P.prototype.getCurrentTime = function () {
            return this.tag ? this.tag.currentTime : 0
        }, P.prototype.seek = function (e) {
            e === this.tag.duration && e--;
            var t = this._originalPlaybackRate || this.tag.playbackRate;
            try {
                var i = this;
                this.tag.currentTime = e, setTimeout(function () {
                    i.tag && (i.tag.playbackRate = t)
                })
            } catch (e) {
                console.log(e)
            }
            return this
        }, P.prototype.firstNewUrlloadByUrl = function (e, t) {
            this._clearTimeout(), this._options.vid = 0, this._options.source = e, this._monitor && this._monitor.updateVideoInfo({
                video_id: 0,
                album_id: 0,
                source: e,
                from: this._options.from
            }), this.trigger(T.Private.ChangeURL), this.initPlay(), this._options.autoplay && this.trigger(T.Private.Cover_Hide), this._options.autoplay ? this.trigger(T.Player.Play) : this.trigger(T.Player.Pause), t || (t = 0), !t && 0 != t || isNaN(t) || this.seek(t)
        }, P.prototype._loadByUrlInner = function (e, t, i) {
            this.loadByUrl(e, t, i, !0)
        }, P.prototype.loadByUrl = function (e, t, i, r) {
            this._monitor && !r && this._monitor.reset(), this._isError = !1, this._duration = 0, this._clearTimeout(), this.trigger(T.Private.Error_Hide), this._options.vid = 0, this._options.source = e, this._monitor && this._monitor.updateVideoInfo({
                video_id: 0,
                album_id: 0,
                source: e,
                from: this._options.from
            }), r || (this.trigger(T.Private.ChangeURL), this._vodRetryCount = 0), this._options._autoplay = i, this.initPlay(i), (this._options.autoplay || i) && this.trigger(T.Private.Cover_Hide), this._options.autoplay || i ? this.trigger(T.Player.Play) : this.trigger(T.Player.Pause);
            var o = this;
            this._options.isLive || s.one(this.tag, T.Video.CanPlay, function (e) {
                !t && 0 != t || isNaN(t) || o.seek(t)
            })
        }, P.prototype.dispose = function () {
            this.__disposed = !0, this.trigger(T.Private.Dispose), this.tag.pause(), y.offAll(this), this._monitor && (this._monitor.removeEvent(), this._monitor = null), this._autoPlayDelay && this._autoPlayDelay.dispose(), this._checkTimeoutHandle && (clearTimeout(this._checkTimeoutHandle), this._checkTimeoutHandle = null), this._waitingTimeoutHandle && (clearTimeout(this._waitingTimeoutHandle), this._waitingTimeoutHandle = null), this._playingSlientPause && (clearTimeout(this._playingSlientPause), this._playingSlientPause = null), this._waitingLoadedHandle && (clearTimeout(this._waitingLoadedHandle), this._waitingLoadedHandle = null), this._readyStateTimer && (clearInterval(this._readyStateTimer), this._readyStateTimer = null), this._vodRetryCountHandle && (clearTimeout(this._vodRetryCountHandle), this._vodRetryCountHandle = null), this._waitingDelayLoadingShowHandle && (clearTimeout(this._waitingDelayLoadingShowHandle), this._waitingDelayLoadingShowHandle = null), this._disposeService(), this._clearLiveErrorHandle(), this._el.innerHTML = "", this.destroy(), this.tag = null, this._options.recreatePlayer = null, this._options = null
        }, P.prototype.mute = function () {
            this._muteInner(), this._originalVolumn = this.tag.volume;
            var e = _.get("Volume_Mute");
            return this._player.trigger(T.Private.Info_Show, {
                text: e,
                duration: 1e3,
                align: "lb"
            }), this._setInnerVolume(0), this
        }, P.prototype._muteInner = function () {
            this.tag.muted = !0, this.trigger(T.Private.VolumnChanged, -1)
        }, P.prototype.unMute = function () {
            this._unMuteInner();
            var e = _.get("Volume_UnMute");
            return this._player.trigger(T.Private.Info_Show, {
                text: e,
                duration: 1e3,
                align: "lb"
            }), this._setInnerVolume(this._originalVolumn || .5), this
        }, P.prototype._unMuteInner = function () {
            this.tag.muted = !1, this.trigger(T.Private.VolumnChanged, -2)
        }, P.prototype.muted = function () {
            return this.tag.muted
        }, P.prototype.getVolume = function () {
            return this.tag.volume
        }, P.prototype.getOptions = function () {
            return this._options
        }, P.prototype.setVolume = function (e, t) {
            0 != e ? this._unMuteInner() : 0 == e && this._muteInner(), this._setInnerVolume(e);
            var i = _.get("Curent_Volume") + "<span>" + (100 * e).toFixed() + "%</span>";
            this._player.trigger(T.Private.Info_Show, {text: i, duration: 1e3, align: "lb"})
        }, P.prototype._setInnerVolume = function (e) {
            this.tag.volume = e, this.trigger(T.Private.VolumnChanged, e)
        }, P.prototype.hideProgress = function () {
            this.trigger(T.Private.HideProgress)
        }, P.prototype.cancelHideProgress = function () {
            this.trigger(T.Private.CancelHideProgress)
        }, P.prototype.setPlayerSize = function (e, t) {
            this._el.style.width = e, this._el.style.height = t
        }, P.prototype.getBuffered = function () {
            return this.tag.buffered
        }, P.prototype.setRotate = function (e) {
            this.tag && (this._rotate = e, this._setTransform(), this.log("ROTATE", {rotation: e}))
        }, P.prototype.getRotate = function (e) {
            return void 0 === this._rotate ? 0 : this._rotate
        }, P.prototype.setImage = function (e) {
            this.tag && (this._image = e, this._setTransform(), this.log("IMAGE", {
                mirror: "horizon" == e ? 2 : 1,
                text: e
            }))
        }, P.prototype.getImage = function () {
            return this._image
        }, P.prototype.cancelImage = function () {
            this.tag && (this._image = "", this._setTransform(), this.log("IMAGE", {mirror: 0}))
        }, P.prototype.setCover = function (e) {
            var t = document.querySelector("#" + this.id() + " .prism-cover");
            t && e && (t.style.backgroundImage = "url(" + e + ")", this._options.cover = e, this.trigger(T.Private.Cover_Show))
        }, P.prototype._setTransform = function () {
            this._transformProp || (this._transformProp = o.getTransformName(this.tag));
            var e = " translate(-50%, -50%)";
            this._rotate && (e += " rotate(" + this._rotate + "deg)"), this._image && ("vertical" == this._image ? e += " scaleY(-1)" : "horizon" == this._image && (e += " scaleX(-1)")), this.tag.style[this._transformProp] = e
        }, P.prototype._startPlay = function () {
            this.tag.paused && this.tag.play()
        }, P.prototype._initPlayBehavior = function (e, t) {
            if (this._checkSupportVideoType()) return !1;
            if (p.validateSource(t)) return void 0 === e && (e = !1), this._created || (this._created = !0, this.trigger(T.Private.Created)), this.loaded || this.trigger(T.Player.Init), this._options.autoplay || this._options._autoplay || this._options.preload || e ? (this._options._preload = !0, this._initLoad(t), (this._options.autoplay || this._options._autoplay) && this._startPlay()) : this.trigger(T.Private.Play_Btn_Show), !0;
            var i = {
                mediaId: this._options.vid ? this._options.vid : "",
                error_code: c.ErrorCode.InvalidSourceURL,
                error_msg: "InvalidSourceURL"
            };
            return i.display_msg = _.get("Error_Invalidate_Source"), this.trigger(T.Player.Error, i), !1
        }, P.prototype._isPreload = function () {
            return this._options.autoplay || this._options.preload || this._options._preload
        }, P.prototype._initLoad = function (e) {
            this.getMetaData(), e && (this._isPreload() && !r.IS_MOBILE ? this.trigger(T.Private.H5_Loading_Show) : (this.trigger(T.Private.H5_Loading_Hide), this.trigger(T.Private.Play_Btn_Show)), this.tag.setAttribute("src", e), this.loaded = !0)
        }, P.prototype._clearLiveErrorHandle = function () {
            this._liveErrorHandle && (clearTimeout(this._liveErrorHandle), this._liveErrorHandle = null)
        }, P.prototype._reloadAndPlayForM3u8 = function () {
            0 == this._liveRetryCount && this.trigger(T.Player.OnM3u8Retry);
            var e = this._options, t = e.liveRetryInterval + e.liveRetryStep * this._liveRetryCount;
            d.sleep(1e3 * t), this._liveRetryCount++, this.tag.load(this._options.source), this.tag.play()
        }, P.prototype._checkSupportVideoType = function () {
            if (!this.tag.canPlayType || !this._options.source || !r.IS_MOBILE) return "";
            var e = this._options.source, t = "";
            if (0 < e.indexOf("m3u8") ? "" != this.tag.canPlayType("application/x-mpegURL") || p.isSupportHls() || (t = _.get("Error_Not_Support_M3U8_Text")) : 0 < e.indexOf("mp4") ? "" == this.tag.canPlayType("video/mp4") && (t = _.get("Error_Not_Support_MP4_Text")) : (p.isRTMP(e) || p.isFlv(e)) && r.IS_MOBILE && (t = _.get("Error_Not_Support_Format_On_Mobile")), t) {
                var i = {
                    mediaId: this._options.vid ? this._options.vid : "",
                    error_code: c.ErrorCode.FormatNotSupport,
                    error_msg: t
                };
                this.logError(i), i.display_msg = t, this.trigger(T.Player.Error, i)
            }
            return t
        }, P.prototype.getComponent = function (e) {
            return this._lifeCycleManager.getComponent(e)
        }, P.prototype.logError = function (e, t) {
            e || (e = {}), e.vt = this.getCurrentTime(), this._serverRequestId = this.log(t ? "ERRORRETRY" : "ERROR", e)
        }, P.prototype.log = function (e, t) {
            var i = 0, r = 0;
            if (this._monitor) return this._options && (i = this._options.vid || "0", r = this._options.from || "0"), this._monitor.updateVideoInfo({
                video_id: i,
                album_id: 0,
                source: this._options.source,
                from: r
            }), this._monitor._log(e, t)
        }, P.prototype.setSanpshotProperties = function (e, t, i) {
            if (this._snapshotMatric || (this._snapshotMatric = {}), this._snapshotMatric.width = e, this._snapshotMatric.height = t, 1 < i) throw new Error("rate doesn't allow more than 1");
            this._snapshotMatric.rate = i
        }, P.prototype.getStatus = function () {
            return this._status ? this._status : "init"
        }, P.prototype.enterProgressMarker = function () {
            this._enteredProgressMarker = !0
        }, P.prototype.isInProgressMarker = function () {
            return this._enteredProgressMarker
        }, P.prototype.exitProgressMarker = function () {
            this._enteredProgressMarker = !1
        }, P.prototype.setProgressMarkers = function (e) {
            e || (e = []), this.trigger(T.Private.ProgressMarkerChanged, e)
        }, P.prototype.getProgressMarkers = function () {
            return this._progressMarkerService ? this._progressMarkerService.progressMarkers : []
        }, P.prototype.setPreviewTime = function (e) {
            this._options.playConfig || (this._options.playConfig = {}), this._options.playConfig.PreviewTime = e
        }, P.prototype.getPreviewTime = function () {
            var e = 0;
            return this._options.playConfig && (e = this._options.playConfig.PreviewTime), e
        }, P.prototype.exceedPreviewTime = function (e) {
            return this.isPreview() && e >= this._options.playConfig.PreviewTime
        }, P.prototype.isPreview = function () {
            var e = this._options.playConfig.PreviewTime, t = this._vodDuration || this.tag.duration;
            return 0 < e && e < t
        }, P.prototype._getSanpshotMatric = function () {
            return this._snapshotMatric || (this._snapshotMatric = {}), this._snapshotMatric
        }, P.prototype._overrideNativePlay = function () {
            var r = this.tag.play, o = this;
            this.tag.play = function () {
                if (console.log("do play"), !o._options.source) {
                    var e = {
                        mediaId: o._options.vid ? o._options.vid : "",
                        error_code: c.ErrorCode.InvalidSourceURL,
                        error_msg: "InvalidSourceURL"
                    };
                    return o._options.vid ? e.display_msg = _.get("Error_Vid_Empty_Source") : e.display_msg = _.get("Error_Empty_Source"), void o.trigger(T.Player.Error, e)
                }
                o.readyTime = (new Date).getTime();
                var t = r.apply(o.tag);
                void 0 !== t && t.then(function () {
                    o.trigger(T.Player.AutoPlay, !0), console.log("do play successfully")
                })["catch"](function (e) {
                    console.log("do play failed"), !o.tag || !o.tag.paused || o._isError || o._options._autoplay || o._switchedLevel || (o.trigger(T.Private.Play_Btn_Show), o.trigger(T.Private.H5_Loading_Hide), o.trigger(T.Player.AutoPlayPrevented), o.trigger(T.Player.AutoPlay, !1), o._options.cover && o.trigger(T.Private.Cover_Show))
                });
                var i = o._originalPlaybackRate || o.tag.playbackRate;
                setTimeout(function () {
                    o.tag && (o.tag.playbackRate = i)
                })
            }
        }, P.prototype._extraMultiSources = function () {
            var e = this._options.source;
            if (e && -1 < e.indexOf("{") && -1 < e.indexOf("}")) {
                var t = "";
                try {
                    t = JSON.parse(e)
                } catch (e) {
                    console.error(e), console.error("\u5730\u5740json\u4e32\u683c\u5f0f\u4e0d\u5bf9")
                }
                var i = [];
                for (var r in t) {
                    var o = c.QualityLevels[r];
                    i.push({definition: r, Url: t[r], desc: o || r})
                }
                if (0 < i.length) {
                    this._currentPlayIndex = p.findSelectedStreamLevel(i);
                    var n = i[this._currentPlayIndex];
                    this._urls = i, this._options.source = n.Url, this.trigger(T.Private.SourceLoaded, n)
                }
            }
        }, P.prototype._isEnabledAILabel = function () {
            return this._options.ai && this._options.ai.label
        }, P.prototype._createService = function () {
            if (x) for (var e = x.length, t = 0; t < e; t++) {
                var i = x[t], r = i.condition;
                void 0 === r ? r = !0 : "function" == typeof r && (r = r.call(this)), r && (this[i.name] = new i.service(this))
            }
        }, P.prototype._disposeService = function () {
            if (x) for (var e = x.length, t = 0; t < e; t++) {
                var i = this[x[t].name];
                void 0 !== i && i.dispose && i.dispose()
            }
        }, P.prototype._executeReadyCallback = function () {
            try {
                this._options.autoplay || this._options.preload || (this.trigger(T.Private.H5_Loading_Hide), this.trigger(T.Private.Play_Btn_Show)), this._options.readyCallback(this)
            } catch (e) {
                console.log(e)
            }
        }, P.prototype._clearTimeout = function () {
            this._checkTimeoutHandle && (clearTimeout(this._checkTimeoutHandle), this._checkTimeoutHandle = null), this._waitingTimeoutHandle && (clearTimeout(this._waitingTimeoutHandle), this._waitingTimeoutHandle = null), this._clearLiveErrorHandle()
        }, P.prototype._reloadForVod = function () {
            if (this._originalSource || (this._originalSource = this._options.source), this._vodRetryCount < this._options.vodRetry && navigator.onLine) {
                var e = this.getCurrentTime(), t = this._originalSource;
                t.indexOf("auth_key=") < 0 && (t = t && 0 < t.indexOf("?") ? t + "&_t=" + (new Date).valueOf() : t + "?_t=" + (new Date).valueOf()), this._vodRetryCountHandle && clearTimeout(this._vodRetryCountHandle);
                var i = this;
                return console.log("_reloadForVod"), this._vodRetryCountHandle = setTimeout(function () {
                    console.log("reload vod because failed"), i._loadByUrlInner(t, e, !0)
                }, 100 * this._vodRetryCount), this._vodRetryCount = this._vodRetryCount + 1, !0
            }
            return !1
        }, t.exports = P
    }, {
        "../../commonui/autostreamselector": 2,
        "../../config": 5,
        "../../feature/autoPlayDelay": 7,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/cookie": 16,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/io": 24,
        "../../lib/object": 26,
        "../../lib/playerutil": 29,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../../monitor/monitor": 38,
        "../../ui/component": 94,
        "../../ui/component/cover": 98,
        "../../ui/component/play-animation": 104,
        "../../ui/component/progressmarker": 107,
        "../../ui/exports": 124,
        "../service/export": 87,
        "./event/eventmanager": 42,
        "./event/eventtype": 43,
        "./plugin/lifecyclemanager": 65,
        "./x5play": 67
    }],
    63: [function (e, t, i) {
        var r = e("../../../lib/oo").extend({});
        t.exports = r
    }, {"../../../lib/oo": 27}],
    64: [function (e, t, i) {
        t.exports = {
            createEl: "createEl",
            created: "created",
            ready: "ready",
            loading: "loading",
            play: "play",
            pause: "pause",
            playing: "playing",
            waiting: "waiting",
            timeUpdate: "timeupdate",
            error: "error",
            ended: "ended",
            dispose: "dispose",
            markerDotOver: "markerDotOver",
            markerDotOut: "markerDotOut"
        }
    }, {}],
    65: [function (e, t, i) {
        var constr,args;
        var s = e("../../../lib/object"), u = e("../event/eventtype"), c = e("./lifecycle"), r = e("./status"),
            o = function (t) {
                (this._player = t)._status = "init", this.components = [];
                var e = t.getOptions().components;
                if (e && s.isArray(e) && 0 < e.length) for (var i = 0; i < e.length; i++) {
                    var r = e[i];
                    if (!r) return void console.log("The " + i + " custome component is " + r);
                    if (constr = void 0 === r.type ? r : r.type, args = void 0 === r.args ? [] : r.args, name = void 0 === r.name ? "" : r.name, !constr) return void console.log(name + " compenent is " + constr);
                    args && 0 < args.length ? args = [].concat.call([constr], args) : args = [];
                    var o = new (Function.prototype.bind.apply(constr, args)), n = o[c.createEl];
                    n && "function" == typeof n && n.call(o, t.el(), t), this.components.push({name: name, obj: o})
                }
                var a = this;
                t.on(u.Private.LifeCycleChanged, function (e) {
                    0 != a.components.length && l.call(a, t, e)
                })
            };
        o.prototype.getComponent = function (e) {
            var t = null, i = this.components.length;
            if (e) for (var r = 0; r < i; r++) if (this.components[r].name == e) {
                t = this.components[r].obj;
                break
            }
            return t
        };
        var l = function (e, t) {
            if (t) {
                var i = t.paramData, r = i.type, o = i.data;
                (function (e) {
                    return e == u.Video.LoadStart || e == u.Video.LoadedData || e == u.Video.LoadedMetadata
                })(r) && (r = c.loading), d(e, r);
                for (var n = this.components.length, a = 0; a < n; a++) {
                    var s = this.components[a].obj, l = s[r];
                    l && "function" == typeof l && l.call(s, e, o)
                }
                r == u.Private.Dispose && (this.components = [])
            }
        }, d = function (e, t) {
            void 0 !== r[t] && (t != r.pause || e._status != r.error && e._status != r.ended) && (e._status = t)
        };
        t.exports = o
    }, {"../../../lib/object": 26, "../event/eventtype": 43, "./lifecycle": 64, "./status": 66}],
    66: [function (e, t, i) {
        t.exports = {
            init: "init",
            ready: "ready",
            loading: "loading",
            play: "play",
            pause: "pause",
            playing: "playing",
            waiting: "waiting",
            error: "error",
            ended: "ended"
        }
    }, {}],
    67: [function (e, t, i) {
        var r = e("../../lib/ua"), o = e("../../lib/dom"), n = function (e, t) {
            var i = e.el().style.height, r = e.el().style.width;
            e.originalLayout = {
                container: {height: i, width: r},
                video: {width: e.tag.style.width, height: e.tag.style.height}
            };
            var o = document.body.clientHeight * (window.devicePixelRatio || 1) + "px",
                n = document.body.clientWidth + "px";
            t ? (height = o, width = n) : (height = i.indexOf("%") ? i : i + "px", width = r.indexOf("%") ? r : r + "px"), e.tag.style.width = n, e.tag.style.height = o, e.el().style.height = t ? o : height
        };
        t.exports.isAndroidX5 = function () {
            return r.os.android && r.is_X5 || r.dingTalk()
        }, t.exports.adaptX5Play = function (e) {
            r.os.android && r.is_X5 && ("h5" == e._options.x5_type && (e.tag.setAttribute("x5-video-player-type", e._options.x5_type), window.onresize = function () {
                n(e, e._options.x5_fullscreen || "center" == e._options.x5_video_position), function (e) {
                    if ("landscape" == e._x5VideoOrientation) {
                        e._originalTagWidth = e.tag.style.width, e._originalTagHeight = e.tag.style.height;
                        var t = document.querySelector("#" + e.id() + " .prism-controlbar");
                        t && parseFloat(t.offsetHeight), e.tag.style.height = "100%", e.tag.style.width = window.screen.width + "px"
                    }
                }(e)
            }, e.tag.addEventListener("x5videoenterfullscreen", function () {
                n(e, e._options.x5_fullscreen || "center" == e._options.x5_video_position), e.trigger("x5requestFullScreen")
            }), e.tag.addEventListener("x5videoexitfullscreen", function () {
                !function (e, t) {
                    if (e.originalLayout) {
                        var i = e.originalLayout;
                        e.el().style.height = i.container.height, e.el().style.width = i.container.width, e.tag.style.width = i.video.width, e.tag.style.height = i.video.height
                    }
                }(e), e.trigger("x5cancelFullScreen"), e.fullscreenService.getIsFullScreen() && e.fullscreenService.cancelFullScreen()
            }), e.on("requestFullScreen", function () {
                "top" == e._options.x5_video_position && o.removeClass(e.tag, "x5-top-left"), r.os.android && r.is_X5 && e._options.x5LandscapeAsFullScreen && (e.tag.setAttribute("x5-video-orientation", "landscape"), e._x5VideoOrientation = "landscape")
            }), e.on("cancelFullScreen", function () {
                "top" == e._options.x5_video_position && o.addClass(e.tag, "x5-top-left"), r.os.android && r.is_X5 && e._options.x5LandscapeAsFullScreen && (e.tag.setAttribute("x5-video-orientation", "portrait"), n(e, e._options.x5_fullscreen || "center" == e._options.x5_video_position), e._x5VideoOrientation = "portrait")
            })), void 0 !== e._options.x5_fullscreen && e._options.x5_fullscreen && (e.tag.setAttribute("x5-video-player-fullscreen", e._options.x5_fullscreen), o.addClass(e.tag, "x5-full-screen")), "top" == e._options.x5_video_position && o.addClass(e.tag, "x5-top-left"), void 0 !== e._options.x5_orientation && e.tag.setAttribute("x5-video-orientation", e._options.x5_orientation))
        }
    }, {"../../lib/dom": 18, "../../lib/ua": 31}],
    68: [function (e, t, i) {
        var c = e("../../lib/io"), d = e("../../config"), p = e("../../lib/constants"), h = e("../../lib/util"),
            f = e("../../lib/playerutil"), _ = (e("../../lib/dom"), e("../../lang/index")),
            g = e("../base/event/eventtype"), y = e("../saas/drm");
        t.exports.inject = function (e, t, i, r, a, o, n) {
            var s = r.source;
            if (o || function (e, t) {
                return !(e._drm || !f.isDash(t))
            }(e, s)) {
                t.prototype._checkDrmReady = function () {
                    if (null == e._drm) throw new Error("please invoke this method after ready event")
                }, e._isDrm = !0, e._drm = null, e._isLoadedDrm = !1, t.prototype.play = function (e) {
                    this._checkDrmReady(), this._isManualPlay = e || !1;
                    if (this.trigger(g.Private.Cover_Hide), this.tag.ended) this.replay(); else {
                        this.getCurrentTime();
                        this.tag.paused && this.tag.play()
                    }
                    return this
                }, t.prototype.replay = function () {
                    if (this.tag.paused) {
                        this._monitor && this._monitor.replay();
                        var e = this;
                        this._drm.load(this._options.source).then(function () {
                            e._options._autoplay = !0, e._initPlayBehavior(!0), console.log("The video has now been loaded!")
                        })["catch"](u)
                    }
                    return this
                }, t.prototype.pause = function (e) {
                    return this._checkDrmReady(), this._isManualPause = e || !1, this.tag.pause(), this
                }, t.prototype.stop = function () {
                    return this._checkDrmReady(), this.tag.setAttribute("src", null), this
                }, t.prototype.initPlay = function (e) {
                    if (h.contentProtocolMixed(s)) {
                        var t = {
                            mediaId: this._options.vid ? this._options.vid : "",
                            error_code: p.ErrorCode.InvalidSourceURL,
                            error_msg: "InvalidSourceURL"
                        };
                        return t.display_msg = _.get("Request_Block_Text"), void this.trigger(g.Player.Error, t)
                    }

                    function i(i, t) {
                        var r = !i._drm, o = function () {
                            l(i, i._drm);
                            var e = {drm: {requestLicenseKey: y.requestLicenseKey(i), servers: {}}};
                            p.DRMKeySystem[4] && (e.drm.servers[p.DRMKeySystem[5]] = "https://foo.bar/drm/widevine", e.drm.servers[p.DRMKeySystem[4]] = "https://foo.bar/drm/playready"), i._drm.configure(e), a && a(i._drm), r && i._executeReadyCallback(), i._drm.load(i._options.source).then(function () {
                                i._initPlayBehavior(t), console.log("The video has now been loaded!")
                            })["catch"](function (e) {
                                u(i, e)
                            })
                        }, n = function (e) {
                            if (!e || i.__support && i.__support.drm[e]) o(); else {
                                var t = {
                                    mediaId: i._options.vid ? i._options.vid : "",
                                    error_code: p.ErrorCode.EncrptyVideoNotSupport,
                                    error_msg: _.get("Not_Support_DRM")
                                };
                                i.trigger(g.Player.Error, t)
                            }
                        };
                        i.destroy(function (t) {
                            try {
                                t._drm = new shaka.Player(t.tag);
                                var e = t._getItemBySource();
                                if (e) {
                                    var i = p.DRMKeySystem[e.encryptionType];
                                    t.__support ? n(i) : shaka.Player.probeSupport().then(function (e) {
                                        t.__support = e, n(i)
                                    })
                                } else o()
                            } catch (e) {
                                console.log(e)
                            }
                        })
                    }

                    (that = this)._isLoadedDrm && "undefined" != typeof shaka ? i(this, e) : (this.trigger(g.Private.H5_Loading_Show), function (e) {
                        var t = "aliplayer-drm-min.js",
                            i = "https://" + d.domain + "/de/prismplayer/" + d.h5Version + "/drm/" + t;
                        d.domain ? -1 < d.domain.indexOf("g-assets.daily") ? i = "http://" + d.domain + "/de/prismplayer/" + d.h5Version + "/drm/" + t : -1 < d.domain.indexOf("localhost") && (i = "http://" + d.domain + "/build/drm/" + t) : i = "de/prismplayer/" + d.h5Version + "/drm/" + t;
                        var r = this;
                        c.loadJS(i, function () {
                            shaka.polyfill.installAll(), e.apply(r)
                        })
                    }.call(that, function () {
                        this._isLoadedDrm = !0, i(this, e)
                    }))
                }, t.prototype.destroy = function (e) {
                    if (this._drm) {
                        var t = this;
                        this._drm.destroy().then(function () {
                            t._drm = null, e(t)
                        })
                    } else e(this)
                }, t.prototype.dispose = function () {
                    i.dispose.call(this), this.destroy()
                }, t.prototype._getDRMEncryptItem = function () {
                    var e = this._urls;
                    if (e && 0 < e.length) {
                        for (var t = e.length, i = 0; i < t; i++) {
                            var r = e[i];
                            if (r.Url == this._options.source && 1 * r.encryption) return r
                        }
                        return ""
                    }
                    return ""
                }, t.prototype._getItemBySource = function () {
                    var e = this._urls;
                    if (e && 0 < e.length) {
                        for (var t = e.length, i = 0; i < t; i++) {
                            var r = e[i];
                            if (r.Url == this._options.source) return r
                        }
                        return ""
                    }
                    return ""
                };
                var l = function (t, e) {
                    e.addEventListener("error", function (e) {
                        !function (e, t) {
                            u(e, t.detail)
                        }(t, e)
                    })
                }
            }

            function u(t, i) {
                var r = "Error code:" + i.code + "message:" + i.message;
                console.log(r);
                var o = p.ErrorCode.OtherError;
                r = _.get("Error_Play_Text");
                i.code == shaka.util.Error.Code.EXPIRED ? (o = p.ErrorCode.AuthKeyExpired, r = _.get("DRM_License_Expired")) : i.code == shaka.util.Error.Code.HTTP_ERROR ? (o = p.ErrorCode.NetworkError, r = _.get("Http_Error")) : i.code == shaka.util.Error.Code.HTTP_ERROR ? (o = p.ErrorCode.LoadingTimeout, r = _.get("Http_Timeout")) : i.category == shaka.util.Error.NETWORK && (o = p.ErrorCode.NetworkError, r = _.get("Error_Network_Text"));
                !function () {
                    if (setTimeout(function () {
                        t.trigger(g.Private.Play_Btn_Hide)
                    }), t.checkOnline()) {
                        var e = {mediaId: t._options.vid ? t._options.vid : "", error_code: o, error_msg: i.message};
                        t.logError(e), e.display_msg = i.code + "|" + r, t.trigger(g.Player.Error, e)
                    }
                }()
            }
        }
    }, {
        "../../config": 5,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/dom": 18,
        "../../lib/io": 24,
        "../../lib/playerutil": 29,
        "../../lib/util": 33,
        "../base/event/eventtype": 43,
        "../saas/drm": 76
    }],
    69: [function (e, t, i) {
        var r = e("../base/player"), o = e("./drminjector"), n = r.extend({
            init: function (e, t) {
                o.inject(this, n, r.prototype, t, function (e) {
                }), t._native = !1, r.call(this, e, t)
            }
        });
        t.exports = n
    }, {"../base/player": 62, "./drminjector": 68}],
    70: [function (e, t, i) {
        var o = e("../../ui/component"), n = e("../../lib/data"), s = e("../../lib/ua"), a = e("../../lib/constants"),
            l = e("../../lib/dom"), u = e("../../lib/object"), c = e("../../config"), d = e("../../lang/index"),
            p = e("../../lib/playerutil"), h = e("../../lib/util"), r = e("../../ui/component/info-display"),
            f = e("../../ui/component/error-display"), _ = e("../../feature/autoPlayDelay"),
            g = e("../../commonui/autostreamselector"), y = e("../base/event/eventtype"), v = e("../saas/ststoken"),
            m = o.extend({
                init: function (e, t) {
                    if (void 0 === t.skinLayout && (t.skinLayout = p.defaultFlashLayout), o.call(this, this, t), this._id = "prism-player-" + n.guid(), this.tag = e, this._el = this.tag, this._childrenUI = [f], this.initChildren(), this.id = this._id, window[this.id] = this, d.setCurrentLanguage(this._options.language, "flash", this._options.languageTexts), h.openInFile()) {
                        var i = {
                            mediaId: this._options.vid ? this._options.vid : "",
                            error_code: a.ErrorCode.FormatNotSupport,
                            error_msg: d.get("Open_Html_By_File", "flash")
                        };
                        this.trigger(y.Private.Error_Show, i)
                    } else if (s.IS_MOBILE) this.trigger(y.Private.Error_Show, {
                        mediaId: this._options.vid ? this._options.vid : "",
                        error_code: a.ErrorCode.FormatNotSupport,
                        error_msg: d.get("Cant_Use_Flash_On_Mobile", "flash")
                    }); else {
                        if (this._options.vid && this._options.accessKeyId && this._options.securityToken && this._options.accessKeySecret) {
                            var r = this;
                            v.getPlayAuth(this._options, function (e) {
                                r._options.playauth = e, r._createPlayer()
                            }, function (e) {
                                var t = {mediaId: r._options.vid, error_code: e.Code, error_msg: e.Message};
                                e.sri && (t.sri = e.sri), t.display_msg = e.display_msg, r.trigger(y.Private.Error_Show, t)
                            }, "flash")
                        } else this._createPlayer();
                        this._status = "init"
                    }
                }, _createPlayer: function () {
                    if (this._options.autoPlayDelay) {
                        var e = new _(this), t = this;
                        e.handle(function () {
                            t._options.autoplay = !0, t._initPlayer(), t._childrenUI = [r, g], t.initChildren()
                        })
                    } else this._initPlayer(), this._childrenUI = [r, g], this.initChildren();
                    if (!s.HAS_FLASH) {
                        var i = d.get("Flash_Not_Ready", "flash");
                        this.trigger(y.Private.Info_Show, {text: i, align: "tc", isBlack: !1})
                    }
                }, _initPlayer: function () {
                    var e = "//" + c.domain + "/de/prismplayer-flash/" + c.flashVersion + "/PrismPlayer.swf";
                    this._options.playerSwfPath ? e = this._options.playerSwfPath : c.domain ? -1 < c.domain.indexOf("localhost") && (e = "//" + c.domain + "/build/flash//PrismPlayer.swf") : e = "de/prismplayer-flash/" + c.flashVersion + "/PrismPlayer.swf";
                    var t = this._comboFlashVars(), i = this._options.wmode ? this._options.wmode : "opaque";
                    this.tag.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="100%" height="100%" id="' + this.id + '"><param name=movie value="' + e + '"><param name=quality value=High><param name="FlashVars" value="' + t + '"><param name="WMode" value="' + i + '"><param name="AllowScriptAccess" value="always"><param name="AllowFullScreen" value="true"><param name="AllowFullScreenInteractive" value="true"><embed name="' + this.id + '" src="' + e + '" quality=high pluginspage="//www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100%" height="100%" AllowScriptAccess="always" AllowFullScreen="true" AllowFullScreenInteractive="true" WMode="' + i + '" FlashVars="' + t + '"></embed></object>'
                }, _getPlayer: function (e) {
                    return -1 != navigator.appName.indexOf("Microsoft") ? document.getElementById(e) : document[e]
                }, _getLowerQualityLevel: function () {
                    var e = this._getVideoUrls();
                    if (!e) return "";
                    var t = e.Urls, i = e.index;
                    return t && 0 == t.length || -1 == i ? "" : 0 < i ? {item: t[i - 1], index: i - 1} : ""
                }, _comboFlashVars: function () {
                    var e = encodeURIComponent(s.getReferer()), t = s.getHref(), i = encodeURIComponent(t), r = "";
                    t && (r = s.getHost(t));
                    var o = this._options, n = {
                        autoPlay: o.autoplay ? 1 : 0,
                        isInner: 0,
                        actRequest: 1,
                        vid: o.vid,
                        diagnosisButtonVisible: o.diagnosisButtonVisible ? 1 : 0,
                        domain: o.domain ? o.domain : "//tv.taobao.com",
                        statisticService: o.statisticService ? o.statisticService : c.logReportTo,
                        videoInfoService: o.videoInfoService ? o.videoInfoService : "/player/json/getBaseVideoInfo.do",
                        disablePing: o.trackLog ? 0 : 1,
                        namespace: this.id,
                        barMode: 0 != o.barMode ? 1 : 0,
                        isLive: o.isLive ? 1 : 0,
                        waterMark: o.waterMark,
                        environment: o.environment,
                        vurl: o.source ? encodeURIComponent(o.source) : "",
                        plugins: o.plugins ? o.plugins : "",
                        snapShotShow: o.snapshot ? 1 : 0,
                        accessId: o.accId ? o.accId : "",
                        accessKey: o.accSecret ? o.accSecret : "",
                        apiKey: o.apiKey ? o.apiKey : "",
                        flashApiKey: o.flashApiKey ? o.flashApiKey : "",
                        disableSeek: o.disableSeek ? 1 : 0,
                        disableFullScreen: o.disableFullScreen ? 1 : 0,
                        stsToken: o.stsToken ? o.stsToken : "",
                        domainRegion: o.domainRegion ? o.domainRegion : "",
                        authInfo: o.authInfo ? encodeURIComponent(o.authInfo) : "",
                        playDomain: o.playDomain ? o.playDomain : "",
                        stretcherZoomType: o.stretcherZoomType ? o.stretcherZoomType : "",
                        playauth: o.playauth ? o.playauth.replace(/\+/g, "%2B") : "",
                        prismType: o.prismType ? o.prismType : 0,
                        formats: o.formats ? o.formats : "",
                        notShowTips: o.notShowTips ? 1 : 0,
                        showBarTime: o.showBarTime ? o.showBarTime : 0,
                        showBuffer: 0 == o.showBuffer ? 0 : 1,
                        rePlay: o.rePlay ? 1 : 0,
                        encryp: o.encryp ? o.encryp : "",
                        secret: o.secret ? o.secret : "",
                        mediaType: "video",
                        logInfo: {
                            ud: s.getHost(o.source),
                            os: s.os.name,
                            ov: s.os.version || "",
                            et: s.browser.name,
                            ev: s.browser.version || "",
                            uat: s.USER_AGENT,
                            r: e,
                            pu: i,
                            app_n: r
                        }
                    }, a = [];
                    return void 0 !== o.rtmpBufferTime && (n.rtmpBufferTime = o.rtmpBufferTime), o.cover && (n.cover = o.cover), o.extraInfo && (n.extraInfo = encodeURIComponent(JSON.stringify(o.extraInfo))), n.logInfo && (n.logInfo = encodeURIComponent(JSON.stringify(n.logInfo))), n.languageData = encodeURIComponent(JSON.stringify(d.getLanguageData("flash"))), n.language = d.getCurrentLanguage(), u.each(n, function (e, t) {
                        a.push(e + "=" + t)
                    }), a.join("&")
                }, initChildren: function () {
                    for (var e = this._childrenUI.length, t = 0; t < e; t++) {
                        var i = new this._childrenUI[t](this, this._options), r = i.el();
                        r.id = i.id(), this.contentEl().appendChild(r), i.bindEvent()
                    }
                    var o = document.querySelector("#" + this._options.id + " .prism-info-display");
                    l.css(o, "display", "none")
                }, flashReady: function () {
                    this.flashPlayer = this._getPlayer(this.id), this._isReady = !0;
                    var e, t = this._options.skinRes, i = this._options.skinLayout;
                    if (!1 !== i && !u.isArray(i)) throw new Error("PrismPlayer Error: skinLayout should be false or type of array!");
                    if ("string" != typeof t) throw new Error("PrismPlayer Error: skinRes should be string!");
                    e = 0 != i && 0 !== i.length && {
                        skinRes: t,
                        skinLayout: i
                    }, this.flashPlayer.setPlayerSkin(e), this.trigger("ready");
                    var r = this;
                    window.addEventListener("beforeunload", function () {
                        try {
                            r.flashPlayer.setPlayerCloseStatus()
                        } catch (e) {
                        }
                    })
                }, jsReady: function () {
                    return !0
                }, snapshoted: function (e) {
                    var t = h.toBinary(e), i = "data:image/jpeg;base64," + e;
                    this.trigger("snapshoted", {time: this.getCurrentTime(), base64: i, binary: t})
                }, uiReady: function () {
                    this._status = "ready", this.trigger("uiReady")
                }, loadedmetadata: function () {
                    "ended" != this._status && (this._status = "loading", this.trigger("loadedmetadata"))
                }, onPlay: function () {
                    this._status = "play", this.trigger("play"), this._clearTimeoutHandle(), this.trigger(y.Private.AutoStreamHide)
                }, onEnded: function () {
                    this._clearTimeoutHandle(), this._status = "ended", this.trigger("ended")
                }, onPause: function () {
                    this._status = "pause", this._clearTimeoutHandle(), this.trigger(y.Private.AutoStreamHide), this.trigger("pause")
                }, onBulletScreenReady: function () {
                    this.trigger("bSReady")
                }, onBulletScreenMsgSend: function (e) {
                    this.trigger("bSSendMsg", e)
                }, onVideoRender: function (e) {
                    this._clearTimeoutHandle(), this.trigger("videoRender"), this.trigger("canplay", {loadtime: e})
                }, onVideoError: function (e) {
                    this._clearTimeoutHandle(), this._status = "error", this.trigger("error", {errortype: e})
                }, onM3u8Retry: function () {
                    this.trigger("m3u8Retry")
                }, hideBar: function () {
                    this.trigger("hideBar")
                }, showBar: function () {
                    this.trigger("showBar")
                }, liveStreamStop: function () {
                    this.trigger("liveStreamStop")
                }, stsTokenExpired: function () {
                    this._status = "error", this.trigger("stsTokenExpired")
                }, onVideoBuffer: function () {
                    if ("pause" != this._status) {
                        this._status = "waiting", this.trigger("waiting"), this._clearTimeoutHandle();
                        var e = this;
                        this._checkTimeoutHandle = setTimeout(function () {
                            e.trigger(y.Private.AutoStreamShow)
                        }, 1e3 * this._options.loadDataTimeout), this._checkVideoStatus()
                    }
                }, startSeek: function (e) {
                    this.trigger("startSeek", e)
                }, completeSeek: function (e) {
                    this.trigger("completeSeek", e)
                }, _invoke: function () {
                    var e = arguments[0], t = arguments;
                    if (Array.prototype.shift.call(t), !this.flashPlayer) throw new Error("PrismPlayer Error: flash player is not ready\uff0cplease use api after ready event occured!");
                    if ("function" != typeof this.flashPlayer[e]) throw new Error("PrismPlayer Error: function " + e + " is not found!");
                    return this.flashPlayer[e].apply(this.flashPlayer, t)
                }, play: function () {
                    this._invoke("playVideo")
                }, replay: function () {
                    this._invoke("replayVideo")
                }, pause: function () {
                    this._invoke("pauseVideo")
                }, stop: function () {
                    this._invoke("stopVideo")
                }, seek: function (e) {
                    this._invoke("seekVideo", e)
                }, getCurrentTime: function () {
                    return this._invoke("getCurrentTime")
                }, getDuration: function () {
                    return this._invoke("getDuration")
                }, getStatus: function () {
                    return this._status
                }, _getVideoUrls: function () {
                    var e = this._invoke("getVideoUrls"), t = [];
                    if (e && e.Urls) for (var i = 0; i < e.Urls.length; i++) {
                        var r = e.Urls[i].value, o = r.desc.indexOf("_"), n = d.get(r.definition, "flash");
                        r.desc = 0 < o ? n + "_" + r.height : n, t.push(r)
                    }
                    return {Urls: t, index: e.index}
                }, _getVideoStatus: function () {
                    return this._invoke("getVideoStatus")
                }, _checkVideoStatus: function () {
                    if (this.flashPlayer && !this._checkVideoStatusHandler) {
                        var t = this, i = function () {
                            t._checkVideoStatusHandler = setTimeout(function () {
                                var e = t._getVideoStatus();
                                "playing" == e.videoStatus && "bufferFull" == e.bufferStatus ? (t._status = "playing", t._clearTimeoutHandle()) : "videoPlayOver" == e.videoStatus && (t._status = "ended", t._clearTimeoutHandle()), i()
                            }, 500)
                        };
                        i()
                    }
                }, _clearTimeoutHandle: function () {
                    this._checkTimeoutHandle && (clearTimeout(this._checkTimeoutHandle), this._checkTimeoutHandle = null)
                }, _changeStream: function (e) {
                    return this._invoke("changeStream", e)
                }, mute: function () {
                    this.setVolume(0)
                }, unMute: function () {
                    this.setVolume(.5)
                }, getVolume: function () {
                    return this._invoke("getVolume")
                }, setVolume: function (e) {
                    this._invoke("setVolume", e)
                }, loadByVid: function (e) {
                    this._invoke("loadByVid", e, !1)
                }, loadByUrl: function (e, t) {
                    this._invoke("loadByUrl", e, t)
                }, dispose: function () {
                    this._clearTimeoutHandle(), this._checkVideoStatusHandler && (clearTimeout(this._checkVideoStatusHandler), this._checkVideoStatusHandler = null), this._invoke("pauseVideo");
                    var e = this;
                    setTimeout(function () {
                        e.off("completeSeek"), e.off("startSeek"), e.off("stsTokenExpired"), e.off("liveStreamStop"), e.off("showBar"), e.off("hideBar"), e.off("m3u8Retry"), e.off("error"), e.off("canplay"), e.off("pause"), e.off("ended"), e.off("play"), e.off("loadedmetadata"), e.off("snapshoted"), e.off("uiReady"), e.off("ready"), e.flashPlayer = null, e._el && (e._el.innerHTML = "")
                    })
                }, showBSMsg: function (e) {
                    this._invoke("showBSMsg", e)
                }, setToastEnabled: function (e) {
                    this._invoke("setToastEnabled", e)
                }, setLoadingInvisible: function () {
                    this._invoke("setLoadingInvisible")
                }, setPlayerSize: function (e, t) {
                    this._el.style.width = e, this._el.style.height = t
                }
            });
        t.exports = m
    }, {
        "../../commonui/autostreamselector": 2,
        "../../config": 5,
        "../../feature/autoPlayDelay": 7,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/data": 17,
        "../../lib/dom": 18,
        "../../lib/object": 26,
        "../../lib/playerutil": 29,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../../ui/component": 94,
        "../../ui/component/error-display": 99,
        "../../ui/component/info-display": 102,
        "../base/event/eventtype": 43,
        "../saas/ststoken": 81
    }],
    71: [function (e, t, i) {
        var a = e("../../lib/io"), d = e("../../config"), p = e("../../lib/constants"), h = e("../../lib/util"),
            u = e("../../lib/playerutil"), c = (e("../../lib/dom"), e("../../lib/ua")), f = e("../../lang/index"),
            _ = e("../base/event/eventtype");
        e("../base/player");
        t.exports.inject = function (e, t, i, r, s, o) {
            var n = r.source;
            if (o || function (e, t) {
                return !(e._flv || !u.isFlv(t))
            }(e, n)) {
                e._Type = t, e._superType = i, e._superPt = i.prototype, e._disposed = !1, t.prototype._checkFlvReady = function () {
                    if (null == e._flv) throw new Error("please invoke this method after ready event")
                }, e._isFlv = !0, e._flv = null, e._isLoadedFlv = !1, e._originalUrl = "", t.prototype.play = function (e) {
                    this._checkFlvReady(), this._isManualPlay = e || !1;
                    if (this.trigger(_.Private.Cover_Hide), this._options.isLive && e) this._loadByUrlInner(this._options.source, 0, liveForceLoad); else if (this.tag.ended || this._ended) this.replay(); else {
                        if (0 == this._seeking) {
                            var t = 0;
                            this.tag.ended || this._ended || 0 == (t = this.getCurrentTime()) && (t = -1), -1 != t && this.seek(t)
                        }
                        this.tag.paused && (this._hasLoaded || (this.getMetaData(), this._flv.load()), this._flv.play())
                    }
                    return this
                }, t.prototype.seek = function (e) {
                    this._checkFlvReady(), e === this.tag.duration && e--;
                    try {
                        this._flv.currentTime = e
                    } catch (e) {
                        console.log(e)
                    }
                    return this
                }, t.prototype.pause = function (e) {
                    return this._checkFlvReady(), this._isManualPause = e || !1, this._flv.pause(), this
                }, t.prototype.getProgramDateTime = function () {
                    if (this._checkFlvReady(), !this._metadata) return "";
                    var e = this._flv.getFirstSample(), t = e && e.pts ? e.pts : 0;
                    return console.log("\u63a8\u6d41\u65f6\u95f4\uff1a" + this._metadata.NtpTime), console.log("\u9996\u5e27PTS\uff1a" + t), this._metadata.NtpTime + t
                }, t.prototype.initPlay = function (e) {
                    if (c.browser.safari && this.trigger(_.Private.Snapshot_Hide), h.contentProtocolMixed(n)) {
                        var t = {
                            mediaId: this._options.vid ? this._options.vid : "",
                            error_code: p.ErrorCode.InvalidSourceURL,
                            error_msg: "InvalidSourceURL"
                        };
                        return t.display_msg = f.get("Request_Block_Text"), void this.trigger(_.Player.Error, t)
                    }

                    function i(t, e) {
                        var i = !t._flv;
                        t._destroyFlv();
                        var r = t._options.isLive,
                            o = {isLive: r, enableWorker: t._options.enableWorker, stashInitialSize: 2048},
                            n = {type: "flv", isLive: r, url: t._options.source};
                        for (var a in r ? (o.enableStashBuffer = t._options.enableStashBufferForFlv, stashInitialSize = t._options.stashInitialSizeForFlv, o.autoCleanupSourceBuffer = !1) : o.lazyLoadMaxDuration = 600, t._options.flvOption) "cors" == a || "hasAudio" == a || "withCredentials" == a || "hasVideo" == a || "type" == a ? n[a] = t._options.flvOption[a] : o[a] = t._options.flvOption[a];
                        t._originalUrl = t._options.source, flvjs.LoggingControl.enableAll = t._options.debug, t._flv = flvjs.createPlayer(n, o), l(t, t._flv), t._flv.on(flvjs.Events.MEDIA_INFO, function (e) {
                            t._metadata = e.metadata
                        }), t._flv.attachMediaElement(t.tag), t._initPlayBehavior(e) && ((t._options.preload || t._options.autoplay) && (t._hasLoaded = !0, t._flv.load()), t._options.autoplay && !t.tag.paused && t._flv.play(), s && s(t._flv), i && t._executeReadyCallback())
                    }

                    (that = this)._isLoadedFlv && "undefined" != typeof Hls ? setTimeout(function () {
                        i(that, e)
                    }, 1e3) : (this.trigger(_.Private.H5_Loading_Show), function (e, t) {
                        var i = "aliplayer-flv-min.js",
                            r = "https://" + d.domain + "/de/prismplayer/" + d.h5Version + "/flv/" + i;
                        d.domain ? -1 < d.domain.indexOf("g-assets.daily") ? r = "http://" + d.domain + "/de/prismplayer/" + d.h5Version + "/flv/" + i : -1 < d.domain.indexOf("localhost") && (r = "http://" + d.domain + "/build/flv/" + i) : r = "de/prismplayer/" + d.h5Version + "/flv/" + i;
                        var o = this;
                        a.loadJS(r, function () {
                            e.apply(o)
                        })
                    }.call(that, function () {
                        this._isLoadedFlv = !0, i(that, e)
                    }, this._options.debug))
                }, t.prototype._destroyFlv = function () {
                    try {
                        this._flv && (this._flv.pause(), this._flv.destroy())
                    } catch (e) {
                        console.log(e)
                    }
                    this.loaded = !1, this._hasLoaded = !1, this._flv = null
                }, t.prototype.dispose = function () {
                    this._disposed || (this._disposed = !0, this._superPt && this._superPt.dispose.call(this), this._destroyFlv(), this._superPt && (t.prototype.play = this._superPt.play, t.prototype.pause = this._superPt.pause, t.prototype.initPlay = this._superPt.initPlay, t.prototype.seek = this._superPt.seek, t.prototype.canSeekable = this._superPt.canSeekable))
                }, t.prototype.canSeekable = function (e) {
                    var t = this._flv.mediaInfo;
                    return !(!this._flv._isTimepointBuffered(e) && t && !t.hasKeyframesIndex)
                };
                var l = function (u, e) {
                    var c = !1;
                    e.on(flvjs.Events.ERROR, function (e, t, i) {
                        var r = p.ErrorCode.OtherError, o = f.get("Error_Play_Text");
                        if (t == flvjs.ErrorDetails.NETWORK_EXCEPTION) {
                            var n = u.getOptions().source;
                            !n || 0 != n.toLowerCase().indexOf("http://") && 0 != n.toLowerCase().indexOf("https://") ? (r = p.ErrorCode.InvalidSourceURL, o = f.get("Error_Invalidate_Source_Widthout_Protocal"), c = !0) : o = navigator.onLine ? (r = p.ErrorCode.RequestDataError, f.get("Maybe_Cors_Error")) : (r = p.ErrorCode.NetworkError, f.get("Error_Network_Text"))
                        } else t == flvjs.ErrorDetails.NETWORK_STATUS_CODE_INVALID ? "404" == i.code ? (r = p.ErrorCode.NotFoundSourceURL, o = f.get("Error_Not_Found")) : "403" == i.code ? (r = p.ErrorCode.AuthKeyExpired, o = f.get("Error_AuthKey_Text"), c = !0) : (r = p.ErrorCode.NetworkError, o = f.get("Error_Network_Text")) : t == flvjs.ErrorDetails.NETWORK_TIMEOUT ? (r = p.ErrorCode.LoadingTimeout, o = f.get("Error_Waiting_Timeout_Text")) : t != flvjs.ErrorDetails.MEDIA_FORMAT_UNSUPPORTED && t != flvjs.ErrorDetails.MEDIA_CODEC_UNSUPPORTED || (r = p.ErrorCode.FormatNotSupport, o = f.get("Error_H5_Not_Support_Text"), c = !0);
                        var a = function () {
                            if (setTimeout(function () {
                                u.trigger(_.Private.Play_Btn_Hide)
                            }), u.checkOnline()) {
                                var e = {
                                    mediaId: u._options && u._options.vid ? u._options.vid : "",
                                    error_code: r,
                                    error_msg: i.msg
                                };
                                u.logError(e), e.display_msg = o, d.cityBrain && (u.flv = null), u.trigger(_.Player.Error, e)
                            }
                        };
                        if (u._options && u._options.isLive && !c) {
                            var s = u._options;
                            if (s.liveRetry > u._liveRetryCount) {
                                0 == u._liveRetryCount && u.trigger(_.Player.OnM3u8Retry);
                                var l = s.liveRetryInterval + s.liveRetryStep * u._liveRetryCount;
                                u._liveRetryCount++, h.sleep(1e3 * l), u._loadByUrlInner(s.source)
                            } else u._liveErrorHandle && clearTimeout(u._liveErrorHandle), u.trigger(_.Player.LiveStreamStop), u._liveErrorHandle = setTimeout(a, 500)
                        } else {
                            if (u._reloadForVod()) return;
                            a()
                        }
                    })
                }
            }
        }
    }, {
        "../../config": 5,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/dom": 18,
        "../../lib/io": 24,
        "../../lib/playerutil": 29,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../base/event/eventtype": 43,
        "../base/player": 62
    }],
    72: [function (e, t, i) {
        var r = e("../base/player"), o = e("./flvinjector"), n = r.extend({
            init: function (e, t) {
                o.inject(this, n, r, t, function (e) {
                }), t._native = !1, r.call(this, e, t)
            }
        });
        t.exports = n
    }, {"../base/player": 62, "./flvinjector": 71}],
    73: [function (e, t, i) {
        var c = e("../../lib/io"), d = e("../../config"), p = e("../../lib/constants"), h = e("../../lib/util"),
            f = e("../../lib/playerutil"), _ = (e("../../lib/dom"), e("../../lib/ua")), g = e("../../lang/index"),
            y = e("../base/event/eventtype");
        e("../base/player");
        t.exports.inject = function (e, t, i, r, n, o) {
            var a = r.source, s = r.useHlsPluginForSafari, l = r.useHlsPlugOnMobile;
            if (n || o || function (e, t, i, r) {
                return !(e._hls || !f.isHls(t) || !(!f.canPlayHls() || f.isSafariUsedHlsPlugin(i) || r && f.isUsedHlsPluginOnMobile()))
            }(e, a, s, l)) {
                e._Type = t, e._superType = i, e._superPt = i.prototype, e._disposed = !1, t.prototype._checkHlsReady = function () {
                    if (null == e._hls) throw new Error("please invoke this method after ready event")
                }, e._isHls = !0, e._hls = null, e._isLoadedHls = !1, e._stopLoadAsPaused = !0, t.prototype.play = function (e) {
                    this._checkHlsReady(), this._isManualPlay = e || !1;
                    if (this.trigger(y.Private.Cover_Hide), this._options.autoplay || this._options.preload || this._loadSourced || (this._loadSourced = !0, this._options._autoplay = !0, this._hls.loadSource(this._options.source)), this.tag.ended || this._ended) this.replay(); else if (this.tag.paused && (this.tag.play(), this._stopLoadAsPaused)) {
                        var t = this.getCurrentTime();
                        this._hls.startLoad(t)
                    }
                    return this
                }, t.prototype.replay = function () {
                    return this._monitor && this._monitor.replay(), this._hls.startLoad(0), this.tag.play(), this
                }, t.prototype.pause = function (e) {
                    return this.tag && (this._checkHlsReady(), this.tag.pause(), this._stopLoadAsPaused && this._hls.stopLoad()), this._isManualPause = e || !1, this
                }, t.prototype.stop = function () {
                    return this._checkHlsReady(), this.tag.setAttribute("src", null), this._hls.stopLoad(), this
                }, t.prototype.seek = function (e) {
                    this._checkHlsReady();
                    try {
                        this._superPt.seek.call(this, e), this.tag.paused && this._stopLoadAsPaused && this._hls.startLoad(e)
                    } catch (e) {
                        console.log(e)
                    }
                    return this
                }, t.prototype.getProgramDateTime = function () {
                    if (this._checkHlsReady(), -1 == this._hls.currentLevel) return "";
                    var e = this._hls.currentLevel, t = this._hls.levels[e].details;
                    if (t) {
                        var i = t.programDateTime;
                        if (console.log("ProgramDateTime=" + i), i) return new Date(i).valueOf()
                    }
                    return 0
                }, t.prototype._reloadAndPlayForM3u8 = function () {
                    0 == this._liveRetryCount && this.trigger(y.Player.OnM3u8Retry), this._liveRetryCount++
                }, t.prototype._switchLevel = function (e) {
                    this.trigger(y.Player.LevelSwitch);
                    for (var t = this._hls.levels, i = 0; i < t.length; i++) if (t[i].url == e) {
                        this._hls.currentLevel = i;
                        break
                    }
                    this._switchedLevel = !0;
                    var r = this;
                    setTimeout(function () {
                        r.trigger(y.Player.LevelSwitched), this._switchedLevel = !1
                    }, 1e3)
                }, t.prototype.initPlay = function (e) {
                    if (h.contentProtocolMixed(a)) {
                        var t = {
                            mediaId: this._options.vid ? this._options.vid : "",
                            error_code: p.ErrorCode.InvalidSourceURL,
                            error_msg: "InvalidSourceURL"
                        };
                        return t.display_msg = g.get("Request_Block_Text"), void this.trigger(y.Player.Error, t)
                    }

                    function i(a, e) {
                        var t = !a._hls;
                        a._destroyHls();
                        var i = {
                            xhrSetup: function (e, t) {
                                e.withCredentials = a._options.withCredentials || !1
                            }
                        }, r = a._options.loadingTimeOut || a._options.hlsLoadingTimeOut;
                        for (var o in r && (i.manifestLoadingTimeOut = r, i.levelLoadingTimeOut = r, i.fragLoadingTimeOut = r), a._options.nudgeMaxRetry && (i.nudgeMaxRetry = a._options.nudgeMaxRetry), a._options.maxMaxBufferLength && (i.maxMaxBufferLength = a._options.maxMaxBufferLength), a._options.maxBufferSize && (i.maxBufferSize = a._options.maxBufferSize), a._options.maxBufferLength && (i.maxBufferLength = a._options.maxBufferLength), n && (i._sce_dlgtqredxx = n), i.enableWorker = a._options.enableWorker, i.debug = a._options.debug, a._stopLoadAsPaused = a._options.hlsOption.stopLoadAsPaused, a._options.hlsOption) i[o] = a._options.hlsOption[o];
                        _.IS_IE11 && n && (i.enableWorker = !1), a._hls = new Hls(i), u(a, a._hls), a._loadSourced = !1, a._hls.attachMedia(a.tag), a._hls.on(Hls.Events.MEDIA_ATTACHED, function () {
                            (a._options.autoplay || a._options.preload || e) && (a._loadSourced = !0, a._hls.loadSource(a._options.source)), a._hls.on(Hls.Events.MANIFEST_PARSED, function () {
                                a._initPlayBehavior(e || a._loadSourced)
                            }), a._hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, function (e, t) {
                                a.trigger(y.Player.AudioTrackUpdated, t)
                            }), a._hls.on(Hls.Events.MANIFEST_LOADED, function (e, t) {
                                a.trigger(y.Player.LevelsLoaded, t)
                            }), a._hls.on(Hls.Events.LEVEL_SWITCHED, function (e, t) {
                                if (a._qualityService) {
                                    for (var i = a._hls.levels[t.level].url, r = a._qualityService.levels, o = "", n = 0; n < r.length; n++) if (r[n].Url == i) {
                                        o = r[n].desc;
                                        break
                                    }
                                    o && a.trigger(y.Private.QualityChange, {levelSwitch: !0, url: i, desc: o})
                                }
                            }), a._hls.on(Hls.Events.AUDIO_TRACK_SWITCH, function (e, t) {
                                a.trigger(y.Player.AudioTrackSwitch, t), setTimeout(function () {
                                    a.trigger(y.Player.AudioTrackSwitched, t)
                                }, 1e3)
                            }), t && a._executeReadyCallback()
                        })
                    }

                    this._isLoadedHls && "undefined" != typeof Hls ? i(this, e) : (this.trigger(y.Private.H5_Loading_Show), function (e, t, i) {
                        var r = "aliplayer-hls-min.js",
                            o = "https://" + d.domain + "/de/prismplayer/" + d.h5Version + "/hls/" + r;
                        d.domain ? -1 < d.domain.indexOf("g-assets.daily") ? o = "http://" + d.domain + "/de/prismplayer/" + d.h5Version + "/hls/" + r : -1 < d.domain.indexOf("localhost") && (o = "http://" + d.domain + "/build/hls/" + r) : o = "de/prismplayer/" + d.h5Version + "/hls/" + r;
                        var n = this;
                        c.loadJS(o, function () {
                            e.apply(n)
                        })
                    }.call(this, function () {
                        this._isLoadedHls = !0, i(this, e)
                    }, this._options.debug))
                }, t.prototype._destroyHls = function () {
                    this._hls && this._hls.destroy(), this._hls = null
                }, t.prototype.dispose = function () {
                    this._disposed || (this._disposed = !0, this._superPt && this._superPt.dispose.call(this), this._destroyHls(), this._superPt && (t.prototype.play = this._superPt.play, t.prototype.pause = this._superPt.pause, t.prototype.initPlay = this._superPt.initPlay, t.prototype.replay = this._superPt.replay, t.prototype.stop = this._superPt.stop, t.prototype.seek = this._superPt.seek))
                };
                var u = function (l, e) {
                    e.on(Hls.Events.ERROR, function (e, t) {
                        if (l._options && t.details != Hls.ErrorDetails.FRAG_LOOP_LOADING_ERROR && 1 != l._seeking && (0 != t.fatal || t.type == Hls.ErrorTypes.NETWORK_ERROR)) {
                            l._clearTimeout();
                            var i = p.ErrorCode.LoadedMetadata, r = g.get("Error_Play_Text"), o = !1;
                            if (t.details == Hls.ErrorDetails.MANIFEST_LOAD_ERROR) {
                                o = !0;
                                t.networkDetails;
                                r = t.response ? "404" == t.response.code ? (i = p.ErrorCode.NotFoundSourceURL, g.get("Error_Not_Found")) : "403" == t.response.code ? (i = p.ErrorCode.AuthKeyExpired, g.get("Error_AuthKey_Text")) : "0" == t.response.code && navigator.onLine ? (i = p.ErrorCode.RequestDataError, r + "\uff0c" + g.get("Maybe_Cors_Error")) : g.get("Error_Load_M3U8_Failed_Text") : g.get("Error_Load_M3U8_Failed_Text")
                            } else t.details == Hls.ErrorDetails.MANIFEST_LOAD_TIMEOUT ? (o = !0, r = g.get("Error_Load_M3U8_Timeout_Text")) : t.details == Hls.ErrorDetails.MANIFEST_PARSING_ERROR || t.details == Hls.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR ? (o = !0, r = g.get("Error_M3U8_Decode_Text")) : t.type == Hls.ErrorTypes.NETWORK_ERROR ? (i = p.ErrorCode.NetworkError, r = g.get("Error_Network_Text")) : t.type != Hls.ErrorTypes.MUX_ERROR && t.type != Hls.ErrorTypes.MEDIA_ERROR || (i = p.ErrorCode.PlayDataDecode, r = g.get("Error_TX_Decode_Text"));
                            r = r + "(" + t.details + ")";
                            var n = function () {
                                if (l.pause(), setTimeout(function () {
                                    l.trigger(y.Private.Play_Btn_Hide)
                                }), l.checkOnline()) {
                                    var e = {
                                        mediaId: l._options && l._options.vid ? l._options.vid : "",
                                        error_code: i,
                                        error_msg: t.details
                                    };
                                    l.logError(e), e.display_msg = r, l.trigger(y.Player.Error, e)
                                }
                            };
                            if (l._options && l._options.isLive) {
                                var a = l._options;
                                if (a.liveRetry > l._liveRetryCount) {
                                    0 == l._liveRetryCount && l.trigger(y.Player.OnM3u8Retry);
                                    var s = a.liveRetryInterval + a.liveRetryStep * l._liveRetryCount;
                                    l._liveRetryCount++, h.sleep(1e3 * s), o && l._loadByUrlInner(l._options.source, 0, !0)
                                } else l._liveErrorHandle && clearTimeout(l._liveErrorHandle), l.trigger(y.Player.LiveStreamStop), l._liveErrorHandle = setTimeout(n, 500)
                            } else {
                                if (l._reloadForVod()) return;
                                n()
                            }
                        }
                    })
                }
            }
        }
    }, {
        "../../config": 5,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/dom": 18,
        "../../lib/io": 24,
        "../../lib/playerutil": 29,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../base/event/eventtype": 43,
        "../base/player": 62
    }],
    74: [function (e, t, i) {
        var r = e("../base/player"), o = e("./hlsinjector"), n = r.extend({
            init: function (e, t) {
                t._native = !1, o.inject(this, n, r, t), r.call(this, e, t)
            }
        });
        t.exports = n
    }, {"../base/player": 62, "./hlsinjector": 73}],
    75: [function (e, t, i) {
        var r = e("../../lib/constants"), o = e("../../lib/oo").extend({
            init: function (e) {
                this.player = e, this.tickhandle = null
            }
        });
        o.prototype.tick = function (e, t) {
            var i = this;
            this.tickhandle = setTimeout(function () {
                i.player && i.player.trigger(r.AuthKeyExpiredEvent), t && t()
            }, 1e3 * e)
        }, o.prototype.clearTick = function (e) {
            this.tickhandle && clearTimeout(this.tickhandle)
        }, t.exports = o
    }, {"../../lib/constants": 15, "../../lib/oo": 27}],
    76: [function (e, t, i) {
        var l = e("../../lib/io"), u = (e("../../lib/ua"), e("../../lib/bufferbase64")), c = e("../../lib/constants"),
            d = e("./signature"), p = e("./util"), h = e("../../lang/index"), f = function (e, r, o) {
                var t = d.randomUUID(), i = "https://mts." + e.domainRegion + ".aliyuncs.com/?", n = {
                    AccessKeyId: e.accessId,
                    Action: "GetLicense",
                    MediaId: e.vid,
                    LicenseUrl: i,
                    data: e.data,
                    SecurityToken: e.stsToken,
                    Format: "JSON",
                    Type: e.encryptionType,
                    Version: "2014-06-18",
                    SignatureMethod: "HMAC-SHA1",
                    SignatureVersion: "1.0",
                    SignatureNonce: t
                };
                e.header && (n.Header = e.header);
                var a = i + ("Signature=" + d.AliyunEncodeURI(d.makeChangeSiga(n, e.accessSecret, "POST"))),
                    s = d.makeUTF8sort(n, "=", "&");
                l.post(a, s, function (e) {
                    if (e) {
                        var t = JSON.parse(e);
                        if (r) {
                            var i = t.License;
                            r(i)
                        }
                    } else o && o(p.createError("MPS\u83b7\u53d6License\u5931\u8d25"))
                }, function (e) {
                    if (o) {
                        var t = {Code: "", Message: h.get("Error_MTS_Fetch_Urls_Text")};
                        try {
                            t = JSON.parse(e)
                        } catch (e) {
                        }
                        o({Code: c.ErrorCode.ServerAPIError, Message: t.Code + "|" + t.Message, sri: t.requestId || ""})
                    }
                })
            };
        t.exports.requestLicenseKey = function (e) {
            var l = e;
            return l._options.vid && (l.__vid = l._options.vid), function (e, i) {
                var t = l._options, r = l._getDRMEncryptItem();
                if (r) {
                    var o = {
                        vid: l.__vid,
                        accessId: t.accId,
                        accessSecret: t.accSecret,
                        stsToken: t.stsToken,
                        domainRegion: t.domainRegion,
                        authInfo: t.authInfo,
                        encryptionType: r.encryptionType
                    };
                    if (r.encryptionType == c.EncryptionType.Widevine) o.data = u.encode(e.message); else if (r.encryptionType == c.EncryptionType.PlayReady) {
                        var n = u.unpackPlayReady(e.message);
                        o.data = n.changange, n.header && (o.header = JSON.stringify(n.header))
                    }
                    console.log(o.data);
                    var a = l.__licenseKeys, s = l.__vid + r.Url;
                    a && a[s], f(o, function (e) {
                        l.__licenseKeys || (l.__licenseKeys = {}), 10 < o.data.length && (l.__licenseKeys[s] = e);
                        var t = u.decode(e);
                        i(t)
                    }, function (e) {
                        var t = {mediaId: l.__vid, error_code: e.Code, error_msg: e.Message};
                        l.logError(t), l.trigger("error", t)
                    })
                }
            }
        }
    }, {
        "../../lang/index": 11,
        "../../lib/bufferbase64": 13,
        "../../lib/constants": 15,
        "../../lib/io": 24,
        "../../lib/ua": 31,
        "./signature": 80,
        "./util": 82
    }],
    77: [function (e, t, i) {
        var n = e("../../lib/io"), u = e("../../lib/constants"), c = e("./signature"), d = e("./util"),
            p = e("../../lang/index"), h = e("../../lib/ua");
        var f = function (e, o) {
            var t = "";
            e.sort(function (e, t) {
                var i = parseInt(e.bitrate), r = parseInt(t.bitrate);
                if ("desc" == o) {
                    if (r < i) return -1;
                    if (i < r) return 1
                } else {
                    if (i < r) return -1;
                    if (r < i) return 1
                }
            });
            for (var i = e.length, r = 0; r < i; r++) {
                var n = e[r], a = u.QualityLevels[n.definition], s = "";
                s = void 0 === a ? n.bitrate : t == a ? a + n.bitrate : a, n.desc = s, t = a
            }
        }, _ = function (e, o) {
            var t = "";
            e.sort(function (e, t) {
                var i = parseInt(e.width), r = parseInt(t.width);
                if ("desc" == o) {
                    if (r < i) return -1;
                    if (i < r) return 1
                } else {
                    if (i < r) return -1;
                    if (r < i) return 1
                }
            });
            for (var i = e.length, r = 0; r < i; r++) {
                var n = e[r], a = u.QualityLevels[n.definition], s = "";
                s = void 0 === a ? "" : t == a ? a + n.height : a, n.desc = s, t = a
            }
        };
        t.exports.getDataByAuthInfo = function (e, a, s, l) {
            c.returnUTCDate(), c.randomUUID();
            var t = c.randomUUID(), i = {
                    AccessKeyId: e.accessId,
                    Action: "PlayInfo",
                    MediaId: e.vid,
                    Formats: e.format,
                    AuthInfo: e.authInfo,
                    AuthTimeout: e.authTimeout || u.AuthKeyExpired,
                    IncludeSnapshotList: e.includeSnapshotList,
                    Rand: e.rand,
                    SecurityToken: e.stsToken,
                    Format: "JSON",
                    Version: "2014-06-18",
                    SignatureMethod: "HMAC-SHA1",
                    SignatureVersion: "1.0",
                    Terminal: h.IS_CHROME ? "Chrome" : h.IS_EDGE ? "Edge" : h.IS_IE11 ? "IE" : h.IS_SAFARI ? "Safari" : h.IS_FIREFOX ? "Firefox" : "",
                    SignatureNonce: t
                }, r = c.makeUTF8sort(i, "=", "&") + "&Signature=" + c.AliyunEncodeURI(c.makeChangeSiga(i, e.accessSecret)),
                o = "https://mts." + e.domainRegion + ".aliyuncs.com/?" + r;
            n.get(o, function (e) {
                if (e) {
                    var t = JSON.parse(e), i = t.PlayInfoList.PlayInfo,
                        r = t.SnapshotList ? t.SnapshotList.Snapshot : [], o = "";
                    r && 0 < r.length && (o = r[0].Url);
                    var n = function (e, t) {
                        for (var i = [], r = [], o = [], n = [], a = e.length - 1; 0 <= a; a--) {
                            var s = e[a];
                            "mp4" == s.format ? r.push(s) : "mp3" == s.format ? o.push(s) : "m3u8" == s.format ? i.push(s) : n.push(s)
                        }
                        return 0 < o.length ? (f(o, t), o) : 0 < r.length ? (_(r, t), r) : 0 < i.length ? (_(i, t), i) : (_(n, t), n)
                    }(i, a);
                    s && s({requestId: t.RequestId, urls: n, thumbnailUrl: o})
                } else l && l(d.createError("MPS\u83b7\u53d6\u53d6\u6570\u5931\u8d25"))
            }, function (e) {
                if (l) {
                    var t = {Code: "", Message: p.get("Error_MTS_Fetch_Urls_Text")};
                    try {
                        t = JSON.parse(e)
                    } catch (e) {
                    }
                    l({Code: u.ErrorCode.ServerAPIError, Message: t.Code + "|" + t.Message, sri: t.requestId || ""})
                }
            })
        }
    }, {
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/io": 24,
        "../../lib/ua": 31,
        "./signature": 80,
        "./util": 82
    }],
    78: [function (e, t, i) {
        var r = e("./saasplayer"), o = (e("../../lib/constants"), e("./mts")), n = r.extend({
            init: function (e, t) {
                r.call(this, e, t), this.service = o, this.loadByMts()
            }
        });
        n.prototype.loadByMts = function (e) {
            var t = {
                vid: this._options.vid,
                accessId: this._options.accId,
                accessSecret: this._options.accSecret,
                stsToken: this._options.stsToken,
                domainRegion: this._options.domainRegion,
                authInfo: this._options.authInfo,
                format: this._options.format,
                includeSnapshotList: this._options.includeSnapshotList || !1,
                defaultDefinition: this._options.defaultDefinition,
                authTimeout: this._options.authTimeout
            };
            this.loadData(t, e)
        }, n.prototype.replayByVidAndAuthInfo = function (e, t, i, r, o, n) {
            this.trigger("error_hide"), this._options.source = "", this._isError = !1, this._duration = 0, this._options.cover = "", this._vodRetryCount = 0, this._clearTimeout(), this.reloadNewVideoInfo(e, t, i, r, o, n)
        }, n.prototype.reloadNewVideoInfo = function (e, t, i, r, o, n) {
            if (this.trigger("error_hide"), this._options.source = "", e && (this._options.vid = e, this._options.accId = t, this._options.accessSecret = i, this._options.stsToken = r, this._options.domainRegion = n, this._options.authInfo = o), !(this._options.vid && this._options.accId && this._options.accessSecret && this._options.stsToken && this._options.domainRegion && this._options.authInfo)) throw new Error("\u9700\u8981\u63d0\u4f9bvid\u3001accId\u3001accessSecret\u3001stsToken\u3001domainRegion\u548cauthInfo\u53c2\u6570");
            this.log("STARTFETCHDATA", JSON.stringify({it: "mps", pa: {vid: e}})), this.loadByMts(!0)
        }, t.exports = n
    }, {"../../lib/constants": 15, "./mts": 77, "./saasplayer": 79}],
    79: [function (e, t, i) {
        var c = e("../base/player"), r = e("../audio/audioplayer"), n = (e("../../lib/event"), e("../../lib/io")),
            d = e("../../lib/constants"), o = e("./signature"), a = e("./authkeyexpiredhandle"),
            p = e("../hls/hlsinjector"), h = e("../flv/flvinjector"), f = e("../drm/drminjector"),
            _ = (e("../../lib/cookie"), e("../../lang/index")), s = e("../../config"), g = e("../../lib/playerutil"),
            y = e("../base/event/eventtype"), v = c.extend({
                init: function (e, t) {
                    this._authKeyExpiredHandle = new a(this), c.prototype._videoCreateEl || (c.prototype._videoCreateEl = c.prototype.createEl), "mp3" == t.format ? (t.height = "auto", t.mediaType = "audio", c.prototype.createEl = r.prototype.createEl, r.call(this, e, t)) : (c.prototype.createEl = c.prototype._videoCreateEl, t._native = !1, c.call(this, e, t))
                }
            });
        v.prototype.loadData = function (e, t) {
            if ("undefined" != typeof _sce_r_skjhfnck || "" != e.format && "m3u8" != e.format && 1 != this._options.encryptType) this._loadData(e, t); else {
                var i = "aliplayer-vod-min.js",
                    r = "https://" + s.domain + "/de/prismplayer/" + s.h5Version + "/hls/" + i;
                s.domain ? -1 < s.domain.indexOf("g-assets.daily") ? r = "http://" + s.domain + "/de/prismplayer/" + s.h5Version + "/hls/" + i : -1 < s.domain.indexOf("localhost") && (r = "http://" + s.domain + "/build/hls/" + i) : r = "de/prismplayer/" + s.h5Version + "/hls/" + i;
                var o = this;
                n.loadJS(r, function () {
                    o._loadData(e, t)
                })
            }
        }, v.prototype._loadData = function (n, a) {
            var s = (new Date).getTime(), l = this;
            if (this._urls = [], this._currentPlayIndex = 0, this._retrySwitchUrlCount = 0, this._authKeyExpiredHandle.clearTick(), "" != n.format && "m3u8" != n.format || 1 != this._options.encryptType) n.rand = o.randomUUID(); else {
                var u = _sce_r_skjhfnck();
                n.rand = _sce_lgtcaygl(u)
            }
            this.trigger(y.Private.H5_Loading_Show), this.service.getDataByAuthInfo(n, this._options.qualitySort, function (e) {
                if (l.log("COMPLETEFETCHDATA", {cost: (new Date).getTime() - s}), e.urls && 0 == e.urls.length) l._mtsError_message(l, {
                    Code: d.ErrorCode.URLsIsEmpty,
                    Message: _.get("Error_Vod_URL_Is_Empty_Text") + (n.format ? "(format:" + n.format + ")" : "")
                }, ""); else {
                    l.log("COMPLETEFETCHDATA", {
                        cost: (new Date).getTime() - s,
                        mi: JSON.stringify(e.urls)
                    }), l._urls = e.urls, l._currentPlayIndex = g.findSelectedStreamLevel(l._urls, n.defaultDefinition);
                    var t = e.urls[l._currentPlayIndex], i = t.Url;
                    if (l._vodDuration = t.duration || 0, l._options.source = i, l.encType = "", l.trigger(y.Private.PREPARE, t.definition), l.UI.cover && e.coverUrl && !l._options.cover && l.setCover(e.coverUrl), g.isHls(i)) {
                        var r = "";
                        if (t.encryptionType == d.EncryptionType.Private) {
                            l.encType = t.encryptionType;
                            var o = g.checkSecuritSupport();
                            if (o) return void l._mtsError_message(l, {
                                Code: d.ErrorCode.EncrptyVideoNotSupport,
                                Message: o,
                                display_msg: o
                            }, "");
                            r = _sce_dlgtqred(u, t.rand, t.plaintext)
                        }
                        p.inject(l, v, c, l._options, r)
                    } else g.isFlv(i) ? h.inject(l, v, c, l._options) : g.isDash(i) ? f.inject(l, v, c, l._options) : l._player._executeReadyCallback();
                    l._authKeyExpiredHandle.tick(d.AuthKeyRefreshExpired), l.trigger(y.Private.SourceLoaded, t), l.initPlay(a), l.trigger(y.Private.ChangeURL), e.thumbnailUrl && l._thumbnailService.get(e.thumbnailUrl)
                }
            }, function (e) {
                l._mtsError_message(l, e, "")
            })
        }, v.prototype._changeStream = function (e, t) {
            this._urls.length > e && (this.loadByUrl(this._urls[e].Url, this.getCurrentTime()), this._currentPlayIndex = e, this.trigger(y.Private.QualityChange, t || _.get("Quality_Change_Fail_Switch_Text")))
        }, v.prototype._getLowerQualityLevel = function () {
            if (0 == this._urls.length || -1 == this._currentPlayIndex) return "";
            if ("asc" == this.options().qualitySort) {
                if (0 < this._currentPlayIndex) return {
                    item: this._urls[this._currentPlayIndex - 1],
                    index: this._currentPlayIndex - 1
                }
            } else if (this._currentPlayIndex < this._urls.length - 1) return {
                item: this._urls[this._currentPlayIndex + 1],
                index: this._currentPlayIndex + 1
            };
            return ""
        }, v.prototype._mtsError_message = function (e, t, i) {
            var r = e;
            r.trigger(y.Private.H5_Loading_Hide);
            var o = t.Code ? t.Code : "OTHER_ERR_CODE", n = t.Message ? t.Message : "OTHER_ERR_MSG",
                a = (d.ErrorCode.ServerAPIError, t.display_msg || "");
            -1 < n.indexOf("InvalidParameter.Rand") || -1 < n.indexOf('"Rand" is not valid.') ? (d.ErrorCode.EncrptyVideoNotSupport, a = _.get("Error_Not_Support_encrypt_Text")) : -1 < n.indexOf("SecurityToken.Expired") ? (d.ErrorCode.AuthKeyExpired, a = _.get("Error_Playauth_Expired_Text")) : -1 < n.indexOf("InvalidVideo.NoneStream") && (d.ErrorCode.URLsIsEmpty, a = _.get("Error_Fetch_NotStream") + "(" + r._options.format + "|" + r._options.definition + ")");
            var s = r._options.vid ? r._options.vid : "0",
                l = (r._options.from && r._options.from, {mediaId: s, error_code: o, error_msg: n});
            t.sri && (l.sri = t.sri), r.logError(l), l.display_msg = (a || _.get("Error_Vod_Fetch_Urls_Text")) + "</br>" + n, r.trigger("error", l), console.log("PrismPlayer Error: " + i + "! error_msg :" + n + ";")
        }, t.exports = v
    }, {
        "../../config": 5,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/cookie": 16,
        "../../lib/event": 19,
        "../../lib/io": 24,
        "../../lib/playerutil": 29,
        "../audio/audioplayer": 41,
        "../base/event/eventtype": 43,
        "../base/player": 62,
        "../drm/drminjector": 68,
        "../flv/flvinjector": 71,
        "../hls/hlsinjector": 73,
        "./authkeyexpiredhandle": 75,
        "./signature": 80
    }],
    80: [function (e, c, t) {
        var r = e("crypto-js/hmac-sha1"), o = e("crypto-js/enc-base64"), i = e("crypto-js/enc-utf8");
        c.exports.randomUUID = function () {
            for (var e = [], t = "0123456789abcdef", i = 0; i < 36; i++) e[i] = t.substr(Math.floor(16 * Math.random()), 1);
            return e[14] = "4", e[19] = t.substr(3 & e[19] | 8, 1), e[8] = e[13] = e[18] = e[23] = "-", e.join("")
        }, c.exports.returnUTCDate = function () {
            var e = new Date, t = e.getUTCFullYear(), i = e.getUTCMonth(), r = e.getUTCDate(), o = e.getUTCHours(),
                n = e.getUTCMinutes(), a = e.getUTCSeconds(), s = e.getUTCMilliseconds();
            return Date.UTC(t, i, r, o, n, a, s)
        }, c.exports.AliyunEncodeURI = function (e) {
            var t = encodeURIComponent(e);
            return t = (t = (t = t.replace("+", "%2B")).replace("*", "%2A")).replace("%7E", "~")
        }, c.exports.makesort = function (e, t, i) {
            if (!e) throw new Error("PrismPlayer Error: vid should not be null!");
            var r = [];
            for (var o in e) r.push(o);
            var n = r.sort(), a = "", s = n.length;
            for (o = 0; o < s; o++) "" == a ? a = n[o] + t + e[n[o]] : a += i + n[o] + t + e[n[o]];
            return a
        }, c.exports.makeUTF8sort = function (e, t, i) {
            if (!e) throw new Error("PrismPlayer Error: vid should not be null!");
            var r = [];
            for (var o in e) r.push(o);
            var n = r.sort(), a = "", s = n.length;
            for (o = 0; o < s; o++) {
                var l = c.exports.AliyunEncodeURI(n[o]), u = c.exports.AliyunEncodeURI(e[n[o]]);
                "" == a ? a = l + t + u : a += i + l + t + u
            }
            return a
        }, c.exports.makeChangeSiga = function (e, t, i) {
            if (!e) throw new Error("PrismPlayer Error: vid should not be null!");
            return i || (i = "GET"), o.stringify(r(i + "&" + c.exports.AliyunEncodeURI("/") + "&" + c.exports.AliyunEncodeURI(c.exports.makeUTF8sort(e, "=", "&")), t + "&"))
        }, c.exports.ISODateString = function (e) {
            function t(e) {
                return e < 10 ? "0" + e : e
            }

            return e.getUTCFullYear() + "-" + t(e.getUTCMonth() + 1) + "-" + t(e.getUTCDate()) + "T" + t(e.getUTCHours()) + ":" + t(e.getUTCMinutes()) + ":" + t(e.getUTCSeconds()) + "Z"
        }, c.exports.encPlayAuth = function (e) {
            if (!(e = i.stringify(o.parse(e)))) throw new Error("playuth\u53c2\u6570\u89e3\u6790\u4e3a\u7a7a");
            return JSON.parse(e)
        }, c.exports.encRsa = function () {
        }
    }, {"crypto-js/enc-base64": 126, "crypto-js/enc-utf8": 127, "crypto-js/hmac-sha1": 128}],
    81: [function (e, t, i) {
        var l = e("../../lib/io"), u = e("../../lib/constants"), c = e("./signature"), d = e("./util"),
            p = e("../../lang/index");
        t.exports.getPlayAuth = function (e, i, r, o) {
            c.randomUUID();
            var t = c.randomUUID(), n = {
                    AccessKeyId: e.accessKeyId,
                    Action: "GetVideoPlayAuth",
                    VideoId: e.vid,
                    AuthTimeout: u.AuthInfoExpired,
                    SecurityToken: e.securityToken,
                    Format: "JSON",
                    Version: "2017-03-21",
                    SignatureMethod: "HMAC-SHA1",
                    SignatureVersion: "1.0",
                    SignatureNonce: t
                },
                a = c.makeUTF8sort(n, "=", "&") + "&Signature=" + c.AliyunEncodeURI(c.makeChangeSiga(n, e.accessKeySecret)),
                s = "https://vod." + e.region + ".aliyuncs.com/?" + a;
            l.get(s, function (e) {
                if (e) {
                    var t = JSON.parse(e);
                    i && i(t.PlayAuth)
                } else r && r(d.createError("\u83b7\u53d6\u89c6\u9891\u64ad\u653e\u51ed\u8bc1\u5931\u8d25"))
            }, function (e) {
                if (r) {
                    var t = {Code: "", Message: p.get("Fetch_Playauth_Error")};
                    try {
                        (t = JSON.parse(e)).Code
                    } catch (e) {
                    }
                    r({
                        Code: u.ErrorCode.ServerAPIError,
                        Message: t.Code + "|" + t.Message,
                        sri: t.requestId,
                        display_msg: p.get("Fetch_Playauth_Error", o)
                    })
                }
            })
        }
    }, {"../../lang/index": 11, "../../lib/constants": 15, "../../lib/io": 24, "./signature": 80, "./util": 82}],
    82: [function (e, t, i) {
        t.exports.createError = function (e, t) {
            return {requestId: "", code: t || "", message: e}
        }
    }, {}],
    83: [function (e, t, i) {
        var l = e("../../lib/io"), p = e("../../lib/constants"), u = e("./signature"), c = e("./util"),
            d = e("../../config"), h = e("../../lang/index");
        t.exports.getDataByAuthInfo = function (e, n, a, s) {
            u.randomUUID();
            var t = u.randomUUID(), i = {
                AccessKeyId: e.accessId,
                Action: "GetPlayInfo",
                VideoId: e.vid,
                Formats: e.format,
                AuthTimeout: e.authTimeout || p.AuthKeyExpired,
                Rand: e.rand,
                SecurityToken: e.stsToken,
                StreamType: e.mediaType,
                Format: "JSON",
                Version: "2017-03-21",
                SignatureMethod: "HMAC-SHA1",
                SignatureVersion: "1.0",
                SignatureNonce: t,
                PlayerVersion: d.h5Version,
                Definition: e.definition,
                Channel: "HTML5"
            };
            e.authInfo && (i.AuthInfo = e.authInfo), e.outputType && (i.OutputType = e.outputType), e.playConfig && (i.PlayConfig = JSON.stringify(e.playConfig)), e.reAuthInfo && (i.ReAuthInfo = JSON.stringify(e.reAuthInfo));
            var r = u.makeUTF8sort(i, "=", "&") + "&Signature=" + u.AliyunEncodeURI(u.makeChangeSiga(i, e.accessSecret)),
                o = "https://vod." + e.domainRegion + ".aliyuncs.com/?" + r;
            l.get(o, function (e) {
                if (e) {
                    var t = JSON.parse(e), i = "", r = t.VideoBase.ThumbnailList;
                    r && r.Thumbnail && 0 < r.Thumbnail.length && (i = r.Thumbnail[0].URL);
                    var o = function (e, t) {
                        for (var i = [], r = [], o = [], n = [], a = e.length - 1; 0 <= a; a--) {
                            var s = e[a],
                                l = (c = void 0, (c = {}).width = (u = s).Width, c.height = u.Height, c.definition = u.Definition, c.Url = u.PlayURL, c.format = u.Format, c.desc = p.QualityLevels[c.definition], c.encryptionType = p.VodEncryptionType[u.EncryptType], c.plaintext = u.Plaintext, c.rand = u.Rand, c.encrypt = u.Encrypt, c.duration = u.Duration, c);
                            "mp4" == l.format ? r.push(l) : "mp3" == l.format ? o.push(l) : "m3u8" == l.format ? i.push(l) : n.push(l)
                        }
                        var u, c, d = [];
                        return d = 0 < o.length ? o : 0 < r.length ? r : 0 < i.length ? i : n, "asc" == t && d.reverse(), d
                    }(t.PlayInfoList.PlayInfo, n);
                    a && a({requestId: t.RequestId, urls: o, thumbnailUrl: i, coverUrl: t.VideoBase.CoverURL})
                } else s && s(c.createError("\u70b9\u64ad\u670d\u52a1\u83b7\u53d6\u53d6\u6570\u5931\u8d25"))
            }, function (e) {
                if (s) {
                    var t = {Code: "", Message: h.get("Error_Vod_Fetch_Urls_Text")};
                    try {
                        t = JSON.parse(e)
                    } catch (e) {
                    }
                    s({Code: p.ErrorCode.ServerAPIError, Message: t.Code + "|" + t.Message, sri: t.requestId || ""})
                }
            })
        }
    }, {
        "../../config": 5,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/io": 24,
        "./signature": 80,
        "./util": 82
    }],
    84: [function (e, t, i) {
        var r = e("./saasplayer"), l = e("../../lib/constants"), o = e("./vod"), u = e("./signature"),
            n = (e("./authkeyexpiredhandle"), e("./ststoken"), r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.service = o, this.loadByVod()
                }
            }));
        n.prototype.loadByVod = function (e) {
            var t = "", i = "", r = "", o = "", n = "";
            if (this._options.accessKeyId && this._options.accessKeySecret) t = this._options.accessKeyId, i = this._options.accessKeySecret, r = this._options.securityToken, o = this._options.region, this.log("STARTFETCHDATA", JSON.stringify({
                it: "sts",
                pa: {vid: this._options.vid}
            })); else {
                try {
                    var a = u.encPlayAuth(this._options.playauth);
                    t = a.AccessKeyId, i = a.AccessKeySecret, r = a.SecurityToken, o = a.Region, n = a.AuthInfo
                } catch (e) {
                    var s = {
                        Code: l.ErrorCode.PlayauthDecode,
                        Message: "playauth decoded failed.",
                        displayMessage: "playauth\u89e3\u6790\u9519\u8bef"
                    };
                    return void this._mtsError_message(this, s, this._options.playauth)
                }
                this._options.from = a.CustomerId ? a.CustomerId : "", this.log("STARTFETCHDATA", JSON.stringify({
                    it: "playAuth",
                    pa: {vid: this._options.vid}
                }))
            }
            this._loadByVodBySTS(t, i, r, o, n, e)
        }, n.prototype.replayByVidAndPlayAuth = function (e, t) {
            this.trigger("error_hide"), this._options.source = "", this._options.vid = e, this._options.playauth = t, this._isError = !1, this._duration = 0, this._options.cover = "", this._vodRetryCount = 0, this._clearTimeout(), this.loadByVod(!0)
        }, n.prototype.updateSourcesByVidAndPlayAuth = function (e, t) {
            if (e == this._options.vid) {
                this._options.vid = e, this._options.playauth = t;
                try {
                    var i = u.encPlayAuth(this._options.playauth)
                } catch (e) {
                    return void console.log("playauth\u89e3\u6790\u9519\u8bef")
                }
                var r = {
                    vid: e,
                    accessId: i.AccessKeyId,
                    accessSecret: i.AccessKeySecret,
                    stsToken: i.SecurityToken,
                    domainRegion: i.Region,
                    authInfo: i.AuthInfo,
                    playDomain: i.PlayDomain,
                    format: this._options.format,
                    mediaType: this._options.mediaType
                };
                this._authKeyExpiredHandle.clearTick();
                var o = this;
                this.service.loadData(r, this._options.qualitySort, function (e) {
                    o._serverRequestId = e.requestId, 0 != e.urls.length && (o._urls = e.urls), o._authKeyExpiredHandle.tick(l.AuthKeyRefreshExpired)
                }, function (e) {
                    console.log(e)
                })
            } else console.log("\u4e0d\u80fd\u66f4\u65b0\u5730\u5740\uff0cvid\u548c\u64ad\u653e\u4e2d\u7684\u4e0d\u4e00\u81f4")
        }, n.prototype.reloaduserPlayInfoAndVidRequestMts = function (e, t) {
            this.replayByVidAndPlayAuth(e, t, accessSecret)
        }, n.prototype._loadByVodBySTS = function (e, t, i, r, o, n) {
            var a = {
                vid: this._options.vid,
                accessId: e,
                accessSecret: t,
                stsToken: i,
                authInfo: o,
                domainRegion: r,
                format: this._options.format,
                mediaType: this._options.mediaType,
                definition: this._options.definition,
                defaultDefinition: this._options.defaultDefinition,
                authTimeout: this._options.authTimeout,
                outputType: this._options.outputType,
                playConfig: this._options.playConfig,
                reAuthInfo: this._options.reAuthInfo
            };
            this.loadData(a, n)
        }, t.exports = n
    }, {
        "../../lib/constants": 15,
        "./authkeyexpiredhandle": 75,
        "./saasplayer": 79,
        "./signature": 80,
        "./ststoken": 81,
        "./vod": 83
    }],
    85: [function (e, t, i) {
        var o = e("../base/event/eventtype"), r = function (i) {
            this._player = i, this._video = i.tag;
            var r = this;
            this._isCreated = !1, this._canPlayTriggered = !1, this._defaultTrack = "", i.on(o.Private.ChangeURL, function () {
                r._isCreated = !1, r._canPlayTriggered = !1, r._defaultTrack = ""
            }), i.on(o.Player.CanPlay, function () {
                if (!r._player._drm && !r._canPlayTriggered) {
                    var e = r._getTracks();
                    e && (r._isCreated = !0, i.trigger(o.Player.AudioTrackReady, e), r._notifyDefaultValue(e)), r._canPlayTriggered = !0
                }
            }), i.on(o.Player.AudioTrackUpdated, function (e) {
                if (!r._isCreated) {
                    var t = r._getTracks(e.paramData.audioTracks);
                    t && (r._isCreated = !0, i.trigger(o.Player.AudioTrackReady, t), r._notifyDefaultValue(t))
                }
            })
        };
        r.prototype._notifyDefaultValue = function (e) {
            !this._defaultTrack && 0 < e.length && (this._defaultTrack = e[0]), this._defaultTrack && this._player.trigger(o.Private.SelectorUpdateList, {
                type: "audio",
                text: this._defaultTrack.text
            })
        }, r.prototype.support = function () {
            return !!this._video.audioTracks
        }, r.prototype._getTracks = function (e) {
            if (!this.support() && !e) return null;
            this._video && this._video.audioTracks && (!e || e && 0 == e.length) && (e = this._video.audioTracks);
            for (var t = [], i = e ? e.length : 0, r = 0; r < i; r++) {
                var o = e[r], n = {value: o.id, text: o.label || o.name || o.language};
                (o["default"] || o.enabled) && (this._defaultTrack = n), t.push(n)
            }
            return t
        }, r.prototype["switch"] = function (e) {
            if (this._player._hls) this._player._hls.audioTrack = 1 * e; else for (var t = this._video.audioTracks ? this._video.audioTracks.length : 0, i = 0; i < t; i++) {
                var r = this._video.audioTracks[i];
                r.id == e ? r.enabled = !0 : r.enabled = !1
            }
        }, r.prototype.dispose = function () {
            this._player = null
        }, t.exports = r
    }, {"../base/event/eventtype": 43}],
    86: [function (e, t, i) {
        var r = e("../base/event/eventtype"), o = e("../../lib/dom"), n = e("../../lib/ua"), l = e("../../lib/cookie"),
            u = e("../../lib/constants"), a = function (e) {
                this._video = e.tag, this._player = e, this._isCreated = !1, this._backupCC = "", this.tracks = [], this._defaultTrack = "", this._currentValue = "";
                var t = this;
                e.on(r.Private.ChangeURL, function () {
                    t._disabledTracks(), t._isCreated = !1, t._defaultTrack = ""
                }), e.on(r.Player.CanPlay, function () {
                    t._player._drm || (t._isCreated || (t.tracks = t._getTracks(), e.trigger(r.Player.TextTrackReady, t.tracks)), t._isCreated && !t._player._setDefaultCC || !t._defaultTrack || (e.trigger(r.Private.SelectorUpdateList, {
                        type: "cc",
                        text: t._defaultTrack.text
                    }), t["switch"](t._defaultTrack.value), t._player._setDefaultCC = !1, t._isCreated = !0))
                }), this._adaptiveCueStype(), e.on(r.Player.RequestFullScreen, function () {
                    t._adaptiveCueStype()
                }), e.on(r.Player.CancelFullScreen, function () {
                    t._adaptiveCueStype()
                })
            };
        a.prototype._adaptiveCueStype = function () {
            var e = -10;
            if (n.IS_SAFARI) {
                e = -65;
                var t = this._player.fullscreenService;
                t && t.getIsFullScreen() && (e = -95)
            } else n.IS_MOBILE && (e = -30);
            o.addCssByStyle("video::-webkit-media-text-track-container{transform: translateY(" + e + "px) !important;}")
        }, a.prototype.close = function () {
            for (var e = this._video && this._video.textTracks ? this._video.textTracks.length : 0, t = 0; t < e; t++) {
                var i = this._video.textTracks[t];
                "expired" != i.mode && ("showing" == i.mode && (this._backupCC = i), i.mode = "disabled")
            }
        }, a.prototype.open = function () {
            if (this.tracks && !(this.tracks.length < 2)) {
                var e = this._backupCC ? this._backupCC.language : "", t = this._backupCC ? this._backupCC.label : "";
                return e || (e = this.tracks[1].value, t = this.tracks[1].text), this["switch"](e), t
            }
        }, a.prototype.getCurrentSubtitle = function () {
            return this._currentValue
        }, a.prototype._getTracks = function () {
            if (this._player._drm) return [];
            var e = this._video && this._video.textTracks ? this._video.textTracks.length : 0;
            this._defaultTrack = {value: "off", text: "Off"};
            for (var t = [this._defaultTrack], i = l.get(u.SelectedCC), r = "", o = !1, n = 0; n < e; n++) {
                var a = this._video.textTracks[n];
                if ("expired" != a.mode && "subtitles" == a.kind) {
                    var s = {value: a.language, text: a.label};
                    a["default"] && (this._defaultTrack = s, o = !0), s.value == i && (r = s), t.push(s)
                }
            }
            return !o && r && (this._defaultTrack = r), t
        }, a.prototype._disabledTracks = function () {
            for (var e = this._video && this._video.textTracks ? this._video.textTracks.length : 0, t = 0; t < e; t++) {
                this._video.textTracks[t].mode = "expired"
            }
        }, a.prototype["switch"] = function (e) {
            if (this.close(), "off" != e) {
                for (var t = this._video && this._video.textTracks ? this._video.textTracks.length : 0, i = 0; i < t; i++) {
                    var r = this._video.textTracks[i];
                    r.language === e && "expired" != r.mode && (this._video.textTracks[i].mode = "showing")
                }
                this._currentValue = e
            } else this.close()
        }, a.prototype.dispose = function () {
            this._player = null
        }, t.exports = a
    }, {
        "../../lib/constants": 15,
        "../../lib/cookie": 16,
        "../../lib/dom": 18,
        "../../lib/ua": 31,
        "../base/event/eventtype": 43
    }],
    87: [function (e, t, i) {
        var r = e("../../lib/playerutil");
        t.exports = [{service: e("./ccservice"), name: "_ccService", condition: !0}, {
            service: e("./audiotrackservice"),
            name: "_audioTrackService"
        }, {service: e("./qualityservice"), name: "_qualityService"}, {
            service: e("./fullscreenservice"),
            name: "fullscreenService",
            condition: function () {
                return !0
            }
        }, {
            service: e("./liveshiftservice"), name: "_liveshiftService", condition: function () {
                var e = this.options();
                return r.isLiveShift(e)
            }
        }, {
            service: e("./thumbnailservice"), name: "_thumbnailService", condition: function () {
                return !0
            }
        }, {
            service: e("./progressmarkerservice"), name: "_progressMarkerService", condition: function () {
                return !0
            }
        }]
    }, {
        "../../lib/playerutil": 29,
        "./audiotrackservice": 85,
        "./ccservice": 86,
        "./fullscreenservice": 88,
        "./liveshiftservice": 89,
        "./progressmarkerservice": 90,
        "./qualityservice": 91,
        "./thumbnailservice": 92
    }],
    88: [function (e, t, i) {
        var o = e("../../lib/ua"), n = e("../../lib/dom"), a = e("../../lib/event"), s = e("../base/event/eventtype"),
            r = e("../base/x5play"), l = e("../../lang/index"), u = function () {
                var e;
                n.createEl("div");
                var t = [["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror", "fullScreen"], ["webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror", "webkitfullScreen"], ["webkitRequestFullScreen", "webkitCancelFullScreen", "webkitCurrentFullScreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror", "webkitIsFullScreen"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror", "mozFullScreen"], ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError", "MSFullScreen"]],
                    i = !(e = {});
                if (o.IS_IOS && (e.requestFn = "webkitEnterFullscreen", e.cancelFn = "webkitExitFullscreen", e.fullscreenElement = "webkitFullscreenElement", e.eventName = "webkitfullscreenchange", e.isFullScreen = "webkitDisplayingFullscreen", document[e.requestFn] && (i = !0)), !i) {
                    for (var r = 0; r < 5; r++) if (t[r][1] in document) {
                        e.requestFn = t[r][0], e.cancelFn = t[r][1], e.fullscreenElement = t[r][2], e.eventName = t[r][4], e.isFullScreen = t[r][6];
                        break
                    }
                    "requestFullscreen" in document ? e.requestFn = "requestFullscreen" : "webkitRequestFullscreen" in document ? e.requestFn = "webkitRequestFullscreen" : "webkitRequestFullScreen" in document ? e.requestFn = "webkitRequestFullScreen" : "webkitEnterFullscreen" in document ? e.requestFn = "webkitEnterFullscreen" : "mozRequestFullScreen" in document ? e.requestFn = "mozRequestFullScreen" : "msRequestFullscreen" in document && (e.requestFn = "msRequestFullscreen"), "fullscreenchange" in document ? e.eventName = "fullscreenchange" : "webkitfullscreenchange" in document ? e.eventName = "webkitfullscreenchange" : "webkitfullscreenchange" in document ? e.eventName = "webkitfullscreenchange" : "webkitfullscreenchange" in document ? e.eventName = "webkitfullscreenchange" : "mozfullscreenchange" in document ? e.eventName = "mozfullscreenchange" : "MSFullscreenChange" in document && (e.eventName = "MSFullscreenChange"), "fullScreen" in document ? e.isFullScreen = "fullScreen" : "webkitfullScreen" in document ? e.isFullScreen = "webkitfullScreen" : "webkitIsFullScreen" in document ? e.isFullScreen = "webkitIsFullScreen" : "webkitDisplayingFullscreen" in document ? e.isFullScreen = "webkitDisplayingFullscreen" : "mozFullScreen" in document ? e.isFullScreen = "mozFullScreen" : "mozfullScreen" in document ? e.isFullScreen = "mozfullScreen" : "MSFullScreen" in document && (e.isFullScreen = "MSFullScreen"), "fullscreenElement" in document ? e.fullscreenElement = "fullscreenElement" : "webkitFullscreenElement" in document ? e.fullscreenElement = "webkitFullscreenElement" : "webkitFullScreenElement" in document ? e.fullscreenElement = "webkitFullScreenElement" : "mozFullScreenElement" in document ? e.fullscreenElement = "mozFullScreenElement" : "msFullscreenElement" in document ? e.fullscreenElement = "msFullscreenElement" : "MSFullscreenElement" in document && (e.fullscreenElement = "MSFullscreenElement")
                }
                return e.requestFn ? e : null
            }(), c = function (e) {
                this.isFullWindow = !1, this.isFullScreen = !1, this.isFullScreenChanged = !1, this._requestFullScreenTimer = null, this._cancelFullScreenTimer = null, this._player = e;
                var r = this, o = u;
                this._fullscreenChanged = function (e) {
                    if (null != r._player) {
                        var t = document[o.isFullScreen];
                        if (void 0 !== t) r.isFullScreen = t; else {
                            var i = document[o.fullscreenElement];
                            r.isFullScreen = null != i
                        }
                        (r.isFullScreenChanged = !0) === r.isFullScreen ? r._player.trigger(s.Player.RequestFullScreen) : r._player.trigger(s.Player.CancelFullScreen)
                    }
                }, o && a.on(document, o.eventName, this._fullscreenChanged)
            };
        c.prototype.requestFullScreen = function () {
            if (!r.isAndroidX5() || !this._player.paused()) {
                var e = u, t = this._player.el(), i = this;
                if (o.IS_IOS) return (t = this._player.tag)[e.requestFn](), i._player.trigger(s.Player.RequestFullScreen), this;
                this.isFullScreen = !0, this.isFullScreenChanged = !1, this._requestFullScreenTimer = null, this._cancelFullScreenTimer || clearTimeout(this._cancelFullScreenTimer);
                i = this;
                return e && !this._player._options.enableMockFullscreen ? (t[e.requestFn](), this._requestFullScreenTimer = setTimeout(function () {
                    i.isFullScreenChanged || (d.apply(i), i._player.trigger(s.Player.RequestFullScreen)), i._requestFullScreenTimer = null
                }, 1e3)) : (d.apply(i), this._player.trigger(s.Player.RequestFullScreen)), this._player
            }
            this._player.trigger(s.Private.Info_Show, l.get("Play_Before_Fullscreen"))
        }, c.prototype.cancelFullScreen = function () {
            var e = u;
            this.isFullScreen = !1, this.isFullScreenChanged = !1, this._cancelFullScreenTimer = null, this._requestFullScreenTimer || clearTimeout(this._requestFullScreenTimer);
            var t = this;
            return e && !this._player._options.enableMockFullscreen ? (document[e.cancelFn](), t._cancelFullScreenTimer = setTimeout(function () {
                t.isFullScreenChanged || (p.apply(t), t._player.trigger(s.Player.CancelFullScreen)), t._cancelFullScreenTimer = null
            }, 500)) : (p.apply(t), this._player.trigger(s.Player.CancelFullScreen)), this._player.tag.paused || this._player.trigger(s.Player.Play), this._player
        }, c.prototype.getIsFullScreen = function () {
            return this.isFullScreen
        }, c.prototype.dispose = function () {
            this._player = null;
            var e = u;
            a.off(document, e.eventName, this._fullscreenChanged)
        };
        var d = function () {
            this.isFullWindow = !0, this.docOrigOverflow = document.documentElement.style.overflow, document.documentElement.style.overflow = "hidden", n.addClass(document.getElementsByTagName("body")[0], "prism-full-window")
        }, p = function () {
            this.isFullWindow = !1, document.documentElement.style.overflow = this.docOrigOverflow, n.removeClass(document.getElementsByTagName("body")[0], "prism-full-window")
        };
        t.exports = c
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/ua": 31,
        "../base/event/eventtype": 43,
        "../base/x5play": 67
    }],
    89: [function (e, t, i) {
        var o = e("../../lib/io"), n = e("../../lib/util"), a = e("../../lib/playerUtil"), s = e("../../lang/index"),
            l = (e("../flv/flvinjector"), e("../hls/hlsinjector")), u = e("../../lib/constants"),
            c = e("../base/event/eventtype"), d = (e("../../lib/url"), function (e, t) {
                if (e && e) {
                    var i = new Date(e), r = new Date(t), o = r.valueOf() / 1e3 - i.valueOf() / 1e3;
                    return {start: i, end: r, endDisplay: n.extractTime(r), totalTime: o}
                }
            }), p = function (e, t) {
                t && (e.currentTimestamp = t, e.currentTime = n.convertToDate(t), e.currentTimeDisplay = n.extractTime(e.currentTime), e.liveShiftStart = e.liveTimeRange.start, e.liveShiftEnd = e.liveTimeRange.end, e.liveShiftStartDisplay = n.extractTime(e.liveShiftStart), e.liveShiftEndDisplay = n.extractTime(e.liveShiftEnd), e.availableLiveShiftTime = t - e.liveShiftStart.valueOf() / 1e3, e.timestampStart = n.convertToTimestamp(e.liveShiftStart), e.timestampEnd, n.convertToTimestamp(e.liveShiftEnd))
            }, r = function (t) {
                this._player = t, this._isLiveShift = !1;
                var r = this, e = function () {
                    var e = t._options.source;
                    this._originalPlayUrl = e, this._liveShiftUrl = t._options.liveTimeShiftUrl, this.liveTimeRange = d(t._options.liveStartTime, t._options.liveOverTime), this.availableLiveShiftTime = 0, this.seekTime = -1
                };
                e.call(this), t.liveShiftSerivce = {
                    setLiveTimeRange: function (e, t) {
                        r.setLiveTimeRange(e, t)
                    }, queryLiveShift: function (e, t, i) {
                        r.queryLiveShift(e, t, i)
                    }
                }, t.on(c.Private.ChangeURL, function () {
                    e.call(r)
                })
            };
        r.prototype.validate = function () {
            return !(this.liveTimeRange.start >= this.liveTimeRange.end)
        }, r.prototype.switchToLive = function () {
            var e = that._player._options.recreatePlayer;
            e && this._isLiveShift && (this._player.dispose(), setTimeout(function () {
                e()
            }, 1e3), this._isLiveShift = !1)
        }, r.prototype.getBaseTime = function () {
            this.liveShiftStartDisplay;
            return -1 == this.seekTime ? n.parseTime(this.currentTimeDisplay) : n.parseTime(this.liveShiftStartDisplay) + this.seekTime
        }, r.prototype.getSourceUrl = function (e, t) {
            var i = this._originalPlayUrl;
            return this.availableLiveShiftTime <= e ? i : (this._isLiveShift = !0, (e = parseInt(e)) <= 5 && (e = 5), (i = this._switchLiveShiftPlayer(t)) && (i = i.replace("lhs_offset_unix_s_0", "z")), i = -1 == i.indexOf("?") ? i + "?lhs_offset_unix_s_0=" + e : i + "&lhs_offset_unix_s_0=" + e)
        }, r.prototype._switchLiveShiftPlayer = function (e) {
            var t = this._originalPlayUrl, i = this._player._options.liveShiftSource, r = this._player._options.source;
            if (a.isHls(r)) t = r; else if (a.isFlv(t) && i && a.isHls(i)) {
                this._player._flv && this._player._destroyFlv();
                var o = this._player._superType, n = this._player._Type;
                return this._player._options._autoplay = !0, l.inject(this._player, n, o, this._player._options, "", !0), i
            }
            return t
        }, r.prototype.getTimeline = function (i, r) {
            if (this._player.trigger(c.Private.LiveShiftQueryCompleted), !this._liveShiftUrl) return p(this, (new Date).valueOf() / 1e3), void(i && i());
            var o = this;
            this.queryLiveShift(this._liveShiftUrl, function (e) {
                if (e) {
                    var t = e;
                    0 == t.retCode ? (p(o, t.content.current), i && i()) : r({
                        Code: u.ErrorCode.ServerAPIError,
                        Message: t.retCode + "|" + t.description + "|" + t.content
                    })
                } else console.log("\u83b7\u53d6\u76f4\u64ad\u65f6\u79fb\u6570\u636e\u5931\u8d25")
            }, function (e) {
                if (r && e) {
                    var t = {};
                    if (e) {
                        if (-1 < e.indexOf("403 Forbidden")) t.Code = u.ErrorCode.AuthKeyExpired, t.Message = "Query liveshift failed:" + s.get("Error_AuthKey_Text"); else {
                            var i;
                            t = e;
                            try {
                                i = JSON.parse(e)
                            } catch (e) {
                            }
                            i && (t.Code = u.ErrorCode.ServerAPIError, t.Message = i.retCode + "|" + i.description + "|" + i.content)
                        }
                        r(t)
                    }
                }
            })
        }, r.prototype.start = function (e, t) {
            var i = this, r = function () {
                i._loopHandler = setTimeout(function () {
                    i.getTimeline(function () {
                    }, t), r()
                }, e)
            };
            i.getTimeline(function (e) {
                i._localLiveTimeHandler || i.tickLocalLiveTime()
            }, t), r()
        }, r.prototype.tickLocalLiveTime = function () {
            var e = this, t = function () {
                e._localLiveTimeHandler = setTimeout(function () {
                    e.currentTimestamp++, p(e, e.currentTimestamp), e._player.trigger(c.Private.LiveShiftQueryCompleted), t()
                }, 1e3)
            };
            t()
        }, r.prototype.setLiveTimeRange = function (e, t) {
            e || (e = this._player._options.liveStartTime), t || (t = this._player._options.liveOverTime), this.liveTimeRange = d(e, t), p(this, this.currentTimestamp), this._player.trigger(c.Private.LiveShiftQueryCompleted)
        }, r.prototype.queryLiveShift = function (e, i, r) {
            o.get(e, function (e) {
                if (e) {
                    var t = JSON.parse(e);
                    0 == t.retCode ? i && i(t) : r && r(t)
                } else r && r(e)
            }, function (e) {
                r && r(e)
            })
        }, r.prototype.stop = function (e) {
            this._loopHandler && (clearTimeout(this._loopHandler), this._loopHandler = null)
        }, r.prototype.dispose = function () {
            this.stop(), this._localLiveTimeHandler && (clearTimeout(this._localLiveTimeHandler), this._localLiveTimeHandler = null), this._player = null
        }, t.exports = r
    }, {
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/io": 24,
        "../../lib/playerUtil": 28,
        "../../lib/url": 32,
        "../../lib/util": 33,
        "../base/event/eventtype": 43,
        "../flv/flvinjector": 71,
        "../hls/hlsinjector": 73
    }],
    90: [function (e, t, i) {
        var c = e("../base/event/eventtype"),
            d = (e("../../lang/index"), e("../../lib/hls/hlsparse"), e("../../lib/object"), e("../../lib/dom")),
            p = e("../../lib/event"), r = (e("../../lib/playerutil"), function (l) {
                this.progressMarkers = [], this._player = l;
                var u = this;
                l.on(c.Private.ProgressMarkerLoaded, function (e) {
                    var t = e.paramData;
                    t && 0 < t.length && (u.progressMarkers = t)
                });
                var i = function () {
                    var e = document.querySelector("#" + l.id() + " .prism-progress-marker");
                    if (e) {
                        e.innerHTML = "";
                        var n = u._player.getDuration();
                        if (0 < n) {
                            for (var t = 0; t < u.progressMarkers.length; t++) {
                                var i = u.progressMarkers[t];
                                if (void 0 !== i.offset && "" !== i.offset) {
                                    var r = document.createElement("div");
                                    d.addClass(r, "prism-marker-dot");
                                    var o = u.progressMarkers[t].offset / n;
                                    r.style.left = 100 * o + "%", e.appendChild(r);
                                    var a = function (e, t) {
                                        return function () {
                                            u._player.trigger(c.Private.MarkerTextShow, {left: e, progressMarker: t})
                                        }
                                    }(o, u.progressMarkers[t]);
                                    p.on(r, "mouseover", a), p.on(r, "mouseout", function (e) {
                                        u._player.trigger(c.Private.MarkerTextHide)
                                    }), p.on(r, "touchstart", a), p.on(r, "mousemove", function (e) {
                                        e.preventDefault()
                                    }), p.on(r, "touchmove", function (e) {
                                        e.preventDefault()
                                    })
                                }
                            }
                            var s = document.querySelector("#" + u._player.id() + " .prism-progress-cursor");
                            u._player.on(s, "click", function (e) {
                                for (var t = u._player.getCurrentTime(), i = 0; i < u.progressMarkers.length; i++) {
                                    var r = u.progressMarkers[i];
                                    if (r && (t - 1 < r.offset && r.offset < t + 1)) {
                                        var o = r.offset / n * 100 + "%";
                                        u._player.trigger(c.Private.MarkerTextShow, {left: o, progressMarker: r})
                                    }
                                }
                            })
                        }
                    }
                };
                l.on(c.Private.ProgressMarkerChanged, function (e) {
                    var t = e.paramData;
                    t && 0 < t.length && (u.progressMarkers = t, i())
                }), l.on(c.Video.LoadedMetadata, i)
            });
        r.prototype.dispose = function () {
            this._player = null, this.progressMarkers = []
        }, t.exports = r
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/hls/hlsparse": 23,
        "../../lib/object": 26,
        "../../lib/playerutil": 29,
        "../base/event/eventtype": 43
    }],
    91: [function (e, t, i) {
        var l = e("../base/event/eventtype"), u = e("../../lang/index"), r = e("../../lib/hls/hlsparse"),
            c = e("../../lib/object"), o = e("../../lib/playerutil"), n = function (a) {
                this.levels = [], this._player = a;
                var s = this;
                a.on(l.Player.LevelsLoaded, function (e) {
                    if (0 < s.levels.length && (s.levels = []), (e = e.paramData) && e.levels) {
                        for (var t = e.levels.length - 1; -1 < t; t--) {
                            var i = e.levels[t];
                            if (i.url && 0 < i.url.length && i.attrs && i.attrs.BANDWIDTH) {
                                var r = i.url;
                                c.isArray(r) && (r = r[0]);
                                var o = {
                                    Url: r,
                                    desc: i.height || i.width,
                                    bitrate: i.bitrate,
                                    resolution: i.attrs.RESOLUTION,
                                    bandwidth: i.attrs.BANDWIDTH
                                };
                                s.levels.push(o)
                            }
                        }
                        if (0 < s.levels.length) {
                            var n = u.get("Auto");
                            s.levels.push({Url: e.url, desc: n}), a.trigger(l.Private.SelectorUpdateList, {
                                type: "quality",
                                text: n
                            })
                        }
                    }
                }), a.on(l.Video.LoadStart, function () {
                    if (a._options) {
                        var e = a._options.source;
                        !a._hls && e && o.isHls(e) && s.loadLevels(e)
                    }
                })
            };
        (n.prototype = {
            loadLevels: function (e) {
                var t = new r, i = this;
                t.load(e, function (e) {
                    i._player.trigger(l.Player.LevelsLoaded, e)
                })
            }
        }).dispose = function () {
            this._player = null
        }, t.exports = n
    }, {
        "../../lang/index": 11,
        "../../lib/hls/hlsparse": 23,
        "../../lib/object": 26,
        "../../lib/playerutil": 29,
        "../base/event/eventtype": 43
    }],
    92: [function (e, t, i) {
        var r = e("../../lib/io"), o = e("../../lib/url"), n = e("../../lib/vtt/thumbnailvtt"),
            a = e("../base/event/eventtype"), s = function (e) {
                this._player = e, this.cues = [], this.baseUrl = "";
                var t = this;
                e.on(a.Private.ChangeURL, function () {
                    t.cues = [], t.baseUrl = ""
                })
            };
        (s.prototype = {
            get: function (e) {
                var t = this;
                this.baseUrl = function (e) {
                    var t = o.parseUrl(e);
                    if (t) {
                        var i = t.segments;
                        if (i && 0 < i.length) {
                            var r = i[i.length - 1];
                            baseUrl = e.replace(r, "")
                        }
                    }
                    return baseUrl
                }(e), r.get(e, function (e) {
                    e && n.parse(e, function (e) {
                        t.cues = e, t._player.trigger(a.Private.ThumbnailLoaded, e)
                    })
                }, function (e) {
                    console.log(e)
                })
            }, findAvailableCue: function (e) {
                for (var t = this.cues.length, i = 0; i < t; i++) {
                    var r = this.cues[i];
                    if (r.startTime <= e && e < r.endTime) return r
                }
                return null
            }, makeUrl: function (e) {
                return -1 == e.indexOf("://") && (e = this.baseUrl + e), e
            }
        }).dispose = function () {
            this._player = null
        }, t.exports = s
    }, {"../../lib/io": 24, "../../lib/url": 32, "../../lib/vtt/thumbnailvtt": 34, "../base/event/eventtype": 43}],
    93: [function (e, t, i) {
        var a = e("../base/player"), s = e("../hls/hlsinjector"), r = e("../../lib/io"), o = a.extend({
            init: function (e, t) {
                a.call(this, e, t), this.loadVideoInfo()
            }
        });
        o.prototype.loadVideoInfo = function (i) {
            this.trigger("error_hide");
            var o = this._options.vid, n = this;
            if (!o) throw new Error("PrismPlayer Error: vid should not be null!");
            r.jsonp("//tv.taobao.com/player/json/getBaseVideoInfo.do?vid=" + o + "&playerType=3", function (e) {
                if (1 !== e.status || !e.data.source) throw new Error("PrismPlayer Error: #vid:" + o + " cannot find video resource!");
                var t, r = -1;
                _.each(e.data.source, function (e, t) {
                    var i = +e.substring(1);
                    r < i && (r = i)
                }), t = e.data.source["v" + r], t = _.unescape(t), n._options.source = t, s.inject(n, TaobaoTVPlayer, a.prototype, n._options), n.initPlay(), i && i()
            }, function () {
                throw new Error("PrismPlayer Error: network error!")
            })
        }, o.prototype.loadByVid = function (e) {
            this._options.vid = e;
            var t = this;
            if (!e) throw new Error("PrismPlayer Error: vid should not be null!");
            this._monitor && this._monitor.updateVideoInfo({
                video_id: e,
                album_id: data.data.baseInfo.aid,
                source: src,
                from: t._options.from
            }), this._options.autoplay = !0, this.loadVideoInfo(function () {
                t.cover && t._options.autoplay && (Dom.css(t.cover, "display", "none"), delete t.cover), t.tag.play()
            })
        }, t.exports = o
    }, {"../../lib/io": 24, "../base/player": 62, "../hls/hlsinjector": 73}],
    94: [function (e, t, i) {
        var r = e("../lib/oo"), o = e("../lib/data"), a = e("../lib/object"), n = e("../lib/dom"),
            s = e("../lib/event"), l = e("../lib/function"), u = e("../lib/layout"),
            c = (e("../lib/constants"), e("../lib/util"), e("../player/base/event/eventtype")),
            d = e("./component/util"), p = r.extend({
                init: function (e, t) {
                    var i = this;
                    this._player = e, this._eventState = "", this._options = a.copy(t), this._el = this.createEl();
                    var r = e.id;
                    "function" == typeof e.id && (r = e.id()), this._id = r + "_component_" + o.guid(), this._children = [], this._childIndex = {}, this._player.on(c.Private.UiH5Ready, function () {
                        i.renderUI(), i.syncUI(), i.bindEvent()
                    })
                }
            });
        p.prototype.renderUI = function () {
            u.render(this.el(), this.options()), this.el().id = this.id()
        }, p.prototype.syncUI = function () {
        }, p.prototype.bindEvent = function () {
        }, p.prototype.createEl = function (e, t) {
            return n.createEl(e, t)
        }, p.prototype.options = function (e) {
            return void 0 === e ? this._options : this._options = a.merge(this._options, e)
        }, p.prototype.el = function () {
            return this._el
        }, p.prototype._contentEl, p.prototype.player = function () {
            return this._player
        }, p.prototype.contentEl = function () {
            return this._contentEl || this._el
        }, p.prototype._id, p.prototype.id = function () {
            return this._id
        }, p.prototype.getId = function () {
            return this._id
        }, p.prototype.addChild = function (e, t) {
            var i;
            if ("string" == typeof e) {
                if (!this._player.UI[e]) return;
                i = new this._player.UI[e](this._player, t)
            } else i = e;
            if (this._children.push(i), "function" == typeof i.id && (this._childIndex[i.id()] = i), "function" == typeof i.el && i.el()) {
                var r = i.el();
                r.id = i.id(), this.contentEl().appendChild(r)
            }
            return i
        }, p.prototype.removeChild = function (e) {
            if (e && this._children) {
                for (var t = !1, i = this._children.length - 1; 0 <= i; i--) if (this._children[i] === e) {
                    t = !0, this._children.splice(i, 1);
                    break
                }
                if (t) {
                    this._childIndex[e.id] = null;
                    var r = e.el();
                    r && r.parentNode === this.contentEl() && this.contentEl().removeChild(e.el())
                }
            }
        }, p.prototype.initChildren = function () {
            var i, e, t, r, o;
            if (e = (i = this).options().children) if (a.isArray(e)) for (var n = 0; n < e.length; n++) o = "string" == typeof(t = e[n]) ? (r = t, {}) : (r = t.name, t), i.addChild(r, o); else a.each(e, function (e, t) {
                !1 !== t && i.addChild(e, t)
            })
        }, p.prototype.on = function (e, t) {
            return s.on(this._el, e, l.bind(this, t)), this
        }, p.prototype.off = function (e, t) {
            return s.off(this._el, e, t), this
        }, p.prototype.one = function (e, t) {
            return s.one(this._el, e, l.bind(this, t)), this
        }, p.prototype.trigger = function (e, t) {
            if (this._el) return (t || 0 == t) && (this._el.paramData = t), this._eventState = e, s.trigger(this._el, e), this
        }, p.prototype.off = function (e) {
            return s.off(this._el, e), this
        }, p.prototype.addClass = function (e) {
            return n.addClass(this._el, e), this
        }, p.prototype.removeClass = function (e) {
            return n.removeClass(this._el, e), this
        }, p.prototype.show = function () {
            return this._el.style.display = "block", this
        }, p.prototype.hide = function () {
            return this._el.style.display = "none", this
        }, p.prototype.destroy = function () {
            if (this.trigger({
                type: "destroy",
                bubbles: !1
            }), this._children) for (var e = this._children.length - 1; 0 <= e; e--) this._children[e].destroy && this._children[e].destroy();
            "function" == typeof this.disposeUI && this.disposeUI(), this.children_ = null, this.childIndex_ = null, this.off(), this._el.parentNode && this._el.id != this._player.id() && this._el.parentNode.removeChild(this._el), o.removeData(this._el), this._el = null
        }, p.prototype.registerControlBarTooltip = d.registerTooltipEvent, t.exports = p
    }, {
        "../lib/constants": 15,
        "../lib/data": 17,
        "../lib/dom": 18,
        "../lib/event": 19,
        "../lib/function": 20,
        "../lib/layout": 25,
        "../lib/object": 26,
        "../lib/oo": 27,
        "../lib/util": 33,
        "../player/base/event/eventtype": 43,
        "./component/util": 121
    }],
    95: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/dom"), n = e("../../lib/event"),
            a = e("../../player/base/event/eventtype"), s = e("../../player/base/plugin/status"), l = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-big-play-btn")
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = '<div class="outter"></div>', e
                }, bindEvent: function () {
                    var t = this;
                    this._player.on(a.Player.Play, function () {
                        t.addClass("playing"), t.removeClass("pause"), t._hide()
                    }), this._player.on(a.Player.Pause, function () {
                        if (!t._player._switchSourcing) {
                            t.removeClass("playing"), t.addClass("pause");
                            var e = t._player._status;
                            e != s.ended && e != s.error && e != s.playing && t._show()
                        }
                    });
                    var e = document.querySelector("#" + t.id() + " .outter");
                    n.on(this.el(), "mouseover", function () {
                        o.addClass(e, "big-playbtn-hover-animation")
                    }), n.on(this.el(), "mouseout", function () {
                        o.removeClass(e, "big-playbtn-hover-animation")
                    }), this.on(a.Private.PlayClick, function () {
                        if (t._player.paused()) {
                            var e = t._player.getCurrentTime();
                            (t._player.getDuration() <= e || t._player._ended || t._player.exceedPreviewTime(e)) && t._player.seek(0), t._player.play(!0)
                        } else t._player.pause(!0)
                    }), this._player.on(a.Private.Play_Btn_Show, function () {
                        t._show()
                    }), this._player.on(a.Private.Play_Btn_Hide, function () {
                        t._hide()
                    })
                }, _show: function () {
                    o.css(this.el(), "display", "block")
                }, _hide: function () {
                    o.css(this.el(), "display", "none")
                }
            });
        t.exports = l
    }, {
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../player/base/event/eventtype": 43,
        "../../player/base/plugin/status": 66,
        "../component": 94
    }],
    96: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/dom"), n = e("./util"), a = e("../../lang/index"),
            s = e("../../player/base/event/eventtype"), l = r.extend({
                init: function (e, t) {
                    this.isOpened = !1, r.call(this, e, t), this.addClass(t.className || "prism-cc-btn")
                }, createEl: function () {
                    return r.prototype.createEl.call(this, "div")
                }, bindEvent: function () {
                    var i = this;
                    this.on("click", function () {
                        o.addClass(i._el, "disabled");
                        var e = "on", t = "";
                        i.isOpened ? (i._player._ccService.close(), e = "off") : t = i._player._ccService.open(), i.isOpened = !i.isOpened, i._player.trigger(s.Private.CCStateChanged, {
                            value: e,
                            lang: t
                        }), i.disabledHandler && clearTimeout(i.disabledHandler), i.disabledHandler = setTimeout(function () {
                            o.removeClass(i._el, "disabled")
                        }, 1e3), i._player.trigger(s.Private.MarkerTextHide)
                    }), this._player.on(s.Private.CCChanged, function (e) {
                        var t = e.paramData;
                        i.isOpened = "off" != t
                    }), n.registerTooltipEvent.call(this, this.el(), function () {
                        return i.isOpened ? a.get("CloseSubtitle") : a.get("OpenSubtitle")
                    })
                }, disposeUI: function () {
                    this.disabledHandler && (clearTimeout(this.disabledHandler), this.disabledHandler = null)
                }
            });
        t.exports = l
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../player/base/event/eventtype": 43,
        "../component": 94,
        "./util": 121
    }],
    97: [function (e, t, i) {
        var r = e("../component"), n = e("../../player/base/event/eventtype"), a = e("../../lib/event"),
            s = e("../../lib/dom"), o = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-controlbar"), this.initChildren(), this.onEvent()
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this);
                    return e.innerHTML = '<div class="prism-controlbar-bg"></div>', e
                }, onEvent: function () {
                    var i = this.player(), e = i.options(), r = this;
                    a.on(this._el, "mouseover", function () {
                        var e = document.querySelector("#" + r.id() + " .prism-progress-cursor");
                        s.css(e, "display", "block")
                    }), a.on(this._el, "mouseout", function (e) {
                        var t = document.querySelector("#" + r.id() + " .prism-progress-cursor");
                        s.css(t, "display", "none"), i.trigger(n.Private.ThumbnailHide)
                    }), this.timer = null;
                    var t = e.controlBarVisibility;
                    if (1 == e.controlBarForOver && (t = "hover"), "hover" == t) {
                        r.hide();
                        var o = function () {
                            r._hideHandler && clearTimeout(r._hideHandler), r._show(), i.fullscreenService.getIsFullScreen() && r._hide()
                        };
                        i.on(n.Private.MouseOver, function () {
                            o()
                        }), a.on(this._player.tag, "click", function (e) {
                            e && e.target == e.currentTarget && o()
                        }), a.on(this._player.tag, "touchstart", function (e) {
                            e && e.target == e.currentTarget && o()
                        }), i.on(n.Private.MouseOut, function () {
                            r._hideHandler = setTimeout(function () {
                                r.hide(), i.trigger(n.Private.HideBar), i.trigger(n.Private.VolumeVisibilityChange, ""), i.trigger(n.Private.SettingListHide)
                            })
                        })
                    } else "click" == t ? (i.on(n.Private.Click, function (e) {
                        i._isError || (e.preventDefault(), e.stopPropagation(), r._show(), r._hide())
                    }), i.on(n.Player.Ready, function () {
                        r._hide()
                    }), i.on(n.Private.TouchStart, function () {
                        r._show()
                    }), i.on(n.Private.TouchMove, function () {
                        r._show()
                    }), i.on(n.Private.TouchEnd, function () {
                        r._hide()
                    })) : r._show()
                }, _show: function () {
                    this.show(), this._player.trigger(n.Private.ShowBar), this.timer && (clearTimeout(this.timer), this.timer = null)
                }, _hide: function () {
                    var e = this, t = this.player().options().showBarTime;
                    this.timer = setTimeout(function () {
                        e.hide(), e._player.trigger(n.Private.HideBar), e._player.trigger(n.Private.VolumeVisibilityChange, ""), e._player.trigger(n.Private.SettingListHide)
                    }, t)
                }, disposeUI: function () {
                    this.timer && (clearTimeout(this.timer), this.timer = null), this._hideHandler && (clearTimeout(this._hideHandler), this._hideHandler = null)
                }
            });
        t.exports = o
    }, {"../../lib/dom": 18, "../../lib/event": 19, "../../player/base/event/eventtype": 43, "../component": 94}],
    98: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/dom"), n = e("../../player/base/event/eventtype"), a = r.extend({
            init: function (e, t) {
                r.call(this, e, t), this.addClass(t.className || "prism-cover")
            }, createEl: function () {
                var e = r.prototype.createEl.call(this, "div"), t = this.options().cover;
                return t ? e.style.backgroundImage = "url(" + t + ")" : o.css(e, "display", "none"), e
            }, _hide: function (e) {
                var t = document.querySelector("#" + this.id() + " .prism-cover");
                t && o.css(t, "display", "none")
            }, _show: function (e) {
                var t = document.querySelector("#" + this.id() + " .prism-cover");
                t && o.css(t, "display", "block")
            }, bindEvent: function () {
                this._player.on(n.Private.Cover_Show, this._show), this._player.on(n.Private.Cover_Hide, this._hide)
            }
        });
        t.exports = a
    }, {"../../lib/dom": 18, "../../player/base/event/eventtype": 43, "../component": 94}],
    99: [function (e, t, i) {
        var r = e("../component"), h = e("../../lib/util"), f = e("../../lib/dom"), o = e("../../lib/event"),
            n = e("../../lib/ua"), _ = e("../../lang/index"), a = e("../../player/base/event/eventtype"), s = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-ErrorMessage", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = "<div class='prism-error-content'><p></p></div><div class='prism-error-operation'><a class='prism-button prism-button-refresh'>" + _.get("Refresh_Text") + "</a><a class='prism-button prism-button-retry'  target='_blank'>" + _.get("Retry") + "</a><a class='prism-button prism-button-orange'  target='_blank'>" + _.get("Detection_Text") + "</a></div><div class='prism-detect-info prism-center'><p class='errorCode'><span class='info-label'>code\uff1a</span><span class='info-content'></span></p><p class='vid'><span class='info-label'>vid:</span><span class='info-content'></span></p><p class='uuid'><span class='info-label'>uuid:</span><span class='info-content'></span></p><p class='requestId'><span class='info-label'>requestId:</span><span class='info-content'></span></p><p class='dateTime'><span class='info-label'>" + _.get("Play_DateTime") + "\uff1a</span><span class='info-content'></span></p></div>", e
                }, bindEvent: function () {
                    var i = this;
                    i._player.on(a.Private.Error_Show, function (e) {
                        var t = null;
                        i._player.getMonitorInfo && (t = i._player.getMonitorInfo()), i._show(e, t)
                    }), i._player.on(a.Private.Error_Hide, function () {
                        i._hide()
                    });
                    var e = document.querySelector("#" + i.id() + " .prism-button-refresh");
                    if (o.on(e, "click", function () {
                        location.reload(!0)
                    }), n.IS_MOBILE) {
                        e = document.querySelector("#" + i.id() + " .prism-detect-info");
                        f.addClass(e, "prism-width90")
                    }
                    var t = document.querySelector("#" + i.id() + " .prism-button-retry");
                    o.on(t, "click", function () {
                        var e = i._player.getCurrentTime(), t = i._player._options.source;
                        i._player._setDefaultCC = !0, i._player._loadByUrlInner(t, e, !0)
                    })
                }, _show: function (e, t) {
                    var i = e.paramData, r = "", o = "";
                    i.mediaId && (r = i.mediaId);
                    var n = document.querySelector("#" + this.id() + " .prism-button-orange");
                    if (n) {
                        if (t && this._player._options.diagnosisButtonVisible) {
                            t.vu ? o = decodeURIComponent(t.vu) : f.css(n, "display", "none");
                            var a = "//player.alicdn.com/detection.html?from=h5&vid=" + r + "&source=" + (o ? encodeURIComponent(o) : "") + "&uuid=" + t.uuid + "&lang=" + _.getCurrentLanguage();
                            n && (n.href = a)
                        } else f.css(n, "display", "none");
                        var s = i.display_msg || i.error_msg;
                        document.querySelector("#" + this.id() + " .prism-error-content p").innerHTML = s, document.querySelector("#" + this.id() + " .errorCode .info-content").innerText = i.error_code;
                        var l = document.querySelector("#" + this.id() + " .vid");
                        if (i.mediaId ? (f.css(l, "display", "block"), document.querySelector("#" + this.id() + " .vid .info-content").innerText = i.mediaId) : f.css(l, "display", "none"), i.uuid) document.querySelector("#" + this.id() + " .uuid .info-content").innerText = i.uuid; else {
                            var u = document.querySelector("#" + this.id() + " .uuid");
                            f.css(u, "display", "none")
                        }
                        if (i.requestId) document.querySelector("#" + this.id() + " .requestId .info-content").innerText = i.requestId; else {
                            var c = document.querySelector("#" + this.id() + " .requestId");
                            f.css(c, "display", "none")
                        }
                        document.querySelector("#" + this.id() + " .dateTime .info-content").innerText = h.formatDate(new Date, "yyyy-MM-dd HH:mm:ss");
                        var d = document.querySelector("#" + this.id());
                        f.css(d, "display", "block");
                        var p = this;
                        p.playHideHandler && clearTimeout(p.playHideHandler), p.playHideHandler = setTimeout(function () {
                            p._player.trigger("play_btn_hide")
                        })
                    }
                }, _hide: function () {
                    var e = document.querySelector("#" + this.id());
                    f.css(e, "display", "none")
                }, disposeUI: function () {
                    this.playHideHandler && (clearTimeout(this.playHideHandler), this.playHideHandler = null)
                }
            });
        t.exports = s
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../../player/base/event/eventtype": 43,
        "../component": 94
    }],
    100: [function (e, t, i) {
        var r = e("../component"), o = e("../../player/base/event/eventtype"),
            n = (e("../../lib/event"), e("../../lib/ua")), a = e("../../lang/index"), s = e("./util"), l = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-fullscreen-btn")
                }, bindEvent: function () {
                    var e = this;
                    this._player.on(o.Player.RequestFullScreen, function () {
                        n.IS_IOS || e.addClass("fullscreen")
                    }), this._player.on(o.Player.CancelFullScreen, function () {
                        e.removeClass("fullscreen")
                    }), s.registerTooltipEvent.call(this, this.el(), function () {
                        return e._player.fullscreenService.getIsFullScreen() ? a.get("ExistFullScreen") : a.get("Fullscreen")
                    }), this.on("click", function () {
                        e._player.fullscreenService.getIsFullScreen() ? e._player.fullscreenService.cancelFullScreen() : e._player.fullscreenService.requestFullScreen(), e._player.trigger(o.Private.MarkerTextHide)
                    })
                }
            });
        t.exports = l
    }, {
        "../../lang/index": 11,
        "../../lib/event": 19,
        "../../lib/ua": 31,
        "../../player/base/event/eventtype": 43,
        "../component": 94,
        "./util": 121
    }],
    101: [function (e, t, i) {
        "use strict";
        var r = e("../component"), o = e("../../lib/dom"), n = e("../../player/base/event/eventtype"), a = r.extend({
            init: function (e, t) {
                r.call(this, e, t), this.addClass(t.className || "prism-hide")
            }, createEl: function () {
                var e = r.prototype.createEl.call(this, "div");
                return e.innerHTML = '<div class="circle"></div> <div class="circle1"></div>', e
            }, _loading_hide: function (e) {
                var t = document.querySelector("#" + this.id() + " .prism-loading");
                t && (o.removeClass(t, "prism-loading"), o.addClass(t, "prism-hide"))
            }, _loading_show: function (e) {
                var t = document.querySelector("#" + this.id() + " .prism-hide");
                t && (o.removeClass(t, "prism-hide"), o.addClass(t, "prism-loading"))
            }, bindEvent: function () {
                this._player.on(n.Private.H5_Loading_Show, this._loading_show), this._player.on(n.Private.H5_Loading_Hide, this._loading_hide)
            }
        });
        t.exports = a
    }, {"../../lib/dom": 18, "../../player/base/event/eventtype": 43, "../component": 94}],
    102: [function (e, t, i) {
        var r = e("../component"), o = (e("../../lib/util"), e("../../lib/dom")),
            n = (e("../../lib/event"), e("../../lib/ua"), e("../../lang/index"), e("../../player/base/event/eventtype")),
            a = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-info-display", this.addClass(this.className)
                }, createEl: function () {
                    return r.prototype.createEl.call(this, "p")
                }, bindEvent: function () {
                    var r = this;
                    r._player.on(n.Private.Info_Show, function (e) {
                        var t = document.querySelector("#" + r.id()), i = e.paramData;
                        i && (void 0 !== i.text && i.text ? (t.innerHTML = i.text, void 0 !== i.duration && i.duration && (r.handler && clearTimeout(r.handler), r.handler = setTimeout(function () {
                            o.css(t, "display", "none")
                        }, i.duration)), "lb" == i.align ? (o.addClass(t, "prism-info-left-bottom"), o.removeClass(t, "prism-info-top-center")) : "tc" == i.align ? (o.addClass(t, "prism-info-top-center"), o.removeClass(t, "prism-info-left-bottom")) : (o.removeClass(t, "prism-info-left-bottom"), o.removeClass(t, "prism-info-top-center")), i.isBlack ? o.addClass(t, "prism-info-black") : o.removeClass(t, "prism-info-black")) : t.innerHTML = i, o.css(t, "display", "block"))
                    }), r._player.on(n.Private.Info_Hide, function (e) {
                        var t = document.querySelector("#" + r.id());
                        o.css(t, "display", "none")
                    })
                }, disposeUI: function () {
                    this.handler && (clearTimeout(this.handler), this.handler = null)
                }
            });
        t.exports = a
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../../player/base/event/eventtype": 43,
        "../component": 94
    }],
    103: [function (e, t, i) {
        var r = e("../component"), o = e("./util"), n = (e("../../lib/util"), e("../../lib/dom")),
            a = e("../../lib/event"), s = e("../../lib/playerUtil"), l = e("../../lang/index"), u = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-live-display", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "p");
                    return e.innerText = "LIVE", s.isLiveShift(this._player._options) && n.addClass(e, "live-shift-display"), e
                }, bindEvent: function () {
                    var e = document.querySelector("#" + this.id()), t = this;
                    s.isLiveShift(this._player._options) && (a.on(e, "click", function () {
                        t._player._liveshiftService.switchToLive()
                    }), o.registerTooltipEvent.call(this, this.el(), l.get("SwitchToLive")))
                }
            });
        t.exports = u
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/playerUtil": 28,
        "../../lib/util": 33,
        "../component": 94,
        "./util": 121
    }],
    104: [function (e, t, i) {
        var r = e("../component"),
            o = (e("../../lib/dom"), e("../../lib/event"), e("../../player/base/event/eventtype")),
            n = e("../../player/base/plugin/status"), a = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-animation")
                }, bindEvent: function () {
                    var t = this;
                    this._player.on(o.Player.Play, function () {
                        t._player._isManualPlay && (t.removeClass("prism-pause-animation"), t.addClass("prism-play-animation"), t.removeClass("play-apply-animation"), t.playHandler && clearTimeout(t.playHandler), t.playHandler = setTimeout(function () {
                            t.addClass("play-apply-animation")
                        }))
                    }), this._player.on(o.Player.Pause, function () {
                        var e = t._player._status;
                        e != n.ended && e != n.error && t._player._isManualPause && (t.removeClass("prism-play-animation"), t.addClass("prism-pause-animation"), t.removeClass("play-apply-animation"), t.pauseHandler && clearTimeout(t.pauseHandler), t.pauseHandler = setTimeout(function () {
                            t.addClass("play-apply-animation")
                        }))
                    })
                }, disposeUI: function () {
                    this.playHandler && (clearTimeout(this.playHandler), this.playHandler = null), this.pauseHandler && (clearTimeout(this.pauseHandler), this.pauseHandler = null)
                }
            });
        t.exports = a
    }, {
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../player/base/event/eventtype": 43,
        "../../player/base/plugin/status": 66,
        "../component": 94
    }],
    105: [function (e, t, i) {
        var r = e("../component"), o = e("../../player/base/event/eventtype"), n = e("./util"),
            a = e("../../lang/index"), s = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-play-btn")
                }, bindEvent: function () {
                    var t = this;
                    this._player.on(o.Player.Play, function () {
                        t.addClass("playing")
                    }), this._player.on(o.Player.Pause, function () {
                        t.removeClass("playing")
                    }), this.on(o.Private.PlayClick, function () {
                        if (t._player.paused()) {
                            var e = t._player.getCurrentTime();
                            (t._player.getDuration() <= e || t._player._ended || t._player.exceedPreviewTime(e)) && t._player.seek(0), t._player.play(!0), t.addClass("playing")
                        } else t._player.pause(!0), t.removeClass("playing");
                        t._player.trigger(o.Private.MarkerTextHide)
                    }), n.registerTooltipEvent.call(this, this.el(), function () {
                        return t._player.paused() ? a.get("Play") : a.get("Pause")
                    })
                }
            });
        t.exports = s
    }, {"../../lang/index": 11, "../../player/base/event/eventtype": 43, "../component": 94, "./util": 121}],
    106: [function (e, t, i) {
        var r = e("../component"), a = e("../../lib/dom"), n = (e("../../lib/constants"), e("../../lib/event")),
            s = e("../../lib/ua"), l = e("../../lib/function"), o = e("../../lang/index"), u = e("../../config"),
            c = e("../../lib/util"), d = e("../../player/base/event/eventtype"), p = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-progress", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this);
                    return e.innerHTML = '<div class="prism-progress-loaded"></div><div class="prism-progress-played"></div><div class="prism-progress-marker"></div><div class="prism-progress-cursor"><img></img></div><p class="prism-progress-time"></p>', e
                }, bindEvent: function () {
                    var t = this;
                    this.loadedNode = document.querySelector("#" + this.id() + " .prism-progress-loaded"), this.playedNode = document.querySelector("#" + this.id() + " .prism-progress-played"), this.cursorNode = document.querySelector("#" + this.id() + " .prism-progress-cursor"), this.timeNode = document.querySelector("#" + this.id() + " .prism-progress-time"), this.timeNode = document.querySelector("#" + this._player._options.id + " .prism-progress-time");
                    var i = document.querySelector("#" + this.id()),
                        e = document.querySelector("#" + this.id() + " .prism-progress-cursor img"),
                        r = "https://" + u.domain + "/de/prismplayer/" + u.h5Version + "/skins/default/img/dragcursor.png";
                    u.domain ? -1 < u.domain.indexOf("localhost") && (r = "//" + u.domain + "/build/skins/default/img/dragcursor.png") : r = "de/prismplayer/" + u.h5Version + "/skins/default/img/dragcursor.png", e.src = r, n.on(this.cursorNode, "mousedown", function (e) {
                        t._onMouseDown(e)
                    }), n.on(this.cursorNode, "touchstart", function (e) {
                        t._onMouseDown(e)
                    }), n.on(i, "mousemove", function (e) {
                        t._progressMove(e)
                    }), n.on(i, "touchmove", function (e) {
                        t._progressMove(e)
                    });
                    var o = function (e) {
                        t._progressDown = e
                    };
                    n.on(i, "mousedown", function (e) {
                        o(!0)
                    }), n.on(i, "touchstart", function (e) {
                        o(!0)
                    }), n.on(i, "mouseup", function (e) {
                        o(!1)
                    }), n.on(i, "touchend", function (e) {
                        o(!1)
                    }), n.on(this._el, "click", function (e) {
                        t._onMouseClick(e)
                    }), this._player.on(d.Private.HideProgress, function (e) {
                        t._hideProgress(e)
                    }), this._player.on(d.Private.CancelHideProgress, function (e) {
                        t._cancelHideProgress(e)
                    }), n.on(i, d.Private.MouseOver, function (e) {
                        t._onMouseOver(e)
                    }), n.on(i, d.Private.MouseOut, function (e) {
                        t._onMouseOut(e)
                    }), n.on(this.controlNode, d.Private.MouseLeave, function (e) {
                        t._offMouseUp()
                    }), s.IS_PC ? (n.on(i, "mouseover", function () {
                        a.addClass(i, "prism-progress-hover"), a.addClass(t.cursorNode, "cursor-hover")
                    }), n.on(i, "mouseout", function (e) {
                        a.removeClass(i, "prism-progress-hover"), a.removeClass(t.cursorNode, "cursor-hover"), t._progressDown = !1
                    })) : (a.addClass(i, "prism-progress-hover"), a.addClass(t.cursorNode, "cursor-hover")), this.bindTimeupdate = l.bind(this, this._onTimeupdate), this._player.on(d.Player.TimeUpdate, this.bindTimeupdate), s.IS_IPAD ? this.interval = setInterval(function () {
                        t._onProgress()
                    }, 500) : this._player.on(d.Video.Progress, function () {
                        t._onProgress()
                    })
                }, _progressMove: function (e) {
                    e.preventDefault();
                    var t = this._getSeconds(e);
                    if (t != 1 / 0) {
                        var i = c.formatTime(t), r = this._getDistance(e);
                        this.cursorNode && (this._player.trigger(d.Private.ThumbnailShow, {
                            time: t,
                            formatTime: i,
                            left: r,
                            progressWidth: this.el().offsetWidth
                        }), this._progressDown && this._onMouseMove(e))
                    }
                }, _hideProgress: function (e) {
                    n.off(this.cursorNode, "mousedown"), n.off(this.cursorNode, "touchstart")
                }, _cancelHideProgress: function (e) {
                    var t = this;
                    n.on(this.cursorNode, "mousedown", function (e) {
                        t._onMouseDown(e)
                    }), n.on(this.cursorNode, "touchstart", function (e) {
                        t._onMouseDown(e)
                    })
                }, _canSeekable: function (e) {
                    var t = !0;
                    return "function" == typeof this._player.canSeekable && (t = this._player.canSeekable(e)), t
                }, _onMouseOver: function (e) {
                    this._cursorHideHandler && (clearTimeout(this._cursorHideHandler), this._cursorHideHandler = null), this._mouseInProgress || this._updateCursorPosition(this._player.getCurrentTime()), this._mouseInProgress = !0
                }, _onMouseOut: function (e) {
                    var t = this;
                    this._cursorHideHandler && clearTimeout(this._cursorHideHandler), this._cursorHideHandler = setTimeout(function () {
                        t._player.trigger(d.Private.ThumbnailHide), t._mouseInProgress = !1
                    })
                }, _getSeconds: function (e) {
                    var t = this._getDistance(e), i = this.el().offsetWidth,
                        r = this._player.getDuration() ? t / i * this._player.getDuration() : 0;
                    return r < 0 && (r = 0), r > this._player.getDuration() && (r = this._player.getDuration()), r
                }, _getDistance: function (e) {
                    for (var t = this.el().offsetLeft, i = this.el(); i = i.offsetParent;) {
                        var r = a.getTranslateX(i);
                        t += i.offsetLeft + r
                    }
                    var o = e.touches ? e.touches[0].pageX : e.pageX;
                    return Math.abs(o - t)
                }, _onMouseClick: function (e) {
                    var t = this, i = t._getSeconds(e);
                    if (t._canSeekable(i)) {
                        t._player.exceedPreviewTime(i) && (i = t._player.getPreviewTime()), t._updateCursorPosition(i);
                        this._mouseClickTimeHandle && clearTimeout(this._mouseClickTimeHandle), this._mouseClickTimeHandle = setTimeout(function () {
                            t._player._seeking = !0, t._player.trigger(d.Private.SeekStart, {fromTime: t._player.getCurrentTime()}), t._player.seek(i), t._player.trigger(d.Private.EndStart, {toTime: i}), t._mouseClickTimeHandle = null, t._inWaitingSeek = !1
                        }, 300), this._inWaitingSeek = !0
                    } else t._player.trigger(d.Private.Info_Show, {text: o.get("Can_Not_Seekable"), duration: 2e3})
                }, _onMouseDown: function (e) {
                    var t = this;
                    e.preventDefault(), this._player.trigger(d.Private.SeekStart, {fromTime: this._player.getCurrentTime()}), n.on(this.controlNode, "mousemove", function (e) {
                        t._onMouseMove(e)
                    }), n.on(this.controlNode, "touchmove", function (e) {
                        t._onMouseMove(e)
                    }), n.on(this._player.tag, "mouseup", function (e) {
                        t._onPlayerMouseUp(e)
                    }), n.on(this._player.tag, "touchend", function (e) {
                        t._onPlayerMouseUp(e)
                    }), n.on(this.controlNode, "mouseup", function (e) {
                        t._onControlBarMouseUp(e)
                    }), n.on(this.controlNode, "touchend", function (e) {
                        t._onControlBarMouseUp(e)
                    })
                }, _onMouseUp: function (e) {
                    this._onMouseUpIntern(e)
                }, _onControlBarMouseUp: function (e) {
                    this._onMouseUpIntern(e)
                }, _onPlayerMouseUp: function (e) {
                    this._onMouseUpIntern(e)
                }, _offMouseUp: function () {
                    n.off(this.controlNode, "mousemove"), n.off(this.controlNode, "touchmove"), n.off(this._player.tag, "mouseup"), n.off(this._player.tag, "touchend"), n.off(this.controlNode, "mouseup"), n.off(this.controlNode, "touchend")
                }, _onMouseUpIntern: function (e) {
                    e.preventDefault(), this._offMouseUp();
                    var t = this.playedNode.offsetWidth / this.el().offsetWidth * this._player.getDuration();
                    this._player.getDuration();
                    isNaN(t) || this._player.seek(t), this._player.trigger(d.Private.EndStart, {toTime: t})
                }, _onMouseMove: function (e) {
                    e.preventDefault();
                    var t = this._getSeconds(e);
                    this._player.exceedPreviewTime(t) && (t = this._player.getPreviewTime()), this._player.seek(t), this._updateProgressBar(this.playedNode, t), this._updateCursorPosition(t)
                }, _onTimeupdate: function (e) {
                    this._inWaitingSeek || this._player._seeking || this._progressDown || (this._updateProgressBar(this.playedNode, this._player.getCurrentTime()), this._updateCursorPosition(this._player.getCurrentTime()), this._player.trigger(d.Private.UpdateProgressBar, {time: this._player.getCurrentTime()}))
                }, _onProgress: function (e) {
                    this._player.getDuration() && 1 <= this._player.getBuffered().length && this._updateProgressBar(this.loadedNode, this._player.getBuffered().end(this._player.getBuffered().length - 1))
                }, _updateProgressBar: function (e, t) {
                    var i = this._player.getDuration();
                    if (1 != this._player._switchSourcing && i) {
                        var r = t / i + .005;
                        1 < r && (r = 1), e && a.css(e, "width", 100 * r + "%")
                    }
                }, _updateCursorPosition: function (e) {
                    var t = this._player.getDuration();
                    if (1 != this._player._switchSourcing && t) {
                        var i = 1, r = this._player.el().clientWidth, o = 10 / r, n = e / t - o;
                        0 != r && (i = 1 - o), n = n < 0 ? 0 : n, this.cursorNode && (i < n ? (a.css(this.cursorNode, "right", "0px"), a.css(this.cursorNode, "left", "auto")) : (a.css(this.cursorNode, "right", "auto"), a.css(this.cursorNode, "left", 100 * n + "%")))
                    }
                }, disposeUI: function () {
                    this.cursorNodeHandler && (clearTimeout(this.cursorNodeHandler), this.cursorNodeHandler = null), this._cursorHideHandler && (clearTimeout(this._cursorHideHandler), this._cursorHideHandler = null), this._mouseClickTimeHandle && (clearTimeout(this._mouseClickTimeHandle), this._mouseClickTimeHandle = null)
                }
            });
        t.exports = p
    }, {
        "../../config": 5,
        "../../lang/index": 11,
        "../../lib/constants": 15,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/function": 20,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../../player/base/event/eventtype": 43,
        "../component": 94
    }],
    107: [function (e, t, i) {
        var r = e("../component"), o = (e("../../lib/util"), e("../../lib/dom")), n = e("../../lib/event"),
            a = e("../../player/base/event/eventtype"), s = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-marker-text", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = "<p></p>", e
                }, bindEvent: function () {
                    var r = this;
                    r._player.on(a.Private.MarkerTextShow, function (e) {
                        var t = e.paramData, i = a.Player.MarkerDotOver;
                        if (r._player.trigger(i, e.paramData), t.progressMarker.isCustomized) r._player.trigger(a.Private.LifeCycleChanged, {
                            type: i,
                            data: e.paramData
                        }); else {
                            r._thumbnailShowHanlde && (o.css(r.el(), "display", "none"), clearTimeout(r._thumbnailShowHanlde)), r._thumbnailShowHanlde = setTimeout(function () {
                                if (document.querySelector("#" + r.id() + " p").innerText = t.progressMarker.text || "", t) {
                                    o.css(r.el(), "display", "block");
                                    var e = r._player.el().offsetWidth;
                                    left = e * t.left, width = r.el().offsetWidth, left + width > e ? (o.css(r.el(), "right", "0px"), o.css(r.el(), "left", "auto")) : (left -= width / 2, left = left < 0 ? 0 : left, o.css(r.el(), "right", "auto"), o.css(r.el(), "left", left + "px"))
                                }
                            }, 30)
                        }
                    }), r._player.on(a.Private.MarkerTextHide, function (e) {
                        r._player.trigger(a.Player.MarkerDotOut), r._player.trigger(a.Private.LifeCycleChanged, {
                            type: a.Player.MarkerDotOut,
                            data: ""
                        }), r._thumbnailShowHanlde && clearTimeout(r._thumbnailShowHanlde), o.css(r.el(), "display", "none")
                    }), n.on(r._player.tag, "click", function (e) {
                        e && e.target == e.currentTarget && r._player.trigger(a.Private.MarkerTextHide)
                    }), n.on(r._player.tag, "touchstart", function (e) {
                        e && e.target == e.currentTarget && r._player.trigger(a.Private.MarkerTextHide)
                    })
                }, disposeUI: function () {
                    this._thumbnailShowHanlde && (clearTimeout(this._thumbnailShowHanlde), this._thumbnailShowHanlde = null)
                }
            });
        t.exports = s
    }, {
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/util": 33,
        "../../player/base/event/eventtype": 43,
        "../component": 94
    }],
    108: [function (e, t, i) {
        var r = e("./selector"), s = e("../../../lib/object"), u = (e("../../../lib/util"), e("../../../lib/cookie")),
            l = e("../../../lib/dom"), c = (e("../../../lib/event"), e("../../../lib/constants")),
            d = e("../../../lang/index"), p = e("../../../player/base/event/eventtype"), o = r.extend({
                init: function (e, t) {
                    this.Name = d.get("Quality"), this.Type = "quality", this.Tooltip = d.get("Quality_Switch_To"), r.call(this, e, t), this._isMasterLevel = !1
                }, showTip: function (e, t) {
                    this._player.trigger(p.Private.Info_Show, {text: e, duration: t, align: "lb"})
                }, bindEvent: function () {
                    this.bindCommonEvent();
                    var s = this;
                    this._player.on(p.Private.QualityChange, function (e) {
                        var t = s._player._urls, i = e.paramData;
                        if (i.levelSwitch) {
                            var r = i.desc;
                            s._autoSWitchDesc = r, s._updateText(r)
                        } else if (0 < s._player._currentPlayIndex) {
                            s._autoSWitchDesc = "";
                            var o = s._player._currentPlayIndex, n = t[o - 1].desc, a = t[o].desc;
                            s.showTip(n + e.paramData + a, 1e3), s._player.trigger(p.Private.SelectorValueChange, t[o].Url)
                        }
                    });
                    var e = document.querySelector("#" + s.id() + " .selector-list");
                    this._player.on(p.Player.LevelSwitch, function () {
                        l.addClass(e, "disabled")
                    }), this._player.on(p.Player.LevelSwitched, function () {
                        l.removeClass(e, "disabled")
                    })
                }, generateList: function (e) {
                    var t = this._player._urls, o = this._player._currentPlayIndex, i = this._player._qualityService.levels;
                    0 < i.length && (this._isMasterLevel = !0, o = (t = i).length - 1);
                    var n = document.querySelector("#" + this.id() + " .selector-list");
                    if (0 < t.length) {
                        var a = this;
                        s.each(t, function (e, t) {
                            if (e.desc) {
                                var i = l.createEl.call(this, "li", {key: e.Url, index: t, text: e.desc}),
                                    r = l.createEl.call(this, "span", {key: e.Url, index: t, text: e.desc});
                                t == o && (l.addClass(i, "current"), a._previousSelection = i), r.innerText = e.desc, i.appendChild(r), n.appendChild(i)
                            }
                        })
                    }
                    this._autoSWitchDesc && this._updateText(this._autoSWitchDesc)
                }, execute: function (e) {
                    if (this._player._switchSourcing = !0, this._isMasterLevel) {
                        var t = this._player._qualityService.levels;
                        for (n = 0; n < t.length; n++) t[n].Url == e && t[n].desc != d.get("Auto") && this._updateText("");
                        this._player._switchLevel && this._player._switchLevel(e)
                    } else {
                        for (var i = this._player._urls.length, r = this._player._currentPlayIndex, o = -1, n = 0; n < i; n++) if (this._player._urls[n].Url == e) {
                            o = this._player._currentPlayIndex = n, u.set(c.SelectedStreamLevel, this._player._urls[n].definition, 365);
                            break
                        }
                        if (r != o && -1 < o) {
                            var a = this._player.getCurrentTime();
                            this._previousCurrentTime ? "playing" != this._player._status && (a = this._previousCurrentTime) : this._previousCurrentTime = a, this._previousCurrentTime = a;
                            var s = this._player.autoplay || "pause" != this._player._status;
                            this._player.autoplay || 0 != a || (s = !1), this._player._loadByUrlInner(e, a, s)
                        }
                    }
                    var l = this;
                    setTimeout(function () {
                        l._player._switchSourcing = !1
                    })
                }, _updateText: function (e) {
                    var t = document.querySelector("#" + this.id() + " .selector-list .current"),
                        i = document.querySelector("#" + this.id() + " .selector-list .current span"), r = d.get("Auto");
                    i && i.innerText && -1 < i.innerText.indexOf(r) && (r += e ? "(" + e + ")" : "", i.innerText = r, t && (t.text = r))
                }
            });
        t.exports = o
    }, {
        "../../../lang/index": 11,
        "../../../lib/constants": 15,
        "../../../lib/cookie": 16,
        "../../../lib/dom": 18,
        "../../../lib/event": 19,
        "../../../lib/object": 26,
        "../../../lib/util": 33,
        "../../../player/base/event/eventtype": 43,
        "./selector": 114
    }],
    109: [function (e, t, i) {
        var r = e("./selector"), a = e("../../../lib/object"),
            s = (e("../../../lib/util"), e("../../../lib/cookie"), e("../../../lib/dom")),
            o = (e("../../../lib/event"), e("./util"), e("../../../lang/index")),
            l = e("../../../player/base/event/eventtype"), n = r.extend({
                init: function (e, t) {
                    this.Name = o.get("AudioTrack"), this.Type = "audio", this.Tooltip = o.get("AudioTrack_Switch_To"), r.call(this, e, t)
                }, bindEvent: function () {
                    this.bindCommonEvent();
                    var o = this, n = document.querySelector("#" + o.id() + " .selector-list");
                    document.querySelector("#" + o.id() + " .header");
                    o._player.on(l.Private.ChangeURL, function () {
                        o._hasGeneratedList = !1
                    }), this._player.on(l.Player.AudioTrackSwitch, function () {
                        s.addClass(n, "disabled")
                    }), this._player.on(l.Player.AudioTrackSwitched, function () {
                        s.removeClass(n, "disabled")
                    }), o._player.on(l.Player.AudioTrackReady, function (e) {
                        o._hasGeneratedList || (o._clear(), (e = e.paramData) && (a.each(e, function (e, t) {
                            var i = s.createEl.call(o, "li", {key: e.value, text: e.text}),
                                r = s.createEl.call(o, "span", {key: e.value, text: e.text});
                            r.innerText = e.text, i.appendChild(r), n.appendChild(i)
                        }), o._hasGeneratedList = !0))
                    })
                }, execute: function (e) {
                    this._player._audioTrackService["switch"](e)
                }
            });
        t.exports = n
    }, {
        "../../../lang/index": 11,
        "../../../lib/cookie": 16,
        "../../../lib/dom": 18,
        "../../../lib/event": 19,
        "../../../lib/object": 26,
        "../../../lib/util": 33,
        "../../../player/base/event/eventtype": 43,
        "./selector": 114,
        "./util": 116
    }],
    110: [function (e, t, i) {
        var r = e("../../component"), o = (e("../../../lib/dom"), e("../../../player/base/event/eventtype")),
            n = e("./list"), a = e("../../../lang/index"), s = e("../util"), l = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-setting-btn"), this._settingList = new n(e, t), e.addChild(this._settingList, t)
                }, createEl: function () {
                    return r.prototype.createEl.call(this, "div")
                }, bindEvent: function () {
                    var e = this;
                    this.on("click", function () {
                        e._settingList.isOpened ? e._player.trigger(o.Private.SettingListHide) : e._player.trigger(o.Private.SettingListShow), e._player.trigger(o.Private.SelectorHide), e._player.trigger(o.Private.MarkerTextHide), e._player.trigger(o.Private.VolumeVisibilityChange, "")
                    }), s.registerTooltipEvent.call(this, this.el(), a.get("Setting"))
                }
            });
        t.exports = l
    }, {
        "../../../lang/index": 11,
        "../../../lib/dom": 18,
        "../../../player/base/event/eventtype": 43,
        "../../component": 94,
        "../util": 121,
        "./list": 113
    }],
    111: [function (e, t, i) {
        var r = e("./selector"), s = e("../../../lib/object"), l = e("../../../lib/dom"),
            o = (e("../../../lib/event"), e("./util"), e("../../../lib/cookie")), n = e("../../../lib/constants"),
            a = e("../../../lang/index"), u = e("../../../player/base/event/eventtype"), c = r.extend({
                init: function (e, t) {
                    this.Name = a.get("Subtitle"), this.Type = "cc", this.Tooltip = a.get("CC_Switch_To"), r.call(this, e, t)
                }, bindEvent: function () {
                    this.bindCommonEvent();
                    var o = this;
                    this._player.on(u.Private.CCStateChanged, function (e) {
                        var t = e.paramData.value, i = e.paramData.lang;
                        "on" == t && i ? o._backCCText = i : "off" == t && "" == o._backCCText && (o._backCCText = o._previousSelection.text);
                        var r = "Off";
                        "on" == t && (r = o._backCCText), o._player.trigger(u.Private.SelectorUpdateList, {
                            type: "cc",
                            text: r
                        })
                    })
                }, generateList: function (o) {
                    var n = document.querySelector("#" + this.id() + " .selector-list"), e = this._player._ccService.tracks,
                        a = this;
                    s.each(e, function (e, t) {
                        var i = l.createEl.call(this, "li", {key: e.value, text: e.text}),
                            r = l.createEl.call(this, "span", {key: e.value, text: e.text});
                        e.text == o && (l.addClass(i, "current"), a._previousSelection = i), r.innerText = e.text, i.appendChild(r), n.appendChild(i)
                    })
                }, execute: function (e) {
                    this._backCCText = "", o.set(n.SelectedCC, e, 365), this._player._ccService["switch"](e), this._player.trigger(u.Private.CCChanged, e)
                }
            });
        t.exports = c
    }, {
        "../../../lang/index": 11,
        "../../../lib/constants": 15,
        "../../../lib/cookie": 16,
        "../../../lib/dom": 18,
        "../../../lib/event": 19,
        "../../../lib/object": 26,
        "../../../player/base/event/eventtype": 43,
        "./selector": 114,
        "./util": 116
    }],
    112: [function (e, t, i) {
        t.exports = {CC: e("./cc"), Speed: e("./speed"), Quality: e("./Quality"), Audio: e("./audio")}
    }, {"./Quality": 108, "./audio": 109, "./cc": 111, "./speed": 115}],
    113: [function (e, t, i) {
        var a = e("../../component"), r = e("../../../lib/dom"), n = e("../../../lib/ua"), s = e("../../../lib/event"),
            l = e("../../../player/base/event/eventtype"), o = e("./export"), u = e("./util"),
            c = e("../../../lang/index"), d = a.extend({
                init: function (e, t) {
                    for (var i in this.isOpened = !1, a.call(this, e, t), this.addClass(t.className || "prism-setting-list"), o) {
                        var r = new o[i](e, t);
                        e.addChild(r, t)
                    }
                }, createEl: function () {
                    var e = a.prototype.createEl.call(this, "div"),
                        t = "<div class='prism-setting-item prism-setting-{type}' type={type}><div class='setting-content'><span class='setting-title'>{value}</span><span class='array'></span><span class='current-setting'></span></div></div>",
                        i = t.replace(/{type}/g, "speed").replace("{value}", c.get("Speed")),
                        r = t.replace(/{type}/g, "cc").replace("{value}", c.get("Subtitle")),
                        o = t.replace(/{type}/g, "audio").replace("{value}", c.get("AudioTrack")),
                        n = t.replace(/{type}/g, "quality").replace("{value}", c.get("Quality"));
                    return e.innerHTML = i + r + o + n, e
                }, bindEvent: function () {
                    document.querySelector("#" + this.id() + " .prism-setting-speed .current-setting").innerText = c.get("Speed_1X_Text");
                    var o = this, t = function () {
                        o._player.trigger(l.Private.SettingListHide), o.isOpened = !1
                    }, i = function (e) {
                        e && e.text && (document.querySelector("#" + o.id() + " .prism-setting-" + e.type + " .current-setting").innerText = e.text)
                    };
                    this._player.on(l.Private.SettingListShow, function (e) {
                        o.isOpened = !0;
                        e = e.paramData;
                        i(e), r.css(o.el(), "display", "block")
                    }), this._player.on(l.Private.UpdateToSettingList, function (e) {
                        e = e.paramData;
                        i(e)
                    }), this._player.on(l.Private.SelectorUpdateList, function (e) {
                        e = e.paramData;
                        i(e), o._player.trigger(l.Private.SelectorValueChange, e)
                    }), this._player.on(l.Private.SettingListHide, function () {
                        o.isOpened = !1, r.css(o.el(), "display", "none")
                    }), s.on(this.el(), "click", function (e) {
                        o._player.trigger(l.Private.SettingListHide);
                        var t = e.srcElement ? e.srcElement : e.target;
                        if (t = u.findItemElementForList(t)) {
                            var i = t.getAttribute("type");
                            o._player.trigger(l.Private.SelectorShow, {type: i})
                        }
                    });
                    var e = n.IS_MOBILE ? "touchleave" : "mouseleave";
                    s.on(this.el(), e, function () {
                        t()
                    }), s.on(this._player.tag, "click", function (e) {
                        e && e.target == e.currentTarget && t()
                    }), s.on(this._player.tag, "touchstart", function (e) {
                        e && e.target == e.currentTarget && t()
                    }), this._player.on(l.Private.QualityChange, function (e) {
                        var t = e.paramData;
                        if (t.levelSwitch) {
                            var i = document.querySelector("#" + o.id() + " .prism-setting-quality .current-setting"),
                                r = c.get("Auto");
                            -1 < i.innerText.indexOf(r) && (i.innerText = r + (t.desc ? "(" + t.desc + ")" : ""))
                        }
                    })
                }
            });
        t.exports = d
    }, {
        "../../../lang/index": 11,
        "../../../lib/dom": 18,
        "../../../lib/event": 19,
        "../../../lib/ua": 31,
        "../../../player/base/event/eventtype": 43,
        "../../component": 94,
        "./export": 112,
        "./util": 116
    }],
    114: [function (e, t, i) {
        var r = e("../../component"), o = (e("../../../lib/object"), e("../../../lib/util"), e("../../../lib/ua")),
            a = (e("../../../lib/cookie"), e("../../../lib/dom")), s = e("../../../lib/event"), l = e("./util"),
            u = (e("../../../lang/index"), e("../../../player/base/event/eventtype")), n = r.extend({
                init: function (e, t) {
                    this._hasGeneratedList = !1, this._previousSelection = null, this._backupSelector = "", r.call(this, e, t), this.className = t.className ? t.className : "prism-" + this.Type + "-selector prism-setting-selector", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = '<div class="header"><div class="left-array"></div><span>' + this.Name + '</span></div><ul class="selector-list"></ul>', e
                }, bindEvent: function () {
                    this.bindCommonEvent()
                }, bindCommonEvent: function () {
                    var n = this, e = document.querySelector("#" + n.id() + " .selector-list"),
                        t = document.querySelector("#" + n.id() + " .header");
                    this._player.on(u.Private.ChangeURL, function () {
                        n._hasGeneratedList = !1
                    }), s.on(t, "click", function () {
                        n._player.trigger(u.Private.SelectorHide), n._player.trigger(u.Private.SettingListShow, {
                            type: n.Type,
                            text: n._previousSelection ? n._previousSelection.text : ""
                        })
                    }), s.on(e, "click", function (e) {
                        var t = e.srcElement ? e.srcElement : e.target, i = t.key, r = t.text;
                        if (void 0 !== r) {
                            n._previousSelection && a.removeClass(n._previousSelection, "current"), n._previousSelection = l.findliElementForSelector(t), a.addClass(n._previousSelection, "current"), n.execute && n.execute(i);
                            var o = n.Tooltip + "<span>" + r + "</span>";
                            n._player.trigger(u.Private.Info_Show, {text: o, duration: 1e3, align: "lb"})
                        }
                    }), n._player.on(u.Private.SelectorHide, function () {
                        i()
                    }), n._player.on(u.Private.SelectorValueChange, function (e) {
                        var t = e.paramData;
                        if (t) {
                            if (t.type != n.Type) return;
                            var i = document.querySelectorAll("#" + n.id() + " .selector-list li");
                            if (i) {
                                var r = i.length;
                                0 == r && (n._backupSelector = t.text);
                                for (var o = 0; o < r; o++) if (i[o].text == t.text) {
                                    n._previousSelection && a.removeClass(n._previousSelection, "current"), a.addClass(i[o], "current"), n._previousSelection = i[o];
                                    break
                                }
                            }
                        }
                    }), n._player.on(u.Private.SelectorShow, function (e) {
                        if ((e = e.paramData).type == n.Type) {
                            var t = document.querySelector("#" + n._player.id() + " .prism-" + e.type + "-selector");
                            n._hasGeneratedList || (n._clear(), n.generateList(n._backupSelector), n._backupSelector = "", n._hasGeneratedList = !0), a.css(t, "display", "block")
                        }
                    });
                    var i = function () {
                        a.css(n.el(), "display", "none"), n._player.trigger(u.Private.UpdateToSettingList, {
                            type: n.Type,
                            text: n._previousSelection ? n._previousSelection.text : ""
                        })
                    }, r = o.IS_MOBILE ? "touchleave" : "mouseleave";
                    s.on(this.el(), r, function () {
                        i()
                    }), s.on(this._player.tag, "click", function (e) {
                        e && e.target == e.currentTarget && i()
                    }), s.on(this._player.tag, "touchstart", function (e) {
                        e && e.target == e.currentTarget && i()
                    })
                }, setSelected: function (e) {
                }, generateList: function () {
                }, _clear: function () {
                    document.querySelector("#" + this.id() + " .selector-list").innerHTML = ""
                }
            });
        t.exports = n
    }, {
        "../../../lang/index": 11,
        "../../../lib/cookie": 16,
        "../../../lib/dom": 18,
        "../../../lib/event": 19,
        "../../../lib/object": 26,
        "../../../lib/ua": 31,
        "../../../lib/util": 33,
        "../../../player/base/event/eventtype": 43,
        "../../component": 94,
        "./util": 116
    }],
    115: [function (e, t, i) {
        var r = e("./selector"), a = e("../../../lib/object"),
            s = (e("../../../lib/util"), e("../../../lib/cookie"), e("../../../lib/dom")),
            l = (e("../../../lib/event"), e("./util"), e("../../../lib/constants")), u = e("../../../lang/index"),
            o = (e("../../../player/base/event/eventtype"), r.extend({
                init: function (e, t) {
                    this.Name = u.get("Speed"), this.Type = "speed", this.Tooltip = u.get("Speed_Switch_To"), r.call(this, e, t)
                }, generateList: function () {
                    var o = document.querySelector("#" + this.id() + " .selector-list"), e = l.SpeedLevels, n = this;
                    a.each(e, function (e, t) {
                        var i = s.createEl.call(this, "li", {key: e.key, text: e.text}),
                            r = s.createEl.call(this, "span", {key: e.key, text: e.text});
                        r.innerText = e.text, e.text == u.get("Speed_1X_Text") && (s.addClass(i, "current"), n._previousSelection = i), i.appendChild(r), o.appendChild(i)
                    })
                }, execute: function (e) {
                    this._player.setSpeed(e)
                }
            }));
        t.exports = o
    }, {
        "../../../lang/index": 11,
        "../../../lib/constants": 15,
        "../../../lib/cookie": 16,
        "../../../lib/dom": 18,
        "../../../lib/event": 19,
        "../../../lib/object": 26,
        "../../../lib/util": 33,
        "../../../player/base/event/eventtype": 43,
        "./selector": 114,
        "./util": 116
    }],
    116: [function (e, i, t) {
        i.exports.findliElementForSelector = function (e) {
            if (!e || "li" == e.tagName.toLowerCase()) return e;
            var t = e.parentElement;
            return t && "li" == t.tagName.toLowerCase() ? t : null
        }, i.exports.findliElementByKey = function (e, t) {
            document.querySelectors(e);
            return null
        }, i.exports.findItemElementForList = function (e) {
            if (!e || -1 < e.className.indexOf("prism-setting-item")) return e;
            var t = e.parentElement;
            return t && (e = i.exports.findItemElementForList(t)), e
        }
    }, {}],
    117: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/dom"), f = e("../../lib/util"), n = e("../../lang/index"),
            _ = e("../../player/base/event/eventtype"), a = e("./util"), s = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-snapshot-btn")
                }, createEl: function () {
                    return r.prototype.createEl.call(this, "div")
                }, bindEvent: function () {
                    var h = this;
                    this._player.on(_.Private.Snapshot_Hide, function () {
                        o.css(h._el, "display", "none")
                    }), a.registerTooltipEvent.call(this, this.el(), n.get("Snapshot")), this.on("click", function () {
                        h.trigger(_.Player.Snapshoting);
                        var e = document.createElement("canvas"), t = h._player.tag, i = t.videoWidth, r = t.videoHeight,
                            o = h._player._getSanpshotMatric();
                        e.width = o.width || i, e.height = o.height || r;
                        var n = h._player.getCurrentTime(), a = e.getContext("2d");
                        a.save();
                        var s = h._player.getImage();
                        "vertical" == s ? (a.translate(0, e.height), a.scale(1, -1)) : "horizon" == s && (a.translate(e.width, 0), a.scale(-1, 1)), a.drawImage(t, 0, 0, i, r), a.restore(), g(a, h._player.getOptions());
                        var l = "", u = "";
                        try {
                            l = e.toDataURL("image/jpeg", o.rate || 1)
                        } catch (e) {
                            u = e
                        }
                        var c = "", d = "", p = "";
                        l && (d = (c = l).substr(c.indexOf(",") + 1), p = f.toBinary(d)), h.trigger(_.Player.Snapshoted, {
                            time: n,
                            base64: c,
                            binary: p,
                            error: u
                        })
                    })
                }
            }), g = function (e, t) {
                var i = t.snapshotWatermark;
                i && i.text && (e.font = i.font, i.fillColor && (e.fillStyle = i.fillColor, e.fillText(i.text, i.left, i.top)), i.strokeColor && (e.strokeStyle = i.strokeColor, e.strokeText(i.text, i.left, i.top)), e.stroke())
            };
        t.exports = s
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/util": 33,
        "../../player/base/event/eventtype": 43,
        "../component": 94,
        "./util": 121
    }],
    118: [function (e, t, i) {
        var r = e("../component"), c = (e("../../lib/util"), e("../../lib/dom")), o = e("../../lib/event"),
            n = (e("../../lib/ua"), e("../../lang/index"), e("../../player/base/event/eventtype")), a = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.className = t.className ? t.className : "prism-thumbnail", this.addClass(this.className)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = "<img></img><span></span>", e
                }, bindEvent: function () {
                    var u = this;
                    o.on(this._el, "mousemove", function (e) {
                        e.preventDefault()
                    }), o.on(this._el, "touchmove", function (e) {
                        e.preventDefault()
                    }), u._player.on(n.Private.ThumbnailLoaded, function (e) {
                        var t = e.paramData;
                        if (t && 0 < t.length) {
                            var i = u._player._thumbnailService.makeUrl(t[0].text);
                            u._player.log("THUMBNAILSTART", {tu: encodeURIComponent(i)});
                            var r = (new Date).getTime();
                            if (t[0].isBig) c.css(u.el(), "background", "url(" + i + ")"), c.css(u.el(), "width", t[0].w + "px"), c.css(u.el(), "height", t[0].h + "px"), u._player.log("THUMBNAILCOMPLETE", {ftt: (new Date).getTime() - r}); else {
                                var o = document.querySelector("#" + u.id() + " img");
                                o.onload = function () {
                                    var e = o.width, t = o.height;
                                    c.css(u.el(), "width", e + "px"), c.css(u.el(), "height", t + "px"), u._player.log("THUMBNAILCOMPLETE", {ftt: (new Date).getTime() - r})
                                }, o.src = i
                            }
                        }
                    }), u._player.on(n.Private.ThumbnailShow, function (l) {
                        u._thumbnailShowHanlde && clearTimeout(u._thumbnailShowHanlde), u._thumbnailShowHanlde = setTimeout(function () {
                            var e = document.querySelector("#" + u.id() + " span"), t = l.paramData;
                            if (e.innerText = t.formatTime, t) {
                                var i = u._player._thumbnailService.findAvailableCue(t.time);
                                if (i) if (i.isBig) {
                                    var r = u._player._thumbnailService.makeUrl(i.text);
                                    c.css(u.el(), "background", "url(" + r + ")"), i.w, i.h;
                                    var o = -1 * i.x + "px " + -1 * i.y + "px";
                                    c.css(u.el(), "background-position", o)
                                } else {
                                    var n = document.querySelector("#" + u.id() + " img");
                                    r = u._player._thumbnailService.makeUrl(i.text), n.src != r && (n.src = r)
                                } else c.css(u.el(), "border", "none"), c.css(e, "left", "0px");
                                c.css(u.el(), "display", "block");
                                var a = 0, s = i ? u.el().offsetWidth : e.offsetWidth;
                                a = t.left + s > t.progressWidth ? t.left - s : (a = t.left - s / 2) < 0 ? 0 : a, c.css(u.el(), "left", a + "px")
                            }
                        }, 30)
                    }), u._player.on(n.Private.ThumbnailHide, function (e) {
                        u._thumbnailShowHanlde && clearTimeout(u._thumbnailShowHanlde), c.css(u.el(), "display", "none")
                    })
                }, _createSamllThumbnail: function () {
                }, disposeUI: function () {
                    this._thumbnailShowHanlde && (clearTimeout(this._thumbnailShowHanlde), this._thumbnailShowHanlde = null)
                }
            });
        t.exports = a
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../lib/ua": 31,
        "../../lib/util": 33,
        "../../player/base/event/eventtype": 43,
        "../component": 94
    }],
    119: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/util"), n = e("../../player/base/event/eventtype"), a = r.extend({
            init: function (e, t) {
                r.call(this, e, t), this.className = t.className ? t.className : "prism-time-display", this.addClass(this.className)
            }, createEl: function () {
                var e = r.prototype.createEl.call(this, "div");
                return e.innerHTML = '<span class="current-time">00:00</span> <span class="time-bound">/</span> <span class="duration">00:00</span>', e
            }, bindEvent: function () {
                var i = this;
                this._player.on(n.Video.DurationChange, function () {
                    var e = o.formatTime(i._player.getDisplayDuration());
                    e ? (document.querySelector("#" + i.id() + " .time-bound").style.display = "inline", document.querySelector("#" + i.id() + " .duration").style.display = "inline", document.querySelector("#" + i.id() + " .duration").innerText = e) : (document.querySelector("#" + i.id() + " .duration").style.display = "none", document.querySelector("#" + i.id() + " .time-bound").style.display = "none")
                }), this._player.on(n.Video.TimeUpdate, function () {
                    var e = i._player.getCurrentTime(), t = o.formatTime(e);
                    document.querySelector("#" + i.id() + " .current-time") && (t ? (document.querySelector("#" + i.id() + " .current-time").style.display = "inline", document.querySelector("#" + i.id() + " .current-time").innerText = t) : document.querySelector("#" + i.id() + " .current-time").style.display = "none")
                })
            }
        });
        t.exports = a
    }, {"../../lib/util": 33, "../../player/base/event/eventtype": 43, "../component": 94}],
    120: [function (e, t, i) {
        var r = e("../component"), s = e("../../lib/dom"), o = e("../../player/base/event/eventtype"), n = r.extend({
            init: function (e, t) {
                r.call(this, e, t), this.className = t.className ? t.className : "prism-tooltip", this.addClass(this.className)
            }, createEl: function () {
                var e = r.prototype.createEl.call(this, "p");
                return e.innerText = "\u63d0\u793a\u4fe1\u606f", e
            }, bindEvent: function () {
                var a = this;
                a._player.on(o.Private.TooltipShow, function (e) {
                    var t = document.querySelector("#" + a.id()), i = e.paramData;
                    t.innerText = i.text, s.css(t, "display", "block");
                    var r = t.offsetWidth, o = document.querySelector("#" + a._player.id() + " .prism-controlbar");
                    if (o) {
                        var n = o.offsetWidth;
                        i.left + r > n ? s.css(t, "left", n - r + "px") : s.css(t, "left", i.left - (r - i.width) / 2 + "px")
                    }
                }), a._player.on(o.Private.TooltipHide, function (e) {
                    var t = document.querySelector("#" + a.id());
                    s.css(t, "display", "none")
                })
            }
        });
        t.exports = n
    }, {"../../lib/dom": 18, "../../player/base/event/eventtype": 43, "../component": 94}],
    121: [function (e, t, i) {
        var r = e("../../lib/event"), s = e("../../player/base/event/eventtype");
        t.exports.registerTooltipEvent = function (e, o) {
            var n = this, a = function () {
                n._controlbarTooltipHandler && (clearTimeout(n._controlbarTooltipHandler), n._controlbarTooltipHandler = null)
            };
            r.on(this.el(), "mouseover", function (e) {
                a(), n._controlbarTooltipHandler = setTimeout(function () {
                    n._player.trigger(s.Private.TooltipHide)
                }, 4e3);
                var t = n.el().offsetLeft, i = n.el().offsetWidth, r = o;
                "function" == typeof r && (r = o.call(this)), n._player.trigger(s.Private.TooltipShow, {
                    left: t,
                    width: i,
                    text: r
                })
            }), r.on(this.el(), "mouseout", function () {
                a(), n._player.trigger(s.Private.TooltipHide)
            })
        }, t.exports.throttle = function (i, r) {
            var o = Date.now();
            return function () {
                var e = arguments, t = Date.now();
                r <= t - o && (i(e), o = t)
            }
        }
    }, {"../../lib/event": 19, "../../player/base/event/eventtype": 43}],
    122: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/dom"), n = e("../../lib/event"),
            a = e("../../player/base/event/eventtype"), s = e("./util"), l = e("../../lang/index"),
            u = e("./volumecontrol"), c = r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-volume");
                    var i = new u(e, t);
                    e.addChild(i, t)
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = '<div class="volume-icon"><div class="short-horizontal"></div><div class="long-horizontal"></div></div>', e
                }, bindEvent: function () {
                    var i = this;
                    this.icon = document.querySelector("#" + i.id() + "  .volume-icon"), s.registerTooltipEvent.call(this, this.el(), function () {
                        return i._player.muted() || 0 == i._player.getVolume() ? l.get("Muted") : l.get("Volume")
                    }), n.on(this.icon, "click", function (e) {
                        var t = i.el().offsetLeft;
                        i._player.trigger(a.Private.SettingListHide), i._player.trigger(a.Private.SelectorHide), i._player.trigger(a.Private.VolumeVisibilityChange, t), i._player.trigger(a.Private.MarkerTextHide)
                    });
                    var e = document.querySelector("#" + i.id() + "  .long-horizontal"),
                        t = document.querySelector("#" + i.id() + "  .short-horizontal");
                    n.on(this.el(), "mouseover", function () {
                        o.removeClass(e, "volume-hover-animation"), setTimeout(function () {
                            o.addClass(e, "volume-hover-animation")
                        }), setTimeout(function () {
                            o.removeClass(e, "volume-hover-animation"), o.addClass(t, "volume-hover-animation"), setTimeout(function () {
                                o.removeClass(t, "volume-hover-animation"), o.addClass(e, "volume-hover-animation")
                            }, 300)
                        }, 300)
                    })
                }
            });
        t.exports = c
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../player/base/event/eventtype": 43,
        "../component": 94,
        "./util": 121,
        "./volumecontrol": 123
    }],
    123: [function (e, t, i) {
        var r = e("../component"), o = e("../../lib/dom"), n = e("../../lib/event"),
            a = e("../../player/base/event/eventtype"), s = (e("./util"), e("../../lang/index"), r.extend({
                init: function (e, t) {
                    r.call(this, e, t), this.addClass(t.className || "prism-volume-control"), this._shown = !1
                }, createEl: function () {
                    var e = r.prototype.createEl.call(this, "div");
                    return e.innerHTML = '<div class="volume-range"><div class="volume-value"></div><div class="volume-cursor"></div></div>', e
                }, bindEvent: function () {
                    var r = this;
                    this.icon = document.querySelector("#" + r._player.id() + "  .volume-icon"), this.control = document.querySelector("#" + r.id()), this.volumnValue = document.querySelector("#" + r.id() + "  .volume-value"), this.volumnRange = document.querySelector("#" + r.id() + "  .volume-range"), this.volumnCursor = document.querySelector("#" + r.id() + "  .volume-cursor"), this._player.on(a.Private.VolumeVisibilityChange, function (e) {
                        var t = e.paramData;
                        if (!r._shown && t) {
                            var i = r._player.getVolume();
                            r._setVolumnUI(i), o.css(r.control, "display", "block"), t && o.css(r.control, "left", t - 5 + "px"), r._shown = !0
                        } else o.css(r.control, "display", "none"), r._shown = !1
                    }), n.on(this.volumnRange, "click", function (e) {
                        var t = o.getPointerPosition(r.volumnRange, e).y;
                        t < 0 || 1 < t || (t < 0 && (t = 0), 1 < t && (t = 1), r._setVolumnUI(t), r._setMuteUI(t), r._player.setVolume(t))
                    }), n.on(this._player.tag, "click", function (e) {
                        e && e.target == e.currentTarget && o.css(r.control, "display", "none")
                    }), n.on(this._player.tag, "touchstart", function (e) {
                        e && e.target == e.currentTarget && o.css(r.control, "display", "none")
                    }), n.on(this.volumnCursor, "mousedown", function (e) {
                        r._onMouseDown(e)
                    }), n.on(this.volumnCursor, "touchstart", function (e) {
                        r._onMouseDown(e)
                    }), this._player.on(a.Private.VolumnChanged, function (e) {
                        var t = e.paramData;
                        -1 < t && r._setVolumnUI(t), r._setMuteUI(t)
                    }), n.on(this.control, "mouseleave", function () {
                        o.css(r.control, "display", "none"), r._shown = !1
                    }), n.on(this.control, "mouseover", function () {
                        o.addClass(r.control, "hover")
                    }), r._rangeBottom = r._getBottom()
                }, _getBottom: function () {
                    if (window.getComputedStyle) {
                        var e = window.getComputedStyle(this.volumnRange, null).getPropertyValue("bottom");
                        return parseFloat(e)
                    }
                    return 26
                }, _onMouseDown: function (e) {
                    var t = this;
                    e.preventDefault(), n.on(this.control, "mousemove", function (e) {
                        t._onMouseMove(e)
                    }), n.on(this.control, "touchmove", function (e) {
                        t._onMouseMove(e)
                    }), n.on(this._player.tag, "mouseup", function (e) {
                        t._onMouseUp(e)
                    }), n.on(this._player.tag, "touchend", function (e) {
                        t._onMouseUp(e)
                    }), n.on(this.control, "mouseup", function (e) {
                        t._onMouseUp(e)
                    }), n.on(this.control, "touchend", function (e) {
                        t._onMouseUp(e)
                    })
                }, _onMouseUp: function (e) {
                    if (e.preventDefault(), this._offEvent(), this.volumnRange.offsetHeight) {
                        var t = (this.volumnValue.offsetHeight / this.volumnRange.offsetHeight).toFixed(2);
                        this._player.setVolume(t), this._setMuteUI(t)
                    }
                }, _onMouseMove: function (e) {
                    e.preventDefault();
                    var t = o.getPointerPosition(this.volumnRange, e).y;
                    t < 0 || 1 < t || (t < 0 && (t = 0), 1 < t && (t = 1), this._setVolumnUI(t))
                }, _getPosition: function (e) {
                    for (var t = this.volumnRange, i = 0; t = t.offsetParent;) i += t.offsetTop;
                    var r = this.volumnRange.offsetHeight, o = this.volumnCursor.offsetHeight,
                        n = e.touches ? e.touches[0].pageY : e.pageY;
                    return r < n - i && (n = e.clientY), (r - (n - i) + o) / (r = this.volumnRange.offsetHeight)
                }, _offEvent: function () {
                    n.off(this._player.tag, "mouseup"), n.off(this._player.tag, "touchend"), n.off(this.control, "mousemove"), n.off(this.control, "touchmove"), n.off(this.control, "mouseup"), n.off(this.control, "touchend")
                }, _setMuteUI: function (e) {
                    isNaN(e) || (0 == e || -1 == e ? o.addClass(this.icon, "mute") : o.removeClass(this.icon, "mute"))
                }, _setVolumnUI: function (e) {
                    isNaN(e) || (o.css(this.volumnValue, "height", 100 * e + "%"), 1 == e && (e = .99), o.css(this.volumnCursor, "bottom", 100 * e + "%"))
                }
            }));
        t.exports = s
    }, {
        "../../lang/index": 11,
        "../../lib/dom": 18,
        "../../lib/event": 19,
        "../../player/base/event/eventtype": 43,
        "../component": 94,
        "./util": 121
    }],
    124: [function (e, t, i) {
        t.exports = {
            H5Loading: e("./component/h5-loading"),
            bigPlayButton: e("./component/big-play-button"),
            controlBar: e("./component/controlbar"),
            progress: e("./component/progress"),
            playButton: e("./component/play-button"),
            liveDisplay: e("./component/live-display"),
            timeDisplay: e("./component/time-display"),
            fullScreenButton: e("./component/fullscreen-button"),
            volume: e("./component/volume"),
            snapshot: e("./component/snapshot"),
            errorDisplay: e("./component/error-display"),
            infoDisplay: e("./component/info-display"),
            liveShiftProgress: e("../commonui/liveshiftprogress"),
            liveShiftTimeDisplay: e("../commonui/livetimedisplay"),
            setting: e("./component/setting/button"),
            subtitle: e("./component/cc-button"),
            thumbnail: e("./component/thumbnail"),
            tooltip: e("./component/tooltip")
        }
    }, {
        "../commonui/liveshiftprogress": 3,
        "../commonui/livetimedisplay": 4,
        "./component/big-play-button": 95,
        "./component/cc-button": 96,
        "./component/controlbar": 97,
        "./component/error-display": 99,
        "./component/fullscreen-button": 100,
        "./component/h5-loading": 101,
        "./component/info-display": 102,
        "./component/live-display": 103,
        "./component/play-button": 105,
        "./component/progress": 106,
        "./component/setting/button": 110,
        "./component/snapshot": 117,
        "./component/thumbnail": 118,
        "./component/time-display": 119,
        "./component/tooltip": 120,
        "./component/volume": 122
    }],
    125: [function (e, t, i) {
        var r, o;
        r = this, o = function () {
            var c, i, e, t, r, d, o, n, a, s, l, u, p = p || (c = Math, i = Object.create || function () {
                function i() {
                }

                return function (e) {
                    var t;
                    return i.prototype = e, t = new i, i.prototype = null, t
                }
            }(), t = (e = {}).lib = {}, r = t.Base = {
                extend: function (e) {
                    var t = i(this);
                    return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () {
                        t.$super.init.apply(this, arguments)
                    }), (t.init.prototype = t).$super = this, t
                }, create: function () {
                    var e = this.extend();
                    return e.init.apply(e, arguments), e
                }, init: function () {
                }, mixIn: function (e) {
                    for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]);
                    e.hasOwnProperty("toString") && (this.toString = e.toString)
                }, clone: function () {
                    return this.init.prototype.extend(this)
                }
            }, d = t.WordArray = r.extend({
                init: function (e, t) {
                    e = this.words = e || [], this.sigBytes = null != t ? t : 4 * e.length
                }, toString: function (e) {
                    return (e || n).stringify(this)
                }, concat: function (e) {
                    var t = this.words, i = e.words, r = this.sigBytes, o = e.sigBytes;
                    if (this.clamp(), r % 4) for (var n = 0; n < o; n++) {
                        var a = i[n >>> 2] >>> 24 - n % 4 * 8 & 255;
                        t[r + n >>> 2] |= a << 24 - (r + n) % 4 * 8
                    } else for (n = 0; n < o; n += 4) t[r + n >>> 2] = i[n >>> 2];
                    return this.sigBytes += o, this
                }, clamp: function () {
                    var e = this.words, t = this.sigBytes;
                    e[t >>> 2] &= 4294967295 << 32 - t % 4 * 8, e.length = c.ceil(t / 4)
                }, clone: function () {
                    var e = r.clone.call(this);
                    return e.words = this.words.slice(0), e
                }, random: function (e) {
                    for (var t, i = [], r = function (t) {
                        t = t;
                        var i = 987654321, r = 4294967295;
                        return function () {
                            var e = ((i = 36969 * (65535 & i) + (i >> 16) & r) << 16) + (t = 18e3 * (65535 & t) + (t >> 16) & r) & r;
                            return e /= 4294967296, (e += .5) * (.5 < c.random() ? 1 : -1)
                        }
                    }, o = 0; o < e; o += 4) {
                        var n = r(4294967296 * (t || c.random()));
                        t = 987654071 * n(), i.push(4294967296 * n() | 0)
                    }
                    return new d.init(i, e)
                }
            }), o = e.enc = {}, n = o.Hex = {
                stringify: function (e) {
                    for (var t = e.words, i = e.sigBytes, r = [], o = 0; o < i; o++) {
                        var n = t[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                        r.push((n >>> 4).toString(16)), r.push((15 & n).toString(16))
                    }
                    return r.join("")
                }, parse: function (e) {
                    for (var t = e.length, i = [], r = 0; r < t; r += 2) i[r >>> 3] |= parseInt(e.substr(r, 2), 16) << 24 - r % 8 * 4;
                    return new d.init(i, t / 2)
                }
            }, a = o.Latin1 = {
                stringify: function (e) {
                    for (var t = e.words, i = e.sigBytes, r = [], o = 0; o < i; o++) {
                        var n = t[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                        r.push(String.fromCharCode(n))
                    }
                    return r.join("")
                }, parse: function (e) {
                    for (var t = e.length, i = [], r = 0; r < t; r++) i[r >>> 2] |= (255 & e.charCodeAt(r)) << 24 - r % 4 * 8;
                    return new d.init(i, t)
                }
            }, s = o.Utf8 = {
                stringify: function (e) {
                    try {
                        return decodeURIComponent(escape(a.stringify(e)))
                    } catch (e) {
                        throw new Error("Malformed UTF-8 data")
                    }
                }, parse: function (e) {
                    return a.parse(unescape(encodeURIComponent(e)))
                }
            }, l = t.BufferedBlockAlgorithm = r.extend({
                reset: function () {
                    this._data = new d.init, this._nDataBytes = 0
                }, _append: function (e) {
                    "string" == typeof e && (e = s.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes
                }, _process: function (e) {
                    var t = this._data, i = t.words, r = t.sigBytes, o = this.blockSize, n = r / (4 * o),
                        a = (n = e ? c.ceil(n) : c.max((0 | n) - this._minBufferSize, 0)) * o, s = c.min(4 * a, r);
                    if (a) {
                        for (var l = 0; l < a; l += o) this._doProcessBlock(i, l);
                        var u = i.splice(0, a);
                        t.sigBytes -= s
                    }
                    return new d.init(u, s)
                }, clone: function () {
                    var e = r.clone.call(this);
                    return e._data = this._data.clone(), e
                }, _minBufferSize: 0
            }), t.Hasher = l.extend({
                cfg: r.extend(), init: function (e) {
                    this.cfg = this.cfg.extend(e), this.reset()
                }, reset: function () {
                    l.reset.call(this), this._doReset()
                }, update: function (e) {
                    return this._append(e), this._process(), this
                }, finalize: function (e) {
                    return e && this._append(e), this._doFinalize()
                }, blockSize: 16, _createHelper: function (i) {
                    return function (e, t) {
                        return new i.init(t).finalize(e)
                    }
                }, _createHmacHelper: function (i) {
                    return function (e, t) {
                        return new u.HMAC.init(i, t).finalize(e)
                    }
                }
            }), u = e.algo = {}, e);
            return p
        }, "object" == typeof i ? t.exports = i = o() : "function" == typeof define && define.amd ? define([], o) : r.CryptoJS = o()
    }, {}],
    126: [function (e, t, i) {
        var r, o;
        r = this, o = function (e) {
            var t, l;
            return l = (t = e).lib.WordArray, t.enc.Base64 = {
                stringify: function (e) {
                    var t = e.words, i = e.sigBytes, r = this._map;
                    e.clamp();
                    for (var o = [], n = 0; n < i; n += 3) for (var a = (t[n >>> 2] >>> 24 - n % 4 * 8 & 255) << 16 | (t[n + 1 >>> 2] >>> 24 - (n + 1) % 4 * 8 & 255) << 8 | t[n + 2 >>> 2] >>> 24 - (n + 2) % 4 * 8 & 255, s = 0; s < 4 && n + .75 * s < i; s++) o.push(r.charAt(a >>> 6 * (3 - s) & 63));
                    var l = r.charAt(64);
                    if (l) for (; o.length % 4;) o.push(l);
                    return o.join("")
                }, parse: function (e) {
                    var t = e.length, i = this._map, r = this._reverseMap;
                    if (!r) {
                        r = this._reverseMap = [];
                        for (var o = 0; o < i.length; o++) r[i.charCodeAt(o)] = o
                    }
                    var n = i.charAt(64);
                    if (n) {
                        var a = e.indexOf(n);
                        -1 !== a && (t = a)
                    }
                    return function (e, t, i) {
                        for (var r = [], o = 0, n = 0; n < t; n++) if (n % 4) {
                            var a = i[e.charCodeAt(n - 1)] << n % 4 * 2, s = i[e.charCodeAt(n)] >>> 6 - n % 4 * 2;
                            r[o >>> 2] |= (a | s) << 24 - o % 4 * 8, o++
                        }
                        return l.create(r, o)
                    }(e, t, r)
                }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
            }, e.enc.Base64
        }, "object" == typeof i ? t.exports = i = o(e("./core")) : "function" == typeof define && define.amd ? define(["./core"], o) : o(r.CryptoJS)
    }, {"./core": 125}],
    127: [function (e, t, i) {
        var r, o;
        r = this, o = function (e) {
            return e.enc.Utf8
        }, "object" == typeof i ? t.exports = i = o(e("./core")) : "function" == typeof define && define.amd ? define(["./core"], o) : o(r.CryptoJS)
    }, {"./core": 125}],
    128: [function (e, t, i) {
        var r, o;
        r = this, o = function (e) {
            return e.HmacSHA1
        }, "object" == typeof i ? t.exports = i = o(e("./core"), e("./sha1"), e("./hmac")) : "function" == typeof define && define.amd ? define(["./core", "./sha1", "./hmac"], o) : o(r.CryptoJS)
    }, {"./core": 125, "./hmac": 129, "./sha1": 130}],
    129: [function (e, t, i) {
        var r, o;
        r = this, o = function (e) {
            var t, i, u;
            i = (t = e).lib.Base, u = t.enc.Utf8, t.algo.HMAC = i.extend({
                init: function (e, t) {
                    e = this._hasher = new e.init, "string" == typeof t && (t = u.parse(t));
                    var i = e.blockSize, r = 4 * i;
                    t.sigBytes > r && (t = e.finalize(t)), t.clamp();
                    for (var o = this._oKey = t.clone(), n = this._iKey = t.clone(), a = o.words, s = n.words, l = 0; l < i; l++) a[l] ^= 1549556828, s[l] ^= 909522486;
                    o.sigBytes = n.sigBytes = r, this.reset()
                }, reset: function () {
                    var e = this._hasher;
                    e.reset(), e.update(this._iKey)
                }, update: function (e) {
                    return this._hasher.update(e), this
                }, finalize: function (e) {
                    var t = this._hasher, i = t.finalize(e);
                    return t.reset(), t.finalize(this._oKey.clone().concat(i))
                }
            })
        }, "object" == typeof i ? t.exports = i = o(e("./core")) : "function" == typeof define && define.amd ? define(["./core"], o) : o(r.CryptoJS)
    }, {"./core": 125}],
    130: [function (e, t, i) {
        var r, o;
        r = this, o = function (e) {
            var t, i, r, o, n, d, a;
            return i = (t = e).lib, r = i.WordArray, o = i.Hasher, n = t.algo, d = [], a = n.SHA1 = o.extend({
                _doReset: function () {
                    this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
                }, _doProcessBlock: function (e, t) {
                    for (var i = this._hash.words, r = i[0], o = i[1], n = i[2], a = i[3], s = i[4], l = 0; l < 80; l++) {
                        if (l < 16) d[l] = 0 | e[t + l]; else {
                            var u = d[l - 3] ^ d[l - 8] ^ d[l - 14] ^ d[l - 16];
                            d[l] = u << 1 | u >>> 31
                        }
                        var c = (r << 5 | r >>> 27) + s + d[l];
                        c += l < 20 ? 1518500249 + (o & n | ~o & a) : l < 40 ? 1859775393 + (o ^ n ^ a) : l < 60 ? (o & n | o & a | n & a) - 1894007588 : (o ^ n ^ a) - 899497514, s = a, a = n, n = o << 30 | o >>> 2, o = r, r = c
                    }
                    i[0] = i[0] + r | 0, i[1] = i[1] + o | 0, i[2] = i[2] + n | 0, i[3] = i[3] + a | 0, i[4] = i[4] + s | 0
                }, _doFinalize: function () {
                    var e = this._data, t = e.words, i = 8 * this._nDataBytes, r = 8 * e.sigBytes;
                    return t[r >>> 5] |= 128 << 24 - r % 32, t[14 + (64 + r >>> 9 << 4)] = Math.floor(i / 4294967296), t[15 + (64 + r >>> 9 << 4)] = i, e.sigBytes = 4 * t.length, this._process(), this._hash
                }, clone: function () {
                    var e = o.clone.call(this);
                    return e._hash = this._hash.clone(), e
                }
            }), t.SHA1 = o._createHelper(a), t.HmacSHA1 = o._createHmacHelper(a), e.SHA1
        }, "object" == typeof i ? t.exports = i = o(e("./core")) : "function" == typeof define && define.amd ? define(["./core"], o) : o(r.CryptoJS)
    }, {"./core": 125}]
}, {}, [6]);