/*! ThunderX BY LUOCHENZHIMU */
/*! Last updated on 2018/10/04 */
module.exports = function (e) {
    var t = {};

    function n(i) {
        if (t[i]) return t[i].exports;
        var a = t[i] = {i, l: !1, exports: {}};
        return e[i].call(a.exports, a, a.exports, n), a.l = !0, a.exports
    }

    return n.m = e, n.c = t, n.d = function (e, t, i) {
        n.o(e, t) || Object.defineProperty(e, t, {enumerable: !0, get: i})
    }, n.r = function (e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})
    }, n.t = function (e, t) {
        if (1 & t && (e = n(e)), 8 & t) return e;
        if (4 & t && "object" == typeof e && e && e.__esModule) return e;
        var i = Object.create(null);
        if (n.r(i), Object.defineProperty(i, "default", {
            enumerable: !0,
            value: e
        }), 2 & t && "string" != typeof e) for (var a in e) n.d(i, a, function (t) {
            return e[t]
        }.bind(null, a));
        return i
    }, n.n = function (e) {
        var t = e && e.__esModule ? function () {
            return e.default
        } : function () {
            return e
        };
        return n.d(t, "a", t), t
    }, n.o = function (e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }, n.p = "", n(n.s = 669)
}([function (e, t, n) {
    "use strict";

    function i(e, t, n, i, a, o, r, s) {
        var l, u = "function" == typeof e ? e.options : e;
        if (t && (u.render = t, u.staticRenderFns = n, u._compiled = !0), i && (u.functional = !0), o && (u._scopeId = "data-v-" + o), r ? (l = function (e) {
            (e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), a && a.call(this, e), e && e._registeredComponents && e._registeredComponents.add(r)
        }, u._ssrRegister = l) : a && (l = s ? function () {
            a.call(this, this.$root.$options.shadowRoot)
        } : a), l) if (u.functional) {
            u._injectStyles = l;
            var d = u.render;
            u.render = function (e, t) {
                return l.call(t), d(e, t)
            }
        } else {
            var c = u.beforeCreate;
            u.beforeCreate = c ? [].concat(c, l) : [l]
        }
        return {exports: e, options: u}
    }

    n.d(t, "a", function () {
        return i
    })
}, function (e, t, n) {
    e.exports = n(9)(64)
}, function (e, t) {
    e.exports = require("path")
}, function (e, t) {
    e.exports = require("electron")
}, function (e, t, n) {
    e.exports = n(9)(128)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        let t, n, i, a, o, r, s, l, u, d, c, h, f, p, g;
        !function (e) {
            e[e.Unkown = 0] = "Unkown", e[e.Create = 1] = "Create", e[e.InvaldParam = 2] = "InvaldParam", e[e.InvaldLink = 3] = "InvaldLink", e[e.InvaldConfig = 4] = "InvaldConfig", e[e.Timeout = 5] = "Timeout", e[e.VerifyData = 6] = "VerifyData", e[e.Forbidden = 7] = "Forbidden", e[e.RangeDispatch = 8] = "RangeDispatch", e[e.FilePathOverRanging = 9] = "FilePathOverRanging", e[e.FileCreate = 201] = "FileCreate", e[e.FileWrite = 202] = "FileWrite", e[e.FileRead = 203] = "FileRead", e[e.FileRename = 204] = "FileRename", e[e.FileFull = 205] = "FileFull", e[e.BtUploadExist = 601] = "BtUploadExist", e[e.ForbinddenResource = 701] = "ForbinddenResource", e[e.ForbinddenAccount = 702] = "ForbinddenAccount", e[e.ForbinddenArea = 703] = "ForbinddenArea", e[e.ForbinddenCopyright = 704] = "ForbinddenCopyright", e[e.ForbinddenReaction = 705] = "ForbinddenReaction", e[e.ForbinddenPorn = 706] = "ForbinddenPorn"
        }(t = e.TaskError || (e.TaskError = {})), function (e) {
            e[e.Unkown = -1] = "Unkown", e[e.Success = 0] = "Success", e[e.QueryFailed = 1] = "QueryFailed", e[e.ServerError = 2] = "ServerError", e[e.ResourceNotFound = 3] = "ResourceNotFound", e[e.AuthorizingFailed = 4] = "AuthorizingFailed", e[e.ForbidByCopyright = 5] = "ForbidByCopyright", e[e.ForbidByPorNoGraphy = 6] = "ForbidByPorNoGraphy", e[e.ForbidByReactionary = 7] = "ForbidByReactionary", e[e.ForbidByOtherFilter = 8] = "ForbidByOtherFilter"
        }(n = e.DcdnStatusCode || (e.DcdnStatusCode = {})), function (e) {
            e[e.Begin = -1] = "Begin", e[e.Unkown = 0] = "Unkown", e[e.StandBy = 1] = "StandBy", e[e.PreDownloading = 2] = "PreDownloading", e[e.StartWaiting = 3] = "StartWaiting", e[e.StartPending = 4] = "StartPending", e[e.Started = 5] = "Started", e[e.StopPending = 6] = "StopPending", e[e.Stopped = 7] = "Stopped", e[e.Succeeded = 8] = "Succeeded", e[e.Failed = 9] = "Failed", e[e.Seeding = 10] = "Seeding", e[e.DestroyPending = 11] = "DestroyPending", e[e.End = 12] = "End"
        }(i = e.TaskStatus || (e.TaskStatus = {})), function (e) {
            e[e.Begin = -1] = "Begin", e[e.StandBy = 0] = "StandBy", e[e.Stopped = 1] = "Stopped", e[e.Started = 2] = "Started", e[e.Complete = 3] = "Complete", e[e.Forbidden = 4] = "Forbidden", e[e.Error = 5] = "Error", e[e.End = 6] = "End"
        }(a = e.BtFileStatus || (e.BtFileStatus = {})), function (e) {
            e[e.DispatchStrategyNone = 0] = "DispatchStrategyNone", e[e.DispatchStrategyOrigin = 1] = "DispatchStrategyOrigin", e[e.DispatchStrategyP2s = 2] = "DispatchStrategyP2s", e[e.DispatchStrategyP2p = 4] = "DispatchStrategyP2p", e[e.DispatchStrategyAll = -1] = "DispatchStrategyAll"
        }(o = e.DispatchStrategy || (e.DispatchStrategy = {})), function (e) {
            e[e.Unkown = 0] = "Unkown", e[e.P2sp = 1] = "P2sp", e[e.Bt = 2] = "Bt", e[e.Emule = 3] = "Emule", e[e.Group = 4] = "Group", e[e.Magnet = 5] = "Magnet"
        }(r = e.TaskType || (e.TaskType = {})), function (e) {
            e.Unkown = "Unkown", e.Downloading = "Downloading", e.Completed = "Completed", e.Recycle = "Recycle"
        }(s = e.CategroyViewID || (e.CategroyViewID = {})), function (e) {
            e[e.Unknow = 0] = "Unknow", e[e.TaskCreated = 1] = "TaskCreated", e[e.InsertToCategoryView = 2] = "InsertToCategoryView", e[e.RemoveFromCategoryView = 3] = "RemoveFromCategoryView", e[e.StatusChanged = 4] = "StatusChanged", e[e.DetailChanged = 5] = "DetailChanged", e[e.ChannelInfoChanged = 6] = "ChannelInfoChanged", e[e.DcdnStatusChanged = 7] = "DcdnStatusChanged", e[e.TaskDescriptionChanged = 8] = "TaskDescriptionChanged", e[e.TaskUserRead = 9] = "TaskUserRead", e[e.TaskRenamed = 10] = "TaskRenamed", e[e.TaskMovedEnd = 11] = "TaskMovedEnd", e[e.BtSubFileDetailChanged = 12] = "BtSubFileDetailChanged", e[e.BtSubFileForbidden = 13] = "BtSubFileForbidden", e[e.TaskCategoryMovedEnd = 14] = "TaskCategoryMovedEnd", e[e.GroupTaskSubFileDetailChanged = 15] = "GroupTaskSubFileDetailChanged", e[e.TaskDestroying = 16] = "TaskDestroying", e[e.TaskDestroyed = 17] = "TaskDestroyed"
        }(l = e.TaskEventType || (e.TaskEventType = {})), function (e) {
            e[e.NumberStrart = 0] = "NumberStrart", e[e.TaskId = 1] = "TaskId", e[e.VirtualId = 2] = "VirtualId", e[e.SrcTotal = 3] = "SrcTotal", e[e.SrcUsing = 4] = "SrcUsing", e[e.FileSize = 5] = "FileSize", e[e.ReceivedSize = 6] = "ReceivedSize", e[e.DownloadSize = 7] = "DownloadSize", e[e.CreateTime = 8] = "CreateTime", e[e.CompletionTime = 9] = "CompletionTime", e[e.DownloadingPeriod = 10] = "DownloadingPeriod", e[e.Progress = 11] = "Progress", e[e.RecycleTime = 12] = "RecycleTime", e[e.FileCreated = 13] = "FileCreated", e[e.Forbidden = 14] = "Forbidden", e[e.CategoryId = 15] = "CategoryId", e[e.UserRead = 16] = "UserRead", e[e.OpenOnComplete = 17] = "OpenOnComplete", e[e.GroupTaskId = 18] = "GroupTaskId", e[e.DownloadSubTask = 19] = "DownloadSubTask", e[e.NameType = 20] = "NameType", e[e.OwnerProduct = 21] = "OwnerProduct", e[e.FileIndex = 22] = "FileIndex", e[e.NumberEnd = 23] = "NumberEnd", e[e.BooleanStart = 24] = "BooleanStart", e[e.Destroyed = 25] = "Destroyed", e[e.Background = 26] = "Background", e[e.BooleanEnd = 27] = "BooleanEnd", e[e.StringStart = 28] = "StringStart", e[e.TaskName = 29] = "TaskName", e[e.SavePath = 30] = "SavePath", e[e.TaskUrl = 31] = "TaskUrl", e[e.RefUrl = 32] = "RefUrl", e[e.Cid = 33] = "Cid", e[e.Gcid = 34] = "Gcid", e[e.Cookie = 35] = "Cookie", e[e.ProductInfo = 36] = "ProductInfo", e[e.Origin = 37] = "Origin", e[e.Description = 38] = "Description", e[e.UserData = 39] = "UserData", e[e.StringEnd = 40] = "StringEnd", e[e.ObjectStart = 41] = "ObjectStart", e[e.ObjectEnd = 42] = "ObjectEnd", e[e.CategoryViewId = 43] = "CategoryViewId", e[e.TaskType = 44] = "TaskType", e[e.ErrorCode = 45] = "ErrorCode"
        }(u = e.TaskAttribute || (e.TaskAttribute = {})), function (e) {
            e[e.NumberStrart = 0] = "NumberStrart", e[e.TaskId = 1] = "TaskId", e[e.FileStatus = 2] = "FileStatus", e[e.DownloadSize = 3] = "DownloadSize", e[e.FileSize = 4] = "FileSize", e[e.EnableDcdn = 5] = "EnableDcdn", e[e.ErrorCode = 6] = "ErrorCode", e[e.DcdnStatus = 7] = "DcdnStatus", e[e.RealIndex = 8] = "RealIndex", e[e.FileOffset = 9] = "FileOffset", e[e.Visible = 10] = "Visible", e[e.Download = 11] = "Download", e[e.NumberEnd = 12] = "NumberEnd", e[e.StringStart = 13] = "StringStart", e[e.FinalName = 14] = "FinalName", e[e.RelativePath = 15] = "RelativePath", e[e.FileName = 16] = "FileName", e[e.FilePath = 17] = "FilePath", e[e.Cid = 18] = "Cid", e[e.Gcid = 19] = "Gcid", e[e.StringEnd = 20] = "StringEnd"
        }(d = e.BtFileAttribute || (e.BtFileAttribute = {})), function (e) {
            e[e.P2spUrl = 0] = "P2spUrl", e[e.BtInfoId = 1] = "BtInfoId", e[e.EmuleFileHash = 2] = "EmuleFileHash", e[e.MagnetUrl = 3] = "MagnetUrl"
        }(c = e.KeyType || (e.KeyType = {})), function (e) {
            e[e.NameInclude = 1] = "NameInclude", e[e.BtDisplayNameInclude = 2] = "BtDisplayNameInclude"
        }(h = e.SearchKeyType || (e.SearchKeyType = {})), function (e) {
            e[e.All = 0] = "All", e[e.CommonForeground = 1] = "CommonForeground", e[e.CommonBackground = 2] = "CommonBackground", e[e.Temporary = 3] = "Temporary", e[e.PreDownload = 4] = "PreDownload", e[e.PrivateForeground = 5] = "PrivateForeground"
        }(f = e.KeyFilter || (e.KeyFilter = {})), function (e) {
            e[e.Unknown = -1] = "Unknown", e[e.LoadTaskBasic = 0] = "LoadTaskBasic", e[e.Create = 1] = "Create", e[e.Recycle = 2] = "Recycle", e[e.Recover = 3] = "Recover", e[e.ReDownload = 4] = "ReDownload", e[e.MoveThoughCategory = 5] = "MoveThoughCategory"
        }(p = e.TaskInsertReason || (e.TaskInsertReason = {})), function (e) {
            e[e.Unknown = -1] = "Unknown", e[e.ContextMenu = 0] = "ContextMenu", e[e.Button = 1] = "Button", e[e.TaskDetail = 2] = "TaskDetail", e[e.DownloadMagnet = 3] = "DownloadMagnet", e[e.ToolbarButton = 4] = "ToolbarButton", e[e.SelectDownloadLists = 5] = "SelectDownloadLists", e[e.DeleteTask = 6] = "DeleteTask"
        }(g = e.TaskStopReason || (e.TaskStopReason = {}))
    }(t.DownloadKernel || (t.DownloadKernel = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
        return require(e)
    }
}, function (e, t) {
    e.exports = require("util")
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(7), a = n(15), o = n(16), r = n(23), s = n(24);
    !function (e) {
        let t;
        !function (e) {
            e[e.Unknown = -1] = "Unknown", e[e.Success = 0] = "Success", e[e.FunctionNotExist = 1] = "FunctionNotExist", e[e.ParamaterError = 2] = "ParamaterError", e[e.CallFailed = 3] = "CallFailed"
        }(t = e.NativeCallErrorCode || (e.NativeCallErrorCode = {}));

        class n {
            constructor(e, t, n) {
                this.maxId = e, this.minId = t, this.invalidId = n
            }

            generateId() {
                return this.minId === this.maxId ? this.invalidId : this.minId++
            }

            isInvalidId(e) {
                return e === this.invalidId
            }
        }

        e.IdGenerator = n;
        const l = 0;
        e.idGenerator = new n(1e7, 1, l);

        class u {
            constructor() {
                this.jsCallbacks = new Map, this.eventJsCallbakcs = new Map, this.jsRegisterFunctions = new Map, this.targetCommunitorInfo = s.CommonIPCRenderer.rendererCommunicator.getCommunicatorInfoByContext(r.CommonIPCBase.mainRendererContext), this.bindMsgListeners(), this.notifyNativeCallReady()
            }

            CallNativeFunction(t, ...n) {
                do {
                    if (i.isNullOrUndefined(t) || 0 === t.length) {
                        a.error("funcName is empty");
                        break
                    }
                    a.information("funcName = ", t), this.printArgs(n);
                    let r = l;
                    for (let t = 0; t < n.length; ++t) if (i.isFunction(n[t])) {
                        let i = e.idGenerator.generateId(), a = n[t];
                        this.jsCallbacks.set(i, a), t === n.length - 1 ? (r = i, n.pop()) : n[t] = i
                    }
                    s.CommonIPCRenderer.rendererCommunicator.sendMessageToRenderer(this.targetCommunitorInfo.id, {
                        name: o.CommonIPCMessage.msgNCCallNativeFunction,
                        args: [t, r].concat(n)
                    })
                } while (0)
            }

            AttachNativeEvent(t, n) {
                let o = void 0;
                do {
                    if (i.isNullOrUndefined(t) || 0 === t.length) {
                        a.error("eventName is empty");
                        break
                    }
                    if (i.isNullOrUndefined(n)) {
                        a.error("callback is empty");
                        break
                    }
                    let r = e.idGenerator.generateId();
                    if (e.idGenerator.isInvalidId(r)) {
                        a.error("id error");
                        break
                    }
                    if (this.eventJsCallbakcs.has(t)) this.eventJsCallbakcs.get(t).set(r, n); else {
                        let e = new Map;
                        e.set(r, n), this.eventJsCallbakcs.set(t, e)
                    }
                    o = r
                } while (0);
                return o
            }

            DetachNativeEvent(e, t) {
                do {
                    if (i.isNullOrUndefined(e) || 0 === e.length) {
                        a.error("eventName is empty");
                        break
                    }
                    if (i.isNullOrUndefined(t)) {
                        a.error("callback is empty");
                        break
                    }
                    if (!this.eventJsCallbakcs.has(e)) {
                        a.error(`event: ${e} doesnot have listener`);
                        break
                    }
                    if (!this.eventJsCallbakcs.get(e).has(t)) {
                        a.error(`event: ${e} doesnot have the listener of id=${t}`);
                        break
                    }
                    this.eventJsCallbakcs.get(e).delete(t)
                } while (0)
            }

            CheckNativeFunction(t, n) {
                do {
                    if (i.isNullOrUndefined(t) || 0 === t.length) {
                        a.error("funcName is empty");
                        break
                    }
                    if (i.isNullOrUndefined(n)) {
                        a.error("callback is empty");
                        break
                    }
                    a.information("funcName = ", t);
                    let r = e.idGenerator.generateId();
                    this.jsCallbacks.set(r, n), s.CommonIPCRenderer.rendererCommunicator.sendMessageToRenderer(this.targetCommunitorInfo.id, {
                        name: o.CommonIPCMessage.msgNCCheckNativeFunction,
                        args: [t, r]
                    })
                } while (0)
            }

            RegisterJSFunction(e, n) {
                let o = t.ParamaterError;
                do {
                    if (i.isNullOrUndefined(e) || 0 === e.length) {
                        a.error("funcName is empty");
                        break
                    }
                    if (i.isNullOrUndefined(n)) {
                        a.error("jsFunc is empty");
                        break
                    }
                    this.jsRegisterFunctions.set(e, n), o = t.Success
                } while (0);
                return o
            }

            bindMsgListeners() {
                s.CommonIPCRenderer.rendererCommunicator.onMessage(o.CommonIPCMessage.msgNCCallJsFunctionById, e => {
                    this.handleCallJsFunctionById(e.msg.args)
                }), s.CommonIPCRenderer.rendererCommunicator.onMessage(o.CommonIPCMessage.msgNCCallJsFunctionByName, e => {
                    this.handleCallJsFunctionByName(e.msg.args)
                }), s.CommonIPCRenderer.rendererCommunicator.onMessage(o.CommonIPCMessage.msgNCNativeFireEvent, e => {
                    this.handleNativeFireEvent(e.msg.args)
                })
            }

            handleCallJsFunctionById(e) {
                do {
                    let t = e[0];
                    if (!i.isNumber(t)) {
                        a.error(`id error id = ${t}`);
                        break
                    }
                    if (!this.jsCallbacks.has(t)) {
                        a.error(`jsCallbacks[${t}] is null`);
                        break
                    }
                    e.splice(0, 1), this.jsCallbacks.get(t).apply(null, e)
                } while (0)
            }

            handleCallJsFunctionByName(e) {
                do {
                    let t = e[0];
                    if (!i.isString(t)) {
                        a.error(`funcName error funcName = ${t}`);
                        break
                    }
                    if (!this.jsRegisterFunctions.has(t)) {
                        a.error(`jsRegisterFunctions[${t}] is null`);
                        break
                    }
                    e.splice(0, 1), this.jsRegisterFunctions.get(t).apply(null, e)
                } while (0)
            }

            handleNativeFireEvent(e) {
                do {
                    let t = e[0];
                    if (!i.isString(t)) {
                        a.error(`eventName error eventName = ${t}`);
                        break
                    }
                    if (!this.eventJsCallbakcs.has(t)) {
                        a.error(`eventJsCallbakcs[${t}] is null`);
                        break
                    }
                    e.shift(), this.eventJsCallbakcs.get(t).forEach((t, n, o) => {
                        a.information(`value = ${t}, key = ${n}, map = ${o}`), i.isNullOrUndefined(t) || t.apply(null, e)
                    })
                } while (0)
            }

            notifyNativeCallReady() {
                s.CommonIPCRenderer.rendererCommunicator.sendMessageToRenderer(this.targetCommunitorInfo.id, {
                    name: o.CommonIPCMessage.msgNCNativeCallReady,
                    args: [s.CommonIPCRenderer.rendererCommunicator.getCommunicatorInfo()]
                })
            }

            printArgs(e) {
                for (let t in e) a.information(`index ${t} = `, e[t])
            }
        }

        e.NativeCallImpl = u, e.nativeCall = new u
    }(t.NativeCallModule || (t.NativeCallModule = {}))
}, function (e, t) {
    e.exports = vendor_d9e01c0f2a82a32a4643
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(3), o = n(14), r = n(2), s = n(22), l = n(1), u = n(5), d = n(11), c = n(8), h = n(17), f = n(19),
        p = l.default.getLogger("Thunder.Util"), g = "Thunder Network\\Thunder7.9\\";

    function k(e) {
        let t = e;
        return 0 === e.indexOf('"') && e.lastIndexOf('"') === e.length - 1 ? t = e.substring(1, e.length - 1) : 0 === e.indexOf("'") && e.lastIndexOf("'") === e.length - 1 && (t = e.substring(1, e.length - 1)), t
    }

    !function (e) {
        function t(e) {
            let t = !0;
            if ("string" == typeof e) if (40 === e.length || 32 === e.length) {
                for (let n = 0; n < e.length; n++) if (e.charCodeAt(n) > 127) {
                    t = !1;
                    break
                }
            } else t = !1; else t = !1;
            return t
        }

        function n(e) {
            let n = !1;
            do {
                if ("string" != typeof e || "" === e) break;
                let i = e.trim();
                if ("" === i) break;
                if (f.ThunderHelper.getTaskTypeFromUrl(i) === u.DownloadKernel.TaskType.Unkown) {
                    t(i) && (n = !0)
                } else n = !0;
                n || i.match(/^file:\/\/\//) && (n = !0)
            } while (0);
            return n
        }

        function l(e, t, n) {
            return i(this, void 0, void 0, function* () {
                return new Promise(i => {
                    c.NativeCallModule.nativeCall.CallNativeFunction("GetConfigValue", e, t, n, (e, t) => {
                        e === h.NativeFunctionErrorCode.Success ? i(t) : i(n)
                    })
                })
            })
        }

        function m() {
            let e = f.ThunderHelper.getSystemTempPath(), t = f.ThunderHelper.getLogicalDriveStrings(), n = 0;
            for (let i = 0; i < t.length; i++) {
                let a = f.ThunderHelper.getDriveInfo(t[i]);
                3 === a.type && n < a.freeBytes && t[i] !== e && (n = a.freeBytes, e = t[i])
            }
            return e.substring(0, 1) + ":\\迅雷下载"
        }

        function T(e, t) {
            if (null !== e) {
                e.webContents.isDevToolsOpened() ? e.webContents.closeDevTools() : e.webContents.openDevTools(t)
            }
        }

        e.isMagnetCode = t, e.fixMagnetUrl = function (e) {
            let n = "";
            do {
                if ("string" != typeof e || "" === e) break;
                if ("" === (n = e.trim())) break;
                f.ThunderHelper.getTaskTypeFromUrl(n) === u.DownloadKernel.TaskType.Unkown && t(n) && (n = "magnet:?xt=urn:btih:" + n)
            } while (0);
            return n
        }, e.isUrlValid = n, e.isCustomProtocol = function (e) {
            let t = !1, n = s.parse(e);
            do {
                if (null === n || void 0 === n) break;
                let e = n.protocol;
                if ("magnet:" === e) {
                    t = !0;
                    break
                }
                if ("thunder:" === e) {
                    t = !0;
                    break
                }
                if ("ed2k:" === e) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }, e.formatSize = function (e, t) {
            t = t || 2;
            let n = "0B";
            if ("number" == typeof e && e > 0) {
                let i = ["B", "KB", "MB", "GB", "TB"], a = 0, o = e;
                for (; o >= 1e3 && !(a >= 4);) o /= 1024, a += 1;
                n = -1 === String(o).indexOf(".") ? o + i[a] : o.toFixed(t) + i[a]
            }
            return n
        }, e.isDigital = function (e) {
            let t = !1;
            return /^\d+$/.test(e) && (t = !0), t
        }, e.isAlpha = function (e) {
            let t = !1;
            return /[A-Za-z]/.test(e) && (t = !0), t
        }, e.isUpperCase = function (e) {
            let t = !1;
            return /[A-Z]/.test(e) && (t = !0), t
        }, e.isLowerCase = function (e) {
            let t = !1;
            return /[a-z]/.test(e) && (t = !0), t
        }, e.isChinese = function (e) {
            let t = !1;
            return /[\u4E00-\u9FA5]/.test(e) && (t = !0), t
        }, e.replaceNonDigital = function (e) {
            return e.replace(/[^\d]/g, "")
        }, e.replaceNonAlpha = function (e) {
            return e.replace(/[^A-Za-z]/g, "")
        }, e.replaceNonWord = function (e) {
            return e.replace(/[^\W]/g, "")
        }, e.isP2spOrEmuleUrl = function (e) {
            let t = !1;
            do {
                if (null === e || void 0 === e || "" === e) break;
                let n = e.trim();
                if ("" === n) break;
                let i = f.ThunderHelper.getTaskTypeFromUrl(n);
                if (i === u.DownloadKernel.TaskType.P2sp || i === u.DownloadKernel.TaskType.Emule) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }, e.getConfigValueAW = l, e.getDefaultDownloadDir = m, e.getMaxFreeDriver = function () {
            return m().substring(0, 1)
        }, e.getDownloadDir = function () {
            return i(this, void 0, void 0, function* () {
                let e = "";
                do {
                    if (void 0 !== (e = (yield l("TaskDefaultSettings", "UseLastCatalog", !0)) ? yield l("PathAndCategory", "LastUsedPath", "") : yield l("TaskDefaultSettings", "DefaultPath", "")) && null !== e && "" !== e && (yield d.FileSystemAWNS.mkdirsAW(e))) break;
                    e = m()
                } while (0);
                return e
            })
        }, e.formatDate = function (e, t) {
            /(y+)/.test(t) && (t = t.replace(RegExp.$1, (e.getFullYear() + "").substr(4 - RegExp.$1.length)));
            let n = {
                "M+": e.getMonth() + 1,
                "d+": e.getDate(),
                "h+": e.getHours(),
                "m+": e.getMinutes(),
                "s+": e.getSeconds()
            };
            for (let e in n) {
                let i = n[e] + "";
                new RegExp(`(${e})`).test(t) && (t = t.replace(RegExp.$1, 1 === RegExp.$1.length ? i : ("00" + (i = i)).substr(i.length)))
            }
            var i;
            if (/(f+)/.test(t)) {
                let n = e.getMilliseconds() + "";
                t = t.replace(RegExp.$1, ("000" + n).substr(n.length))
            }
            return t
        }, e.formatSeconds = function (e) {
            let t = "";
            do {
                if (e <= 0) {
                    t = "00:00:00";
                    break
                }
                let n = Math.floor(e / 3600), i = Math.floor(e / 60) % 60, a = Math.floor(e % 60);
                t = n < 10 ? "0" + n + ":" : n + ":", t += i < 10 ? "0" + i + ":" : i + ":", t += a < 10 ? "0" + a : "" + a
            } while (0);
            return t
        }, e.openDevTool = T, e.deepCopy = function (e) {
            let t = JSON.stringify(e), n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                p.warning(e)
            }
            return n
        }, e.swap = function (e, t, n) {
            do {
                if (t < 0 || t >= e.length) break;
                if (n < 0 || n >= e.length) break;
                if (t === n) break;
                e[t] = e.splice(n, 1, e[t])[0]
            } while (0);
            return e
        }, e.compareNocase = function (e, t) {
            let n = !1;
            do {
                if (void 0 === e && void 0 === t) {
                    n = !0;
                    break
                }
                if (void 0 === e || void 0 === t) break;
                if ("string" != typeof e || "string" != typeof t) break;
                n = e.toLowerCase() === t.toLowerCase()
            } while (0);
            return n
        }, e.parseCommandLine = function (e) {
            let t = 0, n = "", i = !1, a = [], o = e.length;
            for (let r = 0; r < o; r++) {
                let s = e[r];
                if ('"' !== s && "'" !== s || ("" === n ? (i = !0, n = s) : n === s && (i = !1, n = "")), " " !== s || i || r === o - 1) {
                    if (r === o - 1) {
                        let n = e.substring(t);
                        "" !== n.trim() && a.push(k(n))
                    }
                } else {
                    let n = e.substring(t, r);
                    "" !== n.trim() && a.push(k(n)), t = r + 1
                }
            }
            return a
        }, e.isSupportUrl = function (e) {
            e = e.toLowerCase();
            let t = !1;
            do {
                if ("http://" === e.substr(0, "http://".length)) {
                    t = !0;
                    break
                }
                if ("https://" === e.substr(0, "https://".length)) {
                    t = !0;
                    break
                }
                if ("ftp://" === e.substr(0, "ftp://".length)) {
                    t = !0;
                    break
                }
                if ("ed2k://" === e.substr(0, "ed2k://".length)) {
                    t = !0;
                    break
                }
                if ("thunder://" === e.substr(0, "thunder://".length)) {
                    t = !0;
                    break
                }
                if ("magnet:?" === e.substr(0, "magnet:?".length)) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        };
        let v = ".edu;.gov;.mil;.hk;.tw;.com.tw;.com.tw;.aero;.biz;.coop;.info;.museum;.name;.pro;";
        v += ".com;.cn;.xin;.net;.top;.xyz;.wang;.shop;.site;.club;.cc;.fun;.online;.biz;.red;.link;.ltd;.mobi;.info;.org;", v += ".com.cn;.net.cn;.org.cn;.gov.cn;.name;.vip;.work;.tv;.co;.kim;.group;.tech;.store;.ren;.ink;.pub;.live;.wiki;.design;";
        const w = (v += ".me").split(";");

        function y(e) {
            let t = !1;
            do {
                if (void 0 === e || null === e || "" === e) break;
                if (-1 !== w.indexOf(e)) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }

        function S(e) {
            let t = null;
            do {
                if (void 0 === e || null === e) break;
                if ("" === (e = e.trim())) break;
                let n = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/.exec(e);
                if (null === n) break;
                p.information("url parse result ", n), t = {};
                let i = ["url", "scheme", "slash", "host", "port", "path", "query", "hash"];
                for (let e = 0; e < i.length; e++) t[i[e]] = n[e];
                p.information("url parse", t)
            } while (0);
            return t
        }

        function b() {
            let e = !1, t = a.clipboard.availableFormats();
            for (let n of t) if ("text/plain" === n) {
                e = !0;
                break
            }
            return e
        }

        e.isUsualDomainSuffix = y, e.urlParse = S, e.isUrl = function (e) {
            let t = !1, i = e;
            do {
                if (void 0 === e || null === e) break;
                if (n(e)) {
                    t = !0;
                    break
                }
                let a = S(e);
                if (null === a) {
                    p.information("url parse failed");
                    break
                }
                if (void 0 === a.host || null === a.host) break;
                if (void 0 !== a.scheme) {
                    t = !0;
                    break
                }
                let o = a.host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
                if (o) {
                    if (p.information("url parse is ip", o), Number(o[1]) <= 0 || Number(o[1]) > 255) {
                        t = !1;
                        break
                    }
                    if (Number(o[2]) < 0 || Number(o[2]) > 255) {
                        t = !1;
                        break
                    }
                    if (Number(o[4]) < 0 || Number(o[4]) > 255) {
                        t = !1;
                        break
                    }
                    if (Number(o[4]) < 0 || Number(o[4]) > 255) {
                        t = !1;
                        break
                    }
                    t = !0, void 0 === a.scheme && void 0 !== a.port && (i = `http://${e}`);
                    break
                }
                if (a.host.match(/\.{2,}/)) {
                    p.information("url parse has multi dot"), t = !1;
                    break
                }
                let s = r.extname(a.host);
                if ("" === s) break;
                if (y(s)) {
                    t = !0;
                    break
                }
            } while (0);
            return p.information("url parse isUrl", t), {ret: t, suggest: i}
        }, e.getThunderTempPath = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = r.join(o.tmpdir(), g);
                return void 0 !== e && e && (yield d.FileSystemAWNS.mkdirsAW(t)), t
            })
        }, e.setQueryString = function (e, t) {
            return Object.keys(t).forEach((n, i) => {
                e += 0 === i ? "?" : "&", e += `${n}=${t[n]}`
            }), e
        }, e.getQueryString = function (e, t) {
            return e && t && e.match(new RegExp(`(^${t}|[?|&]${t})=([^&#]+)`)) ? RegExp.$2 : ""
        }, e.isFileNameValid = function (e) {
            let t = !1;
            do {
                if (void 0 === e) break;
                if (null === e) break;
                if ("" === (e = e.trim())) break;
                if ("." === e[0]) break;
                if (e.match(/[\/\\"<>\?\*|]/)) break;
                t = !0
            } while (0);
            return t
        }, e.enableDevTools = function (e) {
        }, e.enableDragOpenFile = function (e) {
            void 0 === e && (e = !1), document.addEventListener("dragover", e => {
                e.preventDefault()
            }, !1), document.addEventListener("drop", e => i(this, void 0, void 0, function* () {
                e.preventDefault();
                let t = e.dataTransfer, n = t.files, i = t.items;
                if (void 0 !== i && null !== i && i.length > 0) for (let e = 0; e < i.length; e++) {
                    let t = i[e];
                    "string" === t.kind && "text/uri-list" === t.type ? t.getAsString(e => {
                        c.NativeCallModule.nativeCall.CallNativeFunction("DropOpenUrl", e)
                    }) : t.kind
                }
                if (void 0 !== n && null !== n && n.length > 0) for (let e = 0; e < n.length; e++) {
                    let t = n[e].path;
                    void 0 !== t && null !== t && "" !== t && (yield d.FileSystemAWNS.existsAW(t)) && c.NativeCallModule.nativeCall.CallNativeFunction("DropOpenFile", t)
                }
            }), !1)
        }, e.isSuffixNeedDownload = function (e) {
            let t = !0;
            do {
                if (void 0 === e) break;
                if ("" === e || "." === e) break;
                if (e = e.toLowerCase(), -1 !== ["txt", "url", "html", "htm", "mht", "nfo"].indexOf(e)) {
                    t = !1;
                    break
                }
            } while (0);
            return t
        }, e.isClipboardTextFormatAvailable = b, e.popEditableDefaultContextMenu = function (e, t, n) {
            a.remote.getCurrentWebContents().once("context-menu", (n, i) => {
                if (p.verbose(n), i.isEditable) {
                    let n = [{
                        label: "撤销",
                        role: "undo",
                        enabled: i.editFlags.canUndo
                    }, {type: "separator"}, {label: "剪切", role: "cut", enabled: i.editFlags.canCut}, {
                        label: "复制",
                        role: "copy",
                        enabled: i.editFlags.canCopy
                    }, {
                        label: "粘贴", enabled: i.editFlags.canPaste && b(), click: () => {
                            a.remote.getCurrentWebContents().paste()
                        }
                    }, {label: "删除", role: "delete", enabled: i.editFlags.canDelete}, {type: "separator"}, {
                        label: "全选",
                        role: "selectall",
                        enabled: i.editFlags.canSelectAll
                    }];
                    if (void 0 !== e && "function" == typeof e) {
                        let a = e(i);
                        void 0 !== a && a.length > 0 && (void 0 === t ? t = n.length : (t < 0 && (t = n.length + 1 + t) < 0 && (t = 0), t > n.length && (t = n.length)), n.splice(t, 0, ...a))
                    }
                    let o = a.remote.Menu.buildFromTemplate(n);
                    o.setStyle({}), o.popup({window: a.remote.getCurrentWindow()})
                }
            })
        }, e.popInputMenu = function () {
            a.remote.Menu.buildFromTemplate([{label: "撤销", role: "undo"}, {type: "separator"}, {
                label: "剪切",
                role: "cut"
            }, {label: "复制", role: "copy"}, {label: "粘贴", role: "paste"}, {
                label: "删除",
                role: "delete"
            }, {type: "separator"}, {label: "全选", role: "selectall"}]).popup(a.remote.getCurrentWindow())
        }, e.resizeToFitContent = function () {
            let e = document.querySelector(".td-dialog");
            window.resizeTo(e.offsetWidth + 40, e.offsetHeight + 40)
        }, e.autoAdaptScrollIntoView = function (e, t, n) {
            let i = t.scrollTop, a = t.getBoundingClientRect(), o = e.getBoundingClientRect(), r = a.bottom;
            void 0 !== n && "number" == typeof n && n > 0 && (r = a.top + n), o.top < a.top ? t.scrollTop = i - (a.top - o.top) : o.bottom > r && (t.scrollTop = i + (o.bottom - r))
        }, e.keywordsHighLight = function (e, t, n) {
            if (!e) return "";
            if (!t) return e;
            if (0 === e.length) return e;
            if (0 === t.length) return e;
            let i = /\\/, a = t.split(" ");
            if (0 === (a = a.filter(function (e) {
                return e.trim().length > 0
            })).length) return e;
            for (let t = 0; t < a.length; t++) if (a[t].search(i) > 0) return e;
            n = void 0 === n || null === n ? "#FF0000" : n;
            let o = "", r = ["\\[", "\\^", "\\*", "\\(", "\\)", "\\|", "\\?", "\\$", "\\.", "\\+"], s = "", l = "|";
            for (let e = 0; e < a.length; e++) {
                for (let t = 0; t < r.length; t++) {
                    let n = new RegExp(r[t], "g");
                    a[e] = a[e].replace(n, r[t])
                }
                e === a.length - 1 && (l = ""), s = s.concat(a[e], l)
            }
            let u = new RegExp(s, "gi");
            return o = e.replace(u, function (e) {
                return '<span style= "color:' + n + '">' + e + "</span>"
            })
        }, e.convertTimeToMinutes = function (e, t, n) {
            return 3600 * e + 60 * t + n
        }, e.convertMinuteToTime = function (e) {
            return [Math.floor(e / 3600), Math.floor(e / 60 % 60), Math.floor(e % 60)]
        }
    }(t.ThunderUtil || (t.ThunderUtil = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(18), o = n(2), r = n(7), s = n(14), l = r.promisify,
        u = n(1).default.getLogger("Thunder.base.fs-utilities");
    !function (e) {
        function t(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                if (void 0 !== e) {
                    const n = l(a.access);
                    try {
                        yield n(e), t = !0
                    } catch (e) {
                        u.information(e)
                    }
                }
                return t
            })
        }

        function n(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                if (void 0 !== e) {
                    const n = l(a.mkdir);
                    try {
                        yield n(e), t = !0
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return t
            })
        }

        function r(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                if (void 0 !== e) {
                    const n = l(a.rmdir);
                    try {
                        yield n(e), t = !0
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return t
            })
        }

        function d(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                if (void 0 !== e) {
                    const n = l(a.unlink);
                    try {
                        yield n(e), t = !0
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return t
            })
        }

        function c(e) {
            return i(this, void 0, void 0, function* () {
                let t = null;
                if (void 0 !== e) {
                    const n = l(a.readdir);
                    try {
                        t = yield n(e)
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return t
            })
        }

        function h(e) {
            return i(this, void 0, void 0, function* () {
                let t = null;
                if (void 0 !== e) {
                    const n = l(a.lstat);
                    try {
                        t = yield n(e)
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return t
            })
        }

        function f(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1;
                if (void 0 !== e && void 0 !== t) {
                    let i = o.join(e, t), a = yield h(i);
                    n = null !== a && a.isDirectory() ? yield p(i) : yield d(i)
                }
                return n
            })
        }

        function p(e) {
            return i(this, void 0, void 0, function* () {
                let n = !1;
                if (void 0 !== e) {
                    if (yield t(e)) {
                        n = !0;
                        let t = yield c(e);
                        for (let i = 0; i < t.length; i++) n = (yield f(e, t[i])) && n;
                        (n || 0 === t.length) && (n = (yield r(e)) && n)
                    }
                }
                return n
            })
        }

        function g(e) {
            return i(this, void 0, void 0, function* () {
                let i = !1;
                return u.information("mkdirsAW", e), void 0 !== e && ((yield t(e)) ? i = !0 : o.dirname(e) === e ? i = !1 : (yield g(o.dirname(e))) && (i = yield n(e))), i
            })
        }

        function k(e, n) {
            return i(this, void 0, void 0, function* () {
                let i;
                if (e.toLowerCase() !== n.toLowerCase() && (yield t(e))) {
                    let t = a.createReadStream(e), o = a.createWriteStream(n);
                    i = new Promise(e => {
                        t.pipe(o).on("finish", () => {
                            e(!0)
                        })
                    })
                } else i = new Promise(e => {
                    e(!1)
                });
                return i
            })
        }

        e.readFileAW = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = null;
                if (void 0 !== e) {
                    const n = l(a.readFile);
                    try {
                        t = yield n(e)
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return t
            })
        }, e.writeFileAW = function (e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1;
                if (void 0 !== e && null !== t) {
                    const i = l(a.writeFile);
                    try {
                        yield i(e, t), n = !0
                    } catch (e) {
                        u.warning(e)
                    }
                }
                return n
            })
        }, e.existsAW = t, e.mkdirAW = n, e.rmdirAW = r, e.unlinkAW = d, e.readdirAW = c, e.lstatAW = h, e.rmdirsAW = p, e.mkdirsAW = g, e.renameAW = function (e, t) {
            return i(this, void 0, void 0, function* () {
                if (void 0 !== e && void 0 !== t) {
                    const n = l(a.rename);
                    try {
                        yield n(e, t)
                    } catch (e) {
                        u.warning(e)
                    }
                }
            })
        }, e.copyFileAW = k, e.copyDirsAW = function e(n, a) {
            return i(this, void 0, void 0, function* () {
                let i = !1, r = yield h(n);
                if (r.isDirectory()) {
                    i = yield g(a);
                    let s = yield c(n);
                    for (let l = 0; l < s.length; l++) {
                        let u = o.join(n, s[l]), d = o.join(a, s[l]);
                        (i = yield t(u)) && (i = (r = yield h(u)).isDirectory() ? yield e(u, d) : yield k(u, d))
                    }
                }
                return i
            })
        }, e.mkdtempAW = function () {
            return i(this, void 0, void 0, function* () {
                let e = !1;
                const t = l(a.mkdtemp), n = s.tmpdir();
                try {
                    e = yield t(`${n}${o.sep}`)
                } catch (e) {
                    u.warning(e)
                }
                return e
            })
        }
    }(t.FileSystemAWNS || (t.FileSystemAWNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = n(87), a = n(165), o = Object.prototype.toString;

    function r(e) {
        return "[object Array]" === o.call(e)
    }

    function s(e) {
        return null !== e && "object" == typeof e
    }

    function l(e) {
        return "[object Function]" === o.call(e)
    }

    function u(e, t) {
        if (null !== e && void 0 !== e) if ("object" != typeof e && (e = [e]), r(e)) for (var n = 0, i = e.length; n < i; n++) t.call(null, e[n], n, e); else for (var a in e) Object.prototype.hasOwnProperty.call(e, a) && t.call(null, e[a], a, e)
    }

    e.exports = {
        isArray: r, isArrayBuffer: function (e) {
            return "[object ArrayBuffer]" === o.call(e)
        }, isBuffer: a, isFormData: function (e) {
            return "undefined" != typeof FormData && e instanceof FormData
        }, isArrayBufferView: function (e) {
            return "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(e) : e && e.buffer && e.buffer instanceof ArrayBuffer
        }, isString: function (e) {
            return "string" == typeof e
        }, isNumber: function (e) {
            return "number" == typeof e
        }, isObject: s, isUndefined: function (e) {
            return void 0 === e
        }, isDate: function (e) {
            return "[object Date]" === o.call(e)
        }, isFile: function (e) {
            return "[object File]" === o.call(e)
        }, isBlob: function (e) {
            return "[object Blob]" === o.call(e)
        }, isFunction: l, isStream: function (e) {
            return s(e) && l(e.pipe)
        }, isURLSearchParams: function (e) {
            return "undefined" != typeof URLSearchParams && e instanceof URLSearchParams
        }, isStandardBrowserEnv: function () {
            return ("undefined" == typeof navigator || "ReactNative" !== navigator.product) && "undefined" != typeof window && "undefined" != typeof document
        }, forEach: u, merge: function e() {
            var t = {};

            function n(n, i) {
                "object" == typeof t[i] && "object" == typeof n ? t[i] = e(t[i], n) : t[i] = n
            }

            for (var i = 0, a = arguments.length; i < a; i++) u(arguments[i], n);
            return t
        }, extend: function (e, t, n) {
            return u(t, function (t, a) {
                e[a] = n && "function" == typeof t ? i(t, n) : t
            }), e
        }, trim: function (e) {
            return e.replace(/^\s*/, "").replace(/\s*$/, "")
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2);
    let a = n(6).default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        function t(e) {
            do {
                if (void 0 === e) break;
                a.trackClick(e, 0)
            } while (0)
        }

        e.trackEvent = function (e, t = "", n = "", i = 0, o = 0, r = 0, s = 0, l = "", u = 0) {
            let d = 0;
            do {
                if (void 0 === e) {
                    d = 1;
                    break
                }
                d = a.trackEvent(e, t, n, i, o, r, s, l, u)
            } while (0);
            return d
        }, e.trackClick = t, e.trackShow = function (e) {
            t(e)
        }
    }(t.XLStatNS || (t.XLStatNS = {}))
}, function (e, t) {
    e.exports = require("os")
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.information = function (...e) {
    }, t.error = function (...e) {
    }, t.warning = function (...e) {
    }, t.critical = function (...e) {
    }, t.verbose = function (...e) {
    }, "development" === process.env.LOGGER_ENV && (t.information = function (...e) {
        console.log("information", e)
    }, t.error = function (...e) {
        console.log("error", e)
    }, t.warning = function (...e) {
        console.log("warning", e)
    }, t.critical = function (...e) {
        console.log("critical", e)
    }, t.verbose = function (...e) {
        console.log("verbose", e)
    })
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e.msgIPCCommunicatorForward = "ipc_communicator_forward", e.msgIPCRendererConnect = "ipc_renderer_connect", e.msgIPCRendererDisconnect = "ipc_renderer_disconnect", e.msgNCCallNativeFunction = "nc_call_native_function", e.msgNCCheckNativeFunction = "nc_check_native_function", e.msgNCCallJsFunctionById = "nc_call_js_function_by_id", e.msgNCCallJsFunctionByName = "nc_call_js_function_by_name", e.msgNCNativeFireEvent = "nc_native_fire_event", e.msgNCNativeCallReady = "nc_native_fire_event"
    }(t.CommonIPCMessage || (t.CommonIPCMessage = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e[e.NONE = 0] = "NONE", e[e.PAGE = 1] = "PAGE", e[e.FRAME = 2] = "FRAME", e[e.LINK = 4] = "LINK", e[e.MEDIA = 8] = "MEDIA", e[e.SELECTION = 16] = "SELECTION", e[e.EDITABLE = 32] = "EDITABLE"
    }(t.MenuNodeType || (t.MenuNodeType = {})), function (e) {
        e[e.NONE = 0] = "NONE", e[e.UNDO = 1] = "UNDO", e[e.REDO = 2] = "REDO", e[e.CUT = 4] = "CUT", e[e.COPY = 8] = "COPY", e[e.PASTE = 16] = "PASTE", e[e.DELETE = 32] = "DELETE", e[e.SELECT_ALL = 64] = "SELECT_ALL", e[e.TRANSLATE = 128] = "TRANSLATE"
    }(t.MenuEditableState || (t.MenuEditableState = {})), function (e) {
        e[e.NONE = 0] = "NONE", e[e.IMAGE = 1] = "IMAGE", e[e.VIDEO = 2] = "VIDEO", e[e.AUDIO = 3] = "AUDIO", e[e.FILE = 4] = "FILE", e[e.PLUGIN = 5] = "PLUGIN"
    }(t.MenuMediaType || (t.MenuMediaType = {})), function (e) {
        e[e.HWND_NOTOPMOST = -2] = "HWND_NOTOPMOST", e[e.HWND_TOPMOST = -1] = "HWND_TOPMOST", e[e.HWND_TOP = 0] = "HWND_TOP", e[e.HWND_BOTTOM = 1] = "HWND_BOTTOM"
    }(t.OptionOfhwndInAfter || (t.OptionOfhwndInAfter = {})), function (e) {
        e[e.SWP_ASYNCWINDOWPOS = 16384] = "SWP_ASYNCWINDOWPOS", e[e.SWP_DEFERERASE = 8192] = "SWP_DEFERERASE", e[e.SWP_DRAWFRAME = 32] = "SWP_DRAWFRAME", e[e.SWP_FRAMECHANGED = 32] = "SWP_FRAMECHANGED", e[e.SWP_HIDEWINDOW = 128] = "SWP_HIDEWINDOW", e[e.SWP_NOACTIVATE = 16] = "SWP_NOACTIVATE", e[e.SWP_NOCOPYBITS = 256] = "SWP_NOCOPYBITS", e[e.SWP_NOMOVE = 2] = "SWP_NOMOVE", e[e.SWP_NOOWNERZORDER = 512] = "SWP_NOOWNERZORDER", e[e.SWP_NOREDRAW = 8] = "SWP_NOREDRAW", e[e.SWP_NOREPOSITION = 512] = "SWP_NOREPOSITION", e[e.SWP_NOSENDCHANGING = 1024] = "SWP_NOSENDCHANGING", e[e.SWP_NOSIZE = 1] = "SWP_NOSIZE", e[e.SWP_NOZORDER = 4] = "SWP_NOZORDER", e[e.SWP_SHOWWINDOW = 64] = "SWP_SHOWWINDOW"
    }(t.Uflags || (t.Uflags = {})), function (e) {
        e[e.WS_BORDER = 8388608] = "WS_BORDER", e[e.WS_CAPTION = 12582912] = "WS_CAPTION", e[e.WS_CHILD = 1073741824] = "WS_CHILD", e[e.WS_CHILDWINDOW = 1073741824] = "WS_CHILDWINDOW", e[e.WS_CLIPCHILDREN = 33554432] = "WS_CLIPCHILDREN", e[e.WS_CLIPSIBLINGS = 67108864] = "WS_CLIPSIBLINGS"
    }(t.WindowStyle || (t.WindowStyle = {})), function (e) {
        e[e.GWL_EXSTYLE = -20] = "GWL_EXSTYLE", e[e.GWL_HINSTANCE = -6] = "GWL_HINSTANCE", e[e.GWL_ID = -12] = "GWL_ID", e[e.GWL_STYLE = -16] = "GWL_STYLE", e[e.GWL_USERDATA = -21] = "GWL_USERDATA", e[e.GWL_WNDPROC = -4] = "GWL_WNDPROC"
    }(t.SetWindowType || (t.SetWindowType = {})), function (e) {
        e[e.WM_CREATE = 1] = "WM_CREATE", e[e.WM_DESTROY = 2] = "WM_DESTROY", e[e.WM_MOVE = 3] = "WM_MOVE", e[e.WM_SIZE = 5] = "WM_SIZE", e[e.WM_ACTIVATE = 6] = "WM_ACTIVATE", e[e.WM_SETFOCUS = 7] = "WM_SETFOCUS", e[e.WM_KILLFOCUS = 8] = "WM_KILLFOCUS", e[e.WM_ENABLE = 10] = "WM_ENABLE", e[e.WM_DPICHANGED = 736] = "WM_DPICHANGED"
    }(t.WindowMessages || (t.WindowMessages = {})), function (e) {
        e[e.SW_HIDE = 0] = "SW_HIDE", e[e.SW_SHOW = 5] = "SW_SHOW"
    }(t.showCmd || (t.showCmd = {})), function (e) {
        e[e.Success = 0] = "Success", e[e.FunctionUnExist = 1] = "FunctionUnExist", e[e.ParamError = 2] = "ParamError", e[e.CallFailed = 3] = "CallFailed"
    }(t.NativeFunctionErrorCode || (t.NativeFunctionErrorCode = {}))
}, function (e, t) {
    e.exports = require("fs")
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(6).default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        e.getDriveInfo = function (e) {
            return a.getDriveInfo(e)
        }, e.getFreePartitionSpace = function (e) {
            return a.getFreePartitionSpace(e)
        }, e.getLogicalDriveStrings = function () {
            return a.getLogicalDriveStrings()
        }, e.getPartitionSpace = function (e) {
            return a.getPartitionSpace(e)
        }, e.getSystemTempPath = function () {
            return a.getSystemTempPath()
        }, e.getTaskTypeFromUrl = function (e) {
            return a.getTaskTypeFromUrl(e)
        }
    }(t.ThunderHelper || (t.ThunderHelper = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e.channelRMNewTaskSetTaskData = "RM_NEWTASK_SETTASKDATA", e.channelRMPreNewTaskSetTaskData = "RM_PRENEWTASK_SETTASKDATA", e.channelRMNewTaskCreateNewTask = "RM_NEWTASK_CREATENEWTASK", e.channelRMNewTaskSetBTInfo = "RM_NEWTASK_SETBTINFO", e.channelRMNewTaskDownloadTorrent = "RM_NEW_TASK_DOWNLOAD_TORRENT", e.channelRMNewTaskCreateBtTask = "RM_NEWTASK_CRATEBTTASK", e.channelRMNewTaskCancleMagnet = "RM_NEWTASK_CANCLE_MAGNET", e.channelRMImportTorrent = "RM_NEWTASK_IMPORT_TORRENT", e.channelRMGetConfigValueResolve = "RM_GET_CONFIG_VALUE_RESOLVE", e.channelRMGetConfigValueReject = "RM_GET_CONFIG_VALUE_REJECT", e.channelMRTrayMenuClick = "MR_TRAY_MENU_CLICK", e.channelMRNewTaskMagnetTaskCreated = "MR_NEW_TASK_MAGNET_TASK_CREATED", e.channelMRNewTaskDownloadTorrentResult = "MR_NEW_TASK_DOWNLOAD_TORRENT_RESULT", e.channelMRNewTaskCreateNewTaskResult = "MR_NEWTASK_CREATENEWTASK_RESULT", e.channelMRNewTaskCreateBtTaskResult = "RM_NEWTASK_CRATEBTTASK_RESULT", e.channelMRGetConfigValue = "MR_GET_CONFIG_VALUE", e.channelMRSetConfigValue = "MR_SET_CONFIG_VALUE", e.channelRMCommitPlanTask = "RM_PLANTASK_COMMIT", e.channelRMPerformePlanTask = "RM_PLANTASK_PERFORME", e.channelRMProcessSend = "RM_RENDER_PROCESS_INFO", e.channelRMGetPrivateSpaceInfo = "RM_RENDER_GET_PRIVATE_SPACE_INFO", e.channelMRGetPrivateSpaceInfoResult = "MR_RENDER_GET_PRIVATE_SPACE_INFO_RESULT", e.channelRMFileCopy = "RM_FILE_COPY", e.channelRMFileMove = "RM_FILE_MOVE", e.channelMRFileCopyResult = "MR_FILE_COPY_RESULT", e.channelMRFileMoveResult = "MR_FILE_MOVE_RESULT", e.channelRMGetSutitleByCid = "RM_RENDER_GET_SUBTITLE_BY_CID", e.channelMRGetSutitleByCidResult = "MR_RENDER_GET_SUBTITLE_BY_CID_RESULT", e.channelRMGetSutitleByName = "RM_RENDER_GET_SUBTITLE_BY_NAME", e.channelMRGetSutitleByNameResult = "MR_RENDER_GET_SUBTITLE_BY_NAME_RESULT", e.channelRMDownloadSutitle = "RM_RENDER_DOWNLOAD_SUBTITLE", e.channelMRDownloadSutitleSuc = "MR_RENDER_DOWNLOAD_SUBTITLE_SUCCESS", e.channelMRDownloadSutitleFail = "MR_RENDER_DOWNLOAD_SUBTITLE_FAIL", e.channelRMGetDisplayName = "RM_RENDER_GET_SUBTITLE_DISPLAYNAME", e.channelMRGetDisplayNameResult = "MR_RENDER_GET_SUBTITLE_DISPLAYNAME_RESULT", e.channelMRBringWindowToTop = "MR_RENDER_BRING_WINDOW_TO_TOP", e.channelRMDownloadXmp = "RM_RENDER_DOWNLOAD_XMP", e.channelMRFixXmpSuc = "MR_RENDER_FIX_XMP_SUC", e.channelMRFixXMPFail = "MR_RENDER_FIX_XMP_FAIL"
    }(t.ThunderChannelList || (t.ThunderChannelList = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e.eventPluginLoderPluginReady = "event_plugin_loader_plugin_ready", e.eventDownloadItemActive = "event_download_item_active", e.eventDetailSwitch2Index = "event_detail_switch_to_index", e.eventDownloadSwitchCategory = "event_download_switch_category", e.eventBringMainWindowToTop = "event_bring_main_window_to_top", e.eventDownloadContextMenuClick = "event_download_context_menu_click", e.eventOnCommand = "event_on_command", e.eventDownloadKernelInitEnd = "event_dk_init_end", e.eventTaskDataBaseLoadEnd = "event_dk_task_data_base_load_end", e.eventGlobalDownloadSpeedChanged = "event_dk_global_download_speed_changed", e.eventGlobalUploadSpeedChanged = "event_dk_global_upload_speed_changed", e.eventConfigInitFinished = "event_config_init_finished", e.eventConfigValueChanged = "event_config_value_changed", e.eventBHOConfigInitFinished = "event_bho_config_init_finished", e.eventBHOConfigValueChanged = "event_bho_config_value_changed", e.eventShowHomePage = "event_show_home_page", e.eventShowSearchTaskPage = "event_show_searchtask_page", e.eventConfigBrowserInitFinished = "event_config_browser_init_finished", e.eventDownloadContextMenuPopup = "event_download_context_menu_popup", e.eventDownloadContextMenuEnd = "event_download_context_menu_end"
    }(t.NodeEventMesssageNS || (t.NodeEventMesssageNS = {}))
}, function (e, t) {
    e.exports = require("url")
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(7), o = n(15), r = n(16);
    !function (e) {
        e.mainProcessContext = "main-process", e.mainRendererContext = "main-renderer", e.mainPageWebviewRendererContext = "main-page-webview-renderer", e.newTaskRendererContext = "new-task-renderer", e.preNewTaskRendererContext = "pre-new-task-renderer", e.loginRendererContext = "login-renderer";

        class t {
            constructor() {
                this.isConnected = !1, this.isOnIPCEvent = !1, this.rendererInfos = [], this.listeners = new Map, t.intervalIPCModuleMsgs = [r.CommonIPCMessage.msgIPCCommunicatorForward, r.CommonIPCMessage.msgIPCRendererConnect, r.CommonIPCMessage.msgIPCRendererDisconnect]
            }

            onMessage(e, t) {
                do {
                    if (!a.isString(e) || 0 === e.length) {
                        o.error("msgName is null");
                        break
                    }
                    if (a.isNullOrUndefined(t)) {
                        o.error("listener is null");
                        break
                    }
                    this.listeners.has(e) ? this.listeners.get(e).push(t) : this.listeners.set(e, [t])
                } while (0)
            }

            getCommunicatorInfo() {
                return this.currInfo
            }

            getAllRenderer() {
                return this.rendererInfos
            }

            getCommunicatorInfoById(e) {
                for (let t of this.rendererInfos) if (t.id === e) return t;
                return null
            }

            getCommunicatorInfoByContext(e) {
                for (let t of this.rendererInfos) if (t.context === e) return t;
                return null
            }

            startListenIPCMessage(e) {
                if (this.isOnIPCEvent) return;
                this.isOnIPCEvent = !0, (e ? i.ipcMain : i.ipcRenderer).on(r.CommonIPCMessage.msgIPCCommunicatorForward, (e, t) => {
                    let n = void 0;
                    do {
                        if (a.isNullOrUndefined(t)) {
                            o.error("msgInfo is empty");
                            break
                        }
                        let e = t.msg.name;
                        if (this.isIPCModuleIntervalMsg(e)) {
                            o.information(`IPC module interval msg : ${e}`);
                            let i = this.handleIPCModuleIntervalMsg(t);
                            if (n = i[1], !i[0]) break;
                            o.information("need to dispatch msg:" + e)
                        }
                        if (!this.isConnected) {
                            o.warning("hasnot been connected yet");
                            break
                        }
                        a.isNullOrUndefined(n) ? n = this.NotifyListener(t) : this.NotifyListener(t)
                    } while (0);
                    a.isNullOrUndefined(n) || (e.returnValue = n)
                })
            }

            isIPCModuleIntervalMsg(e) {
                for (let n of t.intervalIPCModuleMsgs) if (e === n) return !0;
                return !1
            }

            handleIPCModuleIntervalMsg(e) {
                let t = [!1, void 0];
                do {
                    let n = e.msg.name;
                    if (n === r.CommonIPCMessage.msgIPCRendererConnect) {
                        t = [!0, this.handleRendererConnectMsg(e)];
                        break
                    }
                    if (n === r.CommonIPCMessage.msgIPCRendererDisconnect) {
                        t = [!0, this.handleRendererDisconnectMsg(e)];
                        break
                    }
                } while (0);
                return t
            }

            handleRendererConnectMsg(e) {
                o.verbose(e)
            }

            handleRendererDisconnectMsg(e) {
                o.verbose(e)
            }

            NotifyListener(e) {
                let t = void 0, n = e.msg.name;
                if (this.listeners.has(n)) {
                    let i = this.listeners.get(n), a = !0;
                    for (let n of i) a ? (a = !1, t = n(e)) : n(e)
                }
                return t
            }
        }

        e.Communicator = t
    }(t.CommonIPCBase || (t.CommonIPCBase = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(7), o = n(15), r = n(16), s = n(23);
    !function (e) {
        class t extends s.CommonIPCBase.Communicator {
            constructor() {
                super()
            }

            initialize(e) {
                let t = this.generateIPCId();
                this.currInfo = {id: t, context: e, isMainCommunicator: !1}
            }

            connect() {
                this.isConnected ? o.warning("has been connected") : (this.isConnected = !0, this.sendConnectMsgToMain(), this.startListenIPCMessage(!1))
            }

            disconnect() {
                this.isConnected ? (this.isConnected = !1, this.sendDisconnectMsgToMain()) : o.warning("hasnot been connected yet")
            }

            sendMessageToMain(e) {
                this.sendIPCMsgToMain(e)
            }

            sendMessageToMainSync(e) {
                return this.sendIPCMsgToMain(e, !0)
            }

            sendMessageToRenderer(e, t) {
                this.sendIPCMsgToRenderer(e, t)
            }

            handleRendererConnectMsg(e) {
                do {
                    if (a.isNullOrUndefined(e)) {
                        o.error("msgInfo is null");
                        break
                    }
                    let t = e.msg.args[0];
                    if (a.isNullOrUndefined(t)) {
                        o.error("connectRendererInfo is null");
                        break
                    }
                    o.information(`Renderer: new renderer will connect, id = ${t.id}, context = ${t.context}`), this.rendererInfos.push(t)
                } while (0)
            }

            handleRendererDisconnectMsg(e) {
                do {
                    if (a.isNullOrUndefined(e)) {
                        o.error("msgInfo is null");
                        break
                    }
                    let t = e.msg.args[0];
                    if (a.isNullOrUndefined(t)) {
                        o.error("disconnectRendererInfo is null");
                        break
                    }
                    o.information(`renderer will disconnect, id = ${t.id}, context = ${t.context}`);
                    for (let e = 0; e < this.rendererInfos.length; ++e) if (this.rendererInfos[e] === t) {
                        this.rendererInfos.splice(e, 1);
                        break
                    }
                } while (0)
            }

            sendConnectMsgToMain() {
                this.rendererInfos = this.sendMessageToMainSync({
                    name: r.CommonIPCMessage.msgIPCRendererConnect,
                    args: []
                })
            }

            sendDisconnectMsgToMain() {
                this.sendMessageToMain({name: r.CommonIPCMessage.msgIPCRendererDisconnect, args: []})
            }

            sendIPCMsgToMain(e, t = !1) {
                let n = void 0;
                do {
                    if (a.isNullOrUndefined(e)) {
                        o.error("msg is null");
                        break
                    }
                    n = (t ? i.ipcRenderer.sendSync : i.ipcRenderer.send)(r.CommonIPCMessage.msgIPCCommunicatorForward, {
                        msg: e,
                        senderInfo: this.currInfo
                    }, t)
                } while (0);
                return n
            }

            sendIPCMsgToRenderer(e, t) {
                do {
                    if (a.isNullOrUndefined(e)) {
                        o.error("rendererId is null");
                        break
                    }
                    if (a.isNullOrUndefined(t)) {
                        o.error("msg is null");
                        break
                    }
                    let n = i.remote.BrowserWindow.fromId(e);
                    if (a.isNullOrUndefined(n)) {
                        o.error("targerRendererBrowserWindow is null");
                        break
                    }
                    n.webContents.send(r.CommonIPCMessage.msgIPCCommunicatorForward, {
                        msg: t,
                        senderInfo: this.currInfo
                    })
                } while (0)
            }

            generateIPCId() {
                return i.remote.getCurrentWindow().id
            }
        }

        e.RendererCommunicator = t, e.rendererCommunicator = new t
    }(t.CommonIPCRenderer || (t.CommonIPCRenderer = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(18), o = n(1), r = n(54), s = n(11), l = n(21), u = o.default.getLogger("Config");

    class d {
        constructor() {
            this.isInit = !1, this.configData = {}, this.configPath = void 0, this.eventContainer = new r.default
        }

        init(e) {
            return i(this, void 0, void 0, function* () {
                if (!this.isInit) {
                    if (this.configPath = e, yield s.FileSystemAWNS.existsAW(e)) {
                        let t = yield s.FileSystemAWNS.readFileAW(e);
                        if (t) {
                            let e = null;
                            try {
                                e = JSON.parse(t.toString())
                            } catch (e) {
                                u.warning(e)
                            }
                            this.mergeConfigData(e), this.isInit = !0, this.eventContainer.fireEvent(l.NodeEventMesssageNS.eventConfigInitFinished)
                        }
                    } else this.isInit = !0, this.eventContainer.fireEvent(l.NodeEventMesssageNS.eventConfigInitFinished)
                }
            })
        }

        getValue(e, t, n) {
            let i = n;
            do {
                if (!e || "" === e) break;
                if (!t || "" === t) break;
                let a = this.configData[e];
                if (!a) {
                    let a = {};
                    a[t] = n, this.configData[e] = a, this.fireValueChangedEvent(e, t, void 0, i);
                    break
                }
                t in a ? i = a[t] : (a[t] = n, this.fireValueChangedEvent(e, t, void 0, i))
            } while (0);
            return i
        }

        setValue(e, t, n) {
            do {
                if (!e || "" === e) break;
                if (!t || "" === t) break;
                let i = void 0, a = this.configData[e];
                if (a) i = a[t], a[t] = n; else {
                    let i = {};
                    i[t] = n, this.configData[e] = i
                }
                i !== n && this.fireValueChangedEvent(e, t, i, n)
            } while (0)
        }

        isInitConfigFinished() {
            return this.isInit
        }

        save() {
            return i(this, void 0, void 0, function* () {
                if (this.isInit) {
                    let e = JSON.stringify(this.configData, void 0, 2);
                    yield s.FileSystemAWNS.writeFileAW(this.configPath, e)
                }
            })
        }

        saveSync() {
            if (this.isInit) {
                let e = JSON.stringify(this.configData, void 0, 2);
                a.writeFileSync(this.configPath, e)
            }
        }

        attachListener(e, t) {
            do {
                if (e === l.NodeEventMesssageNS.eventConfigInitFinished) {
                    if (this.isInit) {
                        t(this.isInit);
                        break
                    }
                    this.eventContainer.attachOnceListener(e, t);
                    break
                }
                this.eventContainer.attachListener(e, t)
            } while (0)
        }

        detachListener(e, t) {
            this.eventContainer.detachListener(e, t)
        }

        mergeConfigData(e) {
            if (e) if (null === this.configData) this.configData = e; else for (let t in e) {
                let n = e[t];
                if (!n) break;
                for (let e in n) {
                    let i = n[e], a = this.configData[t];
                    if (a) a[e] = i; else {
                        let n = {};
                        n[e] = i, this.configData[t] = n
                    }
                }
            }
        }

        fireValueChangedEvent(e, t, n, i) {
            this.eventContainer.fireEvent(l.NodeEventMesssageNS.eventConfigValueChanged, e, t, n, i)
        }
    }

    t.Config = d;
    const c = new d;
    !function (e) {
        e.init = function (e) {
            return i(this, void 0, void 0, function* () {
                yield c.init(e)
            })
        }, e.isInitConfigFinished = function () {
            return c.isInitConfigFinished()
        }, e.save = function () {
            return i(this, void 0, void 0, function* () {
                yield c.save()
            })
        }, e.saveSync = function () {
            c.saveSync()
        }, e.getValue = function (e, t, n) {
            return c.getValue(e, t, n)
        }, e.setValue = function (e, t, n) {
            c.setValue(e, t, n)
        }, e.attachListener = function (e, t) {
            c.attachListener(e, t)
        }, e.detachListener = function (e, t) {
            c.detachListener(e, t)
        }
    }(t.ConfigNS || (t.ConfigNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(27), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(3), o = n(4);
    let r = class extends o.Vue {
        onOptionsChanged() {
            this.appendContent()
        }

        created() {
            this.dropdown = new a.remote.DropdownWindow, this.appendContent()
        }

        appendContent() {
            this.dropdown.clear(), this.options.forEach(e => {
                "separator" === e ? this.dropdown.append(new a.remote.DropdownWindowContent({type: "separator"})) : this.dropdown.append(new a.remote.DropdownWindowContent({
                    label: e.toString(),
                    click: () => {
                        this.$refs.select.menuVisible = !1, this.$emit("input", e, !0)
                    }
                }))
            })
        }

        handleMenuShow() {
            if (void 0 === this.options || !Array.isArray(this.options) || 0 === this.options.length) return;
            let e = this.$el.getBoundingClientRect();
            this.dropdown.setStyle({
                windowPreference: {
                    marginLeft: 0,
                    marginRight: 0,
                    stringWidth: Math.round(e.width) - 39
                }
            }), this.dropdown.popup({
                window: a.remote.getCurrentWindow(),
                x: Math.round(e.left),
                y: Math.round(e.top + e.height + 4)
            })
        }
    };
    i([o.Prop()], r.prototype, "value", void 0), i([o.Prop({default: () => []})], r.prototype, "options", void 0), i([o.Watch("options")], r.prototype, "onOptionsChanged", null), r = i([o.Component], r), t.default = r
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(3), o = n(2), r = n(1), s = n(54), l = n(11), u = n(21), d = n(106), c = n(5), h = n(63), f = n(675),
        p = n(32), g = n(85), k = n(81), m = n(20), T = n(157), v = n(112),
        w = p.DownloadKernelEventManager.getEventManager(),
        y = g.DownloadKernelCategoryViewManager.getCategoryViewManager(),
        S = k.DownloadKernelCategoryManager.getCategoryManager(), b = T.ToastNotifyManagerNS.getToastNotifyManger(),
        C = r.default.getLogger("DownloadKernel.TaskManager");

    class D {
        constructor() {
            this.isStartTransaction = !1, this.isLoadStorageFinish = !1, this.isInitDkFinish = !1, this.isEnableP2pChannel = !0, this.isEnableP2sChannel = !0, this.lastGlobalStat = {
                size: 0,
                recvdBytes: 0,
                sentBytes: 0
            }, this.totalDownloadSpeed = 0, this.totalUploadSpeed = 0, this.eventContainer = new s.default, this.tasks = new Map, this.startTasks = []
        }

        createTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !0, i = !1, a = new f.Task;
                switch (e) {
                    case c.DownloadKernel.TaskType.P2sp: {
                        let n = yield this.getTaskName(e, t.taskBaseInfo.savePath, t.taskBaseInfo.taskName);
                        t.taskBaseInfo.taskName = n, a.createP2spTask(t.isBackground, t.taskBaseInfo, t.p2spTaskInfo, t.privateSpace), t.taskBaseInfo.groupTaskId && t.taskBaseInfo.groupTaskId > 0 && (i = !0)
                    }
                        break;
                    case c.DownloadKernel.TaskType.Bt: {
                        let n = yield this.getTaskName(e, t.taskBaseInfo.savePath, t.taskBaseInfo.taskName);
                        t.taskBaseInfo.taskName = n, yield a.createBtTask(t.isBackground, t.taskBaseInfo, t.btTaskInfo, t.privateSpace)
                    }
                        break;
                    case c.DownloadKernel.TaskType.Emule: {
                        let n = yield this.getTaskName(e, t.taskBaseInfo.savePath, t.taskBaseInfo.taskName);
                        t.taskBaseInfo.taskName = n, a.createEmuleTask(t.isBackground, t.taskBaseInfo, t.emuleTaskInfo, t.privateSpace), t.taskBaseInfo.groupTaskId && t.taskBaseInfo.groupTaskId > 0 && (i = !0)
                    }
                        break;
                    case c.DownloadKernel.TaskType.Group: {
                        let n = yield this.getTaskName(e, t.taskBaseInfo.savePath, t.taskBaseInfo.taskName);
                        if (n !== t.taskBaseInfo.taskName) {
                            t.taskBaseInfo.taskName = n;
                            let e = o.join(t.taskBaseInfo.savePath, n);
                            for (let n = 0; n < t.groupTaskInfo.subTaskList.length; ++n) t.groupTaskInfo.subTaskList[n].p2spTaskInfo ? t.groupTaskInfo.subTaskList[n].taskBaseInfo.savePath = e : t.groupTaskInfo.subTaskList[n].emuleTaskInfo && (t.groupTaskInfo.subTaskList[n].taskBaseInfo.savePath = e)
                        }
                        yield this.createGroupTask(a, t.taskBaseInfo, t.groupTaskInfo, t.privateSpace)
                    }
                        break;
                    case c.DownloadKernel.TaskType.Magnet:
                        a.createMagnetTask(t.isBackground, t.taskBaseInfo, t.magnetTaskInfo, t.privateSpace);
                        break;
                    default:
                        n = !1
                }
                return n ? (this.addTask(a), t.isBackground || i || this.insertToCategoryView(a, c.DownloadKernel.TaskInsertReason.Create), w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskCreated, [a])) : a = null, a
            })
        }

        createBatchTask(e) {
            this.isStartTransaction || (h.ThunderKernel.beginTransaction(), this.isStartTransaction = !0);
            let t = void 0, n = [];
            for (let i = 0; i < e.length; ++i) {
                let a = !0, o = new f.Task, r = e[i], s = r.taskType;
                s === c.DownloadKernel.TaskType.P2sp ? o.createP2spTask(r.isBackground, r.taskBaseInfo, r.p2spTaskInfo, r.privateSpace) : s === c.DownloadKernel.TaskType.Emule ? o.createEmuleTask(r.isBackground, r.taskBaseInfo, r.emuleTaskInfo, r.privateSpace) : a = !1, a ? (void 0 === t && (t = o.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryId)), this.addTask(o), r.isBackground || n.push(o)) : o = null
            }
            this.isStartTransaction && (h.ThunderKernel.commitTransaction(), this.isStartTransaction = !1);
            let i = null;
            return (i = void 0 !== t && t > -1 ? S.getCategoryView(t, c.DownloadKernel.CategroyViewID.Downloading) : y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading)) && i.insertTask(n, c.DownloadKernel.TaskInsertReason.Create), w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskCreated, n), n
        }

        startTask(e) {
            let t = this.tasks.get(e), n = !1;
            return t ? (this.startTasks.push(e), (n = t.start()) ? this.taskStatusChanage([t]) : (C.error("task start fail! taskId", e), this.removeStartTask(e))) : C.error("task not exist! taskId", e), n
        }

        startWaitingTask(e) {
            let t = !1, n = this.tasks.get(e);
            return n && n.startWaiting() && (this.taskStatusChanage([n]), t = !0), t
        }

        startWaitingTasks(e) {
            let t = !1;
            this.isStartTransaction || (h.ThunderKernel.beginTransaction(), this.isStartTransaction = !0);
            let n = [];
            for (let i of e) {
                let e = this.tasks.get(i);
                e && e.startWaiting() && (n.push(e), t = !0)
            }
            return this.isStartTransaction && (h.ThunderKernel.commitTransaction(), this.isStartTransaction = !1), n.length > 0 && w.fireTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, n), t
        }

        stopTask(e, t = c.DownloadKernel.TaskStopReason.Unknown) {
            let n = this.tasks.get(e);
            n ? n.stop() ? (n.setStopReason(t), this.taskStatusChanage([n]), n.getTaskStatus() === c.DownloadKernel.TaskStatus.Stopped && n.setStopReason(c.DownloadKernel.TaskStopReason.Unknown)) : C.error("task stop fail! taskId", e) : C.error("task not exist! taskId", e)
        }

        batchStopTask(e, t = c.DownloadKernel.TaskStopReason.Unknown) {
            let n = [], i = [];
            for (let t = 0; t < e.length; ++t) {
                let a = this.tasks.get(e[t]);
                if (a) {
                    a.getTaskStatus() === c.DownloadKernel.TaskStatus.StartWaiting ? n.push(a) : i.push(a)
                }
            }
            let a = [];
            for (let e = 0; e < n.length; ++e) {
                let i = n[e];
                i.stop() && (i.setStopReason(t), a.push(i))
            }
            for (let e = 0; e < i.length; ++e) {
                let n = i[e];
                n.stop() && (n.setStopReason(t), a.push(n))
            }
            a.length > 0 && this.taskStatusChanage(a);
            for (let e = 0; e < a.length; ++e) {
                let t = a[e];
                t.getTaskStatus() === c.DownloadKernel.TaskStatus.Stopped && t.setStopReason(c.DownloadKernel.TaskStopReason.Unknown)
            }
        }

        stopTaskAW(e, t = c.DownloadKernel.TaskStopReason.Unknown) {
            return i(this, void 0, void 0, function* () {
                let n = this.tasks.get(e);
                return n ? n.stop() ? (n.setStopReason(t), this.taskStatusChanage([n]), n.getTaskStatus() === c.DownloadKernel.TaskStatus.Stopped && n.setStopReason(c.DownloadKernel.TaskStopReason.Unknown)) : C.error("task stop fail! taskId", e) : C.error("task not exist! taskId", e), this.attachTaskStopOnce(e)
            })
        }

        deleteTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = this.tasks.get(e);
                if (!n) return !1;
                n.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryViewId) === c.DownloadKernel.CategroyViewID.Downloading && (yield this.stopTaskAW(e, c.DownloadKernel.TaskStopReason.DeleteTask)), w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskDestroying, [n]), n.updateTaskStatus(c.DownloadKernel.TaskStatus.DestroyPending) && this.taskStatusChanage([n]);
                let i = this.getTaskCategoryView(n), a = [n];
                null !== i && i.removeTask(a), this.removeTask(e);
                let o = yield n.delete(t);
                return w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskDestroyed, [n], o), o
            })
        }

        deleteBatchTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = [], a = [];
                for (let t = 0; t < e.length; ++t) {
                    let i = this.tasks.get(e[t]), o = i.getTaskStatus();
                    o === c.DownloadKernel.TaskStatus.StartPending || o === c.DownloadKernel.TaskStatus.Started ? a.push(i) : n.push(i)
                }
                let o = !0;
                if (n.length > 0) {
                    w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskDestroying, n);
                    let e = [];
                    for (let t = 0; t < n.length; ++t) {
                        let i = n[t];
                        i.updateTaskStatus(c.DownloadKernel.TaskStatus.DestroyPending) && e.push(i)
                    }
                    e.length > 0 && w.fireTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, e);
                    let i = this.getTaskCategoryView(n[0]);
                    null !== i && i.removeTask(n), h.ThunderKernel.beginTransaction();
                    for (let e = 0; e < n.length; ++e) {
                        let i = n[e];
                        this.removeTask(i.getId()), o = (yield i.delete(t)) && o
                    }
                    h.ThunderKernel.commitTransaction(), w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskDestroyed, n, o)
                }
                return a.length > 0 && (yield new Promise(e => {
                    let n = 0;
                    for (let r = 0; r < a.length; ++r) {
                        let s = a[r], l = s.getId();
                        this.stopTaskAW(l, c.DownloadKernel.TaskStopReason.DeleteTask).then(() => i(this, void 0, void 0, function* () {
                            ++n, w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskDestroying, [s]), s.updateTaskStatus(c.DownloadKernel.TaskStatus.DestroyPending) && this.taskStatusChanage([s]);
                            let i = this.getTaskCategoryView(s);
                            null !== i && i.removeTask([s]), this.removeTask(l), o = (yield s.delete(t)) && o, w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskDestroyed, [s], o), n === a.length && e()
                        })).catch()
                    }
                })), o
            })
        }

        removeToRecycle(e) {
            return i(this, void 0, void 0, function* () {
                let t = this.tasks.get(e);
                if (t) {
                    let n = t.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryViewId);
                    if (n === c.DownloadKernel.CategroyViewID.Completed) {
                        let e = [t];
                        y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed).removeTask(e)
                    } else if (yield this.stopTaskAW(e), (n = t.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryViewId)) === c.DownloadKernel.CategroyViewID.Completed) {
                        let e = [t];
                        y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed).removeTask(e)
                    } else {
                        let n = [t];
                        y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading).removeTask(n), this.removeStartTask(e)
                    }
                    t.moveToRecycle();
                    let i = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Recycle), a = [];
                    a.push(t), i.insertTask(a, c.DownloadKernel.TaskInsertReason.Recycle)
                }
            })
        }

        batchRemoveToRecycle(e) {
            return i(this, void 0, void 0, function* () {
                let t = [], n = [];
                for (let i = 0; i < e.length; ++i) {
                    let a = this.tasks.get(e[i]), o = a.getTaskStatus();
                    o === c.DownloadKernel.TaskStatus.StartPending || o === c.DownloadKernel.TaskStatus.Started ? n.push(a) : t.push(a)
                }
                if (t.length > 0) {
                    this.getTaskCategoryView(t[0]).removeTask(t), t.length > 1 && h.ThunderKernel.beginTransaction(), t.forEach(e => {
                        e.moveToRecycle()
                    }), t.length > 1 && h.ThunderKernel.commitTransaction(), y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Recycle).insertTask(t, c.DownloadKernel.TaskInsertReason.Recycle)
                }
                n.length > 0 && n.forEach(e => i(this, void 0, void 0, function* () {
                    let t = e.getId();
                    if (yield this.stopTaskAW(t), e.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryViewId) === c.DownloadKernel.CategroyViewID.Completed) {
                        let t = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed), n = [e];
                        t.removeTask(n)
                    } else {
                        y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading).removeTask([e]), this.removeStartTask(t)
                    }
                    e.moveToRecycle(), y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Recycle).insertTask([e], c.DownloadKernel.TaskInsertReason.Recycle)
                }))
            })
        }

        recoverFromRecycle(e) {
            let t = 0, n = this.tasks.get(e);
            if (n && (t = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.RecycleTime)) > 0) {
                if (n.recover()) {
                    let e = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Recycle), t = [];
                    t.push(n), e.removeTask(t)
                }
                let e = n.getTaskStatus();
                if (e === c.DownloadKernel.TaskStatus.Succeeded || e === c.DownloadKernel.TaskStatus.Seeding) {
                    let e = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed), t = [];
                    t.push(n), e.insertTask(t, c.DownloadKernel.TaskInsertReason.Recover)
                } else {
                    let e = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading), t = [];
                    t.push(n), e.insertTask(t, c.DownloadKernel.TaskInsertReason.Recover)
                }
            }
            return t > 0
        }

        batchRecoverFromRecycle(e) {
            let t = [], n = [], i = [];
            h.ThunderKernel.beginTransaction();
            for (let a of e) {
                let e = this.tasks.get(a);
                if (e) {
                    if (e.getTaskAttribute(c.DownloadKernel.TaskAttribute.RecycleTime) > 0) {
                        e.recover() && t.push(e);
                        let a = e.getTaskStatus();
                        a === c.DownloadKernel.TaskStatus.Succeeded || a === c.DownloadKernel.TaskStatus.Seeding ? n.push(e) : i.push(e)
                    }
                }
            }
            if (h.ThunderKernel.commitTransaction(), t.length > 0) {
                y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Recycle).removeTask(t)
            }
            if (n.length > 0) {
                y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed).insertTask(n, c.DownloadKernel.TaskInsertReason.Recover)
            }
            if (i.length > 0) {
                y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading).insertTask(i, c.DownloadKernel.TaskInsertReason.Recover)
            }
        }

        reDownloadTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = null;
                do {
                    let i = this.tasks.get(e);
                    if (!i) break;
                    yield this.deleteTask(e, !0);
                    let a = i.getExtraObject().getAllUserData();
                    switch (i.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType)) {
                        case c.DownloadKernel.TaskType.P2sp:
                            n = yield this.redownloadP2spTask(i, t);
                            break;
                        case c.DownloadKernel.TaskType.Bt:
                            n = yield this.redownloadBtTask(i, t);
                            break;
                        case c.DownloadKernel.TaskType.Emule:
                            n = yield this.redownloadEmuleTask(i, t);
                            break;
                        case c.DownloadKernel.TaskType.Group:
                            n = yield this.redownloadGroupTask(i, t)
                    }
                    if (n) {
                        n.getExtraObject().setAllUserData(a)
                    }
                } while (0);
                return n
            })
        }

        moveTaskToPath(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1, i = this.getTaskFromTaskId(e);
                do {
                    if (!i) break;
                    let a = i.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath);
                    if (!t || "" === t || t === a) break;
                    let o = i.getTaskStatus();
                    o === c.DownloadKernel.TaskStatus.Started || o === c.DownloadKernel.TaskStatus.StartPending ? (n = yield this.stopTaskAW(e), n = (o = i.getTaskStatus()) === c.DownloadKernel.TaskStatus.Succeeded || o === c.DownloadKernel.TaskStatus.Seeding ? yield this.moveTask(e, t) : yield this.moveTask(e, t, !0)) : n = yield this.moveTask(e, t)
                } while (0);
                let a = [];
                return a[0] = n ? i : null, w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskMovedEnd, a), n
            })
        }

        moveCategoryTask(e, t) {
            let n = this.getTaskFromTaskId(e);
            do {
                if (!n) break;
                let e = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryId);
                if (void 0 === t || e === t) break;
                let i = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryViewId), a = null;
                if (!(a = -1 === e ? y.getCategoryViewFromId(i) : S.getCategoryView(e, i))) break;
                let o = null;
                if (!(o = -1 === t ? y.getCategoryViewFromId(i) : S.getCategoryView(t, i))) break;
                let r = [];
                r.push(n), a.removeTask(r), n.setCategoryId(t), o.insertTask(r, c.DownloadKernel.TaskInsertReason.MoveThoughCategory)
            } while (0);
            let i = [];
            return i[0] = null, w.fireTaskEvent(c.DownloadKernel.TaskEventType.TaskCategoryMovedEnd, i), !1
        }

        getTaskCount() {
            return this.tasks.size
        }

        getTaskFromTaskId(e) {
            return this.tasks.get(e)
        }

        findTaskAsync(e, t) {
            let n = !1, i = null;
            do {
                if (0 === this.tasks.size) break;
                let t = e.keyType, a = e.keyValue;
                if (void 0 === a) break;
                d.Common.isThunderPrivateUrl(a) && (a = d.Common.parseThunderPrivateUrl(a));
                try {
                    a = decodeURI(a)
                } catch (e) {
                    C.warning(e)
                }
                if (!a) break;
                let o = S.getCurrentPrivateCategory(), r = o ? o.getUserName() : "";
                for (let [, e]of this.tasks) {
                    let o = e.getUserName();
                    if (!o || "" === o || r === o) {
                        let o = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType);
                        if (t === c.DownloadKernel.KeyType.P2spUrl && o === c.DownloadKernel.TaskType.P2sp) {
                            let t = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskUrl);
                            d.Common.isThunderPrivateUrl(t) && (t = d.Common.parseThunderPrivateUrl(t));
                            try {
                                t = decodeURI(t)
                            } catch (e) {
                                C.warning(e)
                            }
                            if (this.splitLastChar(a).toLowerCase() === this.splitLastChar(t).toLowerCase()) {
                                n = !0, i = e;
                                break
                            }
                        } else if (t === c.DownloadKernel.KeyType.BtInfoId && o === c.DownloadKernel.TaskType.Bt) {
                            let t = e.getExtraObject().getInfoId();
                            if (t && t.toLowerCase() === a.toLowerCase()) {
                                n = !0, i = e;
                                break
                            }
                        } else if (t === c.DownloadKernel.KeyType.EmuleFileHash && o === c.DownloadKernel.TaskType.Emule) {
                            let t = e.getExtraObject().getFileHash();
                            if (t && t.toLowerCase() === a.toLowerCase()) {
                                n = !0, i = e;
                                break
                            }
                        } else if (t === c.DownloadKernel.KeyType.MagnetUrl && o === c.DownloadKernel.TaskType.Magnet) {
                            let t = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskUrl);
                            if (t && t.toLowerCase() === a.toLowerCase()) {
                                n = !0, i = e;
                                break
                            }
                        }
                    }
                }
            } while (0);
            t(n, i)
        }

        isLoadStorageTaskFinish() {
            return this.isLoadStorageFinish
        }

        getTotalDownloadSpeed() {
            return this.totalDownloadSpeed
        }

        getTotalUploadSpeed() {
            return this.totalUploadSpeed
        }

        getTotalDownloadSize() {
            let e = 0;
            return this.lastGlobalStat && this.lastGlobalStat.recvdBytes && (e = this.lastGlobalStat.recvdBytes), e < 0 && (e = 0), e
        }

        getTotalUploadSize() {
            let e = 0;
            return this.lastGlobalStat && this.lastGlobalStat.sentBytes && (e = this.lastGlobalStat.sentBytes), e < 0 && (e = 0), e
        }

        attachListener(e, t) {
            do {
                if (e === u.NodeEventMesssageNS.eventTaskDataBaseLoadEnd) {
                    if (this.isLoadStorageFinish) {
                        t(this.isLoadStorageFinish);
                        break
                    }
                    this.attachOnceListener(e, t);
                    break
                }
                this.eventContainer.attachListener(e, t)
            } while (0)
        }

        attachOnceListener(e, t) {
            this.eventContainer.attachOnceListener(e, t)
        }

        detachListener(e, t) {
            this.eventContainer.detachListener(e, t)
        }

        queryTaskInfo() {
            this.isStartTransaction && (h.ThunderKernel.commitTransaction(), this.isStartTransaction = !1), !this.isStartTransaction && this.startTasks.length > 0 && (h.ThunderKernel.beginTransaction(), this.isStartTransaction = !0);
            for (let e = 0; e < this.startTasks.length; ++e) {
                let t = this.startTasks[e], n = this.tasks.get(t);
                n && n.queryTaskInfo(e => {
                    this.taskStatusChanage([e])
                }, e => {
                    this.taskDetailChanage(e)
                })
            }
            h.ThunderKernel.queryGlobalInfo(0, e => {
                if (this.lastGlobalStat && e) {
                    if (void 0 !== this.lastGlobalStat.recvdBytes && void 0 !== e.recvdBytes) {
                        let t = e.recvdBytes - this.lastGlobalStat.recvdBytes;
                        t < 0 && (t = 0), this.totalDownloadSpeed !== t && (this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventGlobalDownloadSpeedChanged, t), this.totalDownloadSpeed = t)
                    } else this.totalDownloadSpeed = 0;
                    if (void 0 !== this.lastGlobalStat.sentBytes && void 0 !== e.sentBytes) {
                        let t = e.sentBytes - this.lastGlobalStat.sentBytes;
                        t < 0 && (t = 0), this.totalUploadSpeed !== t && (this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventGlobalUploadSpeedChanged, t), this.totalUploadSpeed = t)
                    } else this.totalUploadSpeed = 0;
                    e && (this.lastGlobalStat = e)
                }
            })
        }

        loadTaskBase() {
            h.ThunderKernel.loadTaskBase(e => {
                this.loadTaskBaseCallback(e).catch()
            })
        }

        isDkLoaded() {
            return this.isInitDkFinish
        }

        initDownloadKernelEnd(e) {
            this.isInitDkFinish = 0 === e, this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventDownloadKernelInitEnd, e)
        }

        enableCommonP2pChannel(e) {
            this.isEnableP2pChannel = e
        }

        enableCommonP2sChannel(e) {
            this.isEnableP2sChannel = e
        }

        getTotalTaskDownloadSpeed(e, t) {
            let n = 0;
            for (let i = 0; i < this.startTasks.length; ++i) {
                let a = this.startTasks[i], o = this.getTaskFromTaskId(a);
                if (!o) continue;
                if (void 0 !== t && null !== t || (t = !0), !t && o.getIsPrivate()) continue;
                if (o.getTaskStatus() !== c.DownloadKernel.TaskStatus.Started) continue;
                let r = o.getDownloadSpeed();
                o.getTaskAttribute(c.DownloadKernel.TaskAttribute.Background) ? e && (n += r) : n += r
            }
            return n
        }

        getTotalTaskVipSpeed(e, t) {
            let n = 0;
            for (let i = 0; i < this.startTasks.length; ++i) {
                let a = this.startTasks[i], o = this.getTaskFromTaskId(a);
                if (!o) continue;
                if (void 0 !== t && null !== t || (t = !0), !t && o.getIsPrivate()) continue;
                if (o.getTaskStatus() !== c.DownloadKernel.TaskStatus.Started) continue;
                let r = o.getVipSpeed();
                o.getTaskAttribute(c.DownloadKernel.TaskAttribute.Background) ? e && (n += r) : n += r
            }
            return n
        }

        attachTaskStopOnce(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = this.tasks.get(e);
                    if (n) {
                        let i = n.getTaskStatus();
                        if (i === c.DownloadKernel.TaskStatus.Succeeded || i === c.DownloadKernel.TaskStatus.Seeding || i === c.DownloadKernel.TaskStatus.Stopped || i === c.DownloadKernel.TaskStatus.Failed) t(!0); else {
                            let n = 0;
                            n = w.attachTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, (...i) => {
                                do {
                                    if (!i) break;
                                    if (i[0] !== c.DownloadKernel.TaskEventType.StatusChanged) break;
                                    let a = i[1];
                                    if (!a) break;
                                    for (let i = 0; i < a.length; ++i) {
                                        let o = a[i];
                                        if (!o) continue;
                                        let r = o.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskId);
                                        if (e !== r) continue;
                                        let s = o.getTaskStatus();
                                        s !== c.DownloadKernel.TaskStatus.Succeeded && s !== c.DownloadKernel.TaskStatus.Seeding && s !== c.DownloadKernel.TaskStatus.Stopped || (w.detachTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, n), t(!0));
                                        break
                                    }
                                } while (0)
                            })
                        }
                    } else t(!1)
                })
            })
        }

        downloadTaskSelectFiles(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1;
                do {
                    if (!t) break;
                    let i = null;
                    try {
                        i = JSON.parse(t)
                    } catch (e) {
                        C.warning(e)
                    }
                    if (null == i) break;
                    let a = this.tasks.get(e);
                    if (!a) break;
                    let o = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType);
                    if (o === c.DownloadKernel.TaskType.Bt) {
                        a.getExtraObject().setDownloadFile(i)
                    } else {
                        if (o !== c.DownloadKernel.TaskType.Group) break;
                        a.getExtraObject().setDownloadTask(i)
                    }
                    a.getTaskAttribute(c.DownloadKernel.TaskAttribute.RecycleTime) > 0 && this.recoverFromRecycle(e);
                    let r = a.getTaskStatus();
                    if (r === c.DownloadKernel.TaskStatus.Started || r === c.DownloadKernel.TaskStatus.StartPending) yield this.stopTaskAW(e, c.DownloadKernel.TaskStopReason.SelectDownloadLists), r = a.getTaskStatus(); else if (r === c.DownloadKernel.TaskStatus.StartWaiting) if (this.taskStatusChanage([a]), o === c.DownloadKernel.TaskType.Group) {
                        a.getExtraObject().updateTaskDetail()
                    } else if (o === c.DownloadKernel.TaskType.Bt) {
                        let t = a.getExtraObject(), n = t.getFileSize();
                        a.setTaskInfo(c.DownloadKernel.TaskAttribute.FileSize, n) && this.taskDetailChanage(a);
                        let i = [], o = t.getBtFileList();
                        for (let [, e]of o) {
                            let t = e.getBtDownloadFileInfo();
                            i.push(t)
                        }
                        w.fireTaskEvent(c.DownloadKernel.TaskEventType.BtSubFileDetailChanged, e, i)
                    }
                    if (r === c.DownloadKernel.TaskStatus.Succeeded || r === c.DownloadKernel.TaskStatus.Seeding) {
                        let e = null, t = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryId);
                        if (e = void 0 !== t && t > -1 ? S.getCategoryView(t, c.DownloadKernel.CategroyViewID.Completed) : y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed)) {
                            let t = [];
                            t.push(a), e.removeTask(t)
                        }
                        let n = null;
                        if (n = void 0 !== t && t > -1 ? S.getCategoryView(t, c.DownloadKernel.CategroyViewID.Downloading) : y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading)) {
                            a.updateTaskStatus(c.DownloadKernel.TaskStatus.Stopped) && (a.setStopReason(c.DownloadKernel.TaskStopReason.SelectDownloadLists), this.taskStatusChanage([a]), a.setStopReason(c.DownloadKernel.TaskStopReason.Unknown));
                            let e = [];
                            e.push(a), n.insertTask(e, c.DownloadKernel.TaskInsertReason.ReDownload)
                        }
                    }
                    n = !0
                } while (0);
                return n
            })
        }

        getTaskCategoryView(e) {
            let t = null, n = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryId),
                i = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryViewId);
            return t = void 0 !== n && -1 !== n ? S.getCategoryView(n, i) : y.getCategoryViewFromId(i)
        }

        loadStorageTask(e) {
            return i(this, void 0, void 0, function* () {
                let t = !0, n = new f.Task;
                if (null !== e) switch (e.taskType) {
                    case c.DownloadKernel.TaskType.P2sp:
                        n.loadStorageP2spTask(e);
                        break;
                    case c.DownloadKernel.TaskType.Bt:
                        t = !1;
                        let i = new f.Task;
                        yield i.loadStorageBtTaskAW(e), this.addTask(i) && this.insertToCategoryView(i, c.DownloadKernel.TaskInsertReason.LoadTaskBasic);
                        break;
                    case c.DownloadKernel.TaskType.Emule:
                        n.loadStorageEmuleTask(e);
                        break;
                    case c.DownloadKernel.TaskType.Group:
                        n.loadStorageGroupTask(e);
                        break;
                    default:
                        t = !1
                }
                return t && this.addTask(n) || (n = null), n
            })
        }

        getTaskStrategy(e) {
            let t = c.DownloadKernel.DispatchStrategy.DispatchStrategyOrigin, n = this.tasks.get(e);
            if (n) {
                n.getOriginOnlyStrategy() || (this.isEnableP2pChannel && (t += c.DownloadKernel.DispatchStrategy.DispatchStrategyP2p), this.isEnableP2sChannel && (t += c.DownloadKernel.DispatchStrategy.DispatchStrategyP2s))
            }
            return t
        }

        redownloadP2spTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = null;
                if (e) {
                    let i = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName),
                        a = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath),
                        o = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskUrl),
                        r = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.RefUrl),
                        s = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.Cookie), l = e.getIsPrivate(), u = null;
                    t && t.taskBaseInfo ? ((u = t.taskBaseInfo).taskName && "" !== u.taskName || (u.taskName = i), u.savePath && "" !== u.savePath || (u.savePath = a)) : u = {
                        taskName: i,
                        savePath: a
                    };
                    let d = {url: o, refUrl: r, cookie: s, useOriginResourceOnly: 0};
                    t && t.p2spTaskInfo && (d.useOriginResourceOnly = t.p2spTaskInfo.useOriginResourceOnly ? 1 : 0), n = yield this.createTask(c.DownloadKernel.TaskType.P2sp, {
                        taskBaseInfo: u,
                        p2spTaskInfo: d,
                        privateSpace: l
                    })
                }
                return n
            })
        }

        redownloadBtTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = null;
                if (e) {
                    let i = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName),
                        a = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath), o = e.getIsPrivate(),
                        r = e.getExtraObject(), s = r.getSeedFilePath(), l = r.getDisplayName(), u = r.getInfoId(),
                        d = r.getTrackerUrls(), h = r.getDownloadFile(), f = r.getBtFileInfoList(), p = null;
                    t && t.taskBaseInfo ? ((p = t.taskBaseInfo).taskName && "" !== p.taskName || (p.taskName = i), p.savePath && "" !== p.savePath || (p.savePath = a)) : p = {
                        taskName: i,
                        savePath: a
                    };
                    let g = {seedFile: s, displayName: l, fileRealIndexLists: h, fileLists: f, infoId: u, tracker: d};
                    t && t.btTaskInfo && t.btTaskInfo.fileRealIndexLists && t.btTaskInfo.fileRealIndexLists.length > 0 && (g.fileRealIndexLists = t.btTaskInfo.fileRealIndexLists), n = yield this.createTask(c.DownloadKernel.TaskType.Bt, {
                        taskBaseInfo: p,
                        btTaskInfo: g,
                        privateSpace: o
                    })
                }
                return n
            })
        }

        redownloadEmuleTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = null;
                if (e) {
                    let i = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName),
                        a = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath),
                        o = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskUrl), r = e.getIsPrivate(), s = null;
                    t && t.taskBaseInfo ? ((s = t.taskBaseInfo).taskName && "" !== s.taskName || (s.taskName = i), s.savePath && "" !== s.savePath || (s.savePath = a)) : s = {
                        taskName: i,
                        savePath: a
                    };
                    let l = null;
                    t && t.emuleTaskInfo ? (l = t.emuleTaskInfo).url = o : l = {url: o}, n = yield this.createTask(c.DownloadKernel.TaskType.Emule, {
                        taskBaseInfo: s,
                        emuleTaskInfo: l,
                        privateSpace: r
                    })
                }
                return n
            })
        }

        redownloadGroupTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = null;
                if (e) {
                    let i = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName),
                        a = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath), o = e.getIsPrivate(),
                        r = e.getExtraObject(), s = r.getSubTaskCount(), l = [];
                    for (let e = 0; e < s; ++e) {
                        let n = r.getSubTaskByIndex(e);
                        if (n) {
                            let i = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName),
                                a = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath),
                                r = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskUrl),
                                s = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.RefUrl),
                                u = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.Cookie),
                                d = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.DownloadSubTask),
                                h = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType),
                                f = {taskBaseInfo: {taskName: i, savePath: a}, privateSpace: o};
                            if (h === c.DownloadKernel.TaskType.P2sp ? (f.p2spTaskInfo = {
                                url: r,
                                refUrl: s,
                                cookie: u,
                                downloadSubTask: d
                            }, l.push(f)) : h === c.DownloadKernel.TaskType.Emule && (f.emuleTaskInfo = {
                                url: r,
                                downloadSubTask: d
                            }, l.push(f)), t && t.groupTaskInfo && t.groupTaskInfo.subTaskList && t.groupTaskInfo.subTaskList[e]) {
                                let n = t.groupTaskInfo.subTaskList[e];
                                n.taskBaseInfo && (f.taskBaseInfo = n.taskBaseInfo, f.taskBaseInfo.taskName && "" !== f.taskBaseInfo.taskName || (f.taskBaseInfo.taskName = i), f.taskBaseInfo.savePath && "" !== f.taskBaseInfo.savePath || (f.taskBaseInfo.savePath = a)), h === c.DownloadKernel.TaskType.P2sp ? n.p2spTaskInfo && (f.p2spTaskInfo.useOriginResourceOnly = n.p2spTaskInfo.useOriginResourceOnly ? 1 : 0) : h === c.DownloadKernel.TaskType.Emule && n.emuleTaskInfo && (f.emuleTaskInfo.origin = n.emuleTaskInfo.origin)
                            }
                        }
                    }
                    let u = null;
                    t && t.taskBaseInfo ? ((u = t.taskBaseInfo).taskName && "" !== u.taskName || (u.taskName = i), u.savePath && "" !== u.savePath || (u.savePath = a)) : u = {
                        taskName: i,
                        savePath: a
                    };
                    let d = {subTaskList: l};
                    n = yield this.createTask(c.DownloadKernel.TaskType.Group, {
                        taskBaseInfo: u,
                        groupTaskInfo: d,
                        privateSpace: o
                    })
                }
                return n
            })
        }

        addTask(e) {
            let t = !1;
            if (e) {
                let n = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskId);
                this.tasks.set(n, e);
                let i = this.getTaskStrategy(n);
                e.setDispatchStrategy(i), t = !0
            }
            return t
        }

        removeTask(e) {
            let t = this.getTaskFromTaskId(e);
            if (t) {
                if (t.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType) === c.DownloadKernel.TaskType.Group) {
                    let e = t.getExtraObject(), n = e.getSubTaskCount();
                    for (let t = 0; t < n; ++t) {
                        let n = e.getSubTaskByIndex(t);
                        if (n) {
                            let e = n.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskId);
                            this.tasks.delete(e)
                        }
                    }
                }
            }
            this.tasks.delete(e), this.removeStartTask(e)
        }

        insertToCategoryView(e, t = c.DownloadKernel.TaskInsertReason.Unknown) {
            let n = c.DownloadKernel.CategroyViewID.Downloading;
            if (e.getTaskAttribute(c.DownloadKernel.TaskAttribute.RecycleTime) > 0) n = c.DownloadKernel.CategroyViewID.Recycle; else {
                let t = e.getTaskStatus();
                t !== c.DownloadKernel.TaskStatus.Succeeded && t !== c.DownloadKernel.TaskStatus.Seeding || (n = c.DownloadKernel.CategroyViewID.Completed)
            }
            let i = null, a = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryId);
            if (i = void 0 !== a && a > -1 ? S.getCategoryView(a, n) : y.getCategoryViewFromId(n)) {
                let n = [];
                n.push(e), i.insertTask(n, t)
            }
        }

        taskStatusChanage(e) {
            for (let t = 0; t < e.length; ++t) {
                let n = e[t];
                if (n.getTaskAttribute(c.DownloadKernel.TaskAttribute.GroupTaskId) > 0) {
                    let e = n, t = n.getTaskStatus();
                    t === c.DownloadKernel.TaskStatus.Succeeded || t === c.DownloadKernel.TaskStatus.Seeding ? e.onFinish() : t === c.DownloadKernel.TaskStatus.Stopped ? e.onStop() : t === c.DownloadKernel.TaskStatus.Failed && e.onFail()
                } else if (n.getType() === c.DownloadKernel.TaskType.Group) do {
                    let e = n.getExtraObject();
                    if (!e) break;
                    let t = e.getTaskStatus();
                    C.information("taskStatusChanage taskExtra.taskStatus:", t), t === c.DownloadKernel.TaskStatus.Succeeded || t === c.DownloadKernel.TaskStatus.Seeding ? this.onTaskFinish(n) : t === c.DownloadKernel.TaskStatus.Stopped ? this.onTaskStop(n) : t === c.DownloadKernel.TaskStatus.Failed && this.onTaskFailed(n)
                } while (0); else {
                    let e = n.getTaskStatus();
                    C.information("taskStatusChanage task.taskStatus:", e), e === c.DownloadKernel.TaskStatus.Succeeded || e === c.DownloadKernel.TaskStatus.Seeding ? this.onTaskFinish(n) : e === c.DownloadKernel.TaskStatus.Stopped ? this.onTaskStop(n) : e === c.DownloadKernel.TaskStatus.Failed && this.onTaskFailed(n)
                }
            }
            w.fireTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, e)
        }

        taskDetailChanage(e) {
            let t = [];
            e.getTaskAttribute(c.DownloadKernel.TaskAttribute.GroupTaskId) < 1 && (t[0] = e, w.fireTaskEvent(c.DownloadKernel.TaskEventType.DetailChanged, t))
        }

        loadTaskBaseCallback(e) {
            return i(this, void 0, void 0, function* () {
                let t = new Map;
                if (e) {
                    let n = [], i = [], a = [], o = new Map, r = new Map;
                    for (let s = 0; s < e.length; ++s) {
                        let l = e[s];
                        if (!l) continue;
                        if (-1 === l.recycleTime) continue;
                        l.taskStatus !== c.DownloadKernel.TaskStatus.Unkown && l.taskStatus !== c.DownloadKernel.TaskStatus.Failed && l.taskStatus !== c.DownloadKernel.TaskStatus.Succeeded && l.taskStatus !== c.DownloadKernel.TaskStatus.Seeding && (l.taskStatus = c.DownloadKernel.TaskStatus.Stopped);
                        let u = l.groupTaskId;
                        if (u > 0) {
                            let e = t.get(u);
                            e || (e = []), e.push(l), t.set(u, e)
                        }
                        let d = yield this.loadStorageTask(l);
                        if (d) {
                            if (d.getTaskAttribute(c.DownloadKernel.TaskAttribute.GroupTaskId) < 1) if (l.categoryId > -1) {
                                let e = d.getTaskStatus();
                                if (e === c.DownloadKernel.TaskStatus.Succeeded || e === c.DownloadKernel.TaskStatus.Seeding) {
                                    let e = r.get(l.categoryId);
                                    e || (e = [], r.set(l.categoryId, e)), e.push(d)
                                } else {
                                    let e = o.get(l.categoryId);
                                    e || (e = [], o.set(l.categoryId, e)), e.push(d)
                                }
                            } else {
                                if (d.getTaskAttribute(c.DownloadKernel.TaskAttribute.RecycleTime) > 0) a.push(d); else {
                                    let e = d.getTaskStatus();
                                    e === c.DownloadKernel.TaskStatus.Succeeded || e === c.DownloadKernel.TaskStatus.Seeding ? i.push(d) : n.push(d)
                                }
                            }
                        }
                    }
                    if (n.length > 0) {
                        let e = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading);
                        e && e.insertTask(n, c.DownloadKernel.TaskInsertReason.LoadTaskBasic)
                    }
                    if (i.length > 0) {
                        let e = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed);
                        e && e.insertTask(i, c.DownloadKernel.TaskInsertReason.LoadTaskBasic)
                    }
                    if (a.length > 0) {
                        let e = y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Recycle);
                        e && e.insertTask(a, c.DownloadKernel.TaskInsertReason.LoadTaskBasic)
                    }
                    for (let [e, t]of o) {
                        let n = S.getCategoryView(e, c.DownloadKernel.CategroyViewID.Downloading);
                        n ? n.insertTask(t, c.DownloadKernel.TaskInsertReason.LoadTaskBasic) : C.error("getCategoryView failed! categoryId:", e, ", categoryViewId:", c.DownloadKernel.CategroyViewID.Downloading)
                    }
                    for (let [e, t]of r) {
                        let n = S.getCategoryView(e, c.DownloadKernel.CategroyViewID.Completed);
                        n ? n.insertTask(t, c.DownloadKernel.TaskInsertReason.LoadTaskBasic) : C.error("getCategoryView failed! categoryId:", e, ", categoryViewId:", c.DownloadKernel.CategroyViewID.Completed)
                    }
                }
                for (let [e, n]of t) {
                    let t = this.getTaskFromTaskId(e);
                    if (t) {
                        let e = t.getExtraObject();
                        if (e) for (let t = 0; t < n.length; ++t) {
                            let i = n[t].taskId, a = this.getTaskFromTaskId(i);
                            a && e.addSubTask(a)
                        }
                    }
                }
                this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventTaskDataBaseLoadEnd), this.isLoadStorageFinish = !0
            })
        }

        onTaskFinish(e) {
            let t = e.onFinish();
            if (!e.getTaskAttribute(c.DownloadKernel.TaskAttribute.Background)) {
                let t = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.CategoryId), n = null;
                if (n = void 0 !== t && -1 !== t ? S.getCategoryView(t, c.DownloadKernel.CategroyViewID.Downloading) : y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Downloading)) {
                    let t = [];
                    t.push(e), n.removeTask(t)
                }
                if (0 === e.getTaskAttribute(c.DownloadKernel.TaskAttribute.RecycleTime)) {
                    let n = null;
                    if (n = void 0 !== t && -1 !== t ? S.getCategoryView(t, c.DownloadKernel.CategroyViewID.Completed) : y.getCategoryViewFromId(c.DownloadKernel.CategroyViewID.Completed)) {
                        let t = [];
                        t.push(e), n.insertTask(t, c.DownloadKernel.TaskInsertReason.LoadTaskBasic)
                    }
                }
            }
            let n = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskId);
            return this.removeStartTask(n), t
        }

        onTaskStop(e) {
            let t = e.onStop(), n = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskId);
            return this.removeStartTask(n), t
        }

        onTaskFailed(e) {
            let t = e.onFail(), n = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskId);
            return this.removeStartTask(n), t
        }

        moveTaskFiles(e, t, n) {
            return a.ipcRenderer.send(m.ThunderChannelList.channelRMFileMove, e, t, n), new Promise(e => {
                a.ipcRenderer.once(m.ThunderChannelList.channelMRFileMoveResult, (t, i, a, o) => {
                    o === n && (i || 2 !== a || (i = !0), e(i))
                })
            })
        }

        moveTask(e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = !1;
                do {
                    let a = this.tasks.get(e);
                    if (!a) break;
                    let r = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath),
                        s = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName), l = o.join(r, s),
                        u = o.join(t, s), d = void 0, h = void 0, f = a.getTaskStatus(),
                        p = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType);
                    if (f === c.DownloadKernel.TaskStatus.Succeeded || f === c.DownloadKernel.TaskStatus.Seeding) p === c.DownloadKernel.TaskType.P2sp || p === c.DownloadKernel.TaskType.Emule ? (d = l, h = u) : p === c.DownloadKernel.TaskType.Bt ? (d = l, h = u) : p === c.DownloadKernel.TaskType.Group && (i = yield this.moveGroupTask(e, t, n)); else if (p === c.DownloadKernel.TaskType.P2sp) {
                        d = l + ".xltd\r\n" + (l + ".xltd.cfg\r\n"), h = t
                    } else if (p === c.DownloadKernel.TaskType.Emule) {
                        d = l + ".emule.xltd\r\n" + (l + ".xlemule.cfg\r\n"), h = t
                    } else p === c.DownloadKernel.TaskType.Bt ? (d = l, h = u) : p === c.DownloadKernel.TaskType.Group && (i = yield this.moveGroupTask(e, t, n));
                    void 0 !== d && void 0 !== h && (i = yield this.moveTaskFiles(d, h, e)), i && p !== c.DownloadKernel.TaskType.Group && (a.setSavePath(t), n && this.startTask(e), b.showNotify(T.ToastNotifyManagerNS.notifyIdTaskOperatorMoveTask, v.ToastNotifyItemType.GreenNotify, "移动成功", 3e3))
                } while (0);
                return i
            })
        }

        moveGroupTask(e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = !1;
                do {
                    let a = this.tasks.get(e);
                    if (!a) break;
                    if (a.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskType) !== c.DownloadKernel.TaskType.Group) break;
                    let r = a.getExtraObject();
                    if (!r) break;
                    if (!r.getSubTaskByIndex(0)) break;
                    let s = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath),
                        u = a.getTaskAttribute(c.DownloadKernel.TaskAttribute.TaskName), d = o.join(s, "*"),
                        h = o.join(t, u);
                    if (i = yield this.moveTaskFiles(d, h, e)) {
                        let t = r.getSubTaskCount();
                        for (let e = 0; e < t; ++e) {
                            let t = r.getSubTaskByIndex(e);
                            if (t) {
                                let e = h, n = t.getTaskAttribute(c.DownloadKernel.TaskAttribute.SavePath);
                                if (n === s) ; else if (n.length > s.length && n.substr(0, s.length) === s) {
                                    let t = n.slice(s.length);
                                    "\\" === t[0] && (t = t.slice(1), e = o.join(h, t))
                                }
                                t.setSavePath(e)
                            }
                        }
                        yield l.FileSystemAWNS.rmdirAW(s), a.setSavePath(h), n && this.startTask(e), b.showNotify(T.ToastNotifyManagerNS.notifyIdTaskOperatorMoveTask, v.ToastNotifyItemType.GreenNotify, "移动成功", 3e3)
                    }
                } while (0);
                return i
            })
        }

        splitLastChar(e) {
            let t = e;
            return d.Common.isThunderPrivateUrl(e) && (e.lastIndexOf("==") === e.length - 2 ? t = e.substr(0, e.length - 2) : e.lastIndexOf("=") === e.length - 1 && (t = e.substr(0, e.length - 1))), t
        }

        removeStartTask(e) {
            let t = this.startTasks.indexOf(e);
            t > -1 && this.startTasks.splice(t, 1)
        }

        createGroupTask(e, t, n, a) {
            return i(this, void 0, void 0, function* () {
                let i = !1;
                h.ThunderKernel.beginTransaction();
                do {
                    let o = e.createGroupTask(!1, t, n, a), r = e.getExtraObject();
                    if (!r) break;
                    for (let e = 0; e < n.subTaskList.length; ++e) {
                        let t = n.subTaskList[e];
                        if (t.p2spTaskInfo) {
                            t.taskBaseInfo.groupTaskId = o;
                            let e = yield this.createTask(c.DownloadKernel.TaskType.P2sp, t);
                            e && (i = !0, r.addSubTask(e))
                        } else if (t.emuleTaskInfo) {
                            t.taskBaseInfo.groupTaskId = o;
                            let e = yield this.createTask(c.DownloadKernel.TaskType.Emule, t);
                            e && (i = !0, r.addSubTask(e))
                        }
                    }
                } while (0);
                return h.ThunderKernel.commitTransaction(), i
            })
        }

        getTaskName(e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = n, a = o.join(t, n), r = yield l.FileSystemAWNS.existsAW(a), s = 0;
                for (; r;) {
                    if (s++, e === c.DownloadKernel.TaskType.P2sp || e === c.DownloadKernel.TaskType.Emule) {
                        let e = o.extname(n);
                        i = o.basename(n, e) + "(" + s.toString() + ")" + e
                    } else {
                        if ((yield l.FileSystemAWNS.lstatAW(a)).isDirectory()) break;
                        i = n + "(" + s.toString() + ")"
                    }
                    r = yield l.FileSystemAWNS.existsAW(i)
                }
                return i
            })
        }
    }

    t.TaskManager = D, function (e) {
        const t = new D;
        e.getTaskManager = function () {
            return t
        }
    }(t.DownloadKernelTaskManager || (t.DownloadKernelTaskManager = {}))
}, function (e, t) {
    e.exports = require("crypto")
}, function (e, t, n) {
    e.exports = n(9)(14)
}, function (e, t, n) {
    "use strict";
    t.__esModule = !0;
    var i = r(n(533)), a = r(n(545)),
        o = "function" == typeof a.default && "symbol" == typeof i.default ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof a.default && e.constructor === a.default && e !== a.default.prototype ? "symbol" : typeof e
        };

    function r(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.default = "function" == typeof a.default && "symbol" === o(i.default) ? function (e) {
        return void 0 === e ? "undefined" : o(e)
    } : function (e) {
        return e && "function" == typeof a.default && e.constructor === a.default && e !== a.default.prototype ? "symbol" : void 0 === e ? "undefined" : o(e)
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});

    class i {
        constructor(e, t, n = !1) {
            this.cookie = null, this.once = !1, this.callback = null, this.ref = 0, this.callback = e, this.cookie = t, this.once = n, this.ref = 1
        }

        fire(e, ...t) {
            return "function" == typeof this.callback && this.callback(e, ...t)
        }

        compare(e) {
            return this.cookie === e
        }

        addRef() {
            this.ref++
        }

        release() {
            return this.ref--, this.ref <= 0
        }
    }

    class a {
        constructor() {
            this.cookie = 0, this.listeners = new Map
        }

        attachTaskEvent(e, t) {
            this.cookie++;
            let n = new i(t, this.cookie, !1), a = this.listeners.get(e);
            return a || (a = []), a.push(n), this.listeners.set(e, a), this.cookie
        }

        attachTaskEventOnce(e, t) {
            this.cookie++;
            let n = new i(t, this.cookie, !0), a = this.listeners.get(e);
            return a || (a = []), a.push(n), this.listeners.set(e, a), this.cookie
        }

        detachTaskEvent(e, t) {
            let n = this.listeners.get(e);
            if (n) for (let e = 0; e < n.length; ++e) {
                let i = n[e];
                if (i.compare(t)) {
                    i.release() && n.splice(e, 1);
                    break
                }
            }
        }

        fireTaskEvent(e, ...t) {
            let n = this.listeners.get(e);
            if (n) {
                let i = [], a = n.length, o = 0;
                for (; o < a;) {
                    let r = n[o];
                    r.addRef();
                    let s = r.fire(e, ...t);
                    r.release() ? (n.splice(o, 1), --a) : (++o, r.once && s && i.push(r))
                }
                for (let t = 0; t < i.length; t++) {
                    let n = i[t];
                    this.detachTaskEvent(e, n.cookie)
                }
            }
        }
    }

    t.EventManager = a, function (e) {
        const t = new a;
        e.getEventManager = function () {
            return t
        }
    }(t.DownloadKernelEventManager || (t.DownloadKernelEventManager = {}))
}, function (e, t) {
    e.exports = require("buffer")
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = ["BookMarks", "BookList"];
    !function (e) {
        let t;

        function n(e, t, n = {}) {
            let o = "development" === process.env.RUN_ENV ? "http://localhost:9080/message-box-renderer/" : `file:///${__dirname}/../message-box-renderer/index.html`,
                r = new i.remote.BrowserWindow(Object.assign({
                    width: 460,
                    frame: !1,
                    resizable: !1,
                    maximizable: !1,
                    parent: i.remote.getCurrentWindow(),
                    show: !1,
                    modal: !0,
                    transparent: !0,
                    alwaysOnTop: !0
                }, n));
            return i.remote.ipcMain.once("message-box-init", n => {
                n.sender.send("message-box-init-reply", {popType: e, options: t})
            }), r.loadURL(o), r.on("ready-to-show", () => {
                r.show(), r.setAlwaysOnTop(!1)
            }), r.on("blur", t => {
                a.includes(e) && i.ipcRenderer.send("book-mark-list-close")
            }), r
        }

        !function (e) {
            e.Info = "info", e.Warning = "warning", e.Error = "error"
        }(t = e.ConfirmType || (e.ConfirmType = {})), e.confirm = function (e) {
            let t = "development" === process.env.RUN_ENV ? "http://localhost:9080/message-box-renderer/" : `file:///${__dirname}/../message-box-renderer/index.html`,
                n = new i.remote.BrowserWindow({
                    width: 440,
                    height: 212,
                    frame: !1,
                    resizable: !1,
                    maximizable: !1,
                    parent: i.remote.getCurrentWindow(),
                    show: !1,
                    modal: !0,
                    transparent: !0,
                    alwaysOnTop: !0
                });
            return i.remote.ipcMain.once("message-box-init", t => {
                t.sender.send("message-box-init-reply", {popType: "confirm", options: e})
            }), n.loadURL(t), n.on("ready-to-show", () => {
                n.show(), n.setAlwaysOnTop(!1)
            }), new Promise((e, t) => {
                i.remote.ipcMain.once("message-box-resolve", (t, n) => {
                    e(n)
                }), i.remote.ipcMain.once("message-box-reject", (e, n) => {
                    t(n)
                })
            })
        }, e.pop = function (e) {
            let t = "development" === process.env.RUN_ENV ? "http://localhost:9080/message-box-renderer/" : `file:///${__dirname}/../message-box-renderer/index.html`,
                n = new i.remote.BrowserWindow({
                    width: 500,
                    height: 347,
                    frame: !1,
                    resizable: !1,
                    maximizable: !1,
                    parent: i.remote.getCurrentWindow(),
                    show: !1,
                    modal: !0,
                    transparent: !0,
                    alwaysOnTop: !0
                });
            return i.remote.ipcMain.once("message-box-init", t => {
                t.sender.send("message-box-init-reply", {popType: "message-box", options: e})
            }), n.loadURL(t), n.on("ready-to-show", () => {
                n.show(), n.setAlwaysOnTop(!1)
            }), new Promise((e, t) => {
                i.remote.ipcMain.once("message-box-resolve", (t, n) => {
                    e(n)
                }), i.remote.ipcMain.once("message-box-reject", () => {
                    t()
                })
            })
        }, e.custom = n, e.customAW = function (e, t, a = {}) {
            return n(e, t, a), new Promise((e, t) => {
                i.remote.ipcMain.once("message-box-resolve", (t, n) => {
                    e(n)
                }), i.remote.ipcMain.once("message-box-reject", (e, n) => {
                    t(n)
                })
            })
        }
    }(t.MessageBox || (t.MessageBox = {}))
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement;
        return (e._self._c || t)("td-select", e._g(e._b({
            ref: "select",
            attrs: {value: e.value, "custom-menu-enabled": ""},
            on: {"menu-show": e.handleMenuShow}
        }, "td-select", e.$attrs, !1), e.$listeners), [e._t("suffix", null, {slot: "suffix"}), e._v(" "), e._t("append", null, {slot: "append"})], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t) {
    e.exports = require("events")
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(5);
    let o = ["apk", "avi", "chm", "doc", "exe", "flv", "ipa", "ipsw", "iso", "mkv", "mov", "mp4"];
    o.push(...["mpg", "pdf", "ppt", "rar", "rm", "rmvb", "txt", "wmv", "xls"]);
    const r = ".xv;.xlmv;.3gp;.3gp2;.3gpp;.3gpp2;.3mm;.3p2;.60d;.787;.aaf;.aep;.aepx;.aet;.aetx;.ajp;.ale;.amv;.amx;.arf;\n  .asf;.ass;.asx;.avb;.avd;.avi;.avp;.avs;.avs;.axm;.bdm;.bdmv;.bik;.bix;.bmk;.bnp;.box;.bs4;.bsf;.byu;.camproj;.camrec;.clpi;.cmmp;\n  .cmmtpl;.cmproj; .cmrec;.cpi;.cst;.cvc;.d2v;.d3v;.dat;.dav;.dce;.dck;.ddat;.dif;.dir;.divx;.dlx; .dmb;.dmsm;.dmsm3d;.dmss;.dnc;.dpg;\n  .dream;.dsy;.dv;.dv-avi;.dv4;.dvdmedia; .dvr-ms;.dvx;.dxr;.dzm;.dzp;.dzt;.edl;.evo;.eye;.f4p;.f4v;.fbr;.fbr;.fbz;.fcp; .flc;.flh;\n  .fli;.flv;.flx;.gfp;.gl;.grasp;.gts;.gvi;.gvp;.hdmov;.hkm;.ifo; .imovieproj;.imovieproject;.iva;.ivf;.ivr;.ivs;.izz;.izzy;.jts;.jtv;\n  .k3g;.lrec; .lsf;.lsx;.m15;.m1pg;.m1v;.m21;.m21;.m2a;.m2p;.m2t;.m2ts;.m2v;.m4e;.m4u;.m4v; .m75;.meta;.mgv;.mj2;.mjp;.mjpg;.mkv;.mmv;\n  .mnv;.mod;.modd;.moff;.moi;.moov;.mov; .movie;.mp21;.mp21;.mp2v;.mp4;.mp4v;.mpe;.mpeg;.mpeg4;.mpf;.mpg;.mpg2;.mpgindex; .mpl;.mpls;\n  .mpsub;.mpv;.mpv2;.mqv;.msdvd;.msh;.mswmm;.mts;.mtv;.mvb;.mvc;.mvd; .mve;.mvp;.mvy;.mxf;.mys;.ncor;.nsv;.nuv;.nvc;.ogm;.ogv;.ogx;.osp;\n  .par;.pds;.pgi; .piv;.pjs;.playlist;.pmf;.pns;.ppj;.prel;.pro;.prproj;.prtl;.psb;.psh;.pssd;.pva;.pvr;.pxv; .qt;.qtch;.qtl;.qtm;.qtz;\n  .r3d;.rcproject;.rdb;.rec;.rm;.rmd;.rmp;.rms;.rmvb;.roq; .rp;.rts;.rts;.rum;.rv;.sbk;.sbt;.scc;.scm;.scn;.screenflow;.sec;.seq;.sfd;\n  .sfvidcap;.smi;.smil;.smk;.sml;.smv;.spl;.srt;.ssa;.ssm;.stl;.str;.stx;.sub;.svi;.swf;.swi; .swt;.tda3mt;.tivo;.tix;.tod;.tp;.tp0;.tpd;\n  .tpr;.trp;.ts;.tts;.tvs;.vc1;.vcpf;.vcr; .vcv;.vdo;.vdr;.veg;.vem;.vf;.vfw;.vfz;.vgz;.vid;.viewlet;.viv;.vivo;.vlab;.vob; .vp3;.vp6;.vp7;\n  .vpj;.vro;.vs4;.vse;.vsp;.w32;.wcp;.webm;.wlmp;.wm;.wmd;.wmmp; .wmv;.wmx;.wp3;.wpl;.wtv;.wvx;.xfl;.xvid;.yuv;.zm1;.zm2;.zm3;.zmv;",
        s = ".exe;.com;.bat;.msi;.apk;.ipa;.iso;.mds;.bin;.img;.ipsw;",
        l = ".txt;.html;.htm;.shtml;.xhtml;.chm;.hlp;.inf;.rtf;.tex;.ltx;.doc;.docx;.wps;.ppt;.pptx;.odf;.pdf;.xls;.xlsx;.docm;.\n  dot;.dotm;.dotx;.email;.rp;.pps;.et;.ett;.xlt;.dbf;.prn;.csv;.mht;.mhtml;.xml;.wpt;.dps;.dpt;.pot;.ppsx;.epub;.mobi;.lit;.wdl;.ceb;.abm;\n  .pdg;.umb;.ibooks;",
        u = ".aiff;.cue;.m3u;.au;.cdda;.raw;.wav;.flac;.tak;.mp3;.aac;.wma;.m4a;.mid;.mka;.mp2;.mpa;.mpc;.ape;.ofr;\n  .ogg;.ra;.wv;.tta;.ac3;.dts;.nsf;.mod;.s3m;.xm;.it;.vst;",
        d = ".psd;.tga;.gif;.jpeg;.jpg;.jp2;.bmp;.ico;.pcx;.png;.pbm;.pgm;.ppm;.pnm;.pgf;.arw;.cr2;.crw;.dcr;.dng;.erf;.kdc;.mef;\n  .mos;.mrw;.nef;.nrw;.orf;.pef;.ptx;.r3d;.raf;.raw;.rw2;.srf;.srw;.x3f;.ras;.tiff;.tif;.wbmp;.ilbm;.lbm;.iff;.ico;",
        c = ".zip;.zipx;.rar;.7z;.isz;.cab;.arj;.ace;.alz;.uue;.tar;.gz; .gzip;.tgz;.tpz;.bzip2;.bz2;.bz;.tbz;.tbz2;.xz;.txz;\n  .lzh;.lha;.zt;.az; .xpi;.jar;.wim;.swm;.rpm;.xar;.deb;.dmg;.hfs;.cpio;.lzma;.lzma86;.split;",
        h = ".torrent;",
        f = ".3gp;.asf;.avi;.divx;.f4v;.flv;.mkv;.mov;.movie;.mp4;.mpeg;.mpeg4;.mpg;.mpg2;.rm;.rmvb;.rp;.swf;.tp;.tp0;.ts;.wmv",
        p = ".exe;.com;.bat;.msi", g = ".wav;.flac;.MP3;.AAC;.WMA;.M4A;.MID;.APE;.OGG;.RA;.mod",
        k = ".psd;.tga;.gif;.jpeg;.jpg;.jp2;.bmp;.ico;.pcx;.pdf;.png;.pbm;.pgm;.ppm;.pnm;.pgf;.arw;.cr2;.crw;.dcr;.dng;.erf;.kdc;\n  .mef;.mos;.mrw;.nef;.nrw;.orf;.pef;.ptx;.r3d;.raf;.raw;.rw2;.srf;.srw;.x3f;.ras;.tiff;.tif;.wbmp;.ilbm;.lbm;.iff;.ico",
        m = ".txt;.html;.htm;.shtml;.xhtml;.chm;.hlp;.inf;.rtf;.tex;.ltx;.doc;.docx;.wps;.ppt;.pptx;.odf;.pdf;.xls;.xlsx;.docm;.dot;.dotm;.dotx;.email;.rp;.pps",
        T = ".rar;.tar;.zip;.gzip;.cab;.uue;.arj;.bz2;.lzh;.jar;.ace;.iso;.7-zip;.7z";
    !function (e) {
        let t;

        function n(e) {
            let n = t.Unkown, a = i.extname(e);
            return void 0 === a || "" === a || a.length < 2 ? n = t.Unkown : f.indexOf(a) > -1 ? n = t.Video : p.indexOf(a) > -1 ? n = t.Software : m.indexOf(a) > -1 ? n = t.Doc : g.indexOf(a) > -1 ? n = t.Music : k.indexOf(a) > -1 ? n = t.Pic : T.indexOf(a) > -1 && (n = t.Zip), a.length > 1 && ".z" === a.slice(0, 2) && /[0-9]+/.test(a.substring(2)) && (n = t.Zip), n
        }

        e.getTaskIcon = function (e, t) {
            let n = "";
            do {
                if (t === a.DownloadKernel.TaskType.Bt) {
                    n = "xlx-icon-type-bt-file";
                    break
                }
                if (t === a.DownloadKernel.TaskType.Group) {
                    n = "xlx-icon-type-group";
                    break
                }
                n = "xlx-icon-type-unknown";
                let f = i.extname(e);
                if ("" === f || f.length < 2) break;
                let p = (f = f.toLowerCase()).substring(1);
                if (o.indexOf(p) > -1) {
                    n = "doc" === f ? "xlx-icon-type-word" : "xlx-icon-type-" + p;
                    break
                }
                if (r.indexOf(f) > -1) {
                    n = "xlx-icon-type-video";
                    break
                }
                if (s.indexOf(f) > -1) {
                    n = "xlx-icon-type-install", [".mds", ".bin", ".img"].indexOf(f) > -1 && (n = "xlx-icon-type-iso");
                    break
                }
                if (l.indexOf(f) > -1) {
                    if (n = "xlx-icon-type-doc", [".htm", ".html", ".mht"].indexOf(f) > -1) {
                        n = "xlx-icon-type-link";
                        break
                    }
                    if ("docx" === f) {
                        n = "xlx-icon-type-word";
                        break
                    }
                    if ("xlsx" === f) {
                        n = "xlx-icon-type-xls";
                        break
                    }
                    if ("pptx" === f) {
                        n = "xlx-icon-type-ppt";
                        break
                    }
                    break
                }
                if (u.indexOf(f) > -1) {
                    n = "xlx-icon-type-music";
                    break
                }
                if (d.indexOf(f) > -1) {
                    n = "xlx-icon-type-pic";
                    break
                }
                if (c.indexOf(f) > -1) {
                    n = "xlx-icon-type-rar";
                    break
                }
                if (h.indexOf(f) > -1) {
                    n = "xlx-icon-type-bt-link";
                    break
                }
            } while (0);
            return n
        }, function (e) {
            e[e.Unkown = 0] = "Unkown", e[e.Video = 1] = "Video", e[e.Software = 2] = "Software", e[e.Doc = 3] = "Doc", e[e.Music = 4] = "Music", e[e.Pic = 5] = "Pic", e[e.Zip = 6] = "Zip", e[e.Bt = 7] = "Bt"
        }(t = e.FileExtType || (e.FileExtType = {})), e.getTaskFileType = function (e, n) {
            let a = t.Unkown;
            return void 0 === n && void 0 !== e && (n = i.extname(e)), void 0 === n || "" === n || n.length < 2 ? a = t.Unkown : r.indexOf(n) > -1 ? a = t.Video : s.indexOf(n) > -1 ? a = t.Software : l.indexOf(n) > -1 ? a = t.Doc : u.indexOf(n) > -1 ? a = t.Music : d.indexOf(n) > -1 ? a = t.Pic : c.indexOf(n) > -1 ? a = t.Zip : h.indexOf(n) > -1 && (a = t.Bt), n.length > 1 && ".z" === n.slice(0, 2) && /[0-9]+/.test(n.substring(2)) && (a = t.Zip), a
        }, e.getGroupFileType = n, e.getDefaultGroupPrefix = function (e) {
            let i = "任务组";
            do {
                if (void 0 === e || null === e || 0 === e.length) break;
                let a = [];
                for (let e = 0; e < 7; e++) a[e] = 0;
                for (let t of e) {
                    let e = n(t);
                    a[e] = a[e] + 1
                }
                let o = t.Unkown;
                for (let e = 1; e < a.length; e++) a[e] > a[o] && (o = e);
                o === t.Video ? i = "视频任务组" : o === t.Software ? i = "程序任务组" : o === t.Music ? i = "音乐任务组" : o === t.Pic ? i = "图片任务组" : o === t.Doc ? i = "文档任务组" : o === t.Zip && (i = "压缩包任务组")
            } while (0);
            return i
        }, e.compareVersion = function (e, t) {
            let n = -2;
            do {
                if (null === e || void 0 === e || "" === e || null === t || void 0 === t || "" === t) break;
                let i = 0, a = 0, o = 0, r = 0, s = 0, l = 0, u = 0, d = 0, c = e.split(/\./);
                if (null === c || void 0 === c || c.length < 3) break;
                if (i = Number(c[0]), a = Number(c[1]), o = Number(c[2]), null !== c[3] && void 0 !== c[3] && "" !== c[3] && (r = Number(c[3])), null === (c = t.split(/\./)) || void 0 === c || c.length < 3) break;
                if (s = Number(c[0]), l = Number(c[1]), u = Number(c[2]), null !== c[3] && void 0 !== c[3] && "" !== c[3] && (d = Number(c[3])), s > i) {
                    n = 1;
                    break
                }
                if (s < i) {
                    n = -1;
                    break
                }
                if (l > a) {
                    n = 1;
                    break
                }
                if (l < a) {
                    n = -1;
                    break
                }
                if (u > o) {
                    n = 1;
                    break
                }
                if (u < o) {
                    n = -1;
                    break
                }
                if (0 !== r) {
                    if (d > r) {
                        n = 1;
                        break
                    }
                    if (d < r) {
                        n = -1;
                        break
                    }
                }
                n = 0
            } while (0);
            return n
        }
    }(t.TaskUtilHelper || (t.TaskUtilHelper = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(59), a = n(110), o = n(505), r = n(221), s = n(111), l = n(48), u = n(186), d = n(712), c = n(259),
        h = n(5), f = n(713), p = n(220), g = n(727), k = n(728);
    !function (e) {
        const t = l.PluginHelperNS.getHelper(), n = u.ConfigHelperNS.getHelper(), m = i.UserHelperNS.getHelper(),
            T = a.DkHelperNS.getHelper(), v = d.UIHelperNS.getHelper(), w = f.TaskSceneManagerNS.getSceneManager(),
            y = r.TaskEventContainerNS.getEventContainer(), S = o.DownloadManagerNS.getDownloadManager(),
            b = c.TaskManagerNS.getTaskManager(), C = p.KuainiaoManagerNS.getManager();
        e.init = function () {
            t.init(), n.init().catch(), m.init(), T.init(), v.init(), w.init(), S.init(), C.init()
        }, e.clickVipAcclerateBtn = function (e, t) {
            t = t || "task";
            let n = S.getVipTaskInfo(e), i = n && n.isSuper;
            if (g.VipStatNS.vipButtonClick(e, i, t), m.authority) T.startTask(e), S.enterAcclerate(e, s.VipDownloadDefineNS.VipTaskType.Vip).catch(); else {
                let e = "v_pc_xlx_hytq_js";
                i && (e = "v_pc_xlx_hytq_cjjs");
                let n = "https://pay.xunlei.com/pay.html?bizNo=baijin";
                n = (n = n + "&referfrom=" + e) + "&aidfrom=" + t, v.openTab(n)
            }
        }, e.clickTryAcclerateBtn = function (e, t) {
            t = t || "task";
            let n = !1, i = S.getVipTaskInfo(e);
            i && (n = i.isSuper), n ? k.TryStatNS.superTryButtonClick(e, t) : k.TryStatNS.tryButtonClick(e, t), T.startTask(e), S.enterAcclerate(e, s.VipDownloadDefineNS.VipTaskType.Try).catch()
        }, e.clickOpenSuperVipBtn = function () {
            v.openTab("https://pay.xunlei.com/pay.html?bizNo=baijin&selectBizno=supervip")
        }, e.clickScenceText = function (e, t) {
            v.openTab(t), w.onClickScene(e)
        }, e.clickToolbarVipBtn = function () {
            v.openTab("https://vip.xunlei.com/index.html?referfrom=v_pc_xlx_ggong_taskbar_vip")
        }, e.clickTryOpenVipBtn = function (e, t, n) {
            let i = n ? "v_pc_xlx_hytq_cjjs_sy" : "v_pc_xlx_hytq_gs_sy", a = void 0;
            if ("Finished" === t) {
                a = "syend", n ? k.TryStatNS.superTryOpenVipButtonClick(e, "cjjssyend") : k.TryStatNS.tryOpenVipButtonClick(e, "syend");
                let t = b.getTask(e);
                t && t.getTaskExtra().onTryFinishOpenVipClick()
            } else a = "sying", n ? k.TryStatNS.superTryOpenVipButtonClick(e, "cjjssying") : k.TryStatNS.tryOpenVipButtonClick(e, "sying");
            let o = "https://pay.xunlei.com/bjvip.html";
            o = (o = o + "?referfrom=" + i) + "&aidfrom=" + a, v.openTab(o)
        }, e.openTab = function (e) {
            v.openTab(e)
        }, e.attachTaskEvent = function (e, t) {
            y.attachListener(e, t)
        }, e.detachTaskEvent = function (e, t) {
            y.detachListener(e, t)
        }, e.attachSceneEvent = function (e, t) {
            w.attachListener(e, t)
        }, e.detachSceneEvent = function (e, t) {
            w.detachListener(e, t)
        }, e.attachKuaiNiaoEvent = function (e, t) {
            C.attachListener(e, t)
        }, e.detachKuaiNiaoEvent = function (e, t) {
            C.detachListener(e, t)
        }, e.getVipTaskInfo = function (e) {
            return S.getVipTaskInfo(e)
        }, e.getSceneItem = function (e) {
            return w.getScene(e)
        }, e.taskCanVipAccelerate = function (e) {
            if (!m.authority) return !1;
            let t = b.getTask(e);
            if (t) {
                if (t.getTaskStatus() === h.DownloadKernel.TaskStatus.Failed) return !1;
                if (t.getTaskExtra().vipTaskStatus !== s.VipDownloadDefineNS.VipTaskStatus.Init) return !1
            }
            return !0
        }, e.onItemExpandChanged = function (e, t) {
            t ? (S.onTaskExpand(e).catch(), w.onTaskExpand(e)) : (S.onTaskUnExpand(e), w.onTaskUnExpand(e))
        }
    }(t.VipDownloadPlugin || (t.VipDownloadPlugin = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(30), a = n(188), o = n(189), r = n(660), s = n(748), l = n(750), u = n(753), d = n(754), c = n(756),
        h = n(757), f = n(758);
    i.default.use(a.default);
    const p = new a.default.Store({
        modules: {
            Tabs: r.default,
            DownloadListState: l.default,
            WebView: u.default,
            SettingConf: s.default,
            Community: d.default,
            PrivateSpaceState: c.default,
            UpgradeTaskState: h.default,
            BookMarks: f.default
        }, strict: !1
    });
    t.connector = new o.default(p)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(7), o = n(1), r = n(6).default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    process.env.TL_ENABLE = "0", "console" === process.env.TL_OUTPUT ? o.default.outputLogger = o.outputLoggerConsole : o.default.outputLogger = function () {
        function e(e) {
            return function (...t) {
                r.printEtwLog(e, function (...e) {
                    return e.map(e => a.inspect(e)).join(" ").replace(/%/g, "%%")
                }(...t))
            }
        }

        return {
            [o.LogLevel.Critical]: e(o.LogLevel.Critical),
            [o.LogLevel.Error]: e(o.LogLevel.Error),
            [o.LogLevel.Warning]: e(o.LogLevel.Warning),
            [o.LogLevel.Information]: e(o.LogLevel.Information),
            [o.LogLevel.Verbose]: e(o.LogLevel.Verbose)
        }
    }()
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(14), a = (n(18), n(29)), o = n(2), r = n(13), s = n(3), l = n(1), u = n(6), d = "xdas_profile_stat";
    let c = "", h = function (e) {
        let t = "";
        if (0 === e.length && "renderer" === process.type) {
            let e = o.normalize(decodeURIComponent(s.remote.getCurrentWebContents().getURL())),
                n = e.indexOf(process.resourcesPath);
            n = n > -1 ? n + process.resourcesPath.length + 1 : n;
            let i = e.length - 1, a = e.indexOf("?"), r = e.indexOf("#");
            i = a > -1 ? Math.min(a - 1, i) : i, i = r > -1 ? Math.min(r - 1, i) : i, n > -1 && i >= n && (t = e.substr(n, i - n + 1))
        }
        0 === t.length && (t = 0 !== e.length ? e : process.type);
        return t = t.replace(/\||,|;/g, "_")
    }(""), f = u.default(o.join(__rootDir, "../bin/ThunderHelper.node")), p = new Set;

    function g(e) {
        let t = "";
        do {
            if (null === e || void 0 === e) break;
            switch (typeof e) {
                case"string":
                    t = e;
                    break;
                case"object":
                    try {
                        t = JSON.stringify(e)
                    } catch (n) {
                        t = e.toString() || ""
                    }
                    break;
                case"number":
                case"boolean":
                    t = e.toString() || ""
            }
        } while (0);
        return t
    }

    function k(e) {
        return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
    }

    function m(e) {
        let t = void 0, n = a.createHash("md5");
        return null !== n && (t = n.update(e).digest("hex")), t
    }

    function T(e, t, n, i) {
        let a = g(t), o = g(n), s = m(o), l = function (e) {
            let t = new RegExp(k("file:///"), "g"), n = new RegExp(k(process.resourcesPath + "\\"), "g"),
                i = new RegExp(k(encodeURI(process.resourcesPath.replace(/\\/g, "/") + "/")), "g");
            return e.replace(t, "").replace(n, "").replace(i, "")
        }(g(i)), u = m(l), c = `${e}:${s}:${u}`;
        p.has(c) || (p.add(c), r.XLStatNS.trackEvent(d, "uncaught_exception", "", 0, 0, 0, 0, `type=${e},business_name=${h},code=${a},message_hash=${s},message=${encodeURI(o)},stack_hash=${u},stack=${encodeURI(l)}`))
    }

    function v(e) {
        let t = e || {};
        T("unhandledRejection", t.code, t instanceof Error ? t.message : t, t.stack)
    }

    function w() {
        do {
            if ("browser" === process.type) break;
            if (null === window.performance.timing || void 0 === window.performance.timing) break;
            let e = f.iSColdStartUp() ? 1 : 0, t = i.release(), n = window.performance.timing,
                a = n.loadEventEnd - n.navigationStart, o = n.fetchStart - n.navigationStart,
                s = n.domainLookupEnd - n.domainLookupStart, l = n.connectEnd - n.connectStart,
                u = n.responseStart - n.requestStart, h = n.responseEnd - n.responseStart,
                p = n.domComplete - n.domLoading;
            r.XLStatNS.trackEvent(d, "page_load_time", "", 0, 0, 0, 0, `cold_start_up=${e},os_version=${t},load_time=${a},before_fetch_time=${o},domin_lookup_time=${s},connect_time=${l},first_response_time=${u},responseTime=${h},domTime=${p},process=${c}`)
        } while (0)
    }

    if (process.on("uncaughtException", e => {
        let t = e || {};
        T("uncaughtException", t.code, t.message, t.stack)
    }), "browser" !== process.type ? window.addEventListener("unhandledrejection", e => {
        v(e && e.reason || {})
    }) : "browser" === process.type && process.on("unhandledRejection", (e, t) => {
        v(e)
    }), function (e) {
        e.init = function (e) {
            c = e
        }
    }(t.PerformanceMonitorStatNS || (t.PerformanceMonitorStatNS = {})), "browser" !== process.type) do {
        let e = s.remote.getCurrentWebContents();
        if (null === e || void 0 === e) break;
        e.on("did-finish-load", () => {
            w()
        })
    } while (0);
    l.default.hook("beforeLog", (e, t, ...n) => {
        e === l.LogLevel.Critical && r.XLStatNS.trackEvent(d, "critical_error", "", 0, 0, 0, 0, `module_name=${t},messages=${n}`)
    })
}, function (e, t, n) {
    e.exports = n(9)(131)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(2), o = n(1), r = n(54), s = n(5), l = n(32), u = n(52), d = n(21), c = n(645),
        h = o.default.getLogger("DownloadMgr"), f = l.DownloadKernelEventManager.getEventManager(), p = [{
            type: "task",
            title: "新建下载任务",
            program: process.execPath,
            args: "-task:newtask -window:bringtotop",
            iconPath: `${__rootDir}/static/icon/jumplist_newtask.ico`,
            iconIndex: 0,
            description: "新建下载任务"
        }, {
            type: "task",
            title: "开始所有任务",
            program: process.execPath,
            args: "-task:startall",
            iconPath: `${__rootDir}/static/icon/jumplist_startalltask.ico`,
            iconIndex: 0,
            description: "开始所有任务"
        }, {
            type: "task",
            program: process.execPath,
            args: "-task:pauseall",
            iconPath: `${__rootDir}/static/icon/jumplist_pausealltask.ico`,
            iconIndex: 0,
            title: "暂停所有任务",
            description: "暂停所有任务"
        }, {
            type: "task",
            program: process.execPath,
            args: "-shell:exit",
            iconPath: `${__rootDir}/static/icon/jumplist_exit.ico`,
            iconIndex: 0,
            title: "退出迅雷",
            description: "退出迅雷"
        }];
    const g = new class extends r.default {
        constructor() {
            super(...arguments), this.recentList = [], this.tracked = !1, this.needSelectNext = !1, this.currentCategoryId = -1
        }

        setNeedSelectNext(e) {
            this.needSelectNext = e
        }

        getNeedSelectNext() {
            return this.needSelectNext
        }

        getCurrentCategoryId() {
            return this.currentCategoryId
        }

        setCurrentCategoryId(e) {
            this.currentCategoryId = e
        }

        trackWin7NewTrait() {
            this.trackTaskComplete(), u.DownloadKernelManager.attachListener(d.NodeEventMesssageNS.eventGlobalDownloadSpeedChanged, (...e) => {
                let t = c.DownloadProgressNS.getDownloadProgress();
                h.information("setProgressBar", t), i.remote.getCurrentWindow().setProgressBar(t)
            })
        }

        trackTaskComplete() {
            i.remote.app.getJumpListSettings();
            do {
                if (this.tracked) break;
                this.tracked = !0, u.DownloadKernelManager.attachListener(d.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, () => {
                    this.attachCategoryInsert()
                })
            } while (0)
        }

        updateJumpList() {
            let e = i.remote.app.getJumpListSettings();
            h.information("getJumpListSettings", e);
            let t = [];
            t.push({type: "tasks", items: p});
            let n = [], o = 4;
            if (this.recentList.length < 4 && (o = this.recentList.length), o > 0) {
                let e = this.recentList.slice(0, o);
                for (let t of e) {
                    let e = t.savePath, i = t.taskName;
                    void 0 !== i && i.indexOf(".") === i.length - 1 && (i = i.substring(0, i.length - 1));
                    let o = "", r = o = t.taskType === s.DownloadKernel.TaskType.Group ? e : a.join(e, i);
                    t.taskType === s.DownloadKernel.TaskType.Bt && (r = `${__rootDir}/static/icon/jumplist_bttask.ico`), n.push({
                        type: "task",
                        title: i,
                        path: o,
                        iconPath: r,
                        iconIndex: 0,
                        program: o,
                        args: ""
                    })
                }
            }
            n.length > 0 && (h.information("jumpRecentList", n), t.push({
                name: "最近完成的任务",
                items: n,
                type: "custom"
            })), h.information("categories", t);
            try {
                i.remote.app.setJumpList(t)
            } catch (e) {
                h.warning("setJumpList error ", e)
            }
        }

        updateRecentList(e) {
            let t = i.remote.app.getJumpListSettings().removedItems;
            for (let e of t) for (let t = 0; t < this.recentList.length; t++) {
                let n = this.recentList[t], i = n.savePath, o = n.taskName;
                if (void 0 !== o && o.indexOf(".") === o.length - 1 && (o = o.substring(0, o.length - 1)), a.join(i, o).toLowerCase() === e.path.toLowerCase()) {
                    this.recentList.splice(t, 1);
                    break
                }
            }
            this.recentList.splice(0, 0, ...e)
        }

        attachCategoryInsert() {
            f.attachTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== s.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!e[1]) break;
                    let t = e[1];
                    if (t.length > 0) {
                        let e = this.recentList.map(e => e.taskName), n = [];
                        for (let i of t) {
                            let t = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.Background),
                                a = i.getTaskBaseInfo();
                            if (!(i.getTaskStatus() !== s.DownloadKernel.TaskStatus.Succeeded && i.getTaskStatus() !== s.DownloadKernel.TaskStatus.Seeding || t || a.taskType !== s.DownloadKernel.TaskType.P2sp && a.taskType !== s.DownloadKernel.TaskType.Emule && a.taskType !== s.DownloadKernel.TaskType.Bt && a.taskType !== s.DownloadKernel.TaskType.Group)) {
                                let t = !1;
                                for (let n = 0; n < e.length; ++n) if (e[n].toLocaleLowerCase() === a.taskName.toLocaleLowerCase()) {
                                    t = !0;
                                    break
                                }
                                t || n.push(a)
                            }
                        }
                        n.length > 0 && (this.updateRecentList(n), this.updateJumpList())
                    }
                } while (0)
            })
        }
    };
    t.default = g
}, , , , , function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});

    class i {
        constructor() {
            this.mThunderVersionStr = void 0, this.mThunderVersionNumber = void 0, this.mNativeCall = null
        }

        init() {
            global.AsyncGetNativeCallModuleObj && global.AsyncGetNativeCallModuleObj(e => {
                this.mNativeCall = e.nativeCall, this.loadThunderVersion()
            })
        }

        get thunderVersionNumber() {
            return this.mThunderVersionNumber
        }

        get thunderVersionString() {
            return this.mThunderVersionStr
        }

        get clientName() {
            return "xl_pc"
        }

        get pluginVersion() {
            return "1.0"
        }

        get currentTime() {
            return Math.floor((new Date).getTime() / 1e3)
        }

        get nativeCall() {
            return this.mNativeCall
        }

        loadThunderVersion() {
            this.mNativeCall && this.mNativeCall.CallNativeFunction("GetThunderVersion", (e, t) => {
                if (0 === e) {
                    this.mThunderVersionStr = t, this.mThunderVersionNumber = 0;
                    let e = this.mThunderVersionStr.split(".");
                    if (e && 4 === e.length) {
                        let t = Number(e[0]).valueOf(), n = Number(e[1]).valueOf(), i = Number(e[2]).valueOf(), a = 128;
                        this.mThunderVersionNumber = 26 * a + 18 * t + 10 * n + i
                    }
                }
            })
        }
    }

    t.PluginHelper = i, function (e) {
        const t = new i;
        e.getHelper = function () {
            return t
        }
    }(t.PluginHelperNS || (t.PluginHelperNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(35), a = n(26);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\components\\select-native.vue", t.default = s.exports
}, function (e, t, n) {
    e.exports = n(9)(65)
}, function (e, t) {
    var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
    "number" == typeof __g && (__g = n)
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(6), r = n(1), s = n(11), l = n(63), u = n(28), d = n(81);
    !function (e) {
        const t = u.DownloadKernelTaskManager.getTaskManager(),
            n = d.DownloadKernelCategoryManager.getCategoryManager(),
            c = o.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
            h = r.default.getLogger("DownloadKernelManager");
        let f = void 0;

        function p(e, t) {
            l.ThunderKernel.initDataBase(e, t)
        }

        function g(e, t, n, i) {
            l.ThunderKernel.initDownloadSdk(e, t, n, i)
        }

        e.init = function () {
            return i(this, void 0, void 0, function* () {
                let e = a.join(__rootDir, "../../Thunder.exe"), i = c.getFileVersion(e);
                g(a.join(__rootDir, "../bin/SDK"), "xzcGMudGh1bmRlclg7MA^^SDK==edee53fd0b15e8d65dbfe7824f5f^a23", i, function (e) {
                    t.initDownloadKernelEnd(e)
                }), (yield s.FileSystemAWNS.existsAW(__profilesDir)) || (yield s.FileSystemAWNS.mkdirsAW(__profilesDir)), p(a.join(__profilesDir, "TaskDb.dat"), function (e) {
                    0 === e && (n.init(), t.loadTaskBase(), setInterval(() => {
                        t.queryTaskInfo()
                    }, 1e3))
                })
            })
        }, e.getPeerId = function () {
            return i(this, void 0, void 0, function* () {
                let e = void 0;
                return e = f && "" !== f ? f : new Promise(e => {
                    l.ThunderKernel.queryGlobalInfo(1, (t, n) => {
                        h.verbose(t), e(n)
                    })
                })
            })
        }, e.initDataBase = p, e.initDownloadSdk = g, e.uninitialize = function () {
        }, e.startBatchOperationJournal = function () {
        }, e.endBatchOperationJournal = function () {
        }, e.getDownloadSdkVersion = function () {
            let e = a.join(__rootDir, "../bin/SDK/DownloadSDKServer.exe");
            return c.getFileVersion(e)
        }, e.setDownloadSpeedLimit = function (e) {
            return l.ThunderKernel.setDownloadSpeedLimit(e)
        }, e.setUploadSpeedLimit = function (e) {
            return l.ThunderKernel.setUploadSpeedLimit(e)
        }, e.setCacheSize = function (e) {
            return l.ThunderKernel.setCacheSize(e)
        }, e.setUserInfo = function (e, t, i) {
            return n.setUserInfo(e, t), l.ThunderKernel.setUserInfo(e, i)
        }, e.enableCommonP2pChannel = function (e) {
            t.enableCommonP2pChannel(e)
        }, e.enableCommonP2sChannel = function (e) {
            t.enableCommonP2pChannel(e)
        }, e.getTotalDownloadSpeed = function () {
            return t.getTotalDownloadSpeed()
        }, e.getTotalUploadSpeed = function () {
            return t.getTotalUploadSpeed()
        }, e.getTotalDownloadSize = function () {
            return t.getTotalDownloadSize()
        }, e.getTotalUploadSize = function () {
            return t.getTotalUploadSize()
        }, e.getTotalTaskDownloadSpeed = function (e, n) {
            return t.getTotalTaskDownloadSpeed(e, n)
        }, e.getTotalTaskVipSpeed = function (e, n) {
            return t.getTotalTaskVipSpeed(e, n)
        }, e.attachListener = function (e, n) {
            t.attachListener(e, n)
        }, e.attachOnceListener = function (e, n) {
            t.attachOnceListener(e, n)
        }, e.detachListener = function (e, n) {
            t.detachListener(e, n)
        }, e.importUnfinishedTask = function (e, t, n) {
            l.ThunderKernel.importTask(e, t, n)
        }
    }(t.DownloadKernelManager || (t.DownloadKernelManager = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(7), a = n(1), o = n(8), r = a.default.getLogger("Thunder.PromiseNativeCall"), s = i.promisify;
    t.default = function (...e) {
        return r.verbose(...e), s(o.NativeCallModule.nativeCall.CallNativeFunction.bind(o.NativeCallModule.nativeCall))(...e)
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(36);
    t.default = class {
        constructor() {
            this.emitter = null, this.emitter = new i.EventEmitter
        }

        attachOnceListener(e, t) {
            this.emitter.once(e, t)
        }

        attachListener(e, t) {
            this.emitter.addListener(e, t)
        }

        detachListener(e, t) {
            this.emitter.removeListener(e, t)
        }

        fireEvent(e, ...t) {
            return this.emitter.emit(e, ...t)
        }

        setMaxListeners(e) {
            this.emitter.setMaxListeners(e)
        }
    }
}, function (e, t, n) {
    e.exports = n(164)
}, function (e, t, n) {
    "use strict";
    var i = n(12), a = n(167), o = {"Content-Type": "application/x-www-form-urlencoded"};

    function r(e, t) {
        !i.isUndefined(e) && i.isUndefined(e["Content-Type"]) && (e["Content-Type"] = t)
    }

    var s, l = {
        adapter: ("undefined" != typeof XMLHttpRequest ? s = n(168) : "undefined" != typeof process && (s = n(71)), s),
        transformRequest: [function (e, t) {
            return a(t, "Content-Type"), i.isFormData(e) || i.isArrayBuffer(e) || i.isBuffer(e) || i.isStream(e) || i.isFile(e) || i.isBlob(e) ? e : i.isArrayBufferView(e) ? e.buffer : i.isURLSearchParams(e) ? (r(t, "application/x-www-form-urlencoded;charset=utf-8"), e.toString()) : i.isObject(e) ? (r(t, "application/json;charset=utf-8"), JSON.stringify(e)) : e
        }],
        transformResponse: [function (e) {
            if ("string" == typeof e) try {
                e = JSON.parse(e)
            } catch (e) {
            }
            return e
        }],
        timeout: 0,
        xsrfCookieName: "XSRF-TOKEN",
        xsrfHeaderName: "X-XSRF-TOKEN",
        maxContentLength: -1,
        validateStatus: function (e) {
            return e >= 200 && e < 300
        }
    };
    l.headers = {common: {Accept: "application/json, text/plain, */*"}}, i.forEach(["delete", "get", "head"], function (e) {
        l.headers[e] = {}
    }), i.forEach(["post", "put", "patch"], function (e) {
        l.headers[e] = i.merge(o)
    }), e.exports = l
}, function (e, t, n) {
    "use strict";
    var i = n(89);
    e.exports = function (e, t, n, a, o) {
        var r = new Error(e);
        return i(r, t, n, a, o)
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(3), r = n(1), s = n(6), l = n(11), u = n(5), d = n(52), c = n(28), h = n(85), f = n(81),
        p = n(32), g = n(106), k = n(229), m = n(34), T = n(13), v = n(37), w = n(25), y = n(80), S = n(7), b = n(43),
        C = n(20), D = n(86), N = n(157), I = n(112), _ = n(230), x = n(113), E = n(485), A = n(163), P = n(486),
        M = r.default.getLogger("Thunder.TaskOperator"), F = s.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        O = c.DownloadKernelTaskManager.getTaskManager(),
        B = h.DownloadKernelCategoryViewManager.getCategoryViewManager(),
        U = f.DownloadKernelCategoryManager.getCategoryManager(), L = p.DownloadKernelEventManager.getEventManager(),
        K = N.ToastNotifyManagerNS.getToastNotifyManger(), V = o.remote.dialog;

    function R(e) {
        if (void 0 !== e) {
            let t = e + "\\.";
            o.remote.shell.showItemInFolder(t)
        }
    }

    function W(e) {
        e.properties = ["openFile"];
        let t = void 0, n = o.remote.getCurrentWindow(), i = V.showOpenDialog(n, e);
        return void 0 !== i && (t = i[0]), t
    }

    function j() {
        m.MessageBox.pop({
            title: "提示",
            size: "small",
            message: "临时文件无法正常载入，导入任务失败!",
            okText: "确定",
            cancelVisible: !1
        }).then(() => {
        }, () => {
        })
    }

    let H = void 0;

    function G() {
        return i(this, void 0, void 0, function* () {
            return H || (H = E.DownloadAndPlayNS.getXmpPath()), H
        })
    }

    function z(e) {
        return i(this, void 0, void 0, function* () {
            let t = 0;
            return new Promise(n => {
                t = L.attachTaskEvent(u.DownloadKernel.TaskEventType.StatusChanged, (...i) => {
                    do {
                        if (!i) break;
                        if (i[0] !== u.DownloadKernel.TaskEventType.StatusChanged) break;
                        if (!i[1]) break;
                        let a = i[1];
                        for (let i = 0; i < a.length; ++i) {
                            let o = a[i];
                            if (!o) continue;
                            let r = o.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                            if (e === r) {
                                o.getTaskStatus() === u.DownloadKernel.TaskStatus.Started && (L.detachTaskEvent(u.DownloadKernel.TaskEventType.StatusChanged, t), n(!0));
                                break
                            }
                        }
                    } while (0)
                })
            })
        })
    }

    function q(e) {
        return i(this, void 0, void 0, function* () {
            let t = yield m.MessageBox.pop({
                title: "请选择播放任务",
                schemas: [{
                    name: "playFile",
                    type: "confRadio",
                    outerClass: "xlx-dialog__play-list",
                    ulClasses: "xlx-setting-content__horizontal",
                    option: e.map(e => e.fileName),
                    labels: e.map(e => e.fileName)
                }],
                formData: {playFile: {value: e[0].fileName}}
            });
            return e.find(e => e.fileName === t.playFile.value)
        })
    }

    !function (e) {
        function t(e, t) {
            let n = g.Common.getTaskTypeFromImportingFile(e);
            n === u.DownloadKernel.TaskType.P2sp ? function (e, t) {
                return i(this, void 0, void 0, function* () {
                    let n = {errcode: 0, errinfo: "success"};
                    do {
                        let i = e + ".cfg";
                        if (!(yield l.FileSystemAWNS.existsAW(i))) {
                            n.errcode = 2, n.errinfo = "缺少.cfg文件,无法导入";
                            break
                        }
                        let a = yield k.TaskUtilitiesAWNS.importUnfinishedTaskAW(e, "");
                        if (null !== a && 0 === a.ret) {
                            let i = {taskType: u.DownloadKernel.TaskType.P2sp, value: a.url},
                                o = yield k.TaskUtilitiesAWNS.findTaskAW(i);
                            if (null !== o && o.result) {
                                n.errcode = 3, n.extra = o.task, y.ThunderNewTask.repeatTasksMsg([o.task]);
                                break
                            }
                            let r = {
                                taskBaseInfo: {
                                    taskName: g.Common.getTaskNameFromImportFile(e),
                                    savePath: g.Common.getSavePathFromImportFile(e),
                                    origin: t = void 0 === t ? "Unknown" : t
                                }, p2spTaskInfo: {url: a.url, refUrl: "", cookie: ""}
                            }, s = yield O.createTask(u.DownloadKernel.TaskType.P2sp, r);
                            if (null !== s) {
                                let e = s.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                                D.DowloadDispatchNS.startTask(e)
                            } else M.warning("createTask failed")
                        } else n.errcode = 2, n.errinfo = "临时文件无法正常载入，导入任务失败", j()
                    } while (0);
                    return n
                })
            }(e, t).then(e => {
                M.information(e.errcode, e.errinfo)
            }).catch() : n === u.DownloadKernel.TaskType.Emule ? function (e, t) {
                return i(this, void 0, void 0, function* () {
                    let n = {errcode: 0, errinfo: "success"};
                    do {
                        let i = "";
                        if (".PART" === a.extname(e).toUpperCase() && (i = e + ".met", !(yield l.FileSystemAWNS.existsAW(i))) && void 0 === (i = W({
                            title: "导入eMule文件时,需要相应的MET文件,请选择MET文件",
                            filters: [{name: "met文件(*.met)", extensions: ["met"]}]
                        }))) break;
                        let o = yield k.TaskUtilitiesAWNS.importUnfinishedTaskAW(e, i);
                        if (null !== o && 0 === o.ret) {
                            let i = g.Common.parseEd2kUrl(o.url);
                            if (null !== i) {
                                let a = {taskType: u.DownloadKernel.TaskType.Emule, value: i.fileHash},
                                    r = yield k.TaskUtilitiesAWNS.findTaskAW(a);
                                if (null !== r && r.result) {
                                    n.errcode = 3, n.extra = r.task, y.ThunderNewTask.repeatTasksMsg([r.task]);
                                    break
                                }
                                let s = {
                                    taskBaseInfo: {
                                        taskName: g.Common.getTaskNameFromImportFile(e),
                                        savePath: g.Common.getSavePathFromImportFile(e),
                                        origin: t = void 0 === t ? "Unknown" : t
                                    }, emuleTaskInfo: {url: o.url}
                                }, l = yield O.createTask(u.DownloadKernel.TaskType.Emule, s);
                                if (null !== l) {
                                    let e = l.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                                    D.DowloadDispatchNS.startTask(e)
                                }
                            }
                        } else n.errcode = 2, n.errinfo = "导入失败,该任务临时文件无法正常载入", j()
                    } while (0);
                    return n
                })
            }(e, t).then(e => {
                M.information(e.errcode, e.errinfo)
            }).catch() : n === u.DownloadKernel.TaskType.Bt && function (e, t) {
                return i(this, void 0, void 0, function* () {
                    let n = a.dirname(e), i = void 0;
                    if (yield l.FileSystemAWNS.existsAW(n)) {
                        let e = yield l.FileSystemAWNS.readdirAW(n);
                        for (let t = 0; t < e.length; t++) {
                            let n = e[t];
                            if (".torrent" === a.extname(n)) {
                                i = n;
                                break
                            }
                        }
                    }
                    do {
                        if (void 0 === i || null === i || "" === i) break;
                        let e = a.join(__profilesDir, "Torrents"), o = a.join(e, i);
                        if (yield l.FileSystemAWNS.existsAW(o)) {
                            let e = yield k.TaskUtilitiesAWNS.parserBtFileInfoAW(o),
                                i = {taskType: u.DownloadKernel.TaskType.Bt, value: e.infoId},
                                r = yield k.TaskUtilitiesAWNS.findTaskAW(i);
                            if (r && r.result && null !== r.task) {
                                y.ThunderNewTask.repeatTasksMsg([r.task]);
                                break
                            }
                            let s = a.dirname(n), l = [];
                            for (let t = 0; t < e.fileLists.length; ++t) l.push(e.fileLists[t].realIndex);
                            let d = e.trackerUrls.join("\n"), h = A.TaskCtrlOperatorNS.constructProductInfo("");
                            t = void 0 === t ? "Unknown" : t;
                            let f = {
                                    taskBaseInfo: {savePath: s, taskName: e.title, productInfo: h, origin: t},
                                    btTaskInfo: {
                                        seedFile: o,
                                        displayName: e.title,
                                        fileRealIndexLists: l,
                                        fileLists: e.fileLists,
                                        infoId: e.infoId,
                                        tracker: d
                                    }
                                },
                                p = yield c.DownloadKernelTaskManager.getTaskManager().createTask(u.DownloadKernel.TaskType.Bt, f);
                            if (null !== p) {
                                let e = p.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                                D.DowloadDispatchNS.startTask(e)
                            }
                        }
                    } while (0)
                })
            }(e, t).catch()
        }

        function r(e, t) {
            let n = [];
            do {
                if (void 0 === e || null === e) break;
                let i = O.getTaskFromTaskId(e);
                if (null === i) break;
                if (i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Bt) break;
                let o = i.getExtraObject();
                if (0 === o.getDownloadFile().length) break;
                let r = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath),
                    s = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), l = o.getBtFileList();
                for (let [, e]of l) {
                    let i = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.RealIndex),
                        o = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.Download),
                        l = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FileName),
                        d = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FilePath), c = a.join(r, s, d, l);
                    if (1 === o) {
                        let e = v.TaskUtilHelper.getTaskFileType(l);
                        if (null !== t && void 0 !== t && -1 !== t) {
                            if (t === i) {
                                n.push({fileExtType: e, fullPath: c});
                                break
                            }
                        } else n.push({fileExtType: e, fullPath: c})
                    }
                }
            } while (0);
            return n
        }

        function s(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = [];
                do {
                    if (void 0 === e || null === e) break;
                    let i = O.getTaskFromTaskId(e);
                    if (null === i) break;
                    if (i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Bt) break;
                    let o = i.getExtraObject();
                    if (0 === o.getDownloadFile().length) break;
                    let r = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath),
                        s = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), l = o.getBtFileList();
                    for (let [, e]of l) {
                        let i = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.RealIndex),
                            o = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.Download),
                            l = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FileName),
                            d = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FilePath), c = a.join(r, s, d, l),
                            h = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.Cid),
                            f = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.Gcid);
                        if (1 === o) {
                            if (v.TaskUtilHelper.getTaskFileType(l) === v.TaskUtilHelper.FileExtType.Video) if (null !== t && void 0 !== t && -1 !== t) {
                                if (i === t) {
                                    n.push({fileName: l, fullPath: c, index: i, cid: h, gcid: f});
                                    break
                                }
                            } else n.push({fileName: l, fullPath: c, index: i, cid: h, gcid: f})
                        }
                    }
                } while (0);
                return n
            })
        }

        function h(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = [];
                do {
                    if (void 0 === e || null === e) break;
                    let i = O.getTaskFromTaskId(e);
                    if (null === i) break;
                    if (i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Group) break;
                    let o = i.getExtraObject();
                    if (null === o || void 0 === o) break;
                    let r = o.getSubTaskCount();
                    for (let e = 0; e < r; ++e) {
                        let i = o.getSubTaskByIndex(e), r = e,
                            s = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.DownloadSubTask),
                            l = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath),
                            d = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), c = a.join(l, d),
                            h = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.Cid),
                            f = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.Gcid);
                        if (1 === s) {
                            if (v.TaskUtilHelper.getTaskFileType(d) === v.TaskUtilHelper.FileExtType.Video) if (null !== t && void 0 !== t && -1 !== t) {
                                if (r === t) {
                                    n.push({fileName: d, fullPath: c, index: r, cid: h, gcid: f});
                                    break
                                }
                            } else n.push({fileName: d, fullPath: c, index: r, cid: h, gcid: f})
                        }
                    }
                } while (0);
                return n
            })
        }

        function f(e) {
            let t = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType),
                n = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskUrl);
            if (t === u.DownloadKernel.TaskType.P2sp) {
                let t = e.getExtraObject().getDisplayUrl();
                "" !== t && void 0 !== t && (n = t)
            }
            return n
        }

        function p(e, t, n, o, r, s, u, c) {
            return i(this, void 0, void 0, function* () {
                let i = {ret: !1, errcode: 0};
                do {
                    let h = yield G();
                    if (!h || !(yield l.FileSystemAWNS.existsAW(h))) {
                        if (!(yield P.default.installXmp())) break;
                        if (!(h = yield G()) || !(yield l.FileSystemAWNS.existsAW(h))) break
                    }
                    if (!e || "" === e) break;
                    let f = [], p = '"' + e + '"', g = "/sstartfrom xl10", k = "/sopenfrom xunlei10";
                    f.push(p), f.push(g), f.push(k);
                    let m = '/sname "' + t + '"';
                    f.push(m);
                    let T = "/scid " + o;
                    f.push(T);
                    let v = "/sgcid " + r;
                    f.push(v);
                    let w = "/sfilesize " + u;
                    f.push(w);
                    let y = '/sshowurl "' + n + '"';
                    f.push(y);
                    let S = '/sext "' + a.extname(t) + '"';
                    f.push(S);
                    let b = "/staskid " + s;
                    if (f.push(b), null !== c && void 0 !== c && "" !== c) {
                        let e = '/sFilePath "' + c + '"';
                        f.push(e)
                    }
                    let C = "/ssdkver " + d.DownloadKernelManager.getDownloadSdkVersion();
                    f.push(C);
                    let D = yield A.TaskCtrlOperatorNS.getUserLoginInfo();
                    "" !== D && f.push(D);
                    let N = f.join(" "), I = a.dirname(h), _ = F.shellExecute(0, "open", h, N, I, "SW_SHOW");
                    _ > 32 ? i.ret = !0 : i.errcode = _, M.information("shellExecute:result = ", _)
                } while (0);
                return i
            })
        }

        function E(e, t, n, o, r) {
            return i(this, void 0, void 0, function* () {
                let i = !1, d = O.getTaskFromTaskId(e);
                do {
                    if (!d) break;
                    if (!d.isSupportPlay()) break;
                    let c = "", f = "", g = "", k = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskUrl),
                        m = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.FileSize), v = "", w = "", y = "",
                        S = d.getTaskStatus(), C = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType);
                    if (S === u.DownloadKernel.TaskStatus.Succeeded || S === u.DownloadKernel.TaskStatus.Seeding) {
                        if (C === u.DownloadKernel.TaskType.Emule || C === u.DownloadKernel.TaskType.P2sp) {
                            let e = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath);
                            if (f = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), c = a.resolve(e, f), !(yield l.FileSystemAWNS.existsAW(c))) break;
                            v = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.Cid), w = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.Gcid), g = c
                        } else if (C === u.DownloadKernel.TaskType.Bt || C === u.DownloadKernel.TaskType.Group) {
                            let n = [];
                            if (0 === (n = C === u.DownloadKernel.TaskType.Bt ? yield s(e, t) : yield h(e, t)).length) break;
                            let i = null;
                            if (null !== (i = n.length > 1 ? yield q(n) : n[0])) {
                                if (yield l.FileSystemAWNS.existsAW(i.fullPath)) g = i.fullPath; else if (C === u.DownloadKernel.TaskType.Bt) g = yield d.getPlayUrl(i.index); else {
                                    let e = d.getExtraObject().getSubTaskByIndex(i.index);
                                    null !== e && void 0 !== e && (g = yield e.getPlayUrl(-1))
                                }
                                f = i.fileName, v = i.cid, w = i.gcid
                            }
                        }
                    } else {
                        if (S === u.DownloadKernel.TaskStatus.StartWaiting) {
                            M.information("down and play waiting");
                            break
                        }
                        if (S === u.DownloadKernel.TaskStatus.Stopped || S === u.DownloadKernel.TaskStatus.Failed) {
                            if (!D.DowloadDispatchNS.startTask(e)) {
                                M.information("down and play start waiting");
                                break
                            }
                            yield z(e)
                        }
                        if (d.setDownloadStrategy(1), C === u.DownloadKernel.TaskType.Bt || C === u.DownloadKernel.TaskType.Group) {
                            let n = [];
                            if (0 === (n = C === u.DownloadKernel.TaskType.Bt ? yield s(e, t) : yield h(e, t)).length) break;
                            let i = null;
                            if (null !== (i = n.length > 1 ? yield q(n) : n[0])) {
                                if (yield l.FileSystemAWNS.existsAW(i.fullPath)) g = i.fullPath; else if (C === u.DownloadKernel.TaskType.Bt) g = yield d.getPlayUrl(i.index); else {
                                    let e = d.getExtraObject().getSubTaskByIndex(i.index);
                                    null !== e && void 0 !== e && (g = yield e.getPlayUrl(-1))
                                }
                                y = a.dirname(i.fullPath), f = i.fileName, v = i.cid, w = i.gcid
                            }
                        } else C !== u.DownloadKernel.TaskType.Emule && C !== u.DownloadKernel.TaskType.P2sp || (g = yield d.getPlayUrl(-1), f = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), y = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath), v = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.Cid), w = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.Gcid))
                    }
                    let N = yield p(g, f, k, v, w, e, m, y);
                    i = N.ret;
                    let I = [];
                    void 0 === r && (r = b.default.getCurrentCategoryId()), -1 === r ? I.push("panel_type=mypc") : I.push("panel_type=private"), void 0 === o && (o = ""), I.push("panel=" + o), I.push("taskid=" + e), I.push("filename=" + encodeURIComponent(f)), void 0 === n && (n = "other"), I.push("click_source=" + n), i ? I.push("result=success") : (I.push("result=fail"), I.push("errorcode=" + N.errcode));
                    let _ = I.join(",");
                    M.information("trackEvent", "download_leftpanel", "play_panel_show", _), T.XLStatNS.trackEvent("download_leftpanel", "play_panel_show", "", 0, 0, 0, 0, _)
                } while (0);
                return i
            })
        }

        function L(e) {
            do {
                if (null === e || void 0 === e || void 0 === e.taskId) break;
                let t = O.getTaskFromTaskId(e.taskId);
                if (null === t || void 0 === t) break;
                if (t.getTaskAttribute(u.DownloadKernel.TaskAttribute.CategoryViewId) !== u.DownloadKernel.CategroyViewID.Downloading) break;
                if ("ThunderUnion" !== t.getTaskAttribute(u.DownloadKernel.TaskAttribute.Origin)) break;
                if (t.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Group) break;
                if (e.taskStatus === u.DownloadKernel.TaskStatus.Succeeded) break;
                let n = t.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName),
                    i = `filename=${encodeURIComponent(n)}`;
                M.information("trackEvent js_grouptask_delete_click ", n, i), T.XLStatNS.trackEvent("core_operate", "js_grouptask_delete_click", "", 0, 0, 0, 0, i)
            } while (0)
        }

        e.importUncompletedFromFile = t, e.importUncompleted = function () {
            M.information("import un-finished");
            let e = o.remote.getCurrentWindow();
            V.showOpenDialog(e, {
                properties: ["openFile"],
                filters: [{
                    name: "所有支持的文件类型（*.td;*.bt.td;*.emule.td;*.bc!;*.part;*.xltd）",
                    extensions: ["td", "bt.td", "emule.td", "bc!", "part", "xltd"]
                }, {name: "迅雷专有下载文件（*.td）", extensions: ["td", "xltd"]}, {
                    name: "迅雷BT下载文件（*.bt.td）",
                    extensions: ["bt.td"]
                }, {name: "迅雷eMule下载文件（*.emule.td）", extensions: ["emule.td"]}, {
                    name: "BitComet下载文件（*.bc!）",
                    extensions: ["bc!"]
                }, {name: "eMule0.47数据文件（*.part）", extensions: ["part"]}]
            }, e => {
                void 0 === e ? M.information("import un finished select none") : t(e[0], "TD")
            })
        }, e.removeNonExistingTask = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = 0;
                do {
                    if (void 0 === e || null === e) {
                        let t = B.getCategoryViewFromId(u.DownloadKernel.CategroyViewID.Completed);
                        if (null === t) break;
                        let n = t.getTasks();
                        e = [...n.values()].map(e => e.getTaskBaseInfo())
                    }
                    if (null === e || void 0 === e || 0 === e.length) break;
                    let n = [];
                    for (let i of e) (yield A.TaskCtrlOperatorNS.isExistTaskFile(i)) || (n.push(i.taskId), t += 1);
                    yield O.deleteBatchTask(n, !0)
                } while (0);
                return t
            })
        }, e.markReadStatus = function (e, t) {
            do {
                if (null === e || 0 === e.length) break;
                for (let n of e) {
                    let e = O.getTaskFromTaskId(n.taskId);
                    e && e.setUserRead(t)
                }
            } while (0)
        }, e.moveCategoryTask = function (e, t) {
            do {
                if (null === e || 0 === e.length) break;
                for (let n of e) O.moveCategoryTask(n.taskId, t)
            } while (0)
        }, e.getFileIcon = function (e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    o.remote.app.getFileIcon(e, (e, n) => {
                        M.information(e), t(null === n || void 0 === n ? null : n.toDataURL())
                    })
                })
            })
        }, e.executeInstallFile = function (e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = !1;
                do {
                    let a = "", r = "";
                    if (null !== t && void 0 !== t && "" !== t) a = t, null !== n && void 0 !== n && "" !== n && (r = n); else {
                        if (e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Group) break;
                        let t = e.getExtraObject(),
                            n = t.getUserData(_.TaskUserDataGUID.guidDownloadCompleteInstall, "installFile");
                        if (void 0 === n || null === n || "" === n || "0" === n) break;
                        let i = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                        if (a = A.TaskCtrlOperatorNS.getSavePathByFileName(i, n), !(yield l.FileSystemAWNS.existsAW(a))) break;
                        r = "", null !== (n = t.getUserData(_.TaskUserDataGUID.guidDownloadCompleteRunParams, "runParams")) && void 0 !== n && "" !== n && (r = n)
                    }
                    if (o.ipcRenderer.send("onOpenExecute", a, r), i = !0, "ThunderUnion" === e.getTaskAttribute(u.DownloadKernel.TaskAttribute.Origin)) {
                        let t = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName),
                            n = `filename=${encodeURIComponent(t)}`;
                        M.information("trackEvent js_grouptask_install ", t, n), T.XLStatNS.trackEvent("core_operate", "js_grouptask_install", "", 0, 0, 0, 0, n)
                    }
                } while (0);
                return i
            })
        }, e.openTaskFolder = function (e, t) {
            return i(this, void 0, void 0, function* () {
                let n = e.savePath, i = e.taskName, r = "";
                "" === i ? r = n : (void 0 !== i && i.indexOf(".") === i.length - 1 && (i = i.substring(0, i.length - 1)), r = a.join(n, i));
                do {
                    if (e.taskType === u.DownloadKernel.TaskType.Bt) {
                        let n = O.getTaskFromTaskId(e.taskId).getExtraObject(), i = n.getDownloadFile();
                        if (1 !== i.length) {
                            t ? R(r) : o.remote.shell.showItemInFolder(r);
                            break
                        }
                        {
                            let e = n.getBtFileList();
                            for (let [, t]of e) if (t.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.RealIndex) === i[0]) {
                                let e = t.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FilePath),
                                    n = t.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FileName);
                                r = a.join(r, e, n);
                                break
                            }
                        }
                    } else {
                        if (e.taskType === u.DownloadKernel.TaskType.Group) {
                            t ? R(n) : o.remote.shell.showItemInFolder(n);
                            break
                        }
                        if (e.taskType === u.DownloadKernel.TaskType.Unkown) break;
                        if (e.taskType === u.DownloadKernel.TaskType.Magnet) break
                    }
                    if (e.taskStatus === u.DownloadKernel.TaskStatus.Succeeded || e.taskStatus === u.DownloadKernel.TaskStatus.Seeding) {
                        (yield l.FileSystemAWNS.existsAW(r)) ? o.remote.shell.showItemInFolder(r) : R(n);
                        break
                    }
                    if (yield l.FileSystemAWNS.existsAW(r)) {
                        o.remote.shell.showItemInFolder(r);
                        break
                    }
                    if (e.taskType === u.DownloadKernel.TaskType.P2sp) {
                        (yield l.FileSystemAWNS.existsAW(r + ".td")) ? o.remote.shell.showItemInFolder(r + ".td") : (yield l.FileSystemAWNS.existsAW(r + ".xltd")) ? o.remote.shell.showItemInFolder(r + ".xltd") : R(n);
                        break
                    }
                    if (e.taskType === u.DownloadKernel.TaskType.Emule) {
                        (yield l.FileSystemAWNS.existsAW(r + ".emule.td")) ? o.remote.shell.showItemInFolder(r + ".emule.td") : (yield l.FileSystemAWNS.existsAW(r + ".xltd")) ? o.remote.shell.showItemInFolder(r + ".xltd") : (yield l.FileSystemAWNS.existsAW(r + ".emule.xltd")) ? o.remote.shell.showItemInFolder(r + ".emule.xltd") : R(n);
                        break
                    }
                    if (e.taskType === u.DownloadKernel.TaskType.Bt) {
                        (yield l.FileSystemAWNS.existsAW(r + ".bt.td")) ? o.remote.shell.showItemInFolder(r + ".bt.td") : (yield l.FileSystemAWNS.existsAW(r + ".xltd")) ? o.remote.shell.showItemInFolder(r + ".xltd") : (yield l.FileSystemAWNS.existsAW(r + ".bt.xltd")) ? o.remote.shell.showItemInFolder(r + ".bt.xltd") : R(n);
                        break
                    }
                    e.taskType === u.DownloadKernel.TaskType.Group && R(n)
                } while (0)
            })
        }, e.openTaskItem = function (e, t, n, s, d) {
            return i(this, void 0, void 0, function* () {
                let i = e.savePath, c = e.taskName, h = "";
                "" === c ? h = i : (void 0 !== c && c.indexOf(".") === c.length - 1 && (c = c.substring(0, c.length - 1)), h = a.join(i, c));
                let f = O.getTaskFromTaskId(e.taskId), g = f.isSupportPlay();
                do {
                    if (e.taskType === u.DownloadKernel.TaskType.P2sp || e.taskType === u.DownloadKernel.TaskType.Emule) {
                        if (e.taskStatus !== u.DownloadKernel.TaskStatus.Succeeded && e.taskStatus !== u.DownloadKernel.TaskStatus.Seeding) break;
                        (yield l.FileSystemAWNS.existsAW(h)) && (g ? yield E(e.taskId, -1, n, s, d) : o.remote.shell.openItem(h))
                    } else if (e.taskType === u.DownloadKernel.TaskType.Bt) {
                        let i = f.getExtraObject(), c = i.getDownloadFile();
                        if (e.taskStatus === u.DownloadKernel.TaskStatus.Succeeded || e.taskStatus === u.DownloadKernel.TaskStatus.Seeding) if (1 === c.length) {
                            let t = i.getBtFileList();
                            for (let [, e]of t) if (e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.RealIndex) === c[0]) {
                                let t = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FilePath),
                                    n = e.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FileName);
                                h = a.join(h, t, n);
                                break
                            }
                            g ? yield E(e.taskId, -1, n, s, d) : o.remote.shell.openItem(h)
                        } else if (null !== t && void 0 !== t && -1 !== t) {
                            let i = r(e.taskId, t);
                            null === i || void 0 === i || i.length <= 0 ? R(h) : i[0].fileExtType === v.TaskUtilHelper.FileExtType.Video ? yield E(e.taskId, t, n, s, d) : null !== i[0].fullPath && void 0 !== i[0].fullPath && "" !== i[0].fullPath ? o.remote.shell.openItem(i[0].fullPath) : R(h)
                        } else g ? yield E(e.taskId, -1, n, s, d) : R(h); else if (null !== t && void 0 !== t && -1 !== t) {
                            let i = r(e.taskId, t);
                            null === i || void 0 === i || i.length <= 0 ? R(h) : i[0].fileExtType === v.TaskUtilHelper.FileExtType.Video ? i[0].fullPath && (yield l.FileSystemAWNS.existsAW(i[0].fullPath)) ? yield p(i[0].fullPath, "", "", "", "", 0, 0) : yield E(e.taskId, t, n, s, d) : null !== i[0].fullPath && void 0 !== i[0].fullPath && "" !== i[0].fullPath ? o.remote.shell.openItem(i[0].fullPath) : R(h)
                        } else R(h)
                    } else if (e.taskType === u.DownloadKernel.TaskType.Group) if (null !== t && void 0 !== t && -1 !== t) {
                        let e = f.getExtraObject();
                        if (null === e || void 0 === e) break;
                        let i = e.getSubTaskByIndex(t), r = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId),
                            c = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath),
                            h = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), p = "";
                        "" === h ? p = c : (void 0 !== h && h.indexOf(".") === h.length - 1 && (h = h.substring(0, h.length - 1)), p = a.join(c, h));
                        let g = i.isSupportPlay();
                        (yield l.FileSystemAWNS.existsAW(p)) && (g ? yield E(r, -1, n, s, d) : o.remote.shell.openItem(p))
                    } else {
                        let e = f.getExtraObject();
                        e && R(e.getSubTaskByIndex(0).getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath))
                    }
                } while (0)
            })
        }, e.startTasks = function (e) {
            let t = e.map(e => e.taskId);
            D.DowloadDispatchNS.startTasks(t)
        }, e.pauseTasks = function (e, t) {
            let n = [];
            for (let t of e) n.push(t.taskId);
            n.length > 0 && O.batchStopTask(n, t)
        }, e.deleteTasks = function (e, t) {
            do {
                if (null === e || void 0 === e || e.length <= 0) break;
                if (void 0 === t && (t = !0), t) {
                    let t = !1;
                    for (let n of e) if (n.taskStatus === u.DownloadKernel.TaskStatus.Started) {
                        t = !0;
                        break
                    }
                    if (t) m.MessageBox.confirm({
                        title: "任务正在下载，您确定删除任务吗？",
                        type: m.MessageBox.ConfirmType.Warning,
                        checkboxEnabled: !1
                    }).then(() => {
                        let t = [];
                        for (let n of e) L(n), t.push(n.taskId);
                        O.batchRemoveToRecycle(t).catch(), 1 === e.length && b.default.setNeedSelectNext(!0)
                    }, () => {
                    }); else {
                        let t = [];
                        for (let n of e) L(n), t.push(n.taskId);
                        O.batchRemoveToRecycle(t).catch(), 1 === e.length && b.default.setNeedSelectNext(!0)
                    }
                }
            } while (0)
        }, e.destroyTasks = function (e, t) {
            do {
                if (null === e || void 0 === e || e.length <= 0) break;
                if (void 0 === t && (t = !0), t) m.MessageBox.confirm({
                    title: "您确定要删除此任务吗？",
                    type: m.MessageBox.ConfirmType.Warning,
                    checkboxEnabled: !0,
                    checkboxChecked: !0,
                    checkboxLabel: "同时删除文件"
                }).then(t => {
                    let n = [];
                    for (let t of e) L(t), n.push(t.taskId);
                    O.deleteBatchTask(n, t).then(e => {
                        t && !e && K.showNotify(N.ToastNotifyManagerNS.notifyIdTaskOperatorDestroyTask, I.ToastNotifyItemType.RedNotify, "文件在本地磁盘中删除失败", 3e3)
                    }).catch(), 1 === e.length && b.default.setNeedSelectNext(!0)
                }, () => {
                }); else {
                    let t = [];
                    for (let n of e) L(n), t.push(n.taskId);
                    O.deleteBatchTask(t, !0).then(e => {
                        e || K.showNotify(N.ToastNotifyManagerNS.notifyIdTaskOperatorDestroyTask, I.ToastNotifyItemType.RedNotify, "文件在本地磁盘中删除失败", 3e3)
                    }).catch(), 1 === e.length && b.default.setNeedSelectNext(!0)
                }
            } while (0)
        }, e.move2Dir = function (e, t) {
            return i(this, void 0, void 0, function* () {
                if (void 0 === t || "" === t) {
                    let e = o.remote.getCurrentWindow(), n = V.showOpenDialog(e, {properties: ["openDirectory"]});
                    void 0 !== n && (t = n[0])
                }
                if (void 0 !== t && "" !== t) {
                    let n = w.ConfigNS.getValue("MoveToDir", "LatestSavePath", []), i = n, a = i.indexOf(t);
                    -1 !== a && i.splice(a, 1), i.splice(0, 0, t), i = i.slice(0, 3), w.ConfigNS.setValue("MoveToDir", "LatestSavePath", i), w.ConfigNS.save().catch();
                    for (let i of e) n = yield O.moveTaskToPath(i.taskId, t)
                }
                return !1
            })
        }, e.copy2Dir = function (e, t) {
            return i(this, void 0, void 0, function* () {
                let n = void 0;
                if (void 0 !== t && "" !== t) n = t; else {
                    let e = o.remote.getCurrentWindow(), t = V.showOpenDialog(e, {properties: ["openDirectory"]});
                    void 0 !== t && (n = t[0])
                }
                if (void 0 !== n && "" !== n) {
                    let t = w.ConfigNS.getValue("CopyToDir", "LatestSavePath", []), i = t.indexOf(n);
                    -1 !== i && t.splice(i, 1), t.splice(0, 0, n), t = t.slice(0, 3), w.ConfigNS.setValue("CopyToDir", "LatestSavePath", t), w.ConfigNS.save().catch();
                    for (let t of e) {
                        let e = t.savePath, i = t.taskName, r = e, s = n;
                        r = t.taskType !== u.DownloadKernel.TaskType.Group ? a.join(e, i) : a.join(r, "*"), s = a.join(n, i), r !== n && o.ipcRenderer.send(C.ThunderChannelList.channelRMFileCopy, r, s)
                    }
                }
            })
        }, e.copyLink = function (e) {
            let t = [];
            for (let n of e) {
                let e = O.getTaskFromTaskId(n.taskId);
                if (n.taskType !== u.DownloadKernel.TaskType.P2sp) if (n.taskType !== u.DownloadKernel.TaskType.Emule) if (n.taskType !== u.DownloadKernel.TaskType.Group) ; else {
                    let e = O.getTaskFromTaskId(n.taskId).getExtraObject(), i = e.getSubTaskCount();
                    for (let n = 0; n < i; n++) {
                        let i = f(e.getSubTaskByIndex(n));
                        t.push(i)
                    }
                } else t.push(n.url); else {
                    let i = e.getExtraObject().getDisplayUrl();
                    "" === i && (i = n.url), t.push(i)
                }
            }
            o.clipboard.writeText(t.join("\r\n")), K.showNotify(N.ToastNotifyManagerNS.notifyIdTaskOperatorCopyLink, I.ToastNotifyItemType.GreenNotify, "链接已复制", 3e3)
        }, e.copyMagnetLink = function (e) {
            do {
                if (void 0 === e) break;
                if (e.taskType !== u.DownloadKernel.TaskType.Bt) break;
                let t = "magnet:?xt=urn:btih:" + O.getTaskFromTaskId(e.taskId).getExtraObject().getInfoId();
                o.clipboard.writeText(t), K.showNotify(N.ToastNotifyManagerNS.notifyIdTaskOperatorCopyMagnetLink, I.ToastNotifyItemType.GreenNotify, "磁力链接已复制", 3e3)
            } while (0)
        }, e.saveAsTorrent = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                do {
                    if (void 0 === e) break;
                    if (e.taskType !== u.DownloadKernel.TaskType.Bt) break;
                    let n = O.getTaskFromTaskId(e.taskId).getExtraObject(), i = n.getSeedFilePath();
                    if (!(yield l.FileSystemAWNS.existsAW(i))) break;
                    let r = e.taskName;
                    void 0 !== r && "" !== r || "" === (r = n.getDisplayName()) && (r = a.parse(i).name);
                    let s = r, d = a.parse(r);
                    x.ParseUrlFileNameNS.isUsualFileExtName(d.ext) && (s = d.name + ".torrent");
                    let c = o.remote.getCurrentWindow(),
                        h = {defaultPath: s, filters: [{name: "BT种子文件（*.torrent）", extensions: ["torrent"]}]},
                        f = V.showSaveDialog(c, h);
                    if (void 0 === f || "" === f) {
                        t = !0;
                        break
                    }
                    ".torrent" !== a.extname(f).toLowerCase() && (f += ".torrent"), t = yield l.FileSystemAWNS.copyFileAW(i, f)
                } while (0);
                t || K.showNotify(N.ToastNotifyManagerNS.notifyIdTaskOperatorSaveAsTorrent, I.ToastNotifyItemType.RedNotify, "获取此任务种子文件失败", 3e3)
            })
        }, e.renameTask = function (e) {
            M.information("rename", e.taskName, e.taskId);
            let t = e.taskName;
            m.MessageBox.customAW("task-rename", {taskBase: e}).then(n => {
                do {
                    if (S.isNullOrUndefined(n)) break;
                    if (void 0 === n.fileName || null === n.fileName) break;
                    let i = n.fileName;
                    if (i === t) break;
                    O.getTaskFromTaskId(e.taskId).reName(i).catch()
                } while (0)
            }, () => {
            })
        }, e.recoverTask = function (e) {
            if (e.length > 1) {
                let t = [];
                for (let n of e) t.push(n.taskId);
                O.batchRecoverFromRecycle(t)
            } else for (let t of e) O.recoverFromRecycle(t.taskId);
            K.showNotify(N.ToastNotifyManagerNS.notifyIdTaskOperatorRecoverTask, I.ToastNotifyItemType.GreenNotify, "已还原任务", 3e3)
        }, e.clearRecycle = function () {
            let e = B.getCategoryViewFromId(u.DownloadKernel.CategroyViewID.Recycle).getTasks();
            e.size > 0 && m.MessageBox.confirm({
                title: "确定清空垃圾箱？",
                type: m.MessageBox.ConfirmType.Warning,
                checkboxEnabled: !0,
                checkboxChecked: !1,
                checkboxLabel: "同时删除文件"
            }).then(t => {
                let n = [];
                e.forEach(function (e) {
                    n.push(e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId))
                }), O.deleteBatchTask(n, t).catch()
            }, () => {
            })
        }, e.startAll = function () {
            let e = [], t = B.getCategoryViewFromId(u.DownloadKernel.CategroyViewID.Downloading).getTasks();
            for (let [, n]of t) e.push(n);
            let n = e.map(e => e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId));
            D.DowloadDispatchNS.startTasks(n)
        }, e.pauseAll = function () {
            let e = [], t = B.getCategoryViewFromId(u.DownloadKernel.CategroyViewID.Downloading).getTasks();
            for (let [, n]of t) null !== n && (n.getTaskAttribute(u.DownloadKernel.TaskAttribute.Background) || e.push(n.getId()));
            e.length > 0 && O.batchStopTask(e)
        }, e.pauseCategoryAllTask = function (e) {
            let t = U.getCategoryView(e, u.DownloadKernel.CategroyViewID.Downloading);
            if (!t) return;
            let n = [], i = t.getTasks();
            for (let [, e]of i) null !== e && (e.getTaskAttribute(u.DownloadKernel.TaskAttribute.Background) || n.push(e.getId()));
            n.length > 0 && O.batchStopTask(n)
        }, e.playVedioByXmp = p, e.downloadAndPlay = E, e.vipAcclerate = function (e) {
            return i(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: t} = yield Promise.resolve().then(() => n(38));
                do {
                    if (void 0 === e) break;
                    t.clickVipAcclerateBtn(e.taskId)
                } while (0)
            })
        }, e.statJsSdkDeleteTask = L
    }(t.TaskOperatorNs || (t.TaskOperatorNs = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(691), o = n(54), r = n(48), s = n(1).default.getLogger("Thunder.VipDownload"),
        l = r.PluginHelperNS.getHelper();
    var u;
    !function (e) {
        e.login = "OnLogin", e.logout = "OnLogout", e.authorityChanged = "OnAuthorityChanged"
    }(u = t.UserEventNS || (t.UserEventNS = {}));

    class d extends o.default {
        constructor() {
            super(...arguments), this.mHasFlux = !1, this.mPeerId = void 0, this.mUserId = "0", this.mSessionId = void 0, this.mIsLogin = !1, this.mIsVip = !1, this.mVipLevel = 0, this.mVasType = 0
        }

        init() {
            this.setMaxListeners(0), l.nativeCall && this.attachUserEvents()
        }

        getPeerId() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.mPeerId ? e(this.mPeerId) : l.nativeCall ? l.nativeCall.CallNativeFunction("GetPeerID", (t, n) => {
                        0 === t && (this.mPeerId = n), e(this.mPeerId)
                    }) : e(this.mPeerId)
                })
            })
        }

        getSessionId() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.mSessionId ? e(this.mSessionId) : l.nativeCall ? l.nativeCall.CallNativeFunction("GetSessionID", (t, n) => {
                        0 === t && (this.mSessionId = n), e(this.mSessionId || "0")
                    }) : e(this.mSessionId || "0")
                })
            })
        }

        get jumpKey() {
            return ""
        }

        get userId() {
            return this.mUserId
        }

        get isLogin() {
            return this.mIsLogin
        }

        get isVip() {
            return this.mIsVip
        }

        get isPlatinumVip() {
            return this.isVip && this.vasType > 2
        }

        get isSuperVip() {
            return this.isVip && 5 === this.vasType
        }

        get hasFlux() {
            return this.mHasFlux
        }

        get vipLevel() {
            return this.mVipLevel
        }

        get vasType() {
            return this.mVasType
        }

        get userLevel() {
            return 1
        }

        get authority() {
            return this.isVip || this.hasFlux
        }

        get offlineAuthority() {
            return this.isLogin
        }

        queryFlux() {
            return i(this, void 0, void 0, function* () {
                let e = yield this.getPeerId(), t = {userId: this.userId, peerId: e, jumpKey: this.jumpKey},
                    n = yield(new a.UserHttpSession).queryFlux(t);
                n && 0 === n.result && n.capacity > 0 && (this.mHasFlux = !0)
            })
        }

        attachUserEvents() {
            l.nativeCall.AttachNativeEvent("onLoginSuc", () => i(this, void 0, void 0, function* () {
                yield this.onLogin()
            })), l.nativeCall.AttachNativeEvent("onLogout", () => {
                this.onLogout()
            }), l.nativeCall.AttachNativeEvent("onUserInfoChange", (e, t) => i(this, void 0, void 0, function* () {
                yield this.onUserInfoChange(e, t)
            })), l.nativeCall.AttachNativeEvent("onLoginStatusChange", (e, t) => {
                this.onLoginStatusChange(t)
            })
        }

        onLogin() {
            return i(this, void 0, void 0, function* () {
                s.information("--\x3eonLogin"), this.clear(), this.mIsLogin = !0, yield this.parseUserInfo(), this.fireEvent(u.login), this.isVip || (yield this.queryFlux()), this.fireEvent(u.authorityChanged, this.authority), s.information("<--onLogin")
            })
        }

        onLogout() {
            s.information("--\x3eonLogout"), this.clear(), this.fireEvent(u.logout), this.fireEvent(u.authorityChanged, !1), s.information("<--onLogout")
        }

        onUserInfoChange(e, t) {
            return i(this, void 0, void 0, function* () {
                s.information("--\x3eonUserInfoChange"), "vipinfo" === e && (s.information("data", t), this.mIsVip || (yield this.parseUserInfo(), this.mIsVip && this.fireEvent(u.authorityChanged, this.authority))), s.information("<--onUserInfoChange")
            })
        }

        onLoginStatusChange(e) {
            s.information("--\x3eonLoginStatusChange", "newStatus", e), "offline" === e && this.onLogout(), s.information("<--onLoginStatusChange")
        }

        clear() {
            this.mUserId = "0", this.mSessionId = void 0, this.mHasFlux = !1, this.mIsVip = !1, this.mIsLogin = !1, this.mVasType = 0, this.mVipLevel = 0
        }

        parseUserInfo() {
            return i(this, void 0, void 0, function* () {
                let e = yield this.getUserinfo();
                if (s.information("userinfo", e), e) if (this.mUserId = e.userID || "0", e.vipList && e.vipList[0]) {
                    if (e.vipList[0].isVip) {
                        let t = Number(e.vipList[0].isVip).valueOf();
                        this.mIsVip = t > 0
                    } else this.mIsVip = !1;
                    e.vipList[0].vipLevel && (this.mVipLevel = Number(e.vipList[0].vipLevel).valueOf()), e.vipList[0].vasType && (this.mVasType = Number(e.vipList[0].vasType).valueOf())
                } else this.mIsVip = !1
            })
        }

        getUserinfo() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    let t = null;
                    l.nativeCall ? l.nativeCall.CallNativeFunction("GetAllUserInfo", (n, i) => {
                        0 === n && (t = i), e(t)
                    }) : e(t)
                })
            })
        }
    }

    t.UserHelper = d, function (e) {
        const t = new d;
        e.getHelper = function () {
            return t
        }
    }(t.UserHelperNS || (t.UserHelperNS = {}))
}, function (e, t) {
    var n = {}.hasOwnProperty;
    e.exports = function (e, t) {
        return n.call(e, t)
    }
}, , function (e, t, n) {
    "use strict";
    t.__esModule = !0;
    var i, a = n(524), o = (i = a) && i.__esModule ? i : {default: i};
    t.default = o.default || function (e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = arguments[t];
            for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
        }
        return e
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(6), o = n(106);
    !function (e) {
        const t = n(2), r = a.default(t.join(__rootDir, "../bin/ThunderKernel.node")),
            s = i.default.getLogger("DownloadKernel.ThunderKernel");
        e.initDownloadSdk = function (e, t, n, i) {
            return r.initDownloadSdk(e, t, n, i)
        }, e.createP2spTask = function (e, t, n, i, a) {
            return e && "" !== e || s.error("createP2spTask url:", e), i && "" !== i || s.error("createP2spTask savePath:", i), a && "" !== a || s.error("createP2spTask fileName:", a), e = o.Common.parseThunderPrivateUrl(e), r.createP2spTask(e, void 0 === t ? "" : t, void 0 === n ? "" : n, i, a)
        }, e.createBtTask = function (e, t, n) {
            return e && "" !== e || s.error("createBtTask torrentFilePath:", e), t && "" !== t || s.error("createBtTask savePath:", t), 0 === n.length && s.error("createBtTask fileRealIndexLists:", 0), r.createBtTask(e, t, n)
        }, e.createEmuleTask = function (e, t, n) {
            return e && "" !== e || s.error("createEmuleTask url:", e), t && "" !== t || s.error("createEmuleTask savePath:", t), n && "" !== n || s.error("createEmuleTask fileName:", n), e = o.Common.parseThunderPrivateUrl(e), r.createEmuleTask(e, t, n)
        }, e.createMagnetTask = function (e, t) {
            return e && "" !== e || s.error("createMagnetTask url:", e), t && "" !== t || s.error("createMagnetTask torrentFilePath:", t), e = o.Common.parseThunderPrivateUrl(e), r.createMagnetTask(e, t)
        }, e.startTask = function (e) {
            return s.information("startTask virtualTaskId:", e), r.startTask(e)
        }, e.stopTask = function (e) {
            return s.information("stopTask virtualTaskId:", e), r.stopTask(e)
        }, e.deleteTask = function (e) {
            return s.information("deleteTask virtualTaskId:", e), r.deleteTask(e)
        }, e.renameP2spTaskFile = function (e, t) {
            return r.renameP2spTaskFile(e, t)
        }, e.queryTaskInfo = function (e, t) {
            r.queryTaskInfo(e, t)
        }, e.queryBtTaskInfo = function (e, t) {
            r.queryBtTaskInfo(e, t)
        }, e.queryPlayInfo = function (e, t, n) {
            r.queryPlayInfo(e, t, n)
        }, e.queryGlobalInfo = function (e, t) {
            r.queryGlobalInfo(e, t)
        }, e.createTaskId = function () {
            return r.createTaskId()
        }, e.importTask = function (e, t, n) {
            return r.importTask(e, t, n)
        }, e.parserBtFileInfo = function (e, t) {
            return r.parserBtFileInfo(e, t)
        }, e.getFileHashByUrl = function (e) {
            return r.getFileHashByUrl(e)
        }, e.getInfoHashByUrl = function (e) {
            return r.getInfoHashByUrl(e)
        }, e.enableDcdnWithVipCert = function (e, t, n) {
            return r.enableDcdnWithVipCert(e, t, n)
        }, e.updateDcdnWithVipCert = function (e, t, n) {
            return r.updateDcdnWithVipCert(e, t, n)
        }, e.disableDcdnWithVipCert = function (e, t) {
            return r.disableDcdnWithVipCert(e, t)
        }, e.setDownloadSpeedLimit = function (e) {
            return r.setDownloadSpeedLimit(Number(e))
        }, e.setUploadSpeedLimit = function (e) {
            return r.setUploadSpeedLimit(Number(e))
        }, e.setTaskStrategy = function (e, t) {
            return r.setTaskStrategy(e, t)
        }, e.setDownloadStrategy = function (e, t) {
            return r.setDownloadStrategy(e, t)
        }, e.setTaskThreadCount = function (e, t) {
            return r.setTaskThreadCount(e, Number(t))
        }, e.setCacheSize = function (e) {
            return r.setCacheSize(Number(e))
        }, e.setUserInfo = function (e, t) {
            return r.setUserInfo(e, t)
        }, e.initDataBase = function (e, t) {
            return r.initDataBase(e, t)
        }, e.beginTransaction = function () {
            return r.beginTransaction()
        }, e.commitTransaction = function () {
            return r.commitTransaction()
        }, e.execSqlite = function (e, t) {
            return r.execSqlite(e, t)
        }, e.querySqlite = function (e, t) {
            return r.querySqlite(e, t)
        }, e.insertTaskBase = function (e) {
            r.insertTaskBase(e)
        }, e.insertP2spTask = function (e, t, n, i, a, o) {
            r.insertP2spTask(e, t, n, i, a, o)
        }, e.insertBtTask = function (e, t, n, i, a) {
            r.insertBtTask(e, t, n, i, a)
        }, e.insertBtFile = function (e, t) {
            r.insertBtFile(e, t)
        }, e.insertEmuleTask = function (e, t, n) {
            r.insertEmuleTask(e, t, n)
        }, e.insertGroupTask = function (e, t, n, i) {
            r.insertGroupTask(e, t, n, i)
        }, e.insertMagnetTask = function (e) {
            r.insertMagnetTask(e)
        }, e.deleteStorageTask = function (e, t) {
            r.deleteStorageTask(e, t)
        }, e.loadTaskBase = function (e) {
            r.loadTaskBase(e)
        }, e.loadStorageTask = function (e, t, n) {
            r.loadStorageTask(e, t, n)
        }, e.saveTaskBaseInfo = function (e, t, n, i) {
            r.saveTaskBaseInfo(e, t, n, i)
        }, e.saveTaskUserData = function (e, t) {
            r.saveTaskUserData(e, t)
        }, e.saveTaskChannelInfo = function (e, t, n, i, a, o) {
            r.saveTaskChannelInfo(e, t, n, i, a, o)
        }, e.setP2spTaskOriginOnly = function (e, t) {
            r.setP2spTaskOriginOnly(e, t)
        }, e.setP2spTaskThreadCount = function (e, t) {
            r.setP2spTaskThreadCount(e, t)
        }, e.saveBtFileInfo = function (e, t, n, i, a) {
            r.saveBtFileInfo(e, t, n, i, a)
        }, e.saveBtFileCid = function (e, t, n, i) {
            r.saveBtFileCid(e, t, n, i)
        }, e.setCategoryId = function (e, t) {
            r.setCategoryId(e, t)
        }, e.loadCategory = function (e) {
            r.loadCategory(e)
        }, e.createCategory = function (e, t, n, i, a, o, s) {
            r.createCategory(e, t, n, i, a, o, s)
        }, e.setCategoryPassword = function (e, t, n, i) {
            r.setCategoryPassword(e, t, n, i)
        }, e.setCategoryAccountPassword = function (e, t) {
            r.setCategoryAccountPassword(e, t)
        }, e.searchTask = function (e, t, n, i, a) {
            r.searchTask(e, t, n, i, a)
        }, e.setTaskPriorityLevel = function (e, t, n) {
            r.setTaskPriorityLevel(e, t, n)
        }, e.setBtFileFailureErrorCode = function (e, t, n) {
            r.setBtFileFailureErrorCode(e, t, n)
        }
    }(t.ThunderKernel || (t.ThunderKernel = {}))
}, function (e, t) {
    e.exports = require("stream")
}, , , , , , , function (e, t, n) {
    "use strict";
    var i = n(12), a = n(88), o = n(90), r = n(72), s = n(91), l = n(92).http, u = n(92).https, d = n(22), c = n(114),
        h = n(177), f = n(57), p = n(89);
    e.exports = function (e) {
        return new Promise(function (t, n) {
            var g, k = e.data, m = e.headers;
            if (m["User-Agent"] || m["user-agent"] || (m["User-Agent"] = "axios/" + h.version), k && !i.isStream(k)) {
                if (Buffer.isBuffer(k)) ; else if (i.isArrayBuffer(k)) k = new Buffer(new Uint8Array(k)); else {
                    if (!i.isString(k)) return n(f("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream", e));
                    k = new Buffer(k, "utf-8")
                }
                m["Content-Length"] = k.length
            }
            var T = void 0;
            e.auth && (T = (e.auth.username || "") + ":" + (e.auth.password || ""));
            var v = d.parse(e.url), w = v.protocol || "http:";
            if (!T && v.auth) {
                var y = v.auth.split(":");
                T = (y[0] || "") + ":" + (y[1] || "")
            }
            T && delete m.Authorization;
            var S = "https:" === w, b = S ? e.httpsAgent : e.httpAgent, C = {
                path: o(v.path, e.params, e.paramsSerializer).replace(/^\?/, ""),
                method: e.method,
                headers: m,
                agent: b,
                auth: T
            };
            e.socketPath ? C.socketPath = e.socketPath : (C.hostname = v.hostname, C.port = v.port);
            var D, N = e.proxy;
            if (!N && !1 !== N) {
                var I = w.slice(0, -1) + "_proxy", _ = process.env[I] || process.env[I.toUpperCase()];
                if (_) {
                    var x = d.parse(_);
                    if (N = {host: x.hostname, port: x.port}, x.auth) {
                        var E = x.auth.split(":");
                        N.auth = {username: E[0], password: E[1]}
                    }
                }
            }
            if (N && (C.hostname = N.host, C.host = N.host, C.headers.host = v.hostname + (v.port ? ":" + v.port : ""), C.port = N.port, C.path = w + "//" + v.hostname + (v.port ? ":" + v.port : "") + C.path, N.auth)) {
                var A = new Buffer(N.auth.username + ":" + N.auth.password, "utf8").toString("base64");
                C.headers["Proxy-Authorization"] = "Basic " + A
            }
            e.transport ? D = e.transport : 0 === e.maxRedirects ? D = S ? s : r : (e.maxRedirects && (C.maxRedirects = e.maxRedirects), D = S ? u : l), e.maxContentLength && e.maxContentLength > -1 && (C.maxBodyLength = e.maxContentLength);
            var P = D.request(C, function (i) {
                if (!P.aborted) {
                    clearTimeout(g), g = null;
                    var o = i;
                    switch (i.headers["content-encoding"]) {
                        case"gzip":
                        case"compress":
                        case"deflate":
                            o = o.pipe(c.createUnzip()), delete i.headers["content-encoding"]
                    }
                    var r = i.req || P, s = {
                        status: i.statusCode,
                        statusText: i.statusMessage,
                        headers: i.headers,
                        config: e,
                        request: r
                    };
                    if ("stream" === e.responseType) s.data = o, a(t, n, s); else {
                        var l = [];
                        o.on("data", function (t) {
                            l.push(t), e.maxContentLength > -1 && Buffer.concat(l).length > e.maxContentLength && n(f("maxContentLength size of " + e.maxContentLength + " exceeded", e, null, r))
                        }), o.on("error", function (t) {
                            P.aborted || n(p(t, e, null, r))
                        }), o.on("end", function () {
                            var i = Buffer.concat(l);
                            "arraybuffer" !== e.responseType && (i = i.toString("utf8")), s.data = i, a(t, n, s)
                        })
                    }
                }
            });
            P.on("error", function (t) {
                P.aborted || n(p(t, e, null, P))
            }), e.timeout && !g && (g = setTimeout(function () {
                P.abort(), n(f("timeout of " + e.timeout + "ms exceeded", e, "ECONNABORTED", P))
            }, e.timeout)), e.cancelToken && e.cancelToken.promise.then(function (e) {
                P.aborted || (P.abort(), n(e))
            }), i.isStream(k) ? k.pipe(P) : P.end(k)
        })
    }
}, function (e, t) {
    e.exports = require("http")
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s, l, u, d, c, h, f, p = {}.hasOwnProperty;
        f = n(160), h = f.isObject, c = f.isFunction, d = f.isEmpty, r = null, t = null, i = null, a = null, o = null, l = null, u = null, s = null, e.exports = function () {
            function e(e) {
                this.parent = e, this.parent && (this.options = this.parent.options, this.stringify = this.parent.stringify), this.children = [], r || (r = n(261), t = n(262), i = n(263), a = n(264), o = n(265), l = n(270), u = n(271), s = n(272))
            }

            return e.prototype.element = function (e, t, n) {
                var i, a, o, r, s, l, u, f, g, k;
                if (l = null, null == t && (t = {}), t = t.valueOf(), h(t) || (n = (g = [t, n])[0], t = g[1]), null != e && (e = e.valueOf()), Array.isArray(e)) for (o = 0, u = e.length; o < u; o++) a = e[o], l = this.element(a); else if (c(e)) l = this.element(e.apply()); else if (h(e)) {
                    for (s in e) if (p.call(e, s)) if (k = e[s], c(k) && (k = k.apply()), h(k) && d(k) && (k = null), !this.options.ignoreDecorators && this.stringify.convertAttKey && 0 === s.indexOf(this.stringify.convertAttKey)) l = this.attribute(s.substr(this.stringify.convertAttKey.length), k); else if (!this.options.separateArrayItems && Array.isArray(k)) for (r = 0, f = k.length; r < f; r++) a = k[r], (i = {})[s] = a, l = this.element(i); else h(k) ? (l = this.element(s)).element(k) : l = this.element(s, k)
                } else l = !this.options.ignoreDecorators && this.stringify.convertTextKey && 0 === e.indexOf(this.stringify.convertTextKey) ? this.text(n) : !this.options.ignoreDecorators && this.stringify.convertCDataKey && 0 === e.indexOf(this.stringify.convertCDataKey) ? this.cdata(n) : !this.options.ignoreDecorators && this.stringify.convertCommentKey && 0 === e.indexOf(this.stringify.convertCommentKey) ? this.comment(n) : !this.options.ignoreDecorators && this.stringify.convertRawKey && 0 === e.indexOf(this.stringify.convertRawKey) ? this.raw(n) : !this.options.ignoreDecorators && this.stringify.convertPIKey && 0 === e.indexOf(this.stringify.convertPIKey) ? this.instruction(e.substr(this.stringify.convertPIKey.length), n) : this.node(e, t, n);
                if (null == l) throw new Error("Could not create any elements with: " + e);
                return l
            }, e.prototype.insertBefore = function (e, t, n) {
                var i, a, o;
                if (this.isRoot) throw new Error("Cannot insert elements at root level");
                return a = this.parent.children.indexOf(this), o = this.parent.children.splice(a), i = this.parent.element(e, t, n), Array.prototype.push.apply(this.parent.children, o), i
            }, e.prototype.insertAfter = function (e, t, n) {
                var i, a, o;
                if (this.isRoot) throw new Error("Cannot insert elements at root level");
                return a = this.parent.children.indexOf(this), o = this.parent.children.splice(a + 1), i = this.parent.element(e, t, n), Array.prototype.push.apply(this.parent.children, o), i
            }, e.prototype.remove = function () {
                var e;
                if (this.isRoot) throw new Error("Cannot remove the root element");
                return e = this.parent.children.indexOf(this), [].splice.apply(this.parent.children, [e, e - e + 1].concat([])), this.parent
            }, e.prototype.node = function (e, t, n) {
                var i, a;
                return null != e && (e = e.valueOf()), t || (t = {}), t = t.valueOf(), h(t) || (n = (a = [t, n])[0], t = a[1]), i = new r(this, e, t), null != n && i.text(n), this.children.push(i), i
            }, e.prototype.text = function (e) {
                var t;
                return t = new u(this, e), this.children.push(t), this
            }, e.prototype.cdata = function (e) {
                var n;
                return n = new t(this, e), this.children.push(n), this
            }, e.prototype.comment = function (e) {
                var t;
                return t = new i(this, e), this.children.push(t), this
            }, e.prototype.commentBefore = function (e) {
                var t, n;
                return t = this.parent.children.indexOf(this), n = this.parent.children.splice(t), this.parent.comment(e), Array.prototype.push.apply(this.parent.children, n), this
            }, e.prototype.commentAfter = function (e) {
                var t, n;
                return t = this.parent.children.indexOf(this), n = this.parent.children.splice(t + 1), this.parent.comment(e), Array.prototype.push.apply(this.parent.children, n), this
            }, e.prototype.raw = function (e) {
                var t;
                return t = new l(this, e), this.children.push(t), this
            }, e.prototype.instruction = function (e, t) {
                var n, i, a, o, r;
                if (null != e && (e = e.valueOf()), null != t && (t = t.valueOf()), Array.isArray(e)) for (o = 0, r = e.length; o < r; o++) n = e[o], this.instruction(n); else if (h(e)) for (n in e) p.call(e, n) && (i = e[n], this.instruction(n, i)); else c(t) && (t = t.apply()), a = new s(this, e, t), this.children.push(a);
                return this
            }, e.prototype.instructionBefore = function (e, t) {
                var n, i;
                return n = this.parent.children.indexOf(this), i = this.parent.children.splice(n), this.parent.instruction(e, t), Array.prototype.push.apply(this.parent.children, i), this
            }, e.prototype.instructionAfter = function (e, t) {
                var n, i;
                return n = this.parent.children.indexOf(this), i = this.parent.children.splice(n + 1), this.parent.instruction(e, t), Array.prototype.push.apply(this.parent.children, i), this
            }, e.prototype.declaration = function (e, t, n) {
                var i, o;
                return i = this.document(), o = new a(i, e, t, n), i.children[0] instanceof a ? i.children[0] = o : i.children.unshift(o), i.root() || i
            }, e.prototype.doctype = function (e, t) {
                var n, i, a, r, s, l, u, d, c;
                for (n = this.document(), i = new o(n, e, t), a = r = 0, l = (d = n.children).length; r < l; a = ++r) if (d[a] instanceof o) return n.children[a] = i, i;
                for (a = s = 0, u = (c = n.children).length; s < u; a = ++s) if (c[a].isRoot) return n.children.splice(a, 0, i), i;
                return n.children.push(i), i
            }, e.prototype.up = function () {
                if (this.isRoot) throw new Error("The root node has no parent. Use doc() if you need to get the document object.");
                return this.parent
            }, e.prototype.root = function () {
                var e;
                for (e = this; e;) {
                    if (e.isDocument) return e.rootObject;
                    if (e.isRoot) return e;
                    e = e.parent
                }
            }, e.prototype.document = function () {
                var e;
                for (e = this; e;) {
                    if (e.isDocument) return e;
                    e = e.parent
                }
            }, e.prototype.end = function (e) {
                return this.document().end(e)
            }, e.prototype.prev = function () {
                var e;
                if ((e = this.parent.children.indexOf(this)) < 1) throw new Error("Already at the first node");
                return this.parent.children[e - 1]
            }, e.prototype.next = function () {
                var e;
                if (-1 === (e = this.parent.children.indexOf(this)) || e === this.parent.children.length - 1) throw new Error("Already at the last node");
                return this.parent.children[e + 1]
            }, e.prototype.importDocument = function (e) {
                var t;
                return (t = e.root().clone()).parent = this, t.isRoot = !1, this.children.push(t), this
            }, e.prototype.ele = function (e, t, n) {
                return this.element(e, t, n)
            }, e.prototype.nod = function (e, t, n) {
                return this.node(e, t, n)
            }, e.prototype.txt = function (e) {
                return this.text(e)
            }, e.prototype.dat = function (e) {
                return this.cdata(e)
            }, e.prototype.com = function (e) {
                return this.comment(e)
            }, e.prototype.ins = function (e, t) {
                return this.instruction(e, t)
            }, e.prototype.doc = function () {
                return this.document()
            }, e.prototype.dec = function (e, t, n) {
                return this.declaration(e, t, n)
            }, e.prototype.dtd = function (e, t) {
                return this.doctype(e, t)
            }, e.prototype.e = function (e, t, n) {
                return this.element(e, t, n)
            }, e.prototype.n = function (e, t, n) {
                return this.node(e, t, n)
            }, e.prototype.t = function (e) {
                return this.text(e)
            }, e.prototype.d = function (e) {
                return this.cdata(e)
            }, e.prototype.c = function (e) {
                return this.comment(e)
            }, e.prototype.r = function (e) {
                return this.raw(e)
            }, e.prototype.i = function (e, t) {
                return this.instruction(e, t)
            }, e.prototype.u = function () {
                return this.up()
            }, e.prototype.importXMLBuilder = function (e) {
                return this.importDocument(e)
            }, e
        }()
    }).call(this)
}, function (e, t, n) {
    var i = n(75), a = n(119);
    e.exports = n(76) ? function (e, t, n) {
        return i.f(e, t, a(1, n))
    } : function (e, t, n) {
        return e[t] = n, e
    }
}, function (e, t, n) {
    var i = n(118), a = n(240), o = n(193), r = Object.defineProperty;
    t.f = n(76) ? Object.defineProperty : function (e, t, n) {
        if (i(e), t = o(t, !0), i(n), a) try {
            return r(e, t, n)
        } catch (e) {
        }
        if ("get" in n || "set" in n) throw TypeError("Accessors not supported!");
        return "value" in n && (e[t] = n.value), e
    }
}, function (e, t, n) {
    e.exports = !n(100)(function () {
        return 7 != Object.defineProperty({}, "a", {
            get: function () {
                return 7
            }
        }).a
    })
}, function (e, t, n) {
    var i = n(243), a = n(194);
    e.exports = function (e) {
        return i(a(e))
    }
}, function (e, t, n) {
    var i = n(197)("wks"), a = n(122), o = n(51).Symbol, r = "function" == typeof o;
    (e.exports = function (e) {
        return i[e] || (i[e] = r && o[e] || (r ? o : a)("Symbol." + e))
    }).store = i
}, , function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(3), o = n(2), r = n(1), s = n(6), l = n(20), u = n(5), d = n(28), c = n(229), h = n(163), f = n(10),
        p = n(113), g = n(34), k = n(43), m = n(21), T = n(25), v = n(11), w = n(106), y = n(22), S = n(254),
        b = n(255), C = n(230), D = n(86), N = n(684), I = n(37), _ = n(19), x = n(13), E = n(159),
        A = r.default.getLogger("ThunderNewTask"), P = d.DownloadKernelTaskManager.getTaskManager(),
        M = s.default(o.join(__rootDir, "../bin/ThunderNewTask.node")),
        F = s.default(o.join(__rootDir, "../bin/ThunderHelper.node")), O = n(95), B = n(3).remote;
    let U = null, L = null, K = [], V = !1;
    !function (e) {
        function t() {
            if (V) {
                let e = B.getCurrentWindow();
                null !== e && (e.isMinimized() && e.restore(), e.show(), O.ToolsUtilitiesAWNS.setForegroundWindow(F, e))
            }
        }

        function n(e) {
            let t = P.getTaskFromTaskId(e);
            do {
                if (null === t) break;
                let n = t.getTaskAttribute(u.DownloadKernel.TaskAttribute.CategoryId),
                    i = t.getTaskAttribute(u.DownloadKernel.TaskAttribute.CategoryViewId);
                if (A.information("查看重复任务", i), i === u.DownloadKernel.CategroyViewID.Unkown) break;
                k.default.fireEvent(m.NodeEventMesssageNS.eventDownloadSwitchCategory, n, i, e)
            } while (0)
        }

        function r(e, t) {
            A.information("重复下载任务：nlen = ", e.length);
            do {
                if (e.length <= 0) break;
                if (e.length <= 1) {
                    let a = !1, o = e[0], r = e[0].getTaskBaseInfo();
                    if (r.taskType === u.DownloadKernel.TaskType.P2sp || r.taskType === u.DownloadKernel.TaskType.Emule) {
                        let t = e[0].getTaskAttribute(u.DownloadKernel.TaskAttribute.GroupTaskId);
                        if (t > 0) {
                            let e = P.getTaskFromTaskId(t);
                            null !== e && void 0 !== e && (o = e, a = !0)
                        }
                    }
                    g.MessageBox.confirm({
                        title: "重复下载，该任务已存在列表中",
                        type: g.MessageBox.ConfirmType.Warning,
                        fileName: o.getTaskBaseInfo().taskName,
                        okText: "查看",
                        cancelText: "重新下载",
                        cancelVisible: !a
                    }).then(() => {
                        n(o.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId))
                    }, e => i(this, void 0, void 0, function* () {
                        if ("cancel" === e) if (void 0 === t || null === t || 0 === t.length) h.TaskCtrlOperatorNS.redownloadTask([o.getTaskBaseInfo()], !1).catch(); else {
                            yield P.deleteTask(o.getTaskBaseInfo().taskId, !0), t[0].newTaskInfo.taskBaseInfo.productInfo = h.TaskCtrlOperatorNS.constructProductInfo(""), t[0].newTaskInfo.taskBaseInfo.origin = "re_download";
                            let e = yield P.createTask(t[0].taskType, t[0].newTaskInfo);
                            if (null !== e) {
                                let t = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                                D.DowloadDispatchNS.startTask(t)
                            }
                        }
                    }))
                } else {
                    let t = e.map(e => e.getTaskBaseInfo().url), n = JSON.stringify(t);
                    g.MessageBox.custom("multi-repeat-task", {file: n})
                }
            } while (0)
        }

        function s(e, t) {
            for (let n of e) {
                let e = t.indexOf(n.index);
                -1 !== e && t.splice(e, 1)
            }
            return t
        }

        function R(e) {
            return i(this, void 0, void 0, function* () {
                do {
                    if (void 0 === e) break;
                    if (null === e) break;
                    for (let t of e) yield v.FileSystemAWNS.unlinkAW(t.fullPath)
                } while (0)
            })
        }

        function W(e, t, a, r, l, c, f, p, k, m, T) {
            return i(this, void 0, void 0, function* () {
                let i = c;
                const v = d.DownloadKernelTaskManager.getTaskManager();
                do {
                    if (void 0 === p) break;
                    if ("ignore" === p) {
                        if (void 0 === (i = s(k, c)) || null === i) break;
                        if (0 === i.length) {
                            if (void 0 !== m) n(m); else {
                                let t = o.join(e, a.title);
                                g.MessageBox.confirm({
                                    title: "全部文件已存在，位于以下路径：",
                                    type: g.MessageBox.ConfirmType.Warning,
                                    content: t,
                                    okText: "知道了",
                                    cancelText: "打开文件夹"
                                }).then(() => {
                                }, e => {
                                    "cancel" === e && B.shell.showItemInFolder(t)
                                }).catch()
                            }
                            break
                        }
                        void 0 !== m && (yield v.deleteTask(m, !1))
                    } else if ("delete" === p) yield R(k), void 0 !== m && (yield v.deleteTask(m, !0)); else if ("continue" === p && void 0 !== m) {
                        D.DowloadDispatchNS.startTask(m);
                        break
                    }
                    let d = a.trackerUrls.join("\n"), w = h.TaskCtrlOperatorNS.constructProductInfo(f.browser), y = {
                        taskBaseInfo: {savePath: e, taskName: a.title, productInfo: w, origin: f.source},
                        btTaskInfo: {
                            seedFile: r,
                            displayName: l,
                            fileLists: a.fileLists,
                            infoId: a.infoId,
                            fileRealIndexLists: i,
                            tracker: d
                        },
                        privateSpace: T
                    };
                    A.information("create task bt productinfo", f);
                    let S = yield v.createTask(u.DownloadKernel.TaskType.Bt, y);
                    if (null !== S) {
                        if (1 === t) {
                            let e = S.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                            D.DowloadDispatchNS.startTask(e)
                        }
                    } else A.warning("create bt task null")
                } while (0)
            })
        }

        function j(e, t) {
            return i(this, void 0, void 0, function* () {
                do {
                    if (0 === e.length) break;
                    let n = JSON.stringify(e);
                    if (null !== U) {
                        U.isVisible() ? a.ipcRenderer.send(l.ThunderChannelList.channelRMNewTaskSetTaskData, n) : U.on("ready-to-show", () => {
                            a.ipcRenderer.send(l.ThunderChannelList.channelRMNewTaskSetTaskData, n)
                        }), "function" == typeof t && t(!0);
                        break
                    }
                    let i = "development" === B.process.env.RUN_ENV ? "http://localhost:9080/new-task-renderer/" : `file:///${__dirname}/../new-task-renderer/index.html`;
                    i = 1 === e.length ? f.ThunderUtil.setQueryString(i, {type: "single"}) : f.ThunderUtil.setQueryString(i, {type: "multi"});
                    let o = 248, r = T.ConfigNS.getValue("TaskDefaultSettings", "NewTaskDlgWithoutMainWnd", !0),
                        s = 440;
                    U = new B.BrowserWindow({
                        width: s,
                        height: o,
                        frame: !1,
                        skipTaskbar: !0,
                        resizable: !1,
                        parent: r ? B.getCurrentWindow() : null,
                        transparent: !0,
                        show: !1,
                        alwaysOnTop: !0,
                        minWidth: s,
                        minHeight: o
                    }), A.information("create new task browser window created"), U.loadURL(i), U.on("ready-to-show", () => {
                        x.XLStatNS.trackEvent("core_event", "create_task_panel_show", "", 0, 0, 0, 0, "source=Thunder,panel=NewTaskDlg"), A.information("trackEvent", "core_event", "create_task_panel_show", "source=Thunder,panel=NewTaskDlg"), A.information("create new task browser window ready to show"), O.ToolsUtilitiesAWNS.setForegroundWindow(F, U), a.ipcRenderer.send(l.ThunderChannelList.channelRMNewTaskSetTaskData, n), "function" == typeof t && t(!1)
                    }), U.on("closed", function (e) {
                        A.verbose(e), U = null, T.ConfigNS.getValue("TaskDefaultSettings", "NewTaskDlgWithoutMainWnd", !0) && B.getCurrentWindow().show()
                    }), U.on("unresponsive", function (e) {
                        A.verbose(e), U = null
                    })
                } while (0)
            })
        }

        function H(e, n, i, o, r) {
            do {
                if (void 0 !== e && null !== e && void 0 !== e[0] && "string" == typeof e[0]) {
                    1 === e.length && (e = e[0].split(/[\n\r\n]/));
                    let t = [];
                    for (let i of e) {
                        let e = E.ThunderNewtaskHelperNS.getNewTaskDataByUrl(i, n);
                        if (void 0 !== e) {
                            let n = T.ConfigNS.getValue("TaskDefaultSettings", "OrignHostThreads", "5"), i = Number(n);
                            e.thread = i, t.push(e)
                        }
                    }
                    t.length > 0 && (e = t)
                }
                let s = JSON.stringify(e);
                if (null !== L) {
                    T.ConfigNS.getValue("TaskDefaultSettings", "NewTaskDlgWithoutMainWnd", !0) && t(), void 0 !== e && null !== e && (L.isVisible() ? (a.ipcRenderer.send(l.ThunderChannelList.channelRMPreNewTaskSetTaskData, s, i, o, r), L.show(), L.setAlwaysOnTop(!1), O.ToolsUtilitiesAWNS.setForegroundWindow(F, L)) : L.on("ready-to-show", () => {
                        a.ipcRenderer.send(l.ThunderChannelList.channelRMPreNewTaskSetTaskData, s, i, o, r)
                    }));
                    break
                }
                const u = "development" === B.process.env.RUN_ENV ? "http://localhost:9080/pre-new-task-renderer/" : `file:///${__dirname}/../pre-new-task-renderer/index.html`;
                let d = 314, c = 440;
                (L = new B.BrowserWindow({
                    width: c,
                    height: d,
                    frame: !1,
                    skipTaskbar: !0,
                    resizable: !1,
                    parent: B.getCurrentWindow(),
                    alwaysOnTop: !0,
                    transparent: !0,
                    show: !1,
                    minWidth: c,
                    minHeight: d
                })).loadURL(u), L.on("ready-to-show", () => {
                    let n = "source=Thunder,panel=PreNewTaskDlg";
                    x.XLStatNS.trackEvent("core_event", "create_task_panel_show", "", 0, 0, 0, 0, n), A.information("trackEvent", "core_event", "create_task_panel_show", n), T.ConfigNS.getValue("TaskDefaultSettings", "NewTaskDlgWithoutMainWnd", !0) && t(), L.show(), L.setAlwaysOnTop(!1), O.ToolsUtilitiesAWNS.setForegroundWindow(F, L), void 0 !== e && null !== e && a.ipcRenderer.send(l.ThunderChannelList.channelRMPreNewTaskSetTaskData, s, i, o, r)
                }), L.on("closed", function (e) {
                    A.verbose(e), L = null, T.ConfigNS.getValue("TaskDefaultSettings", "NewTaskDlgWithoutMainWnd", !0) && B.getCurrentWindow().show()
                }), L.on("unresponsive", function (e) {
                    A.verbose(e), L = null
                })
            } while (0)
        }

        function G(e, t) {
            const n = "development" === B.process.env.RUN_ENV ? "http://localhost:9080/bt-task-renderer/" : `file:///${__dirname}/../bt-task-renderer/index.html`;
            let i = 622;
            "url" !== e.type && void 0 !== e.data || (i = 113);
            let o = new B.BrowserWindow({
                width: 440,
                height: i,
                frame: !1,
                resizable: !1,
                parent: B.getCurrentWindow(),
                transparent: !0,
                alwaysOnTop: !0,
                show: !1,
                modal: !1,
                minWidth: 440,
                minHeight: 113
            });
            K.push(o), o.loadURL(n), o.on("ready-to-show", () => {
                a.ipcRenderer.send(l.ThunderChannelList.channelRMNewTaskSetBTInfo, o.id, e, t)
            }), o.on("closed", function () {
                o = null;
                let e = B.getCurrentWindow();
                e.isMinimized() && e.restore(), e.show()
            }), o.on("unresponsive", function () {
                o = null
            })
        }

        function z(e) {
            if (void 0 !== e && null !== e && "" !== e) {
                T.ConfigNS.getValue("PathAndCategory", "LastUsedPath", "") !== e && (T.ConfigNS.setValue("PathAndCategory", "LastUsedPath", e), T.ConfigNS.save().catch())
            }
        }

        function q(e) {
            return i(this, void 0, void 0, function* () {
                do {
                    if (e.length > 1) {
                        j(e).catch();
                        break
                    }
                    let t = e[0];
                    if (void 0 === t.browser || t.browser, t.browser, 0 === (yield f.ThunderUtil.getConfigValueAW("TaskDefaultSettings", "OpenSilenceDownload", 0))) {
                        j(e).catch();
                        break
                    }
                    let n = _.ThunderHelper.getTaskTypeFromUrl(t.url), i = p.ParseUrlFileNameNS.getNameFromUrl(t.url),
                        a = yield f.ThunderUtil.getDownloadDir(),
                        o = yield f.ThunderUtil.getConfigValueAW("TaskDefaultSettings", "NewTaskStartMode", 1),
                        s = null, l = void 0;
                    if (n === u.DownloadKernel.TaskType.P2sp) l = {
                        taskType: u.DownloadKernel.TaskType.P2sp,
                        newTaskInfo: {
                            taskBaseInfo: {taskName: i, savePath: a},
                            p2spTaskInfo: {url: t.url, refUrl: t.referer, cookie: t.cookie}
                        }
                    }, s = yield c.TaskUtilitiesAWNS.findTaskAW({
                        taskType: u.DownloadKernel.TaskType.P2sp,
                        value: t.url
                    }); else if (n === u.DownloadKernel.TaskType.Emule) {
                        l = {
                            taskType: u.DownloadKernel.TaskType.Emule,
                            newTaskInfo: {taskBaseInfo: {taskName: i, savePath: a}, emuleTaskInfo: {url: t.url}}
                        };
                        let e = p.ParseUrlFileNameNS.parseEd2kUrl(t.url);
                        s = yield c.TaskUtilitiesAWNS.findTaskAW({
                            taskType: u.DownloadKernel.TaskType.Emule,
                            value: e.fileHash
                        })
                    }
                    if (s && s.result && null !== s.task) {
                        B.getCurrentWindow().show(), r([s.task], [l]);
                        break
                    }
                    if (void 0 === l) break;
                    let d = yield P.createTask(l.taskType, l.newTaskInfo);
                    if (null !== d && 1 === o) {
                        let e = d.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                        D.DowloadDispatchNS.startTask(e)
                    }
                } while (0)
            })
        }

        function X(e, t) {
            let n = "";
            do {
                if (null === e || void 0 === e || "" === e || null === t || void 0 === t || "" === t) break;
                let i = e;
                if (w.Common.isThunderPrivateUrl(e) && (i = w.Common.parseThunderPrivateUrl(e)), null === i || void 0 === i || "" === i) break;
                let a = i.indexOf(t);
                if (a < 0) break;
                let r = i.substring(a + t.length);
                if (null === r || void 0 === r || "" === r) break;
                n = Y(o.dirname(r))
            } while (0);
            return n
        }

        function Y(e) {
            let t = "";
            do {
                if (null === e || void 0 === e || "" === e) break;
                let n = e.split(/\//);
                if (n.length <= 0) break;
                for (let e = 0; e < n.length; ++e) {
                    let i = n[e];
                    if (null !== i && "" !== i) {
                        let e = i.replace(/[*?/\\:|<>\"]/g, "");
                        null !== e && "" !== e && (e = e.trim(), t = "" === t ? e : o.join(t, e))
                    }
                }
            } while (0);
            return t
        }

        function J(e, t, n) {
            let i = "";
            do {
                if (null === e || void 0 === e || "" === e) break;
                let a = e;
                if (w.Common.isThunderPrivateUrl(e) && (a = w.Common.parseThunderPrivateUrl(e)), null === a || void 0 === a || "" === a) break;
                if (null !== n && void 0 !== n && "" !== n) {
                    n === t && (i = a);
                    break
                }
                o.basename(a) === t && (i = a)
            } while (0);
            return i
        }

        function $(e) {
            let t = !1;
            do {
                if (null === e || void 0 === e || "" === e) break;
                let n = y.parse(e).hostname;
                if (null === n || void 0 === n || "" === n) break;
                let i = S.default.getConfigInfo("thunderLink", "whiteList");
                if (null === i || void 0 === i || "" === i || i.length <= 0) break;
                for (let e = 0; e < i.length; ++e) if (n.toLowerCase() === i[e].toLowerCase()) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }

        function Q(e) {
            return i(this, void 0, void 0, function* () {
                let t = "您正在使用旧版本迅雷，不支持下载";
                return null !== e && void 0 !== e && "" !== e ? t = t + '"' + e + '"' : t += '"此类文件"', t += "<br>建议您升级到最新版迅雷后，再次进行下载！", new Promise(e => {
                    g.MessageBox.confirm({
                        title: "请使用最新版迅雷",
                        type: g.MessageBox.ConfirmType.Warning,
                        content: t,
                        okText: "升级迅雷",
                        cancelVisible: !1
                    }).then(() => {
                        e(!0)
                    }, t => i(this, void 0, void 0, function* () {
                        e(!1)
                    })).catch()
                })
            })
        }

        function Z(e) {
            return i(this, void 0, void 0, function* () {
                do {
                    if (void 0 === e || null === e || "" === e) break;
                    let t = null, n = null;
                    try {
                        n = JSON.parse(e)
                    } catch (e) {
                    }
                    if (null === n || void 0 === n || n.length <= 0) break;
                    let i = n.json, a = !1;
                    if (null !== i && void 0 !== i && "" !== i) {
                        a = !0, t = yield E.ThunderNewtaskHelperNS.readThunderUnionConfig(i);
                        let e = "url=" + encodeURIComponent(i);
                        if (A.information("createThunderxTask:需要读取配置信息 jsonUrlStr = ", i), null === t || void 0 === t) {
                            e += ",result=fail,errorcode=pick_up_fail", x.XLStatNS.trackEvent("core_operate", "js_grouptask_pick_up_info", "", 0, 0, 0, 0, e);
                            break
                        }
                        if ("" === t || null === t.tasks || void 0 === t.tasks) {
                            e += ",result=fail,errorcode=analysis_fail", x.XLStatNS.trackEvent("core_operate", "js_grouptask_pick_up_info", "", 0, 0, 0, 0, e);
                            break
                        }
                        e += ",result=success", x.XLStatNS.trackEvent("core_operate", "js_grouptask_pick_up_info", "", 0, 0, 0, 0, e)
                    } else t = n;
                    let r = t.tasks;
                    if (null === r || void 0 === r || r.length <= 0) break;
                    let s = t.taskGroupName, l = t.minVersion;
                    if (null !== l && void 0 !== l && "" !== l || a && (l = "10.1.2.0"), null !== l && void 0 !== l && "" !== l) {
                        let e = o.join(__rootDir, "../../Thunder.exe"), t = F.getFileVersion(e);
                        if (-1 === I.TaskUtilHelper.compareVersion(l, t)) {
                            return x.XLStatNS.trackEvent("core_operate", "newthunder_lowversion_popup", "", 0, 0, 0, 0, ""), void((yield Q(s)) && (x.XLStatNS.trackEvent("core_operate", "newthunder_lowversion_download", "", 0, 0, 0, 0, ""), F.startManualUpdateWithUI()))
                        }
                    }
                    let u = t.downloadDir, d = t.installFile, c = t.excludePath, h = t.runParams, p = t.userAgent,
                        g = null;
                    null !== t.threadCount && void 0 !== t.threadCount && "" !== t.threadCount && (g = Number(t.threadCount));
                    let k = [], m = "", T = !1;
                    null !== s && void 0 !== s && "" !== s && (T = !0);
                    for (let e = 0; e < r.length; ++e) {
                        let t = r[e], n = t.url, i = t.name, a = 0;
                        if (null !== d && void 0 !== d && "" !== d && "" === m) {
                            let e = J(n, d, i);
                            "" !== e && (m = e)
                        }
                        null !== t.size && void 0 !== t.size && (a = t.size);
                        let o = "";
                        T && (null !== t.dir && void 0 !== t.dir && "" !== t.dir ? o = Y(t.dir) : null !== c && void 0 !== c && "" !== c && (o = X(n, c)));
                        let s = n;
                        if (w.Common.isThunderPrivateUrl(n) && (s = w.Common.parseThunderPrivateUrl(n)), void 0 !== s && null !== s && "" !== s) {
                            let e = {url: n, fileName: i, fileSize: a, subDir: o, statClick: "ThunderUnion"};
                            k.push(e)
                        }
                    }
                    if (k.length >= 1) {
                        let e = {};
                        if (null !== u && void 0 !== u && "" !== u) {
                            let t = f.ThunderUtil.getMaxFreeDriver();
                            null !== t && "" !== t && (t += ":"), u = o.join(t, u), e.isNotSavePath = !0
                        }
                        if (null !== g && void 0 !== g && (g <= 0 ? g = 1 : g >= 10 && (g = 10), e.threadCount = g), null !== p && void 0 !== p && "" !== p && (e.userAgent = p), null !== s && void 0 !== s && "" !== s && null !== d && void 0 !== d && "" !== d && null !== m && void 0 !== m && "" !== m && $(m)) {
                            let t = d.replace(/[*?/\\:|<>\"]/g, "_");
                            e.installFile = t, e.runParams = h
                        }
                        H(k, "ThunderUnion", u, s, e), F.emptyClipBoard()
                    }
                } while (0)
            })
        }

        e.readyToShow = function () {
            V = !0
        }, e.selectTask = n, e.repeatTasksMsg = r, e.createNewTaskWindow = j, e.createPreNewTaskWindow = H, e.createBtTaskWindow = G, e.uninit = function () {
            M.uninitNodeBKWindow()
        }, e.saveLastestDownloadPath = z, e.createTaskByUrl = function (e, t) {
            do {
                if (void 0 === e || null === e || "" === e) break;
                let n = "";
                n = void 0 !== t && "" !== t ? t : p.ParseUrlFileNameNS.getNameFromUrl(e);
                let i = _.ThunderHelper.getTaskTypeFromUrl(e);
                i === u.DownloadKernel.TaskType.Emule || i === u.DownloadKernel.TaskType.P2sp ? q([{
                    url: e,
                    fileName: n
                }]).catch() : i === u.DownloadKernel.TaskType.Bt && G({url: e, type: "url"}, {browser: "xlbrowser.exe"})
            } while (0)
        }, e.createUnionTask = function (e) {
            return i(this, void 0, void 0, function* () {
                do {
                    let t = decodeURIComponent(e);
                    A.information("createUnionTask:urlPath = ", t, e);
                    let n = yield v.FileSystemAWNS.readFileAW(t);
                    if (yield v.FileSystemAWNS.unlinkAW(t), null === n || void 0 === n || "" === n.toString()) {
                        A.information("createUnionTask:读取内容 buf为null");
                        break
                    }
                    let i = n.toString(), a = (i += "\r\n").split("\r\n");
                    if (a.length <= 1) {
                        A.information("createUnionTask:lines.length <= 1");
                        break
                    }
                    let r = !1, s = "", l = [], u = "", d = "", c = "", h = "", p = "", g = "", k = "", m = new Map,
                        T = new Map, y = new Map, S = new Map;
                    for (let e = 0; e < a.length; ++e) {
                        let t = a[e].split("=");
                        if (null !== t && 2 === t.length) {
                            let e = t[0].toLowerCase(), n = t[1];
                            if (null !== e && "" !== e) {
                                if (n = decodeURIComponent(n), "json" === e) {
                                    r = !0, s = n;
                                    break
                                }
                                if ("taskgroupname" === e) u = n; else if ("downloaddir" === e) d = n; else if ("installfile" === e) c = n; else if ("excludepath" === e) h = n; else if ("runparams" === e) p = n; else if ("useragent" === e) g = n; else if ("threadcount" === e) k = n; else {
                                    A.information("createUnionTask:", e, n);
                                    let t = e.match(/^tasks\[\d+\]/), i = "";
                                    null !== t && void 0 !== t && (i = t[0]);
                                    let a = /url/;
                                    a.test(e) ? "" !== i ? m.set(i, n) : l.push(n) : (a = /^tasks\[\d+\]\[name\]/).test(e) ? "" !== i && T.set(i, n) : (a = /^tasks\[\d+\]\[size\]/).test(e) ? "" !== i && y.set(i, n) : (a = /^tasks\[\d+\]\[dir\]/).test(e) && "" !== i && S.set(i, n)
                                }
                            }
                        }
                    }
                    if (r) {
                        A.information("createUnionTask 通过读取配置信息得到数据 jsonUrlStr:", s);
                        let e = {minVersion: "", json: s};
                        yield Z(JSON.stringify(e))
                    } else {
                        let e = [], t = "";
                        if (null !== m && m.size > 0) {
                            let n = !1;
                            null !== u && void 0 !== u && "" !== u && (n = !0), m.forEach((i, a) => {
                                let o = i, r = "", s = 0;
                                if (null !== T && T.size > 0 && (r = T.get(a)), null !== c && void 0 !== c && "" !== c && "" === t) {
                                    let e = J(o, c, r);
                                    "" !== e && (t = e)
                                }
                                if (null !== y && y.size > 0) {
                                    let e = y.get(a);
                                    null !== e && "" !== e && (s = Number(e))
                                }
                                let l = "";
                                if (n) {
                                    let e = S.get(a);
                                    null !== e && void 0 !== e && "" !== e ? l = Y(e) : null !== h && void 0 !== h && "" !== h && (l = X(o, h))
                                }
                                let u = o;
                                if (w.Common.isThunderPrivateUrl(o) && (u = w.Common.parseThunderPrivateUrl(o)), void 0 !== u && null !== u && "" !== u) {
                                    let t = {url: o, fileName: r, fileSize: s, subDir: l, statClick: "ThunderUnion"};
                                    e.push(t)
                                }
                            })
                        }
                        if (e.length >= 1) {
                            let n = {};
                            if (null !== d && "" !== d) {
                                let e = f.ThunderUtil.getMaxFreeDriver();
                                null !== e && "" !== e && (e += ":"), d = o.join(e, d), n.isNotSavePath = !0
                            }
                            if (null !== k && void 0 !== k && "" !== k) {
                                let e = Number(k);
                                e <= 0 ? e = 1 : e >= 10 && (e = 10), n.threadCount = e
                            }
                            if (null !== g && void 0 !== g && "" !== g && (n.userAgent = g), null !== u && void 0 !== u && "" !== u && null !== c && void 0 !== c && "" !== c && null !== t && void 0 !== t && "" !== t && $(t)) {
                                let e = c.replace(/[*?/\\:|<>\"]/g, "_");
                                n.installFile = e, n.runParams = p
                            }
                            A.information("createUnionTask：新协议拉起新建面板", n), H(e, "ThunderUnion", d, u, n)
                        }
                        l.length >= 1 && (A.information("createUnionTask：旧协议拉起新建面板"), H(l, "ThunderUnion"))
                    }
                } while (0)
            })
        }, e.sendMessageBox = Q, e.createThunderxTask = Z, e.init = function () {
            A.information("xxxxx init====="), M.setNewTaskCallback(e => i(this, void 0, void 0, function* () {
                if (A.information("setNewTaskCallback", e), e.length > 0) {
                    let n = [], i = [];
                    for (let t of e) {
                        let e = t.url, a = _.ThunderHelper.getTaskTypeFromUrl(e);
                        a === u.DownloadKernel.TaskType.P2sp || a === u.DownloadKernel.TaskType.Emule ? n.push(t) : a !== u.DownloadKernel.TaskType.Magnet && a !== u.DownloadKernel.TaskType.Bt || i.push(t)
                    }
                    if ((yield f.ThunderUtil.getConfigValueAW("TaskDefaultSettings", "NewTaskDlgWithoutMainWnd", !0)) ? t() : A.information("xxxxx newTaskDlgWithoutMainWnd = false"), n.length > 0 && q(n).catch(), i.length > 0) for (let e of i) G({
                        url: e.url,
                        type: "url"
                    }, {browser: e.browser, source: e.statClick})
                }
            })), M.initNodeBKWindow(), B.ipcMain.on(l.ThunderChannelList.channelRMNewTaskCreateNewTask, (e, t, n, a, s, d, f, p) => i(this, void 0, void 0, function* () {
                let i = null;
                try {
                    i = JSON.parse(a)
                } catch (e) {
                    A.warning(e)
                }
                if (null === i) return;
                let g = [...Object.values(i)];
                if (A.information("xxx", g, s), s) {
                    let t = yield h.TaskCtrlOperatorNS.getUsrInfoAw("userid"),
                        n = yield b.PrivateSpaceHelperNS.openPrivateCategory(t);
                    if (n < 0 && e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateNewTaskResult, !1, "开启私人空间后才能创建任务至私人空间"), 0 !== n) return;
                    let i = yield b.PrivateSpaceHelperNS.accessPrivateCategory(t);
                    if (i < 0 && e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateNewTaskResult, !1, "开启私人空间后才能创建任务至私人空间"), 0 !== i) return
                }
                e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateNewTaskResult, !0), null !== p && void 0 !== p && null !== p.isNotSavePath && void 0 !== p.isNotSavePath && !0 === p.isNotSavePath || s || z(t), A.information(p), A.verbose(e);
                let k = [];
                if (void 0 !== typeof g && null !== g && g.length > 0) {
                    let e = [], i = [], a = t;
                    null !== f && void 0 !== f && "" !== f && (a = o.join(t, f));
                    for (let t = 0; t < g.length; t++) {
                        let n = g[t], r = a;
                        void 0 !== n.data.subDir && null !== n.data.subDir && "" !== n.data.subDir && (r = o.join(a, n.data.subDir));
                        let l = h.TaskCtrlOperatorNS.constructProductInfo(n.data.browser),
                            d = {taskName: n.data.fileName, savePath: r, productInfo: l, origin: n.data.statClick};
                        n.data.fileSize && n.data.fileSize > 0 && (d.fileSize = n.data.fileSize), n.data.gcid && "" !== n.data.gcid && (d.gcid = n.data.gcid);
                        let f = {taskBaseInfo: d, privateSpace: s};
                        if (void 0 !== n.setting && null !== n.setting) {
                            let e = n.setting;
                            void 0 !== e.note && null !== e.note && "" !== e.note && (d.description = e.note), e.openAfterDownload && (d.openOnComplete = 1)
                        }
                        if (n.taskType === u.DownloadKernel.TaskType.P2sp) {
                            if (f.taskType = u.DownloadKernel.TaskType.P2sp, f.p2spTaskInfo = {
                                url: n.data.url,
                                refUrl: n.data.referer,
                                cookie: n.data.cookie,
                                downloadSubTask: 1
                            }, void 0 !== n.setting && null !== n.setting) {
                                let e = n.setting;
                                e.onlyOrigin && (f.p2spTaskInfo.useOriginResourceOnly = 1), void 0 !== e.thread && "number" == typeof e.thread && (f.p2spTaskInfo.originResourceThreadCount = e.thread)
                            }
                            let t = {taskType: u.DownloadKernel.TaskType.P2sp, value: n.data.url},
                                a = yield c.TaskUtilitiesAWNS.findTaskAW(t);
                            if (a && a.result) {
                                null !== a.task && (e.push(a.task), i.push({
                                    taskType: u.DownloadKernel.TaskType.P2sp,
                                    newTaskInfo: f
                                }));
                                continue
                            }
                            k.push(f)
                        } else if (n.taskType === u.DownloadKernel.TaskType.Emule) {
                            f.taskType = u.DownloadKernel.TaskType.Emule, f.emuleTaskInfo = {
                                url: n.data.url,
                                downloadSubTask: 1
                            };
                            let t = {taskType: u.DownloadKernel.TaskType.Emule, value: n.data.fileHash},
                                a = yield c.TaskUtilitiesAWNS.findTaskAW(t);
                            if (a && a.result) {
                                null !== a.task && (e.push(a.task), i.push({
                                    taskType: u.DownloadKernel.TaskType.Emule,
                                    newTaskInfo: f
                                }));
                                continue
                            }
                            k.push(f)
                        }
                    }
                    if (null !== f && void 0 !== f && "" !== f && k.length > 0) {
                        let e = {taskName: f, savePath: a, origin: k[0].taskBaseInfo.origin}, t = {subTaskList: k},
                            i = yield P.createTask(u.DownloadKernel.TaskType.Group, {
                                taskBaseInfo: e,
                                groupTaskInfo: t,
                                privateSpace: s
                            });
                        if (null !== i) {
                            if (1 === n) {
                                let e = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                                D.DowloadDispatchNS.startTask(e)
                            }
                            if (null !== p && void 0 !== p && null !== p.installFile && void 0 !== p.installFile && "" !== p.installFile) {
                                A.information("setUserData:", p);
                                let e = i.getExtraObject();
                                e.setUserData(C.TaskUserDataGUID.guidDownloadCompleteInstall, "installFile", p.installFile), null !== p.isSelectInstallCheck && void 0 !== p.isSelectInstallCheck && p.isSelectInstallCheck && e.setUserData(C.TaskUserDataGUID.guidDownloadCompleteInstall, "isImmediatelyInstall", "1"), null !== p.runParams && void 0 !== p.runParams && "" !== p.runParams && e.setUserData(C.TaskUserDataGUID.guidDownloadCompleteRunParams, "runParams", p.runParams)
                            }
                        }
                    } else if (k.length > 0) {
                        let e = P.createBatchTask(k);
                        if (1 === n) {
                            let t = [];
                            for (let n of e) t.unshift(n.getId());
                            D.DowloadDispatchNS.startTasks(t)
                        }
                    }
                    e.length > 0 && r(e, i)
                }
                if (void 0 !== d && null !== d && d.length > 0) for (let e of d) G({
                    url: e,
                    type: "url"
                }, {source: "newwindow_url"})
            })), B.ipcMain.on(l.ThunderChannelList.channelRMNewTaskDownloadTorrent, (e, t, n) => i(this, void 0, void 0, function* () {
                let a = (t, n) => i(this, void 0, void 0, function* () {
                        do {
                            if (n) {
                                let n = P.getTaskFromTaskId(t);
                                if (null === n) {
                                    e.sender.send(l.ThunderChannelList.channelMRNewTaskDownloadTorrentResult, !1), A.information("channelRMNewTaskDownloadTorrent error");
                                    break
                                }
                                let i = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.SavePath),
                                    a = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), r = o.join(i, a),
                                    s = yield c.TaskUtilitiesAWNS.parserBtFileInfoAW(r);
                                if (null === s) {
                                    e.sender.send(l.ThunderChannelList.channelMRNewTaskDownloadTorrentResult, !1);
                                    break
                                }
                                let d = JSON.stringify(s);
                                e.sender.send(l.ThunderChannelList.channelMRNewTaskDownloadTorrentResult, !0, d, r)
                            } else e.sender.send(l.ThunderChannelList.channelMRNewTaskDownloadTorrentResult, !1)
                        } while (0)
                    }), r = {taskType: u.DownloadKernel.TaskType.Magnet, value: t},
                    s = yield c.TaskUtilitiesAWNS.findTaskAW(r);
                if (s && s.result) {
                    A.information("channelRMNewTaskDownloadTorrent repeat magnet task.url:", t);
                    let n = s.task.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                    e.sender.send(l.ThunderChannelList.channelMRNewTaskMagnetTaskCreated, n), N.MagnetListenerNS.addRef(n, a)
                } else {
                    let i = yield f.ThunderUtil.getThunderTempPath(!0),
                        r = p.ParseUrlFileNameNS.parseMagnetUrl(t) + ".torrent", s = o.join(i, r), c = {
                            taskBaseInfo: {
                                taskName: r,
                                savePath: i,
                                productInfo: h.TaskCtrlOperatorNS.constructProductInfo(n.browser),
                                origin: n.source
                            }, magnetTaskInfo: {url: t, torrentFilePath: s}, isBackground: !0
                        };
                    const g = d.DownloadKernelTaskManager.getTaskManager();
                    A.information("create task magnet productinfo", n);
                    let k = yield g.createTask(u.DownloadKernel.TaskType.Magnet, c);
                    if (null !== k) {
                        let t = k.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                        e.sender.send(l.ThunderChannelList.channelMRNewTaskMagnetTaskCreated, t), N.MagnetListenerNS.addRef(t, a), D.DowloadDispatchNS.startTask(t, !0)
                    }
                }
            })), B.ipcMain.on(l.ThunderChannelList.channelRMNewTaskCancleMagnet, (e, t) => {
                N.MagnetListenerNS.release(t)
            }), B.ipcMain.on(l.ThunderChannelList.channelRMNewTaskCreateBtTask, (e, t, n, a, s, d, p, k, m) => i(this, void 0, void 0, function* () {
                A.verbose(e);
                do {
                    if (void 0 === a || null === a) {
                        e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateBtTaskResult, !1, "开启私人空间后才能创建任务至私人空间");
                        break
                    }
                    let i = null;
                    try {
                        i = JSON.parse(a)
                    } catch (e) {
                        A.warning(e)
                    }
                    if (null === i) break;
                    if (k) {
                        let t = yield h.TaskCtrlOperatorNS.getUsrInfoAw("userid"),
                            n = yield b.PrivateSpaceHelperNS.openPrivateCategory(t);
                        if (n < 0 && e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateBtTaskResult, !1), 0 !== n) break;
                        let i = yield b.PrivateSpaceHelperNS.accessPrivateCategory(t);
                        if (i < 0 && e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateBtTaskResult, !1), 0 !== i) break
                    }
                    if (e.sender.send(l.ThunderChannelList.channelMRNewTaskCreateBtTaskResult, !0), k || z(t), void 0 !== typeof t && null !== t || (t = yield f.ThunderUtil.getDownloadDir()), void 0 === typeof i || null === i) break;
                    if (i = Object.assign({}, i), void 0 === typeof s || null === s) break;
                    let T = yield h.TaskCtrlOperatorNS.getBtExistFilePathList(t, i, p),
                        v = {taskType: u.DownloadKernel.TaskType.Bt, value: i.infoId},
                        w = yield c.TaskUtilitiesAWNS.findTaskAW(v), y = i.trackerUrls.join("\n"),
                        S = h.TaskCtrlOperatorNS.constructProductInfo(m.browser),
                        C = {savePath: t, taskName: i.title, productInfo: S, origin: m.source}, N = {
                            seedFile: s,
                            displayName: d,
                            fileLists: i.fileLists,
                            infoId: i.infoId,
                            fileRealIndexLists: p,
                            tracker: y
                        }, I = {
                            taskType: u.DownloadKernel.TaskType.Bt,
                            newTaskInfo: {taskBaseInfo: C, btTaskInfo: N, privateSpace: k}
                        };
                    if (0 === T.length) {
                        if (w && w.result && null !== w.task) {
                            r([w.task], [I]);
                            break
                        }
                    } else {
                        if (!w || !w.result) {
                            let e = o.join(t, i.title), a = T.map(e => e.relativePath), r = JSON.stringify(a);
                            g.MessageBox.customAW("bt-repeat-file", {saveDir: e, file: r}).then(e => {
                                let a = e.picked;
                                W(t, n, i, s, d, p, m, a, T, void 0, k).catch()
                            }, () => {
                            });
                            break
                        }
                        if (null !== w.task) {
                            g.MessageBox.customAW("bt-repeat-task").then(e => {
                                let a = e.picked, o = w.task.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                                "continue" === a ? D.DowloadDispatchNS.startTask(o) : W(t, n, i, s, d, p, m, a, T, o, k).catch()
                            }, () => {
                            });
                            break
                        }
                    }
                    let _ = yield P.createTask(I.taskType, I.newTaskInfo);
                    if (null !== _) {
                        if (1 === n) {
                            let e = _.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                            D.DowloadDispatchNS.startTask(e)
                        }
                    } else A.warning("create bt task null")
                } while (0)
            })), B.ipcMain.on(l.ThunderChannelList.channelRMImportTorrent, (e, t) => i(this, void 0, void 0, function* () {
                A.verbose(e);
                let n = yield c.TaskUtilitiesAWNS.parserBtFileInfoAW(t);
                G(null === n ? {type: "file", seedFile: t} : {
                    data: JSON.stringify(n),
                    type: "file",
                    seedFile: t
                }, {source: "newwindow_bt"})
            }))
        }
    }(t.ThunderNewTask || (t.ThunderNewTask = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(682), o = n(63), r = n(29), s = i.default.getLogger("DownloadKernel.CategoryManager");

    class l {
        constructor() {
            this.newCategoryId = 0, this.categorys = new Map, this.userId = "", this.accountPassword = ""
        }

        init() {
            o.ThunderKernel.loadCategory(e => {
                e.forEach(e => {
                    if ("Private" === e.name) {
                        let t = a.PrivateCategory.createCategoryFromData(e);
                        t && this.categorys.set(e.categoryId, t)
                    } else s.warning("unkown category name:", e.name);
                    void 0 !== e.categoryId && this.newCategoryId <= e.categoryId && (this.newCategoryId = e.categoryId + 1)
                })
            })
        }

        getCategorys() {
            return this.categorys
        }

        getCategoryCount() {
            return this.categorys.size
        }

        getCategoryFromId(e) {
            return this.categorys.get(e)
        }

        getCategoryView(e, t) {
            let n = null, i = this.getCategoryFromId(e);
            return i && (n = i.getCategoryViewFromId(t)), n
        }

        getPrivateCategoryFromUserId(e) {
            if (!e || "" === e) return null;
            let t = null;
            for (let n of this.categorys.values()) if (n.getUserName() === e) {
                t = n;
                break
            }
            return t || (s.information("create new private category, id:", this.newCategoryId), (t = new a.PrivateCategory(this.newCategoryId)).setName("Private"), t.setDescription("Private Space"), t.setUserName(e), t.setAccountPassword(""), this.categorys.set(this.newCategoryId, t), this.newCategoryId++, o.ThunderKernel.createCategory(t.getId(), -1, -1, t.getName(), t.getDescription(), t.getUserName(), t.getAccountPassword())), t
        }

        getCurrentPrivateCategory() {
            if (!this.userId || "" === this.userId) return null;
            return this.getPrivateCategoryFromUserId(this.userId)
        }

        setUserInfo(e, t) {
            e = e || "", t = t || "";
            let n = !1;
            this.userId !== e && (this.userId = e, n = !0);
            let i = "";
            if ("" === t) i = ""; else {
                let e = r.createHash("md5");
                e.update(this.accountPassword), i = e.digest("hex")
            }
            if (this.accountPassword !== i && (this.accountPassword = i, n = !0), n) {
                let e = null;
                for (let t of this.categorys.values()) if (t.getUserName() === this.userId) {
                    e = t;
                    break
                }
                e && e.setAccountPassword(this.accountPassword)
            }
        }
    }

    t.CategoryManager = l, function (e) {
        const t = new l;
        e.getCategoryManager = function () {
            return t
        }
    }(t.DownloadKernelCategoryManager || (t.DownloadKernelCategoryManager = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(107), a = n(7), o = n(1), r = n(36), s = o.default.getLogger("Thunder.MainRenderer.Tabs");
    t.createXDASTab = function (e) {
        let t = new i.Tab;
        return !1 === t.initTab(i.TabType.XDAS, e) && (t = null, s.error("init tab error")), t
    }, t.createNewTab = function (e, t) {
        let n = new i.Tab;
        return !1 === n.initTab(e, t) && (n = null, s.error("init tab error")), n
    }, t.createChromiumTab = function (e) {
        let t = new i.Tab, n = {url: e};
        return !1 === t.initTab(i.TabType.XDAS, n) && (t = null, s.error("init tab error")), t
    }, t.setDefaultListeners = function (e) {
        let t = !1;
        do {
            if (a.isNullOrUndefined(e)) {
                s.error("event listeners error");
                break
            }
            if (0 === e.length) {
                s.error("event listeners length error");
                break
            }
            i.Tab.defaultEventList = e, t = !0
        } while (0);
        return t
    }, t.setDefaultNativeFunctionMap = function (e) {
        let t = !1;
        do {
            if (a.isNullOrUndefined(e)) {
                s.error("event listeners error");
                break
            }
            if (0 === e.length) {
                s.error("event listeners length error");
                break
            }
            i.Tab.nativeFunctionMap = [...i.Tab.nativeFunctionMap, ...e], t = !0
        } while (0);
        return t
    }, function (e) {
        let t;
        !function (e) {
            e.Unknow = "Unknow", e.GotFocus = "GoFocus", e.RemoveTab = "RemoveTab", e.AddTab = "AddTab", e.ChangeTab = "ChangeTab"
        }(t = e.EventType || (e.EventType = {}));
        let n = new r.EventEmitter;
        e.getEventEmitter = function () {
            return n
        }
    }(t.TabEventManagerNS || (t.TabEventManagerNS = {}))
}, function (e, t) {
    e.exports = function () {
        for (var e = [].slice.call(arguments), t = e[0], n = 1; n < e.length; n++) try {
            t = t[e[n]]
        } catch (e) {
            return
        }
        return t
    }
}, , function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5), a = n(644);
    !function (e) {
        const t = new class {
            constructor() {
                this.categoryViews = [];
                let e = new a.CategoryView(-1, i.DownloadKernel.CategroyViewID.Downloading),
                    t = new a.CategoryView(-1, i.DownloadKernel.CategroyViewID.Completed),
                    n = new a.CategoryView(-1, i.DownloadKernel.CategroyViewID.Recycle);
                this.categoryViews.push(e), this.categoryViews.push(t), this.categoryViews.push(n)
            }

            getCategoryViews() {
                return this.categoryViews
            }

            getCategoryViewCount() {
                return this.categoryViews.length
            }

            getCategoryViewFromId(e) {
                let t = null;
                for (let n = 0; n < this.categoryViews.length; ++n) {
                    let i = this.categoryViews[n];
                    if (i && e === i.getCategoryViewId()) {
                        t = i;
                        break
                    }
                }
                return t
            }
        };
        e.getCategoryViewManager = function () {
            return t
        }
    }(t.DownloadKernelCategoryViewManager || (t.DownloadKernelCategoryViewManager = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(5), r = n(32), s = n(28), l = n(85), u = n(484), d = a.default.getLogger("download-dispatch"),
        c = r.DownloadKernelEventManager.getEventManager(), h = s.DownloadKernelTaskManager.getTaskManager(),
        f = l.DownloadKernelCategoryViewManager.getCategoryViewManager();
    const p = new class {
        constructor() {
            this.maxStartCount = 5, this.tasks = [], this.downloadingTasks = [], this.waitingTasks = []
        }

        init() {
            this.attachTaskEvent()
        }

        updateTasks(e) {
            this.tasks = [...e]
        }

        startTask(e, t) {
            let n = !0;
            do {
                if (this.downloadingTasks.includes(e)) {
                    d.information("startTask is downloading", e);
                    break
                }
                let i = h.getTaskFromTaskId(e);
                if (null === i) break;
                if (i.getTaskAttribute(o.DownloadKernel.TaskAttribute.Background)) {
                    d.information("startTask is background", e), h.startTask(e);
                    break
                }
                let a = i.getTaskAttribute(o.DownloadKernel.TaskAttribute.CategoryId);
                if (-1 !== a) {
                    d.information("startTask is private", e, a), h.startTask(e);
                    break
                }
                if (t) {
                    d.information("startTask force no waiting", e), this.startNoWaiting(e);
                    break
                }
                if (this.downloadingTasks.length < this.maxStartCount) {
                    d.information("startTask no waiting", e), this.startNoWaiting(e);
                    break
                }
                d.information("startTask waiting", e), this.startWaiting(e), n = !1
            } while (0);
            return n
        }

        startTasks(e) {
            do {
                if (null === e || void 0 === e || 0 === e.length) break;
                let t = h.getTaskFromTaskId(e[0]).getTaskAttribute(o.DownloadKernel.TaskAttribute.CategoryId);
                if (void 0 !== t && -1 !== t) {
                    for (let t = 0; t < e.length; ++t) h.startTask(e[t]);
                    break
                }
                0 === this.tasks.length && (d.information("try to start multi task but tasks not inited"), this.initTasksOrderFromConfig());
                let n = [];
                for (let t of e) {
                    let e = this.tasks.indexOf(t);
                    -1 !== e && n.push(e)
                }
                if (n.length !== e.length) {
                    this.batchStartTasks(e);
                    break
                }
                n.sort();
                let i = [];
                for (let e of n) {
                    let t = this.tasks[e];
                    i.push(t)
                }
                this.batchStartTasks(i)
            } while (0)
        }

        setMaxStartTaskCount(e) {
            return i(this, void 0, void 0, function* () {
                if (this.maxStartCount !== e && e > 0) if (this.maxStartCount = e, this.downloadingTasks.length > this.maxStartCount) {
                    let e = 0;
                    for (let t = 0; t < this.tasks.length; t++) {
                        let n = this.tasks[t], i = h.getTaskFromTaskId(n).getTaskStatus();
                        i !== o.DownloadKernel.TaskStatus.StartPending && i !== o.DownloadKernel.TaskStatus.Started || (e += 1) > this.maxStartCount && (d.information("to stop", n), h.stopTaskAW(n).then(e => {
                            e ? (d.information("stoptask and startwaiting", n), this.startWaiting(n)) : d.information("stopTaskAW fail", n)
                        }).catch())
                    }
                } else if (this.waitingTasks.length > 0 && this.downloadingTasks.length < this.maxStartCount) {
                    d.information("setMaxStartTaskCount to add start task", this.waitingTasks.length, this.downloadingTasks.length, this.maxStartCount);
                    for (let e = 0; e < this.tasks.length; e++) {
                        let t = this.tasks[e];
                        if (h.getTaskFromTaskId(t).getTaskStatus() === o.DownloadKernel.TaskStatus.StartWaiting && (this.startNoWaiting(t), d.information("setMaxStartTaskCount add start task", t, this.waitingTasks.length, this.downloadingTasks.length), 0 === this.waitingTasks.length || this.downloadingTasks.length === this.maxStartCount)) break
                    }
                }
            })
        }

        batchStartTasks(e) {
            let t = e.length;
            for (let n = 0; n < e.length; n++) {
                let i = e[n];
                if (!this.startTask(i)) {
                    t = n;
                    break
                }
            }
            t + 1 < e.length && this.startBatchWaiting(e.slice(t + 1))
        }

        initTasksOrderFromConfig() {
            let e = [], t = f.getCategoryViewFromId(o.DownloadKernel.CategroyViewID.Downloading).getTasks();
            for (let [, n]of t) e.push(n.getTaskBaseInfo());
            e.sort(u.SortNS.getSortFuncByConfig(o.DownloadKernel.CategroyViewID.Downloading, -1)), this.tasks = e.map(e => e.taskId)
        }

        startNoWaiting(e) {
            if (h.startTask(e)) {
                this.downloadingTasks.includes(e) || this.downloadingTasks.push(e);
                let t = this.waitingTasks.indexOf(e);
                -1 !== t && this.waitingTasks.splice(t, 1)
            }
        }

        startWaiting(e) {
            if (h.startWaitingTask(e)) {
                this.waitingTasks.includes(e) || this.waitingTasks.push(e);
                let t = this.downloadingTasks.indexOf(e);
                -1 !== t && this.downloadingTasks.splice(t, 1)
            }
        }

        startBatchWaiting(e) {
            for (let t of e) {
                let e = h.getTaskFromTaskId(t).getTaskStatus();
                if (e === o.DownloadKernel.TaskStatus.Stopped || e === o.DownloadKernel.TaskStatus.Failed || e === o.DownloadKernel.TaskStatus.Unkown) {
                    this.waitingTasks.includes(t) || this.waitingTasks.push(t);
                    let e = this.downloadingTasks.indexOf(t);
                    -1 !== e && this.downloadingTasks.splice(e, 1)
                }
            }
            h.startWaitingTasks(e)
        }

        attachTaskEvent() {
            c.attachTaskEvent(o.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== o.DownloadKernel.TaskEventType.StatusChanged) break;
                    let t = e[1];
                    if (!t) break;
                    for (let e = 0; e < t.length; ++e) {
                        let n = t[e];
                        if (!n) continue;
                        if (n.getTaskAttribute(o.DownloadKernel.TaskAttribute.Background)) continue;
                        let i = n.getTaskStatus(), a = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.TaskId);
                        if (n.getTaskAttribute(o.DownloadKernel.TaskAttribute.GroupTaskId) > 0) continue;
                        if (-1 !== n.getTaskAttribute(o.DownloadKernel.TaskAttribute.CategoryId)) continue;
                        if (i === o.DownloadKernel.TaskStatus.StartPending || i === o.DownloadKernel.TaskStatus.Started) continue;
                        let r = this.downloadingTasks.indexOf(a);
                        if (-1 !== r && this.downloadingTasks.splice(r, 1), i === o.DownloadKernel.TaskStatus.StartWaiting) continue;
                        let s = this.waitingTasks.indexOf(a);
                        if (-1 !== s && this.waitingTasks.splice(s, 1), (i === o.DownloadKernel.TaskStatus.Succeeded || i === o.DownloadKernel.TaskStatus.Failed || i === o.DownloadKernel.TaskStatus.StopPending || i === o.DownloadKernel.TaskStatus.Stopped) && this.waitingTasks.length > 0 && this.downloadingTasks.length < this.maxStartCount) for (let e = 0; e < this.tasks.length; e++) {
                            let t = this.tasks[e];
                            if (this.waitingTasks.includes(t) && h.getTaskFromTaskId(t).getTaskStatus() === o.DownloadKernel.TaskStatus.StartWaiting) {
                                d.information("task status change add start task", t, a), this.startNoWaiting(t);
                                break
                            }
                        }
                    }
                } while (0)
            }), c.attachTaskEvent(o.DownloadKernel.TaskEventType.RemoveFromCategoryView, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== o.DownloadKernel.TaskEventType.RemoveFromCategoryView) break;
                    if (void 0 === e[1] || !e[2] || !e[3]) break;
                    if (-1 !== e[1]) break;
                    if (e[2] !== o.DownloadKernel.CategroyViewID.Downloading) break;
                    let t = e[3];
                    for (let e of t) {
                        let t = e.getTaskAttribute(o.DownloadKernel.TaskAttribute.TaskId),
                            n = this.downloadingTasks.indexOf(t);
                        -1 !== n && this.downloadingTasks.splice(n, 1);
                        let i = this.waitingTasks.indexOf(t);
                        -1 !== i && this.waitingTasks.splice(i, 1)
                    }
                } while (0)
            })
        }
    };
    !function (e) {
        e.init = function () {
            p.init()
        }, e.updateTasksOrder = function (e) {
            p.updateTasks(e)
        }, e.startTask = function (e, t) {
            let n = h.getTaskFromTaskId(e).getTaskStatus();
            return n !== o.DownloadKernel.TaskStatus.Succeeded && n !== o.DownloadKernel.TaskStatus.Seeding && p.startTask(e, t)
        }, e.startTasks = function (e) {
            p.startTasks(e)
        }, e.setStartTaskCount = function (e) {
            do {
                if ("number" != typeof e && (e = Number(e)), isNaN(e)) break;
                if (e <= 0) break;
                p.setMaxStartTaskCount(e).catch()
            } while (0)
        }
    }(t.DowloadDispatchNS || (t.DowloadDispatchNS = {}))
}, function (e, t, n) {
    "use strict";
    e.exports = function (e, t) {
        return function () {
            for (var n = new Array(arguments.length), i = 0; i < n.length; i++) n[i] = arguments[i];
            return e.apply(t, n)
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = n(57);
    e.exports = function (e, t, n) {
        var a = n.config.validateStatus;
        n.status && a && !a(n.status) ? t(i("Request failed with status code " + n.status, n.config, null, n.request, n)) : e(n)
    }
}, function (e, t, n) {
    "use strict";
    e.exports = function (e, t, n, i, a) {
        return e.config = t, n && (e.code = n), e.request = i, e.response = a, e
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12);

    function a(e) {
        return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]")
    }

    e.exports = function (e, t, n) {
        if (!t) return e;
        var o;
        if (n) o = n(t); else if (i.isURLSearchParams(t)) o = t.toString(); else {
            var r = [];
            i.forEach(t, function (e, t) {
                null !== e && void 0 !== e && (i.isArray(e) ? t += "[]" : e = [e], i.forEach(e, function (e) {
                    i.isDate(e) ? e = e.toISOString() : i.isObject(e) && (e = JSON.stringify(e)), r.push(a(t) + "=" + a(e))
                }))
            }), o = r.join("&")
        }
        return o && (e += (-1 === e.indexOf("?") ? "?" : "&") + o), e
    }
}, function (e, t) {
    e.exports = require("https")
}, function (e, t, n) {
    var i = n(22), a = n(72), o = n(91), r = n(173), s = n(64).Writable, l = n(174)("follow-redirects"),
        u = {GET: !0, HEAD: !0, OPTIONS: !0, TRACE: !0}, d = Object.create(null);

    function c(e, t) {
        s.call(this), e.headers = e.headers || {}, this._options = e, this._redirectCount = 0, this._requestBodyLength = 0, this._requestBodyBuffers = [], t && this.on("response", t);
        var n = this;
        if (this._onNativeResponse = function (e) {
            n._processResponse(e)
        }, !e.pathname && e.path) {
            var i = e.path.indexOf("?");
            i < 0 ? e.pathname = e.path : (e.pathname = e.path.substring(0, i), e.search = e.path.substring(i))
        }
        this._performRequest()
    }

    function h(e) {
        var t = {maxRedirects: 21, maxBodyLength: 10485760}, n = {};
        return Object.keys(e).forEach(function (a) {
            var o = a + ":", s = n[o] = e[a], u = t[a] = Object.create(s);
            u.request = function (e, a) {
                return "string" == typeof e ? (e = i.parse(e)).maxRedirects = t.maxRedirects : e = Object.assign({
                    protocol: o,
                    maxRedirects: t.maxRedirects,
                    maxBodyLength: t.maxBodyLength
                }, e), e.nativeProtocols = n, r.equal(e.protocol, o, "protocol mismatch"), l("options", e), new c(e, a)
            }, u.get = function (e, t) {
                var n = u.request(e, t);
                return n.end(), n
            }
        }), t
    }

    ["abort", "aborted", "error", "socket", "timeout"].forEach(function (e) {
        d[e] = function (t) {
            this._redirectable.emit(e, t)
        }
    }), c.prototype = Object.create(s.prototype), c.prototype.write = function (e, t, n) {
        this._requestBodyLength + e.length <= this._options.maxBodyLength ? (this._requestBodyLength += e.length, this._requestBodyBuffers.push({
            data: e,
            encoding: t
        }), this._currentRequest.write(e, t, n)) : (this.emit("error", new Error("Request body larger than maxBodyLength limit")), this.abort())
    }, c.prototype.end = function (e, t, n) {
        var i = this._currentRequest;
        e ? this.write(e, t, function () {
            i.end(null, null, n)
        }) : i.end(null, null, n)
    }, c.prototype.setHeader = function (e, t) {
        this._options.headers[e] = t, this._currentRequest.setHeader(e, t)
    }, c.prototype.removeHeader = function (e) {
        delete this._options.headers[e], this._currentRequest.removeHeader(e)
    }, ["abort", "flushHeaders", "getHeader", "setNoDelay", "setSocketKeepAlive", "setTimeout"].forEach(function (e) {
        c.prototype[e] = function (t, n) {
            return this._currentRequest[e](t, n)
        }
    }), ["aborted", "connection", "socket"].forEach(function (e) {
        Object.defineProperty(c.prototype, e, {
            get: function () {
                return this._currentRequest[e]
            }
        })
    }), c.prototype._performRequest = function () {
        var e = this._options.protocol, t = this._options.nativeProtocols[e];
        if (this._options.agents) {
            var n = e.substr(0, e.length - 1);
            this._options.agent = this._options.agents[n]
        }
        var a = this._currentRequest = t.request(this._options, this._onNativeResponse);
        for (var o in this._currentUrl = i.format(this._options), a._redirectable = this, d) o && a.on(o, d[o]);
        if (this._isRedirect) {
            var r = this._requestBodyBuffers;
            !function e() {
                if (0 !== r.length) {
                    var t = r.pop();
                    a.write(t.data, t.encoding, e)
                } else a.end()
            }()
        }
    }, c.prototype._processResponse = function (e) {
        var t = e.headers.location;
        if (t && !1 !== this._options.followRedirects && e.statusCode >= 300 && e.statusCode < 400) {
            if (++this._redirectCount > this._options.maxRedirects) return void this.emit("error", new Error("Max redirects exceeded."));
            var n, a = this._options.headers;
            if (307 !== e.statusCode && !(this._options.method in u)) for (n in this._options.method = "GET", this._requestBodyBuffers = [], a) /^content-/i.test(n) && delete a[n];
            if (!this._isRedirect) for (n in a) /^host$/i.test(n) && delete a[n];
            var o = i.resolve(this._currentUrl, t);
            l("redirecting to", o), Object.assign(this._options, i.parse(o)), this._isRedirect = !0, this._performRequest()
        } else e.responseUrl = this._currentUrl, this.emit("response", e), this._requestBodyBuffers = []
    }, e.exports = h({http: a, https: o}), e.exports.wrap = h
}, function (e, t, n) {
    "use strict";
    e.exports = function (e) {
        return !(!e || !e.__CANCEL__)
    }
}, function (e, t, n) {
    "use strict";

    function i(e) {
        this.message = e
    }

    i.prototype.toString = function () {
        return "Cancel" + (this.message ? ": " + this.message : "")
    }, i.prototype.__CANCEL__ = !0, e.exports = i
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(29), o = n(18), r = n(11), s = n(1).default.getLogger("Thunder.base.tools-utilities");
    !function (e) {
        function t(e) {
            return i(this, void 0, void 0, function* () {
                let t;
                if (e && (yield r.FileSystemAWNS.existsAW(e))) {
                    let n = o.createReadStream(e), i = a.createHash("md5");
                    n.on("data", e => {
                        i.update(e)
                    }), t = new Promise(e => {
                        n.on("end", () => {
                            let t = i.digest("hex");
                            t = t.toUpperCase(), e(t)
                        })
                    })
                } else t = new Promise(e => {
                    e(void 0)
                });
                return t
            })
        }

        e.genarateMd5 = function (e) {
            let t = void 0, n = a.createHash("md5");
            return null !== n && (t = n.update(e).digest("hex")), t
        }, e.matchFileMd5 = function (e, n) {
            return i(this, void 0, void 0, function* () {
                let i = !1, a = yield t(e);
                return void 0 !== a && a === n.toUpperCase() && (s.information("check full md5 sucessful"), i = !0), i
            })
        }, e.calculateFileMd5 = t, e.encryptBuffer = function (e, t) {
            let n = null;
            try {
                let i = a.createCipheriv("aes-128-ecb", t, ""), o = i.update(e), r = i.final();
                n = Buffer.concat([o, r])
            } catch (e) {
                s.error("encryptBuffer", e)
            }
            return n
        }, e.decryptBuffer = function (e, t) {
            let n = null;
            try {
                let i = a.createDecipheriv("aes-128-ecb", t, ""), o = i.update(e), r = i.final();
                n = Buffer.concat([o, r])
            } catch (e) {
                s.error("decryptBuffer", e)
            }
            return n
        }, e.setForegroundWindow = function (e, t) {
            if (null !== e && null !== t) {
                let n = t.getNativeWindowHandle().readUIntLE(0, 4);
                e.setForegroundWindow(n) ? s.information("sucessful") : s.information("failed")
            }
        }
    }(t.ToolsUtilitiesAWNS || (t.ToolsUtilitiesAWNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(53), r = n(8), s = a.default.getLogger("Thunder.ShouldLogin");
    t.default = function (e = !1, t = !1) {
        return i(this, void 0, void 0, function* () {
            let n;
            try {
                let i = yield o.default("IsLogined"), a = yield o.default("GetUserID");
                i ? (s.information("is logined"), n = Promise.resolve(a)) : (n = new Promise((n, i) => {
                    let a = -1;
                    if (a = r.NativeCallModule.nativeCall.AttachNativeEvent("OnUserLogin", e => {
                        s.information("On UserLogin", e), n(e), -1 !== a && (r.NativeCallModule.nativeCall.DetachNativeEvent("OnUserLogin", a), a = -1)
                    }), !e) {
                        let e = r.NativeCallModule.nativeCall.AttachNativeEvent("OnLoginWndClose", i => {
                            do {
                                if ("close" === i) {
                                    if (n(""), !t && -1 !== a) {
                                        r.NativeCallModule.nativeCall.DetachNativeEvent("OnUserLogin", a), a = -1;
                                        break
                                    }
                                } else if ("suc" === i && -1 !== a) break;
                                t && -1 !== a && (r.NativeCallModule.nativeCall.DetachNativeEvent("OnUserLogin", a), a = -1)
                            } while (0);
                            r.NativeCallModule.nativeCall.DetachNativeEvent("OnLoginWndClose", e)
                        })
                    }
                }), e || o.default("ShowLoginDlg").catch(e => {
                    s.warning(e)
                }))
            } catch (e) {
                s.warning(e), n = Promise.resolve("")
            }
            return n
        })
    }
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(217), a = n(129);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-tip.vue", t.default = s.exports
}, function (e, t) {
    var n = e.exports = {version: "2.5.7"};
    "number" == typeof __e && (__e = n)
}, function (e, t) {
    e.exports = function (e) {
        return "object" == typeof e ? null !== e : "function" == typeof e
    }
}, function (e, t) {
    e.exports = function (e) {
        try {
            return !!e()
        } catch (e) {
            return !0
        }
    }
}, , , , , , function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(5), o = n(6), r = Math.pow(2, 38),
        s = o.default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        function t(e) {
            return s.isThunderPrivateUrl(e)
        }

        function n(e) {
            let t = !0;
            for (let n = 0; n < e.length; n++) if (e.charCodeAt(n) > 127) {
                t = !1;
                break
            }
            return t
        }

        e.formatSize = function (e) {
            let t = 0, n = e, i = ["B", "KB", "MB", "GB", "TB", "PB"];
            for (; n >= 1024 && !(t > i.length - 1);) n /= 1024, t++;
            let a = i[t];
            return n.toFixed(2) + a
        }, e.getSavePathFromImportFile = function (e) {
            let t = "";
            return e && "" !== e && (t = i.dirname(e)), t
        }, e.getTaskNameFromImportFile = function (e) {
            let t = "";
            do {
                if (!e || "" === e) break;
                let n = i.basename(e), a = i.extname(e);
                if (!n || "" === n || !a || "" === a) break;
                let o = i.parse(n).name;
                if (!o || "" === o) break;
                let r = i.extname(o);
                if (!r || "" === r) break;
                ".td" === a || ".xltd" === a ? t = ".bt" === r || ".emule" === r ? i.parse(o).name : o : ".cfg" === a && (".td" === r || ".xltd" === r ? t = i.parse(o).name : ".emule" !== r && ".xlemule" !== r && ".bt" !== r && ".xlbt" !== r || (o = i.parse(o).name, t = i.parse(o).name))
            } while (0);
            return t
        }, e.getTaskTypeFromImportingFile = function (e) {
            let t = a.DownloadKernel.TaskType.Unkown;
            do {
                if (!e || "" === e) break;
                let n = i.basename(e), o = i.extname(e);
                if (!n || "" === n || !o || "" === o) break;
                let r = i.parse(n).name;
                if (!r || "" === r) break;
                let s = i.extname(r).toLowerCase();
                if (!s || "" === s) break;
                ".td" === o || ".xltd" === o ? t = ".bt" === s ? a.DownloadKernel.TaskType.Bt : ".emule" === s ? a.DownloadKernel.TaskType.Emule : a.DownloadKernel.TaskType.P2sp : ".cfg" === o && (".td" === s || ".xltd" === s ? t = a.DownloadKernel.TaskType.P2sp : ".emule" === s || ".xlemule" === s || ".part" === s ? t = a.DownloadKernel.TaskType.Emule : ".bt" !== s && ".xlbt" !== s || (t = a.DownloadKernel.TaskType.Bt))
            } while (0);
            return t
        }, e.isThunderPrivateUrl = t, e.parseThunderPrivateUrl = function (e) {
            let n = e;
            if (t(e)) {
                let t = s.parseThunderPrivateUrl(e);
                n = null !== t && void 0 !== t ? t.url : void 0
            }
            return n
        }, e.isAllAsciiChar = n, e.parseEd2kUrl = function (e) {
            let t = null;
            do {
                -1 === e.indexOf("|") && (e = e.replace("%7C", "|"));
                let i = [];
                if ((i = e.split("|")).length < 5) break;
                let a = "ed2k://";
                if (i[0].length < a.length || 0 !== i[0].indexOf(a)) break;
                let o = "file";
                if (i[1].length < o.length || 0 !== i[1].indexOf(o)) break;
                let s = i[2], l = parseInt(i[3], 10);
                if (l <= 0 || l > r) break;
                if (32 !== i[4].length) break;
                let u = i[4];
                if (-1 !== s.indexOf("%") && n(s)) try {
                    s = decodeURI(s)
                } catch (e) {
                }
                t = {
                    fileName: s = (s = (s = (s = (s = (s = (s = (s = (s = s.replace("<", "_")).replace(">", "_")).replace(":", "_")).replace('"', "_")).replace("/", "_")).replace("\\", "_")).replace("|", "_")).replace("?", "_")).replace("*", "_"),
                    fileHash: u,
                    fileSize: l
                }
            } while (0);
            return t
        };
        let o = void 0;

        function l(e) {
            let t = 0, n = -1;
            for (let i = 0; i < e.length; ++i) t += (n = e.charCodeAt(i)) >= 0 && n <= 128 ? 1 : 2;
            return t
        }

        function u(e, t) {
            let n = "", i = 0, a = new String;
            for (let o = 0; o < e.length; o++) {
                let r = e.charAt(o);
                if (i++, escape(r).length > 4 && i++, a = a.concat(r), i >= t) {
                    n = a.toString();
                    break
                }
            }
            return i < t && (n = e), n
        }

        e.getXmpPath = function () {
            if (!o) {
                let e = "HKEY_LOCAL_MACHINE", t = "SOFTWARE\\Thunder Network\\Xmp", n = "Path";
                o = s.readRegString(e, t, n)
            }
            return o
        }, e.getStringLength = l, e.cutString = u, e.getMaxFilePath = function (e) {
            let t = "", n = l(e);
            if (n < 260) t = e; else {
                let a = i.dirname(e), o = i.basename(e), r = i.extname(e), s = 260 - (n = l(a) + 2) - r.length - 2;
                s > 0 && (o = u(o, s), o += r, t = i.join(a, o))
            }
            return t
        }
    }(t.Common || (t.Common = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(17), a = n(256), o = n(1), r = n(7), s = n(108),
        l = o.default.getLogger("Thunder.MainRenderer.TabsBrowser"), u = 0;
    var d;
    !function (e) {
        e[e.XDAS = 0] = "XDAS", e[e.Chromium = 1] = "Chromium", e[e.IE = 2] = "IE", e[e.Other = 3] = "Other"
    }(d = t.TabType || (t.TabType = {}));

    class c {
        constructor() {
            this.canGoForward = !1, this.canGoBack = !1, this.url = "", this.originalUrl = "", this.isErrorPage = !1, this.pinned = !1, l.information("tab construct")
        }

        initTab(e, t) {
            let n = !1;
            do {
                if (r.isNullOrUndefined(e)) {
                    l.error(e);
                    break
                }
                this.type = e, this.originalUrl = t.url, this.name = t.name, this.index = t.index, this.showUrl = !("showUrl" in t) || t.showUrl, void 0 !== t.pinned && "boolean" == typeof t.pinned && (this.pinned = t.pinned), e === d.XDAS ? n = this.xdasTabInit(t) : e === d.Chromium ? n = this.chromiumTabInit(t) : e === d.IE && (n = this.ieTabInit(t))
            } while (0);
            return n
        }

        navigate(e) {
            let t = !1;
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                this.browser.navigate(e, "", "", !1), t = !0
            } while (0);
            return t
        }

        refresh(e) {
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                if (r.isNullOrUndefined(e)) {
                    l.error(e);
                    break
                }
                this.browser.refresh(e)
            } while (0);
            return !1
        }

        stop() {
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                this.browser.stop()
            } while (0);
            return !1
        }

        goForward() {
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                this.browser.goForward()
            } while (0);
            return !1
        }

        goBack() {
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                this.browser.goBack()
            } while (0);
            return !1
        }

        showDevTool(e) {
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                if (r.isNullOrUndefined(e)) {
                    l.error(e);
                    break
                }
                this.browser.showDevTool(e)
            } while (0);
            return !1
        }

        destroyBrowser(e) {
            do {
                if (this.type !== d.Chromium) {
                    l.error(this.type);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                if (r.isNullOrUndefined(a.browserSupport.browserManager)) {
                    l.error(a.browserSupport.browserManager);
                    break
                }
                if (r.isNullOrUndefined(e)) {
                    l.error(e);
                    break
                }
                a.browserSupport.browserManager.destroyBrowser(this.browser, e)
            } while (0);
            return !1
        }

        viewSource() {
            do {
                if (this.type !== d.Chromium) break;
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                this.browser.viewSource()
            } while (0);
            return !1
        }

        attachListener(e) {
            let t = 0;
            do {
                if (this.type !== d.Chromium) break;
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                if (r.isNullOrUndefined(e) || r.isNullOrUndefined(e.eventName) || r.isNullOrUndefined(e.listener)) {
                    l.error(e);
                    break
                }
                t = this.browser.attachEventListener(e.eventName, e.listener)
            } while (0);
            return t
        }

        detachListener(e, t) {
            let n = !1;
            do {
                if (t === u) {
                    l.error(t);
                    break
                }
                if (r.isNullOrUndefined(e) || "" === e) {
                    l.error(e);
                    break
                }
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                if (this.type !== d.Chromium) break;
                n = this.browser.detachEventListener(e, t)
            } while (0);
            return n
        }

        getTabType() {
            return this.type
        }

        getTitle() {
            return this.title
        }

        getOriginalUrl() {
            return this.originalUrl
        }

        getPinned() {
            return this.pinned
        }

        setTitle(e) {
            return !r.isNullOrUndefined(e) && (this.title = e, !0)
        }

        getBrowser() {
            return this.browser
        }

        attachListeners(e) {
            do {
                if (r.isNullOrUndefined(this.browser)) {
                    l.error(this.browser);
                    break
                }
                if (this.type === d.Chromium) for (let t of e) {
                    if (r.isNullOrUndefined(t) || r.isNullOrUndefined(t.eventName) || r.isNullOrUndefined(t.listener)) continue;
                    let e = this.browser.attachEventListener(t.eventName, t.listener);
                    e === u && l.error(e)
                }
            } while (0)
        }

        registerNativeFunction(e, t) {
            let n = !1;
            do {
                if (r.isNullOrUndefined(e) || "" === e) {
                    l.error(e);
                    break
                }
                if (r.isNullOrUndefined(t)) {
                    l.error(t);
                    break
                }
                if (r.isNullOrUndefined(c.nativeFunctionMap)) {
                    l.error(t);
                    break
                }
                let i = c.nativeFunctionMap.filter(t => e === t.functionName);
                if (r.isNullOrUndefined(i)) {
                    let i = {functionName: e, nativeFunc: t};
                    c.nativeFunctionMap.push(i), n = !0
                }
            } while (0);
            return n
        }

        unRegisterNativeFunction(e) {
            let t = !1;
            do {
                if (r.isNullOrUndefined(e) || "" === e) {
                    l.error(e);
                    break
                }
                if (r.isNullOrUndefined(c.nativeFunctionMap)) {
                    l.error(c.nativeFunctionMap);
                    break
                }
                for (let n in c.nativeFunctionMap) if (c.nativeFunctionMap[Number(n)].functionName === e) {
                    c.nativeFunctionMap.splice(Number(n), 1), t = !0;
                    break
                }
            } while (0);
            return t
        }

        callNativeFunctionCallback(e, t, ...n) {
            let i = !1;
            do {
                if (r.isNullOrUndefined(t)) {
                    l.error(t);
                    break
                }
                if (this.type === d.XDAS) {
                    if (r.isNullOrUndefined(s.NativeCallHostModule.nativeCallHost)) {
                        l.error(s.NativeCallHostModule.nativeCallHost);
                        break
                    }
                    s.NativeCallHostModule.nativeCallHost.callJsFunctionById.apply(s.NativeCallHostModule.nativeCallHost, [e].concat(t, n)), i = !0
                } else if (this.type === d.Chromium) {
                    if (r.isNullOrUndefined(this.browser)) {
                        l.error(this.browser);
                        break
                    }
                    this.browser.callNativeFunctionCallback(t, n), i = !0
                }
            } while (0);
            return i
        }

        callJSFunction(e, t, ...n) {
            let i = !1;
            do {
                if (r.isNullOrUndefined(t) || "" === t) {
                    l.error(t);
                    break
                }
                if (this.type === d.XDAS) {
                    if (r.isNullOrUndefined(s.NativeCallHostModule.nativeCallHost)) {
                        l.error(s.NativeCallHostModule.nativeCallHost);
                        break
                    }
                    s.NativeCallHostModule.nativeCallHost.callJsFunctionByName(e, t, n), i = !0
                } else if (this.type === d.Chromium) {
                    if (r.isNullOrUndefined(this.browser)) {
                        l.error(this.browser);
                        break
                    }
                    this.browser.callJSFunction(t, n), i = !0
                }
            } while (0);
            return i
        }

        fireEvent(e, ...t) {
            let n = !1;
            do {
                if (r.isNullOrUndefined(e) || "" === e) {
                    l.error(e);
                    break
                }
                if (this.type === d.XDAS) {
                    if (r.isNullOrUndefined(s.NativeCallHostModule.nativeCallHost)) {
                        l.error(s.NativeCallHostModule.nativeCallHost);
                        break
                    }
                    s.NativeCallHostModule.nativeCallHost.fireNativeEvent.apply(s.NativeCallHostModule.nativeCallHost, [e].concat(t)), n = !0
                } else if (this.type === d.Chromium) {
                    if (r.isNullOrUndefined(this.browser)) {
                        l.error(this.browser);
                        break
                    }
                    this.browser.fireEvent(e, t), n = !0
                }
            } while (0);
            return n
        }

        onJsCallNativeFunction(e, t, n, a) {
            let o = !1;
            do {
                if (r.isNullOrUndefined(e) && l.error(e), r.isNullOrUndefined(t) || "" === t) {
                    l.error(t);
                    break
                }
                if (r.isNullOrUndefined(c.nativeFunctionMap)) {
                    l.error(c.nativeFunctionMap);
                    break
                }
                let u = c.nativeFunctionMap.filter(e => t === e.functionName), h = void 0,
                    f = i.NativeFunctionErrorCode.Success;
                if (r.isNullOrUndefined(u) || 0 === u.length || r.isNullOrUndefined(u[0].nativeFunc)) {
                    if (f = i.NativeFunctionErrorCode.FunctionUnExist, r.isNullOrUndefined(n)) {
                        o = !0;
                        break
                    }
                    if (this.type === d.XDAS) {
                        if (r.isNullOrUndefined(s.NativeCallHostModule.nativeCallHost)) {
                            l.error(s.NativeCallHostModule.nativeCallHost);
                            break
                        }
                        s.NativeCallHostModule.nativeCallHost.callJsFunctionById.apply(s.NativeCallHostModule.nativeCallHost, [e].concat(n, f, h))
                    } else if (this.type === d.Chromium) {
                        if (r.isNullOrUndefined(this.browser)) {
                            l.error(this.browser);
                            break
                        }
                        this.browser.callNativeFunctionCallback(n, [f].concat(h))
                    }
                } else u[0].nativeFunc(this, e, n, a)
            } while (0);
            return o
        }

        onJsCheckNativeFunction(e, t, n) {
            do {
                if (r.isNullOrUndefined(e) && l.error(e), r.isNullOrUndefined(n)) break;
                if (r.isNullOrUndefined(t) || "" === t) {
                    l.error(t);
                    break
                }
                if (r.isNullOrUndefined(c.nativeFunctionMap)) {
                    l.error(c.nativeFunctionMap);
                    break
                }
                let a = c.nativeFunctionMap.filter(e => t === e.functionName), o = i.NativeFunctionErrorCode.Success;
                if ((r.isNullOrUndefined(a) || r.isNullOrUndefined(a[0]) || r.isNullOrUndefined(a[0].nativeFunc)) && (o = i.NativeFunctionErrorCode.FunctionUnExist, l.error(a)), this.type === d.XDAS) {
                    if (r.isNullOrUndefined(s.NativeCallHostModule.nativeCallHost)) {
                        l.error(s.NativeCallHostModule.nativeCallHost);
                        break
                    }
                    s.NativeCallHostModule.nativeCallHost.callJsFunctionById(e, n, o)
                } else if (this.type === d.Chromium) {
                    if (r.isNullOrUndefined(this.browser)) {
                        l.error(this.browser);
                        break
                    }
                    this.browser.callNativeFunctionCallback(n, [].concat(o))
                }
            } while (0);
            return !1
        }

        isDefaultTab() {
            return this.url.split("#")[0] === c.defaultBrowserUrl
        }

        xdasTabInit(e) {
            return r.isNullOrUndefined(e) && (e = {}), void 0 === e.title ? this.title = c.defaultXDASTitle : this.title = e.title, !0
        }

        chromiumTabInit(e) {
            let t = !1;
            r.isNullOrUndefined(e) && (e = {});
            do {
                if (r.isNullOrUndefined(a.browserSupport.browserManager)) {
                    l.error(a.browserSupport.browserManager);
                    break
                }
                r.isNullOrUndefined(e.url) && (e.url = c.defaultBrowserUrl), void 0 === e.parentHwnd && (e.parentHwnd = a.browserSupport.browserParentWndHandle), void 0 === e.title ? this.title = c.defaultBrowserTitle : this.title = e.title, void 0 === e.isFromPopup && (e.isFromPopup = !1), void 0 === e.eventListeners ? e.eventListeners = c.defaultEventList : e.eventListeners = e.eventListeners.concat(c.defaultEventList), void 0 === e.rect && (e.rect = {
                    x: 0,
                    y: 0,
                    width: 0,
                    height: 0
                });
                let n = a.browserSupport.browserManager.createChromiumBrowser(e.parentHwnd, e.url, e.isFromPopup, e.rect);
                if (r.isNullOrUndefined(n)) {
                    l.error(n);
                    break
                }
                if (this.browser = n, n.addCustomProtocol("ed2k://"), n.addCustomProtocol("thunder://"), n.addCustomProtocol("magnet:?"), n.registerHotKey(116, 4), n.registerHotKey(116, 0), this.attachListeners(e.eventListeners), e.isFromPopup) {
                    this.browser.navigate(e.url, "", "", !1), t = !0;
                    break
                }
                r.isNullOrUndefined(c.tempBrowser) && (c.tempBrowser = a.browserSupport.browserManager.createChromiumBrowser(e.parentHwnd, c.defaultBrowserUrl, e.isFromPopup, {
                    x: 0,
                    y: 0,
                    width: 0,
                    height: 0
                })), t = !0
            } while (0);
            return t
        }

        ieTabInit(e) {
            return void 0 === e.title ? this.title = c.defaultBrowserTitle : this.title = e.title, !0
        }
    }

    c.defaultXDASTitle = "下载", c.defaultBrowserTitle = "正在加载...", c.defaultBrowserUrl = "http://misc.xl9.xunlei.com/chrome/client/view/dist/1.0/new_tab.html", c.defaultEventList = [], c.nativeFunctionMap = [], c.tempBrowser = null, t.Tab = c
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(7), a = n(15), o = n(16), r = n(24);
    !function (e) {
        class t {
            constructor() {
                this.nativeCallInfoList = [], this.webviewInfoId = -1
            }

            initialize() {
                this.bindMsgListeners()
            }

            addDelegate(e) {
                this.delegate = e
            }

            removeDelegate() {
                this.delegate = null
            }

            callJsFunctionById(e, t, ...n) {
                a.information(`funcId = ${t}`);
                do {
                    if (!i.isNumber(e)) {
                        a.error(`nativeCallId = ${e} error`);
                        break
                    }
                    if (!i.isNumber(t)) {
                        a.error(`funcId = ${t} error`);
                        break
                    }
                    let r = o.CommonIPCMessage.msgNCCallJsFunctionById, s = [t].concat(n);
                    this.isWebviewInfo(e) ? this.sendMsgToWebviewNativeCall(r, s) : this.sendMsgToNativeCall(e, r, s)
                } while (0)
            }

            callJsFunctionByName(e, t, ...n) {
                a.information(`funcName = ${t}`);
                do {
                    if (!i.isNumber(e)) {
                        a.error(`nativeCallId = ${e} error`);
                        break
                    }
                    if (i.isNullOrUndefined(t) || 0 === t.length) {
                        a.error(`funcName = ${t} error`);
                        break
                    }
                    let r = o.CommonIPCMessage.msgNCCallJsFunctionByName, s = [t].concat(n);
                    this.isWebviewInfo(e) ? this.sendMsgToWebviewNativeCall(r, s) : this.sendMsgToNativeCall(e, r, s)
                } while (0)
            }

            fireNativeEvent(e, ...t) {
                a.information(`eventName = ${e}`);
                do {
                    if (i.isNullOrUndefined(e) || 0 === e.length) {
                        a.error(`eventName = ${e} error`);
                        break
                    }
                    let n = o.CommonIPCMessage.msgNCNativeFireEvent, r = [e].concat(t);
                    this.sendMsgToWebviewNativeCall(n, r);
                    for (let e of this.nativeCallInfoList) this.sendMsgToNativeCall(e.id, n, r)
                } while (0)
            }

            bindMsgListeners() {
                this.bindWebviewMsgListeners(), this.bindIPCMsgListeners()
            }

            bindWebviewMsgListeners() {
                const e = document.querySelector("webview");
                i.isNullOrUndefined(e) ? a.error("webview is null") : e.addEventListener("ipc-message", e => {
                    do {
                        if (e.channel === o.CommonIPCMessage.msgNCCallNativeFunction) {
                            this.handleWebviewCallNativeFunction(e.args[0]);
                            break
                        }
                        if (e.channel === o.CommonIPCMessage.msgNCCheckNativeFunction) {
                            this.handleWebviewCheckNativeFunction(e.args[0]);
                            break
                        }
                    } while (0)
                })
            }

            bindIPCMsgListeners() {
                r.CommonIPCRenderer.rendererCommunicator.onMessage(o.CommonIPCMessage.msgNCCallNativeFunction, e => {
                    this.handleCallNativeFunction(e)
                }), r.CommonIPCRenderer.rendererCommunicator.onMessage(o.CommonIPCMessage.msgNCCheckNativeFunction, e => {
                    this.handleCheckNativeFunction(e)
                }), r.CommonIPCRenderer.rendererCommunicator.onMessage(o.CommonIPCMessage.msgNCNativeCallReady, e => {
                    this.handleNativeCallReady(e.msg.args)
                })
            }

            handleCallNativeFunction(e) {
                do {
                    if (i.isNullOrUndefined(this.delegate)) {
                        a.error("delegate is null");
                        break
                    }
                    if (i.isNullOrUndefined(e)) {
                        a.error("msgInfo is null");
                        break
                    }
                    let t = e.senderInfo;
                    if (i.isNullOrUndefined(t)) {
                        a.error("nativeCallInfo is null");
                        break
                    }
                    let n = e.msg.args;
                    if (i.isNullOrUndefined(n)) {
                        a.error("args is null");
                        break
                    }
                    let o = n[0];
                    if (!i.isString(o) || 0 === o.length) {
                        a.error(`funcName = ${o} error`);
                        break
                    }
                    let r = n[1];
                    if (!i.isNumber(r)) {
                        a.error(`callbackId = ${r} error`);
                        break
                    }
                    n.splice(0, 2), this.appendNativeCallInfoList(t), this.delegate.onJsCallNativeFunction(t.id, o, r, n)
                } while (0)
            }

            handleCheckNativeFunction(e) {
                do {
                    if (i.isNullOrUndefined(this.delegate)) {
                        a.error("delegate is null");
                        break
                    }
                    if (i.isNullOrUndefined(e)) {
                        a.error("msgInfo is null");
                        break
                    }
                    let t = e.senderInfo;
                    if (i.isNullOrUndefined(t)) {
                        a.error("nativeCallInfo is null");
                        break
                    }
                    let n = e.msg.args;
                    if (i.isNullOrUndefined(n)) {
                        a.error("args is null");
                        break
                    }
                    let o = n[0];
                    if (!i.isString(o) || 0 === o.length) {
                        a.error(`funcName = ${o} error`);
                        break
                    }
                    let r = n[1];
                    if (!i.isNumber(r)) {
                        a.error(`callbackId = ${r} error`);
                        break
                    }
                    this.appendNativeCallInfoList(t), n.splice(0, 2), this.delegate.onJsCheckNativeFunction(t.id, o, r)
                } while (0)
            }

            handleNativeCallReady(e) {
                do {
                    if (i.isNullOrUndefined(e)) {
                        a.error("args is null");
                        break
                    }
                    let t = e[0];
                    if (i.isNullOrUndefined(t)) {
                        a.error(`info = ${t} error`);
                        break
                    }
                    this.appendNativeCallInfoList(t)
                } while (0)
            }

            handleWebviewCallNativeFunction(e) {
                do {
                    if (i.isNullOrUndefined(this.delegate)) {
                        a.error("delegate is null");
                        break
                    }
                    if (i.isNullOrUndefined(e)) {
                        a.error("args is null");
                        break
                    }
                    let t = e[0];
                    if (!i.isString(t) || 0 === t.length) {
                        a.error(`funcName = ${t} error`);
                        break
                    }
                    let n = e[1];
                    if (!i.isNumber(n)) {
                        a.error(`callbackId = ${n} error`);
                        break
                    }
                    e.splice(0, 2), this.delegate.onJsCallNativeFunction(this.webviewInfoId, t, n, e)
                } while (0)
            }

            handleWebviewCheckNativeFunction(e) {
                do {
                    if (i.isNullOrUndefined(this.delegate)) {
                        a.error("delegate is null");
                        break
                    }
                    if (i.isNullOrUndefined(e)) {
                        a.error("args is null");
                        break
                    }
                    let t = e[0];
                    if (!i.isString(t) || 0 === t.length) {
                        a.error(`funcName = ${t} error`);
                        break
                    }
                    let n = e[1];
                    if (!i.isNumber(n)) {
                        a.error(`callbackId = ${n} error`);
                        break
                    }
                    e.splice(0, 2), this.delegate.onJsCheckNativeFunction(this.webviewInfoId, t, n)
                } while (0)
            }

            appendNativeCallInfoList(e) {
                let t = !0;
                for (let n of this.nativeCallInfoList) if (n.id === e.id) {
                    t = !1;
                    break
                }
                t && this.nativeCallInfoList.push(e)
            }

            findNativeCallInfo(e) {
                for (let t of this.nativeCallInfoList) if (t.id === e) return t;
                return null
            }

            isWebviewInfo(e) {
                return e === this.webviewInfoId
            }

            sendMsgToWebviewNativeCall(e, t) {
                const n = document.querySelector("webview");
                do {
                    if (i.isNullOrUndefined(n)) {
                        a.error("webview is null");
                        break
                    }
                    n.send(e, t)
                } while (0)
            }

            sendMsgToNativeCall(e, t, n) {
                do {
                    let o = this.findNativeCallInfo(e);
                    if (i.isNullOrUndefined(o)) {
                        a.error("nativeCallInfo is null");
                        break
                    }
                    r.CommonIPCRenderer.rendererCommunicator.sendMessageToRenderer(o.id, {name: t, args: n})
                } while (0)
            }
        }

        e.NativeCallHost = t, e.nativeCallHost = new t
    }(t.NativeCallHostModule || (t.NativeCallHostModule = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(72), a = n(1).default.getLogger("Thunder.shub-http.http-session");
    t.HttpSession = class {
        constructor() {
            this.mRetries = 0, this.mHost = void 0, this.mPort = 80, this.mPath = void 0, this.mAuth = void 0, this.mAccept = void 0, this.mBody = null, this.mUrl = void 0, this.mTimeout = void 0, this.mCurRetries = 0
        }

        set host(e) {
            this.mHost = e
        }

        get host() {
            return this.mHost
        }

        set port(e) {
            this.mPort = e
        }

        get port() {
            return this.mPort
        }

        set path(e) {
            this.mPath = e
        }

        get path() {
            return this.mPath
        }

        set url(e) {
            this.mUrl = e
        }

        get url() {
            return this.mUrl
        }

        set auth(e) {
            this.mAuth = e
        }

        get auth() {
            return this.mAuth
        }

        set accept(e) {
            this.mAccept = e
        }

        get accept() {
            return this.mAccept
        }

        set body(e) {
            this.mBody = e
        }

        get body() {
            return this.mBody
        }

        set retries(e) {
            this.mRetries = e
        }

        get retries() {
            return this.mRetries
        }

        set timeout(e) {
            this.mTimeout = e
        }

        get timeout() {
            return this.mTimeout
        }

        post(e, t) {
            let n = this.body;
            if (!n) return a.information("body is empty"), void t(null);
            let i = this.auth, o = this.accept, r = {
                hostname: this.host,
                port: this.port,
                path: this.path || "/",
                method: "POST",
                auth: i || void 0,
                headers: {"Content-Length": n ? n.length : 0, Accept: o || "*/*"}
            };
            a.information("option", r), this.postImpl(n, r, e, n => {
                this.mCurRetries < this.retries ? (this.mCurRetries++, a.information("mCurRetries", this.mCurRetries), this.post(e, t)) : t(n)
            })
        }

        get(e, t) {
            let n = this.url;
            n || (n = {
                hostname: this.host,
                port: this.port,
                path: this.path || "/",
                method: "GET"
            }), a.information("option", n), this.getImpl(n, e, n => {
                this.mCurRetries < this.retries ? (this.mCurRetries++, a.information("mCurRetries", this.mCurRetries), this.get(e, t)) : t(n)
            })
        }

        postImpl(e, t, n, o) {
            let r = i.request(t, e => {
                let t = null;
                e.on("data", e => {
                    t = t ? Buffer.concat([t, e]) : e
                }), e.on("end", () => {
                    a.information("statusCode", e.statusCode), a.information("headers", e.headers), n({
                        statusCode: e.statusCode,
                        headers: e.headers,
                        body: t
                    })
                })
            });
            r.on("error", e => {
                o(e)
            }), r.on("timeout", () => {
                r.abort()
            }), this.timeout && r.setTimeout(this.timeout), r.write(e), r.end()
        }

        getImpl(e, t, n) {
            i.get(e, e => {
                let n = null;
                e.on("data", e => {
                    n = n ? Buffer.concat([n, e]) : e
                }), e.on("end", () => {
                    a.information("statusCode", e.statusCode), a.information("headers", e.headers), t({
                        statusCode: e.statusCode,
                        headers: e.headers,
                        body: n
                    })
                })
            }).on("error", e => {
                n(e)
            })
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(54), o = n(5), r = n(48), s = n(1).default.getLogger("Thunder.VipDownload.download-kernel-helper"),
        l = r.PluginHelperNS.getHelper();
    var u;
    !function (e) {
        e.taskInserted = "OnTaskInserted", e.taskCompleted = "OnTaskCompleted", e.taskRemoved = "OnTaskRemoved", e.taskStatusChanged = "OnTaskStatusChanged", e.taskDetailChanged = "OnTaskDetailChanged", e.taskDcdnStatusChanged = "OnTaskDcdnStatusChanged", e.btSubFileDetailChanged = "OnBtSubFileDetailChanged", e.btSubFileForbidden = "OnBtSubFileForbidden"
    }(u = t.DkEventNS || (t.DkEventNS = {}));

    class d extends a.default {
        constructor() {
            super(...arguments), this.mPeerId = void 0
        }

        init() {
            this.setMaxListeners(0), l.nativeCall && this.attachDkEvents()
        }

        getTpPeerId() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.mPeerId ? e(this.mPeerId) : l.nativeCall ? l.nativeCall.CallNativeFunction("GetTpPeerId", (t, n) => {
                        0 === t && (this.mPeerId = n), e(this.mPeerId)
                    }) : e(this.mPeerId)
                })
            })
        }

        getCurrentCategoryId() {
            return new Promise(e => {
                let t = void 0;
                l.nativeCall ? l.nativeCall.CallNativeFunction("GetCurrentCategoryId", (n, i) => {
                    0 === n && i && (t = i), e(t)
                }) : e(t)
            })
        }

        getTaskBaseInfo(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = null;
                    l.nativeCall ? l.nativeCall.CallNativeFunction("GetTaskBaseInfo", e, (e, i) => {
                        if (0 === e && i) try {
                            n = JSON.parse(i)
                        } catch (e) {
                            s.warning(e)
                        }
                        t(n)
                    }) : t(n)
                })
            })
        }

        getTaskStatus(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = void 0;
                    l.nativeCall ? l.nativeCall.CallNativeFunction("GetTaskStatus", e, (e, i) => {
                        0 === e && (n = i), t(n)
                    }) : t(n)
                })
            })
        }

        IsTaskExist(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = !1;
                    l.nativeCall ? l.nativeCall.CallNativeFunction("IsTaskExist", e, (e, i) => {
                        0 === e && (n = i), t(n)
                    }) : t(n)
                })
            })
        }

        getTaskDetail(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = null;
                    l.nativeCall ? l.nativeCall.CallNativeFunction("GetTaskInfo", e, void 0, "taskDetail", (e, i) => {
                        do {
                            if (s.information("getTaskDetail", e, i), 0 !== e || !i) break;
                            let t = null;
                            try {
                                t = JSON.parse(i)
                            } catch (e) {
                                s.warning(e)
                            }
                            if (!t || !t.fileList) break;
                            let a = t.infoId, r = t.type;
                            n = {infoId: a, files: new Map};
                            for (let e of t.fileList) {
                                let t = -1, i = e.url;
                                r === o.DownloadKernel.TaskType.Bt ? (t = e.index, i = this.createBtFileUrl(e.index, a)) : r === o.DownloadKernel.TaskType.Group && (t = e.taskId);
                                let s = {
                                    subId: t,
                                    taskStatus: e.status,
                                    filePath: e.filePath,
                                    fileName: e.fileName,
                                    gcid: e.gcid,
                                    cid: e.cid,
                                    url: i,
                                    refUrl: e.refUrl || "",
                                    fileSize: e.fileSize,
                                    downloadSize: e.downloadSize,
                                    errCode: e.errCode,
                                    isNeedDownload: e.isNeedDownload,
                                    dcdnStatus: e.dcdnStatus
                                };
                                n.files.set(t, s)
                            }
                        } while (0);
                        t(n)
                    }) : t(n)
                })
            })
        }

        createBtTaskUrl(e) {
            return "bt://" + e
        }

        createBtFileUrl(e, t) {
            let n = this.createBtTaskUrl(t);
            return n = n + "/" + e
        }

        startTask(e) {
            this.operateTask(e, "continue")
        }

        stopTask(e) {
            this.operateTask(e, "pause")
        }

        enableDcdnWithVipCert(e, t) {
            l.nativeCall && l.nativeCall.CallNativeFunction("EnableDcdnWithVipCert", e, t, (e, t) => {
                s.information("errorCode", e, "returnValue", t)
            })
        }

        updateDcdnWithVipCert(e, t) {
            l.nativeCall && l.nativeCall.CallNativeFunction("UpdateDcdnWithVipCert", e, t, (e, t) => {
                s.information("errorCode", e, "returnValue", t)
            })
        }

        disableDcdnWithVipCert(e) {
            l.nativeCall && l.nativeCall.CallNativeFunction("DisableDcdnWithVipCert", e, (e, t) => {
                s.information("errorCode", e, "returnValue", t)
            })
        }

        selectCategoryView(e, t, n) {
            l.nativeCall && l.nativeCall.CallNativeFunction("SelectCategoryView", e, t, n, (e, t) => {
                s.information("errorCode", e, "returnValue", t)
            })
        }

        attachDkEvents() {
            l.nativeCall.AttachNativeEvent("OnTaskInserted", (e, t, n) => {
                this.onTaskInserted(e, t, n)
            }), l.nativeCall.AttachNativeEvent("OnTaskRemoved", (e, t, n) => {
                this.onTaskRemoved(e, t, n)
            }), l.nativeCall.AttachNativeEvent("OnTaskStatusChanged", e => {
                {
                    let t = null;
                    try {
                        t = JSON.parse(e)
                    } catch (e) {
                        s.warning(e)
                    }
                    if (null !== t) for (let e in t) {
                        let n = t[e];
                        this.onTaskStatusChanged(Number(e), n)
                    }
                }
            }), l.nativeCall.AttachNativeEvent("OnTaskDetailChanged", e => {
                {
                    let t = null;
                    try {
                        t = JSON.parse(e)
                    } catch (e) {
                        s.warning(e)
                    }
                    if (null !== t) for (let e in t) {
                        let n = t[e];
                        this.onTaskDetailChanged(Number(e), n)
                    }
                }
            }), l.nativeCall.AttachNativeEvent("OnTaskDcdnStatusChanged", e => {
                {
                    let t = null;
                    try {
                        t = JSON.parse(e)
                    } catch (e) {
                        s.warning(e)
                    }
                    if (null !== t) for (let e in t) {
                        let n = t[e];
                        this.onTaskDcdnStatusChanged(Number(e), n)
                    }
                }
            }), l.nativeCall.AttachNativeEvent("OnBtSubFileDetailChanged", (e, t) => {
                {
                    let n = null;
                    try {
                        n = JSON.parse(t)
                    } catch (e) {
                        s.warning(e)
                    }
                    null !== n && this.onBtSubFileDetailChanged(e, n)
                }
            }), l.nativeCall.AttachNativeEvent("OnBtSubFileForbidden", (e, t) => {
                this.onBtSubFileForbidden(e, t)
            })
        }

        operateTask(e, t, n) {
            l.nativeCall && l.nativeCall.CallNativeFunction("OperateTask", e, t, n, e => {
                s.information("operateTask errorCode", e)
            })
        }

        onTaskInserted(e, t, n) {
            s.information("onTaskInserted categoryId:", e, ", categoryViewId:", t);
            let i = null;
            if (n) {
                try {
                    i = JSON.parse(n)
                } catch (e) {
                    s.warning(e)
                }
                if (null !== i) switch (t) {
                    case o.DownloadKernel.CategroyViewID.Downloading:
                        for (let e of i) this.fireEvent(u.taskInserted, e);
                        break;
                    case o.DownloadKernel.CategroyViewID.Completed:
                        for (let e of i) this.fireEvent(u.taskCompleted, e)
                }
            }
        }

        onTaskRemoved(e, t, n) {
            s.information("onTaskRemoved categoryId:", e, ", categoryViewId:", t);
            let i = [];
            if (n) switch (i = JSON.parse(n), t) {
                case o.DownloadKernel.CategroyViewID.Downloading:
                case o.DownloadKernel.CategroyViewID.Completed:
                    for (let e of i) this.fireEvent(u.taskRemoved, e)
            }
        }

        onTaskStatusChanged(e, t) {
            this.fireEvent(u.taskStatusChanged, e, t)
        }

        onTaskDetailChanged(e, t) {
            this.fireEvent(u.taskDetailChanged, e, t)
        }

        onTaskDcdnStatusChanged(e, t) {
            this.fireEvent(u.taskDcdnStatusChanged, e, t)
        }

        onBtSubFileDetailChanged(e, t) {
            this.fireEvent(u.btSubFileDetailChanged, e, t)
        }

        onBtSubFileForbidden(e, t) {
            this.fireEvent(u.btSubFileForbidden, e, t)
        }
    }

    t.DkHelper = d, function (e) {
        const t = new d;
        e.getHelper = function () {
            return t
        }
    }(t.DkHelperNS || (t.DkHelperNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        let t, n, i;
        !function (e) {
            e[e.Vip = 0] = "Vip", e[e.Try = 1] = "Try"
        }(t = e.VipTaskType || (e.VipTaskType = {})), function (e) {
            e[e.PlatinumVip = 0] = "PlatinumVip", e[e.SuperVip = 1] = "SuperVip"
        }(n = e.TryType || (e.TryType = {})), function (e) {
            e[e.Unkown = -1] = "Unkown", e[e.Init = 0] = "Init", e[e.CommitWait = 1] = "CommitWait", e[e.Commiting = 2] = "Commiting", e[e.CommitFailed = 3] = "CommitFailed", e[e.AcclerateWait = 4] = "AcclerateWait", e[e.SearchResource = 5] = "SearchResource", e[e.AcclerateFailed = 6] = "AcclerateFailed", e[e.AcclerateStoped = 7] = "AcclerateStoped", e[e.Acclerating = 8] = "Acclerating", e[e.Finished = 9] = "Finished"
        }(i = e.VipTaskStatus || (e.VipTaskStatus = {}))
    }(t.VipDownloadDefineNS || (t.VipDownloadDefineNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(54);
    var a;
    !function (e) {
        e[e.GreenNotify = 0] = "GreenNotify", e[e.RedNotify = 1] = "RedNotify", e[e.RedCancelNotify = 2] = "RedCancelNotify"
    }(a = t.ToastNotifyItemType || (t.ToastNotifyItemType = {}));

    class o extends i.default {
        constructor(e, t, n) {
            super(), this.id = "", this.message = "", this.duration = 0, this.id = e, this.message = t, this.duration = n
        }

        setMessage(e) {
            this.message = e
        }

        getMessage() {
            return this.message
        }

        setDuration(e) {
            this.duration = e
        }

        getDuration() {
            return this.duration
        }

        getId() {
            return this.id
        }

        getType() {
            return a.GreenNotify
        }

        getCancel() {
            return !1
        }
    }

    t.ToastNotifyItem = o;
    t.RedToastNotifyItem = class extends o {
        constructor(e, t, n) {
            super(e, t, n)
        }

        getType() {
            return a.RedNotify
        }
    };

    class r extends o {
        constructor(e, t, n) {
            super(e, t, n)
        }

        getCancel() {
            return !0
        }

        onCancel(e) {
            this.attachOnceListener("OnCancel", e)
        }

        cancel() {
            this.fireEvent("OnCancel")
        }
    }

    t.CancelToastNotifyItem = r;
    t.RedCancelToastNotifyItem = class extends r {
        constructor(e, t, n) {
            super(e, t, n)
        }

        getType() {
            return a.RedCancelNotify
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(1), o = n(5), r = n(37), s = n(19), l = n(6), u = a.default.getLogger("ThunderNewTask"),
        d = l.default(i.join(__rootDir, "../bin/ThunderHelper.node")),
        c = ".asf;.avi;.exe;.iso;.mp3;.mpeg;.mpg;.mpga;.ra;.rar;.rm;.rmvb;.tar;.wma;.wmp;.wmv;\n  .mov;.zip;.3gp;.chm;.mdf;.torrent;.jar;.msi;.arj;.bin;.dll;.psd;.hqx;.sit;.lzh;.gz;.tgz;.xlsx;.xls;.doc;.docx;.ppt;\n  .pptx;.flv;.swf;.mkv;.tp;.ts;.flac;.ape;.wav;.aac;.txt;.dat;.7z;.ttf;.bat;.xv;.xvx;.pdf;.mp4;.apk;.ipa;.epub;.mobi;\n  .deb;.sisx;.cab;.pxl;",
        h = ".a;.a3m;.a3w;.a4m;.a4p;.a4w;.a5w;.aam;.aas;.abf;.abk;.abs;.ace;.acm;.acp;.act;.ad;\n  .ada;.adb;.adf;.adi;.adm;.adp;.adr;.ads;.af2;.af3;.afm;.ai;.aif;.aifc;.aiff;.aim;.ais;.akw;.alb;.all;.ams;.anc;.ani;\n  .ans;.ant;.api;.aps;.ari;.arj;.art;.asa;.asc;.asd;.ase;.asf;.asm;.aso;.asp;.asv;.asx;.atw;.au;.avb;.avi;.avr;.avs;\n  .awd;.awr;.axx;.bak;.bas;.bat;.bdf;.bgl;.bi;.bif;.biff;.bin;.bk;.bk$;.bks;.bmk;.bmp;.book;.brx;.bsp;.btm;.bud;.bun;\n  .bw;.bwv;.c;.cab;.cad;.cal;.cap;.cas;.cb;.cc;.ccb;.cch;.cco;.cct;.cda;.cdf;.cdi;.cdm;.cdr;.cdt;.cdx;.cfg;.cgi;.cgm;\n  .chk;.chm;.chr;.cif;.cil;.class;.cll;.clp;.cls;.cmf;.cmv;.cmx;.cnf;.cnm;.cnt;.cod;.com;.cpl;.cpo;.cpp;.cpr;.cpt;.cpx;\n  .crd;.crp;.crt;.csc;.csp;.cst;.csv;.ctl;.cur;.cv;.cxx;.dat;.db;.dbc;.dbf;.dbx;.dcm;.dcs;.dct;.dcu;.dcx;.dem;.der;.dewf;\n  .dib;.dic;.dif;.dig;.dir;.diz;.dlg;.dll;.dls;.dmd;.dmf;.doc;.dot;.draw;.drv;.drw;.dsf;.dsg;.dsm;.dsp;.dsq;.dsw;.dtd;\n  .dun;.dv;.dxf;.dxr;.eda;.edd;.emd;.emf;.eml;.ephtml;.eps;.exe;.fav;.fax;.fcd;.fdf;.ffa;.ffk;.ffl;.ffo;.fif;.fla;.flc;\n  .fm;.fml;.fng;.fnk;.fon;.fot;.frt;.frx;.ftg;.fts;.gal;.gdb;.gdm;.gem;.gen;.getright;.gfi;.gfx;.gho;.gif;.gim;.gix;.gkh;\n  .gks;.gl;.gna;.gnt;.gnx;.gra;.grf;.grp;.hcom;.hgl;.hlp;.hpj;.hpp;.hst;.ht;.htm;.html;.htt;.htx;.icb;.icc;.icl;.icm;.ico;\n  .idd;.idf;.idq;.idx;.iff;.iges;.igf;.ilbm;.ima;.inf;.ini;.inrs;.ins;.int;.iqy;.iso;.ist;.isu;.iwc;.j62;.jar;.java;.jbf;\n  .jff;.jfif;.jif;.jmp;.jpe;.jpeg;.jpg;.js;.jsp;.jtf;.k25;.kar;.kdc;.key;.kfx;.kiz;.kkw;.kmp;.kqp;.lab;.lbm;.lbt;.lbx;.ldb;\n  .ldl;.leg;.lft;.lgo;.lha;.lib;.lin;.lis;.llx;.lnk;.log;.lst;.lu;.lyr;.lzh;.lzs;.m1v;.m3u;.mad;.maf;.mam;.map;.maq;.mar;.mat;\n  .mb1;.mbx;.mcr;.mdb;.mde;.mdl;.mdn;.mdw;.mdz;.mic;.mid;.mim;.mime;.mli;.mme;.mng;.mnu;.mod;.mov;.mp2;.mp3;.mpa;.mpe;.mpeg;\n  .mpg;.mpp;.mpr;.msg;.msi;.msn;.msp;.mst;.mtm;.nan;.nap;.ncb;.ncd;.ncf;.nff;.nft;.nil;.nist;.nls;.nlu;.ntx;.nwc;.nws;.obj;\n  .ocx;.ods;.ofn;.oft;.olb;.ole;.oogl;.opo;.p65;.pab;.part;.pas;.pbd;.pbl;.pbm;.pbr;.pcd;.pcl;.pcm;.pdd;.pdf;.pfm;.pgl;.pgm;\n  .ph;.php;.php3;.phtml;.pic;.pjt;.pjx;.pkg;.pli;.png;.pot;.ppa;.ppf;.ppm;.pps;.ppt;.prf;.prg;.prj;.prn;.prt;.psd;.psp;.pst;\n  .pwz;.qic;.qif;.qlb;.qry;.qtp;.qtx;.qw;.ra;.ram;.rar;.rdf;.reg;.rep;.res;.rft;.rgb;.rm;.rmd;.rpt;.rtf;.rul;.rvp;.s;.sav;.sbl;\n  .scc;.scf;.scp;.scr;.sct;.scx;.sdt;.sdv;.sdx;.sep;.sfd;.sfi;.sfr;.sfx;.sgi;.sgml;.shg;.shtml;.shw;.sig;.ska;.skl;.sl;.spl;\n  .sqc;.sqr;.str;.swa;.swf;.sys;.syw;.taz;.tga;.theme;.thn;.tif;.tiff;.tig;.tlb;.tmp;.tol;.tpl;.trm;.trn;.ttf;.txt;.txw;.udf;\n  .ult;.url;.use;.uwf;.vbp;.vbp;.vbw;.vbw;.vbx;.vbx;.vct;.vcx;.vda;.vda;.vir;.vir;.viv;.vqf;.vsd;.vsd;.vsl;.vsl;.vss;.vss;.vst;\n  .vst;.vsw;.vsw;.vxd;.vxd;.w3l;.wab;.wad;.wav;.wbk;.wcm;.wdb;.wfm;.wfn;.wil;.wiz;.wll;.wmf;.wow;.wp;.wpd;.wpf;.wpg;.wps;.wpt;.wr1;\n  .wrk;.wrl;.wrz;.x;.x16;.x32;.xar;.xbm;.xi;.xla;.xlb;.xlc;.xld;.xlk;.xll;.xlm;.xls;.xlt;.xlv;.xlw;.xnk;.xpm;.xwd;.xwf;.yal;.z;.zap;.zip;";
    !function (e) {
        function t(e) {
            let t = !1;
            do {
                if (void 0 === e || null === e) break;
                if ("" === e || "." === e) break;
                if (c.indexOf(e) > -1) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }

        function n(e) {
            let t = !1;
            do {
                if (void 0 === e || null === e) break;
                if ("" === e) break;
                if (e.match(/[\/\\"<>\?\*|]/)) break;
                t = !0
            } while (0);
            return t
        }

        function a(e) {
            let n = !1;
            do {
                if (void 0 === e || null === e) break;
                if ("" === e || "." === e) break;
                let i = r.TaskUtilHelper.getTaskFileType(void 0, e);
                if (i === r.TaskUtilHelper.FileExtType.Video || i === r.TaskUtilHelper.FileExtType.Music || i === r.TaskUtilHelper.FileExtType.Pic) {
                    n = !0;
                    break
                }
                n = t(e)
            } while (0);
            return n
        }

        function l(e) {
            let t = !1, o = i.parse(e);
            return t = n(o.name) && a(o.ext)
        }

        function f(e) {
            let t = {};
            do {
                if (void 0 === e || null === e) break;
                u.information("parseDynamicUrlArgs");
                let n = /([^&=?]+)=([^&]*)/g;
                for (; n.exec(e);) t[RegExp.$1] = RegExp.$2;
                u.information("parseDynamicUrlArgs ret ", t)
            } while (0);
            return t
        }

        function p(e) {
            let t = {pageFileName: void 0, args: void 0};
            do {
                if (void 0 === e || null === e) break;
                u.information("parseDynamicUrlPath"), e.match(/[\/]?([^?]*)\?([^\s]*)/) && (t.pageFileName = RegExp.$1, t.args = RegExp.$2), u.information("parseDynamicUrlPath ret", t)
            } while (0);
            return t
        }

        function g(e) {
            let t = "";
            do {
                if (void 0 === e || null === e) break;
                let n = p(e);
                if (void 0 !== n.args) {
                    let e = f(n.args);
                    for (let n in e) {
                        let i = e[n];
                        if (l(i)) {
                            t = i;
                            break
                        }
                    }
                }
                void 0 !== n.pageFileName && l(n.pageFileName) && (t = n.pageFileName)
            } while (0);
            return t
        }

        function k(e) {
            let t = [];
            do {
                if (void 0 === e || null === e) break;
                let n = g(e);
                if ("" !== n && !t.includes(n)) {
                    let e = m(n);
                    t.push(e)
                }
                let i = m(e);
                t.includes(i) || t.push(i)
            } while (0);
            return t
        }

        function m(e) {
            return d.parseFileNameFromP2spUrlPath(e)
        }

        function T(e) {
            return d.isThunderPrivateUrl(e)
        }

        function v(e) {
            return d.parseEd2kUrl(e)
        }

        function w(e) {
            return d.parseUrl(e)
        }

        e.isDownloadFileExtName = t, e.isIllegalFileName = n, e.isGoodFileExtName = a, e.isUsualFileExtName = function (e) {
            let t = !1;
            do {
                if (void 0 === e || null === e) break;
                if ("" === e || "." === e) break;
                if (a(e)) {
                    t = !0;
                    break
                }
                if (h.indexOf(e) > -1) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }, e.isGoodFileName = l, e.parseDynamicUrlArgs = f, e.parseDynamicUrlPath = p, e.parseFileNameFromDynamicUrlPath = g, e.getFileNameListFromUrlPath = k, e.getNameFromUrl = function (e) {
            let t = "index.html", n = s.ThunderHelper.getTaskTypeFromUrl(e);
            if (n === o.DownloadKernel.TaskType.P2sp) {
                let n = k(w(e).fullPath);
                n.length > 0 && (t = n[0])
            } else n === o.DownloadKernel.TaskType.Emule && (t = v(e).fileName);
            return t.replace(/[*?/\\:|<>\"]/g, "_")
        }, e.parseFileNameFromP2spUrlPath = m, e.isThunderPrivateUrl = T, e.parseThunderPrivateUrl = function (e) {
            let t = {url: e, codePage: -1};
            return T(e) && (t = d.parseThunderPrivateUrl(e)), t
        }, e.parseEd2kUrl = v, e.parseUrl = w, e.parseMagnetUrl = function (e) {
            return d.parseMagnetUrl(e)
        }, e.makeUrl = function (e) {
            return d.makeUrl(e)
        }
    }(t.ParseUrlFileNameNS || (t.ParseUrlFileNameNS = {}))
}, function (e, t) {
    e.exports = require("zlib")
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(209), a = n(131);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-button.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(211), a = n(133);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(523);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-select.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(208), a = n(135);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-input.vue", t.default = s.exports
}, function (e, t, n) {
    var i = n(99);
    e.exports = function (e) {
        if (!i(e)) throw TypeError(e + " is not an object!");
        return e
    }
}, function (e, t) {
    e.exports = function (e, t) {
        return {enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t}
    }
}, function (e, t, n) {
    var i = n(242), a = n(198);
    e.exports = Object.keys || function (e) {
        return i(e, a)
    }
}, function (e, t) {
    e.exports = !0
}, function (e, t) {
    var n = 0, i = Math.random();
    e.exports = function (e) {
        return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + i).toString(36))
    }
}, function (e, t) {
    t.f = {}.propertyIsEnumerable
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(212), a = n(141);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-text.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(126), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(522), o = n(558), r = n(116), s = n(124), l = n(559), u = n(560), d = n(117), c = n(561), h = n(562),
        f = n(115), p = n(4);
    let g = class extends p.Vue {
        handleInput(e, t = "") {
            "" === t ? this.$emit("input", e, this.item.name) : this.$emit("input", e, t)
        }
    };
    i([p.Prop({})], g.prototype, "item", void 0), i([p.Prop({})], g.prototype, "formData", void 0), i([p.Prop()], g.prototype, "value", void 0), g = i([p.Component({
        components: {
            confCheckbox: a.default,
            confRadio: o.default,
            confSelect: r.default,
            confText: s.default,
            confCheckboxInput: l.default,
            confCheckboxSelect: u.default,
            confInput: d.default,
            confSpeedText: h.default,
            confTextarea: c.default,
            confBtn: f.default
        }
    })], g), t.default = g
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(128), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(191), s = n(97), l = n(115), u = n(116), d = n(117), c = n(556), h = n(557), f = n(124);
    let p = class extends o.Vue {
        handleInput(e, t = "") {
            return a(this, void 0, void 0, function* () {
                if ("" === t ? this.$emit("input", e, this.item.name) : this.$emit("input", e, t), void 0 !== this.item.linkItem && e) {
                    let t = yield r.ConfigHelperNS.getValue(this.formData[this.item.linkItem.name].section, this.formData[this.item.linkItem.name].key, "");
                    "" !== e && this.$emit("input", t, this.item.linkItem.name)
                }
            })
        }
    };
    i([o.Prop({})], p.prototype, "item", void 0), i([o.Prop({})], p.prototype, "formData", void 0), i([o.Prop()], p.prototype, "value", void 0), i([o.Prop()], p.prototype, "label", void 0), p = i([o.Component({
        components: {
            confTip: s.default,
            confBtn: l.default,
            confSelect: u.default,
            confInput: d.default,
            confSpeed: c.default,
            confSpeedTime: h.default,
            confText: f.default
        }
    })], p), t.default = p
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(130), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4);
    let o = class extends a.Vue {
    };
    i([a.Prop()], o.prototype, "classes", void 0), i([a.Prop()], o.prototype, "text", void 0), o = i([a.Component({})], o), t.default = o
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(132), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(1), s = n(34), l = n(10), u = n(8), d = n(191), c = n(97),
        h = r.default.getLogger("generator-view");
    let f = class extends o.Vue {
        popDialog() {
            switch (this.item.boxType) {
                case"speedConfBox":
                    u.NativeCallModule.nativeCall.CallNativeFunction("ShowCustomDownloadModeDlg", () => {
                    });
                    break;
                case"browserGuideConfBox":
                    u.NativeCallModule.nativeCall.CallNativeFunction("ShowBrowserGuideDlg", () => {
                    });
                    break;
                case"function":
                    this.item.handle();
                    break;
                case"pop":
                    this.messagePop()
            }
        }

        messagePop() {
            return a(this, void 0, void 0, function* () {
                let e = l.ThunderUtil.deepCopy(this.item.pop.formData);
                for (let t in e) e[t].value = yield d.ConfigHelperNS.getValue(this.item.pop.formData[t].section, this.item.pop.formData[t].key, this.item.pop.formData[t].value);
                h.information("this.item", this.item.pop), s.MessageBox.pop({
                    title: this.item.pop.title,
                    size: this.item.pop.size,
                    schemas: this.item.pop.schema,
                    formData: e
                }).then(e => {
                    for (let t in e) d.ConfigHelperNS.setValue(e[t].section, e[t].key, e[t].value)
                }, () => {
                })
            })
        }
    };
    i([o.Prop({})], f.prototype, "item", void 0), i([o.Prop()], f.prototype, "classes", void 0), i([o.Prop()], f.prototype, "text", void 0), i([o.Prop()], f.prototype, "disabled", void 0), f = i([o.Component({components: {confTip: c.default}})], f), t.default = f
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(134), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(3), r = n(49);
    let s = class extends a.Vue {
        handleInput(e) {
            void 0 === this.name ? this.$emit("input", e) : this.$emit("input", e, this.name)
        }

        selectPath() {
            let e = o.remote.dialog.showOpenDialog({defaultPath: this.valueStr, properties: [this.fileType]});
            void 0 !== e && (void 0 !== this.name ? this.$emit("input", e[0], this.name) : this.$emit("input", e[0], this.item.name))
        }

        get valueStr() {
            return void 0 !== this.value ? this.value.value.toString() : this.formData[this.item.name].value.toString()
        }

        get fileType() {
            return this.item.slotOption
        }
    };
    i([a.Prop({})], s.prototype, "item", void 0), i([a.Prop()], s.prototype, "label", void 0), i([a.Prop({})], s.prototype, "formData", void 0), i([a.Prop()], s.prototype, "options", void 0), i([a.Prop()], s.prototype, "value", void 0), i([a.Prop()], s.prototype, "classes", void 0), i([a.Prop()], s.prototype, "name", void 0), i([a.Prop()], s.prototype, "placeHolder", void 0), s = i([a.Component({components: {SelectNative: r.default}})], s), t.default = s
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(136), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(226), o = n(4), r = n(115);
    let s = class extends o.Vue {
        constructor() {
            super(...arguments), this.shortcutKey = "", this.funKey = !0, this.valueData = " ", this.canRegister = !1, this.schema = null, this.tooltip = "", this.tooltipVisible = !1
        }

        get rules() {
            let e;
            do {
                if (!this.item.rules) break;
                e = this.item.rules.map(e => Array.isArray(e) ? new Function(e[0], e[1]) : e)
            } while (0);
            return e
        }

        handleInput(e) {
            this.valueData = e, this.$emit("input", e, this.name)
        }

        handleChange(e) {
            let t = e.target;
            this.valueData = t.value, void 0 !== this.item.ShortcutKey && this.canRegister ? this.$emit("input", t.value, this.name) : void 0 === this.item.ShortcutKey && this.$emit("input", t.value, this.name)
        }

        handleKeyDown(e) {
            if (void 0 !== this.item.ShortcutKey) {
                let t = /Digit\d/.test(e.code) || e.keyCode >= 65 && e.keyCode <= 90;
                if (this.shortcutKey = "", this.funKey = !1, this.canRegister = !1, this.valueData = "", "Backspace" === e.key) return this.valueData = "无", void this.$emit("input", "", this.name);
                e.altKey && (this.shortcutKey = "Alt+"), e.ctrlKey && (this.shortcutKey = "" === this.shortcutKey ? "Crtl+" : `${this.shortcutKey}Crtl+`), e.shiftKey && (this.shortcutKey = "" === this.shortcutKey ? "Shift+" : `${this.shortcutKey}Shift+`);
                let n = "Alt" === e.key || "Shift" === e.key || "Control" === e.key ? "" : t ? e.code[e.code.length - 1] : e.key;
                this.valueData = this.shortcutKey + n, "" !== n && (this.funKey = !0), this.shortcutKey + n !== n && "" !== n && (this.canRegister = !0, this.valueData = this.shortcutKey + n, this.$emit("input", this.valueData, this.name))
            }
        }

        handleKeyup() {
            this.funKey || void 0 === this.item.ShortcutKey || (this.valueData = "无", this.$emit("input", "", this.name))
        }

        mounted() {
            this.valueData = this.value.value
        }

        validate(e) {
            this.item.rules && this.schema.validate({[this.item.name]: e}, (e, t) => {
                this.tooltipVisible = null !== e
            })
        }

        outFocus() {
            this.tooltipVisible = !1
        }

        created() {
            this.item.rules && (this.schema = new a.default({[this.item.name]: this.rules}))
        }
    };
    i([o.Prop()], s.prototype, "item", void 0), i([o.Prop({})], s.prototype, "formData", void 0), i([o.Prop()], s.prototype, "disabled", void 0), i([o.Prop()], s.prototype, "value", void 0), i([o.Prop()], s.prototype, "name", void 0), i([o.Prop()], s.prototype, "label", void 0), s = i([o.Component({components: {confBtn: r.default}})], s), t.default = s
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(138), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(226), o = n(4);
    let r = class extends o.Vue {
        constructor() {
            super(...arguments), this.schema = null, this.tooltip = "", this.tooltipVisible = !1, this.timeout = null
        }

        get rules() {
            return (this.item.rules || []).map(e => Array.isArray(e) ? new Function(e[0], e[1]) : e)
        }

        get doEmit() {
            return this.item.doEmit ? new Function(this.item.doEmit[0], this.item.doEmit[1]) : null
        }

        get doBlur() {
            return this.item.doBlur ? new Function(this.item.doBlur[0], this.item.doBlur[1]) : null
        }

        get sliderValue() {
            let e;
            return e = "number" == typeof this.value ? this.value : "object" == typeof this.value ? Number(this.value.value) : Number(this.value), this.item.scales && this.item.scales.length ? Math.min(Math.max(this.item.scales[0], e), this.item.scales[this.item.scales.length - 1]) : e
        }

        handleSliderUpdate(e) {
            this.handleInput(e.toString())
        }

        handleInput(e) {
            this.doEmit ? this.doEmit(this.item.name, e, this.value.value) : this.$emit("input", e, this.item.name), this.doValidate(e)
        }

        doValidate(e) {
            this.schema && this.schema.validate({[this.item.name]: e}, (e, t) => {
                null === e ? this.hideTooltip() : this.showTooltip(e[0].message)
            })
        }

        handleBlur() {
            let e;
            e = "object" == typeof this.value ? this.value.value : this.value, this.doBlur && this.doBlur(this.item.name, e), this.$nextTick(() => {
                let e;
                e = "object" == typeof this.value ? this.value.value : this.value, this.doValidate(e)
            })
        }

        showTooltip(e) {
            this.tooltip = e, this.$refs.tooltip.show(this.$refs.input.$el)
        }

        hideTooltip() {
            this.$refs.tooltip.hide()
        }

        created() {
            this.item.rules && (this.schema = new a.default({[this.item.name]: this.rules}))
        }
    };
    i([o.Prop({})], r.prototype, "item", void 0), i([o.Prop()], r.prototype, "value", void 0), i([o.Prop()], r.prototype, "disabled", void 0), r = i([o.Component], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(140), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(49);
    let r = class extends a.Vue {
        constructor() {
            super(...arguments), this.data = [{
                label: "开始限速时间",
                options: [{index: 0, type: "hour"}, {index: 1, type: "minute"}]
            }, {
                label: "结束限速时间",
                options: [{index: 2, type: "hour"}, {index: 3, type: "minute"}]
            }], this.hours = Array.from({length: 24}, (e, t) => t), this.minutes = Array.from({length: 60}, (e, t) => t)
        }

        handleInput(e, t) {
            let n = this.value.slice(0), i = Object.assign({}, n[t]);
            i.value = e, n[t] = i, this.$emit("input", n, this.item.name)
        }
    };
    i([a.Prop({})], r.prototype, "item", void 0), i([a.Prop()], r.prototype, "value", void 0), i([a.Prop()], r.prototype, "disabled", void 0), r = i([a.Component({components: {SelectNative: o.default}})], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(142), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(8);
    let r = class extends a.Vue {
        constructor() {
            super(...arguments), this.userId = ""
        }

        get clas() {
            return void 0 !== this.classes ? this.classes : this.item.classes
        }

        get textContent() {
            return void 0 !== this.item.text ? this.item.text : this.text
        }

        mounted() {
            void 0 !== this.item.isReleventUser && this.item.isReleventUser && (o.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                this.userId = e
            }), o.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                this.userId = ""
            }))
        }
    };
    i([a.Prop({})], r.prototype, "item", void 0), i([a.Prop()], r.prototype, "classes", void 0), i([a.Prop()], r.prototype, "extIndex", void 0), i([a.Prop()], r.prototype, "text", void 0), r = i([a.Component({})], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(144), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(97), r = n(115), s = n(117), l = n(8), u = n(1).default.getLogger("confRadio");
    let d = class extends a.Vue {
        constructor() {
            super(...arguments), this.userId = ""
        }

        handleInput(e, t = "") {
            "" === t ? this.$emit("input", e, this.item.name) : this.$emit("input", e, t)
        }

        mounted() {
            void 0 !== this.item.isReleventUser && this.item.isReleventUser && (u.information("...isReleventUser"), l.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                this.userId = e
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                this.userId = ""
            }))
        }
    };
    i([a.Prop({})], d.prototype, "item", void 0), i([a.Prop({})], d.prototype, "formData", void 0), i([a.Prop()], d.prototype, "value", void 0), d = i([a.Component({
        components: {
            confTip: o.default,
            confBtn: r.default,
            confInput: s.default
        }
    })], d), t.default = d
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(146), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(97), r = n(117), s = n(124), l = n(116);
    let u = class extends a.Vue {
        handleInput(e, t = "") {
            "" === t ? this.$emit("input", e, this.item.name) : this.$emit("input", e, t)
        }
    };
    i([a.Prop({})], u.prototype, "item", void 0), i([a.Prop({})], u.prototype, "formData", void 0), u = i([a.Component({
        components: {
            confTip: o.default,
            confInput: r.default,
            confText: s.default,
            confSelect: l.default
        }
    })], u), t.default = u
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(148), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(97), r = n(124), s = n(116);
    let l = class extends a.Vue {
        handleInput(e, t = "") {
            "" === t ? this.$emit("input", e, this.item.name) : this.$emit("input", e, t)
        }
    };
    i([a.Prop({})], l.prototype, "item", void 0), i([a.Prop({})], l.prototype, "formData", void 0), l = i([a.Component({
        components: {
            confTip: o.default,
            confText: r.default,
            confSelect: s.default
        }
    })], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(150), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4);
    let o = class extends a.Vue {
        handleChange(e) {
            let t = e.target;
            this.$emit("input", t.value, this.item.name)
        }
    };
    i([a.Prop({})], o.prototype, "item", void 0), i([a.Prop({})], o.prototype, "formData", void 0), i([a.Prop()], o.prototype, "value", void 0), i([a.Prop()], o.prototype, "label", void 0), o = i([a.Component({components: {}})], o), t.default = o
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(152), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(191);
    let s = class extends o.Vue {
        constructor() {
            super(...arguments), this.maxDownloadSpeed = "", this.maxUploadSpeed = ""
        }

        onFormDataChange(e) {
            this.updateMaxDownloadSpeed(), this.updateMaxUploadSpeed()
        }

        standardNumber(e) {
            let t = parseInt(e + "", 10);
            return t > 9 ? t + "" : "0" + t
        }

        updateMaxDownloadSpeed() {
            return a(this, void 0, void 0, function* () {
                let e = "不限速";
                this.formData["ConfigNet-ConfigNet_Custom_DownloadSpeedChk"].value && (e = (yield r.ConfigHelperNS.getValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeedTmp", 1024)) + "KB/S"), this.maxDownloadSpeed = e
            })
        }

        updateMaxUploadSpeed() {
            return a(this, void 0, void 0, function* () {
                let e = "不限速";
                this.formData["ConfigNet-ConfigNet_Custom_UploadSpeedChk"].value && (e = (yield r.ConfigHelperNS.getValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeedTmp", 1024)) + "KB/S"), this.maxUploadSpeed = e
            })
        }
    };
    i([o.Prop({})], s.prototype, "item", void 0), i([o.Prop({})], s.prototype, "formData", void 0), i([o.Watch("formData", {immediate: !0})], s.prototype, "onFormDataChange", null), s = i([o.Component], s), t.default = s
}, , , , , function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(54), o = n(112), r = i.default.getLogger("ToastNotifyManager");
    !function (e) {
        e.notifyIdAutoDeleteNonExistTasks = "auto_delete_nonexsit_tasks", e.notifyIdScheduleTaskComplete = "schedule_task_complete", e.notifyIdTaskOperatorDestroyTask = "task_operator_destroy_task", e.notifyIdTaskOperatorCopyLink = "task_operator_copy_link", e.notifyIdTaskOperatorCopyMagnetLink = "task_operator_copy_magnet_link", e.notifyIdTaskOperatorSaveAsTorrent = "task_operator_save_as_torrent", e.notifyIdTaskOperatorRecoverTask = "task_operator_recover_task", e.notifyIdScheduleTaskDownloadMode = "schedule_task_download_mode", e.notifyIdTaskOperatorMoveTask = "task_operator_move_task";

        class t extends a.default {
            constructor() {
                super(...arguments), this.notifyList = []
            }

            getTopNotify() {
                return this.notifyList.length < 1 ? null : this.notifyList[this.notifyList.length - 1]
            }

            closeNotify(e) {
                r.information("closeNotify notifyId:", e);
                for (let t = 0; t < this.notifyList.length; t++) if (this.notifyList[t].getId() === e) {
                    let n = this.notifyList[t];
                    this.notifyList.splice(t, 1), this.fireEvent("OnCloseNotify", e, n);
                    break
                }
            }

            updateNotify(e, t, n) {
                r.information("updateNotify notifyId:", e, ", msg:", t, ", duration:", n);
                for (let i = 0; i < this.notifyList.length; i++) {
                    let a = this.notifyList[i];
                    if (a.getId() === e) return a.setMessage(t), a.setDuration(n), this.fireEvent("OnUpdateNotify", e, a), !0
                }
                return !1
            }

            showNotify(e, t, n, i) {
                r.information("showNotify notifyId:", e, ", notifyType:", o.ToastNotifyItemType, ", message:", n, ", duration:", i);
                let a = null;
                switch (t) {
                    case o.ToastNotifyItemType.GreenNotify:
                        a = new o.ToastNotifyItem(e, n, i);
                        break;
                    case o.ToastNotifyItemType.RedCancelNotify:
                        a = new o.RedCancelToastNotifyItem(e, n, i);
                        break;
                    case o.ToastNotifyItemType.RedNotify:
                        a = new o.RedToastNotifyItem(e, n, i)
                }
                return a ? (this.notifyList.push(a), this.fireEvent("OnShowNotify", e, a), a) : a
            }
        }

        e.ToastNotifyManager = t;
        const n = new t;
        e.getToastNotifyManger = function () {
            return n
        }
    }(t.ToastNotifyManagerNS || (t.ToastNotifyManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5);
    !function (e) {
        let t, n, a;

        function o(e) {
            let o = null, r = e.receiveSize, s = e.srcUsing;
            do {
                if (e.taskType === i.DownloadKernel.TaskType.P2sp) {
                    if (r > 0) {
                        o = t.Stared;
                        break
                    }
                    if (e.taskStatus === i.DownloadKernel.TaskStatus.StartPending) {
                        o = t.Starting;
                        break
                    }
                    if (e.taskStatus === i.DownloadKernel.TaskStatus.Started && 0 === r) {
                        o = t.Connect;
                        break
                    }
                } else if (e.taskType === i.DownloadKernel.TaskType.Bt) {
                    if (r > 0) {
                        o = n.Stared;
                        break
                    }
                    if (e.taskStatus === i.DownloadKernel.TaskStatus.StartPending) {
                        o = n.Analy;
                        break
                    }
                    if (e.taskStatus === i.DownloadKernel.TaskStatus.Started) {
                        o = s > 0 ? n.Connect : n.Search;
                        break
                    }
                } else if (e.taskType === i.DownloadKernel.TaskType.Emule) {
                    if (r > 0) {
                        o = a.Stared;
                        break
                    }
                    if (e.taskStatus === i.DownloadKernel.TaskStatus.StartPending) {
                        o = a.Starting;
                        break
                    }
                    if (e.taskStatus === i.DownloadKernel.TaskStatus.Started) {
                        o = s > 0 ? a.Connect : a.Search;
                        break
                    }
                }
            } while (0);
            return o
        }

        function r(e) {
            let t = "未知错误，无法继续下载";
            switch (e > 704 && e <= 799 && (e = 701), e) {
                case 1:
                    t = "任务创建失败，无法继续下载";
                    break;
                case 2:
                    t = "任务参数错误，无法继续下载";
                    break;
                case 3:
                    t = "链接失效，无法继续下载";
                    break;
                case 4:
                    t = "任务配置文件错误，无法继续下载";
                    break;
                case 5:
                    t = "任务连接超时，无法继续下载";
                    break;
                case 6:
                    t = "文件校验失败，无法继续下载";
                    break;
                case 7:
                    t = "任务包含违规内容，无法继续下载";
                    break;
                case 8:
                    t = "下载引擎加速出错，无法继续下载";
                    break;
                case 9:
                    t = "文件路径超出系统限制，无法继续下载";
                    break;
                case 201:
                    t = "文件创建失败，无法继续下载";
                    break;
                case 202:
                    t = "文件写入失败，无法继续下载";
                    break;
                case 203:
                    t = "文件读取失败，无法继续下载";
                    break;
                case 204:
                    t = "文件重命名失败，无法继续下载";
                    break;
                case 205:
                    t = "磁盘空间不足，无法继续下载";
                    break;
                case 601:
                    t = "BT任务已存在，无法继续下载";
                    break;
                case 701:
                    t = "任务包含违规内容，无法继续下载";
                    break;
                case 702:
                    t = "帐号存在异常，无法继续下载";
                    break;
                case 703:
                    t = "根据当地法律法规，文件无法下载";
                    break;
                case 704:
                    t = "应版权方要求，文件无法下载";
                    break;
                case 10001:
                    t = "下载引擎未启动，无法继续下载";
                    break;
                case 10002:
                    t = "种子文件不存在，无法继续下载"
            }
            return t
        }

        e.canStartSelectedTask = function (e, t) {
            let n = !1;
            if (e === i.DownloadKernel.CategroyViewID.Downloading) for (let e of t) {
                let t = e.taskStatus;
                if (t === i.DownloadKernel.TaskStatus.StandBy || t === i.DownloadKernel.TaskStatus.Stopped || t === i.DownloadKernel.TaskStatus.Failed || t === i.DownloadKernel.TaskStatus.Unkown) {
                    n = !0;
                    break
                }
            }
            return n
        }, e.canStopSelectedTask = function (e, t) {
            let n = !1;
            if (e === i.DownloadKernel.CategroyViewID.Downloading) for (let e of t) {
                let t = e.taskStatus;
                if (t === i.DownloadKernel.TaskStatus.Started || t === i.DownloadKernel.TaskStatus.StartWaiting) {
                    n = !0;
                    break
                }
            }
            return n
        }, e.canDeleteSelectedTask = function (e, t) {
            let n = !1;
            if (t.length > 0) for (let e of t) {
                let t = e.taskStatus;
                if (t !== i.DownloadKernel.TaskStatus.StartPending && t !== i.DownloadKernel.TaskStatus.StopPending && t !== i.DownloadKernel.TaskStatus.DestroyPending) {
                    n = !0;
                    break
                }
                n = !1
            }
            return n
        }, e.canMarkAsOpened = function (e) {
            let t = !1;
            do {
                if (null === e || 0 === e.length) break;
                for (let n of e) if (0 === n.userRead) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }, e.canCopySelectTaskLink = function (e) {
            let t = !1;
            do {
                if (void 0 === e) break;
                if (0 === e.length) break;
                for (let n of e) if (n.taskType === i.DownloadKernel.TaskType.P2sp || n.taskType === i.DownloadKernel.TaskType.Emule || n.taskType === i.DownloadKernel.TaskType.Group) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }, e.canMergeSelectedTaskIntoGroup = function (e) {
            let t = !0;
            do {
                if (void 0 === e || null === e) {
                    t = !1;
                    break
                }
                if (e.length <= 1) {
                    t = !1;
                    break
                }
                for (let n of e) if (n.taskType === i.DownloadKernel.TaskType.Bt || n.taskType === i.DownloadKernel.TaskType.Group) {
                    t = !1;
                    break
                }
            } while (0);
            return t
        }, function (e) {
            e[e.Unkown = 0] = "Unkown", e[e.Starting = 1] = "Starting", e[e.Connect = 2] = "Connect", e[e.Stared = 3] = "Stared"
        }(t = e.P2spStartStatus || (e.P2spStartStatus = {})), function (e) {
            e[e.Unkown = 0] = "Unkown", e[e.Analy = 1] = "Analy", e[e.Search = 2] = "Search", e[e.Connect = 3] = "Connect", e[e.Stared = 4] = "Stared"
        }(n = e.BtStartStatus || (e.BtStartStatus = {})), function (e) {
            e[e.Unkown = 0] = "Unkown", e[e.Starting = 1] = "Starting", e[e.Search = 2] = "Search", e[e.Connect = 3] = "Connect", e[e.Stared = 4] = "Stared"
        }(a = e.EmuleStartStatus || (e.EmuleStartStatus = {})), e.getTaskStartStatus = o, e.getTaskStartStatusPrompt = function (e) {
            let r = void 0;
            do {
                if (null === e) break;
                if (e.taskStatus === i.DownloadKernel.TaskStatus.StartPending || e.taskStatus === i.DownloadKernel.TaskStatus.Started) {
                    if (e.taskType === i.DownloadKernel.TaskType.P2sp) {
                        let n = o(e);
                        if (null === n) break;
                        n === t.Connect && (r = "连接资源");
                        break
                    }
                    if (e.taskType === i.DownloadKernel.TaskType.Bt) {
                        let t = o(e);
                        if (null === t) break;
                        t === n.Analy ? r = "解析种子" : t === n.Search ? r = "寻找资源" : t === n.Connect && (r = "连接资源");
                        break
                    }
                    if (e.taskType === i.DownloadKernel.TaskType.Emule) {
                        let t = o(e);
                        if (null === t) break;
                        t === a.Search ? r = "寻找资源" : t === a.Connect && (r = "连接资源")
                    }
                }
            } while (0);
            return r
        }, e.getTaskStatusPrompt = function (e) {
            let t = void 0;
            do {
                if (null === e) break;
                let n = e.taskStatus;
                if (n === i.DownloadKernel.TaskStatus.Unkown) {
                    t = "未知错误";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.StandBy) {
                    t = "准备开始";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.PreDownloading) {
                    t = "等待中";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.StartWaiting) {
                    t = "排队等待";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.StartPending) {
                    t = "正在开始";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.StopPending) {
                    t = "正在停止";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.Stopped) {
                    t = "暂停";
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.Failed) {
                    t = "任务出错", t = r(e.errorCode);
                    break
                }
                if (n === i.DownloadKernel.TaskStatus.Succeeded || n === i.DownloadKernel.TaskStatus.Seeding) {
                    t = "完成";
                    break
                }
            } while (0);
            return t
        }, e.getValueForSort = function (e) {
            let t = 0, n = e.taskStatus;
            if (n === i.DownloadKernel.TaskStatus.PreDownloading ? t = 11 : n === i.DownloadKernel.TaskStatus.Started ? t = 10 : n === i.DownloadKernel.TaskStatus.StartPending ? t = 9 : n === i.DownloadKernel.TaskStatus.StartWaiting ? t = 8 : n === i.DownloadKernel.TaskStatus.StopPending ? t = 7 : n === i.DownloadKernel.TaskStatus.DestroyPending ? t = 6 : n === i.DownloadKernel.TaskStatus.Unkown ? t = 5 : n === i.DownloadKernel.TaskStatus.StandBy ? t = 4 : n === i.DownloadKernel.TaskStatus.Stopped ? t = 3 : n === i.DownloadKernel.TaskStatus.Failed ? t = 2 : n === i.DownloadKernel.TaskStatus.Seeding ? t = 1 : n === i.DownloadKernel.TaskStatus.Succeeded && (t = 0), n === i.DownloadKernel.TaskStatus.Started) {
                let n = o(e);
                t = null === n || 4 === n ? t + .9 - 1 / (e.downloadSpeed + 1.2) : t + n / 10 - .4
            }
            return n === i.DownloadKernel.TaskStatus.StartPending && e.taskType === i.DownloadKernel.TaskType.Bt && (t += .1), t
        }, e.getTaskErrorInfoByCode = r
    }(t.TaskStatusHelper || (t.TaskStatusHelper = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(55), o = n(2), r = n(6), s = n(1), l = n(3), u = n(20), d = n(11), c = n(5), h = n(19), f = n(113),
        p = s.default.getLogger("ThunderNewTask"), g = r.default(o.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        let t;

        function r(e, t, n) {
            void 0 === n && (n = h.ThunderHelper.getTaskTypeFromUrl(e));
            let i = void 0, a = -1, r = "", s = "";
            do {
                if (n !== c.DownloadKernel.TaskType.Emule && n !== c.DownloadKernel.TaskType.P2sp) break;
                let l = f.ParseUrlFileNameNS.getNameFromUrl(e), u = o.extname(l);
                if ("" !== u && (r = u.substring(1)), n === c.DownloadKernel.TaskType.Emule) {
                    let t = f.ParseUrlFileNameNS.parseEd2kUrl(e);
                    a = t.fileSize, s = t.fileHash
                }
                i = {
                    url: e,
                    cookie: "",
                    referer: "",
                    fileName: l,
                    browser: "",
                    statClick: t = void 0 === t ? "" : t,
                    fileSize: a,
                    fileHash: s,
                    fileType: r
                };
                break
            } while (0);
            return i
        }

        !function (e) {
            e.PreNewTask = "PreNewTaskCtrl", e.NewTask = "NewTaskCtrl", e.UrlFilter = "UrlFilterCtrl", e.Magnet = "BtCtrl"
        }(t = e.TaskCtrlType || (e.TaskCtrlType = {})), e.contructTaskByUrl = function (e, t, n) {
            let i = r(e, t, n);
            p.verbose(e);
            let a = 5;
            return null !== i.thread && void 0 !== i.thread && (a = i.thread), {
                taskType: n,
                data: i,
                setting: {
                    loginFtp: !1,
                    ftpInfo: {userName: "", password: ""},
                    onlyOrigin: !1,
                    thread: a,
                    note: "",
                    openAfterDownload: !1
                },
                selected: !0
            }
        }, e.contructTaskByUrlData = function (e, t) {
            let n = void 0, i = h.ThunderHelper.getTaskTypeFromUrl(e.url);
            if (i === c.DownloadKernel.TaskType.Emule && (void 0 === e.fileHash || "" === e.fileHash)) {
                let t = f.ParseUrlFileNameNS.parseEd2kUrl(e.url);
                e.fileSize = t.fileSize, e.fileHash = t.fileHash
            }
            if (void 0 !== e.fileSize && null !== e.fileSize && 0 !== e.fileSize || (e.fileSize = -1), void 0 !== e.fileName && "" !== e.fileName || (e.fileName = f.ParseUrlFileNameNS.getNameFromUrl(e.url)), e.fileName = e.fileName.replace(/[*?/\\:|<>\"]/g, "_"), void 0 === e.fileType || "" === e.fileType) {
                let t = o.extname(e.fileName);
                "" !== t && (e.fileType = t.substring(1))
            }
            if (void 0 === t || null === t) {
                let n = 5;
                null !== e.thread && void 0 !== e.thread && (n = e.thread), t = {
                    loginFtp: !1,
                    ftpInfo: {userName: "", password: ""},
                    onlyOrigin: !1,
                    thread: n,
                    note: "",
                    openAfterDownload: !1
                }
            }
            return n = {taskType: i, data: e, setting: t, selected: !0}
        }, e.getDesktopPath = function () {
            return g.getDesktopPath()
        }, e.getDocumentPath = function () {
            return g.getDocumentPath()
        }, e.queryFileExists = function (e) {
            return g.queryFileExists(e)
        }, e.isFilePathValid = function (e) {
            return g.isFilePathValid(e)
        }, e.getNewTaskDataByUrl = r, e.getDownloadResult = function (e, ...t) {
            return i(this, void 0, void 0, function* () {
                let n = {result: !1};
                do {
                    if (e.length < 3) break;
                    if (!(yield d.FileSystemAWNS.mkdirsAW(e))) {
                        n.message = "不合法的存储路径";
                        break
                    }
                    l.ipcRenderer.send(u.ThunderChannelList.channelRMNewTaskCreateNewTask, e, ...t), n = yield new Promise(e => {
                        l.ipcRenderer.once(u.ThunderChannelList.channelMRNewTaskCreateNewTaskResult, (t, n, i) => {
                            e({result: n, message: i})
                        })
                    })
                } while (0);
                return n
            })
        }, e.readThunderUnionConfig = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = null, i = null;
                try {
                    a.default.defaults.adapter = n(71), t = yield a.default.get(e)
                } catch (e) {
                    p.information(e)
                }
                return null !== t && void 0 !== t.status && 200 === t.status && void 0 !== t.data && null !== t.data && (i = t.data), i
            })
        }
    }(t.ThunderNewtaskHelperNS || (t.ThunderNewtaskHelperNS = {}))
}, function (e, t) {
    (function () {
        var t, n, i, a, o, r, s = [].slice, l = {}.hasOwnProperty;
        t = function () {
            var e, t, n, i, o, r;
            if (r = arguments[0], o = 2 <= arguments.length ? s.call(arguments, 1) : [], a(Object.assign)) Object.assign.apply(null, arguments); else for (e = 0, n = o.length; e < n; e++) if (null != (i = o[e])) for (t in i) l.call(i, t) && (r[t] = i[t]);
            return r
        }, a = function (e) {
            return !!e && "[object Function]" === Object.prototype.toString.call(e)
        }, o = function (e) {
            var t;
            return !!e && ("function" == (t = typeof e) || "object" === t)
        }, n = function (e) {
            return a(Array.isArray) ? Array.isArray(e) : "[object Array]" === Object.prototype.toString.call(e)
        }, i = function (e) {
            var t;
            if (n(e)) return !e.length;
            for (t in e) if (l.call(e, t)) return !1;
            return !0
        }, r = function (e) {
            var t, n;
            return o(e) && (n = Object.getPrototypeOf(e)) && (t = n.constructor) && "function" == typeof t && t instanceof t && Function.prototype.toString.call(t) === Function.prototype.toString.call(Object)
        }, e.exports.assign = t, e.exports.isFunction = a, e.exports.isObject = o, e.exports.isArray = n, e.exports.isEmpty = i, e.exports.isPlainObject = r
    }).call(this)
}, , , function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(6), s = n(11), l = n(5), u = n(28), d = n(34), c = n(13), h = n(8), f = n(7),
        p = n(43), g = n(86), k = o.default.getLogger("Thunder.TaskOperator"),
        m = r.default(a.join(__rootDir, "../bin/ThunderHelper.node")), T = u.DownloadKernelTaskManager.getTaskManager();
    !function (e) {
        function t(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    h.NativeCallModule.nativeCall.CallNativeFunction("IsLogined", function (n, i) {
                        k.verbose(n), i ? h.NativeCallModule.nativeCall.CallNativeFunction("GetUserInfo", e, function (e, n) {
                            k.verbose(e), t(n)
                        }) : t("")
                    })
                })
            })
        }

        function n(e) {
            let t = m.getInstallChannel();
            e = void 0 === e ? "" : e;
            let n = a.join(__rootDir, "../../Thunder.exe");
            return `xl_thunder_pc|${m.getFileVersion(n)}|${t}|${e}`
        }

        function o(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                do {
                    if (f.isNullOrUndefined(e)) break;
                    let n = e.savePath, i = e.taskName;
                    void 0 !== i && i.indexOf(".") === i.length - 1 && (i = i.substring(0, i.length - 1));
                    let o = a.join(n, i);
                    if (e.taskType === l.DownloadKernel.TaskType.P2sp || e.taskType === l.DownloadKernel.TaskType.Emule) ; else if (e.taskType === l.DownloadKernel.TaskType.Bt) {
                        let t = T.getTaskFromTaskId(e.taskId).getExtraObject(), n = t.getDownloadFile();
                        if (1 === n.length) {
                            let e = t.getBtFileList();
                            for (let [, t]of e) {
                                if (t.getBtFileAttribute(l.DownloadKernel.BtFileAttribute.RealIndex) === n[0]) {
                                    let e = t.getBtFileAttribute(l.DownloadKernel.BtFileAttribute.FilePath),
                                        n = t.getBtFileAttribute(l.DownloadKernel.BtFileAttribute.FileName);
                                    o = a.join(o, e, n);
                                    break
                                }
                            }
                        }
                    } else if (e.taskType === l.DownloadKernel.TaskType.Group) {
                        o = n;
                        let i = T.getTaskFromTaskId(e.taskId).getExtraObject(), r = i.getSubTaskCount();
                        for (let e = 0; e < r; ++e) {
                            let n = i.getSubTaskByIndex(e);
                            if (1 === n.getTaskAttribute(l.DownloadKernel.TaskAttribute.DownloadSubTask)) {
                                let e = n.getTaskAttribute(l.DownloadKernel.TaskAttribute.SavePath),
                                    i = n.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskName), o = a.join(e, i);
                                if (yield s.FileSystemAWNS.existsAW(o)) {
                                    t = !0;
                                    break
                                }
                            }
                        }
                        break
                    }
                    t = yield s.FileSystemAWNS.existsAW(o)
                } while (0);
                return t
            })
        }

        function r(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                do {
                    let n = e.taskStatus;
                    if (n === l.DownloadKernel.TaskStatus.StartPending || n === l.DownloadKernel.TaskStatus.StopPending || n === l.DownloadKernel.TaskStatus.DestroyPending) break;
                    let i = e.savePath, r = e.taskName;
                    void 0 !== r && r.indexOf(".") === r.length - 1 && (r = r.substring(0, r.length - 1));
                    let u = a.join(i, r), d = e.taskType;
                    if (d === l.DownloadKernel.TaskType.Bt) {
                        if ("" === r) {
                            t = yield s.FileSystemAWNS.existsAW(i);
                            break
                        }
                        t = yield s.FileSystemAWNS.existsAW(u)
                    } else d === l.DownloadKernel.TaskType.Group ? (t = yield s.FileSystemAWNS.existsAW(i)) && (t = yield o(e)) : t = yield s.FileSystemAWNS.existsAW(u)
                } while (0);
                return t
            })
        }

        e.getUsrInfoAw = t, e.getUserLoginInfo = function () {
            return i(this, void 0, void 0, function* () {
                let e = yield t("sessionid"), n = yield t("userid");
                return null === e || void 0 === e || "" === e ? "" : "/ssessionid " + e + " /suserid " + n
            })
        }, e.redownloadTask = function (e, t, a) {
            return i(this, void 0, void 0, function* () {
                if (void 0 === t) if (1 === e.length) {
                    let n = e[0].taskStatus;
                    t = n === l.DownloadKernel.TaskStatus.Succeeded || n === l.DownloadKernel.TaskStatus.Seeding ? yield r(e[0]) : n !== l.DownloadKernel.TaskStatus.Failed
                } else t = !0;
                let o = "mypc";
                if (-1 !== p.default.getCurrentCategoryId() && (o = "private"), t) {
                    let t = !1;
                    1 === e.length && e[0].taskType === l.DownloadKernel.TaskType.P2sp && (t = !0), d.MessageBox.confirm({
                        title: "重新下载会删除本地的文件，确定要重新下载吗？",
                        type: d.MessageBox.ConfirmType.Info,
                        checkboxEnabled: t,
                        checkboxChecked: !1,
                        checkboxLabel: "从原始地址重新下载"
                    }).then(t => i(this, void 0, void 0, function* () {
                        if (void 0 !== a) {
                            let e = "";
                            e = void 0 !== t && t ? `panel_type=${o},button=origin` : `panel_type=${o},button=reload`, c.XLStatNS.trackEvent("download_leftpanel", a, "", 0, 0, 0, 0, e)
                        }
                        for (let i of e) {
                            let e = {
                                taskBaseInfo: {
                                    savePath: void 0,
                                    taskName: void 0,
                                    productInfo: n(""),
                                    origin: "re_download"
                                }, p2spTaskInfo: {url: void 0, useOriginResourceOnly: t ? 1 : 0}
                            }, a = yield T.reDownloadTask(i.taskId, e);
                            if (null !== a) {
                                let e = a.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskId);
                                g.DowloadDispatchNS.startTask(e)
                            }
                        }
                    }), e => {
                        if (void 0 !== a) {
                            let t = "";
                            t = "cancel" === e ? `panel_type=${o},button=cancel` : `panel_type=${o},button=close`, c.XLStatNS.trackEvent("download_leftpanel", a, "", 0, 0, 0, 0, t)
                        }
                    })
                } else for (let t of e) {
                    if (void 0 !== a) {
                        let e = `panel_type=${o}`;
                        c.XLStatNS.trackEvent("download_leftpanel", a, "", 0, 0, 0, 0, e)
                    }
                    let e = {
                        taskBaseInfo: {
                            savePath: void 0,
                            taskName: void 0,
                            productInfo: n(""),
                            origin: "re_download"
                        }, p2spTaskInfo: {url: void 0, useOriginResourceOnly: 0}
                    }, i = yield T.reDownloadTask(t.taskId, e);
                    if (null !== i) {
                        let e = i.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskId);
                        g.DowloadDispatchNS.startTask(e)
                    }
                }
            })
        }, e.constructProductInfo = n, e.isExistTaskFile = o, e.canOpenSelectedTaskFolder = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                do {
                    let n = e.taskStatus;
                    if (n === l.DownloadKernel.TaskStatus.StartPending || n === l.DownloadKernel.TaskStatus.StopPending || n === l.DownloadKernel.TaskStatus.DestroyPending) break;
                    let i = e.savePath, o = e.taskName, r = e.taskType, u = a.join(i, o);
                    if (r === l.DownloadKernel.TaskType.Bt) {
                        if ("" === o) {
                            t = yield s.FileSystemAWNS.existsAW(i);
                            break
                        }
                        t = yield s.FileSystemAWNS.existsAW(u)
                    } else l.DownloadKernel.TaskType.Group, t = yield s.FileSystemAWNS.existsAW(i)
                } while (0);
                return t
            })
        }, e.canOpenSelectedTaskFile = r, e.getBtExistFilePathList = function (e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = [];
                do {
                    let o = a.join(e, t.title);
                    if (!(yield s.FileSystemAWNS.existsAW(o))) break;
                    let r = t.fileLists;
                    for (let e = 0; e < r.length; e++) {
                        let t = r[e];
                        if (-1 !== n.indexOf(t.realIndex)) {
                            let e = a.join(t.filePath, t.fileName), n = a.join(o, e);
                            (yield s.FileSystemAWNS.existsAW(n)) && i.push({
                                fullPath: n,
                                index: t.realIndex,
                                relativePath: e
                            })
                        }
                    }
                } while (0);
                return i
            })
        }, e.getSavePathByFileName = function (e, t) {
            let n = "";
            do {
                if (void 0 === e || null === e) break;
                let i = T.getTaskFromTaskId(e);
                if (i.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskType) === l.DownloadKernel.TaskType.Group) {
                    let e = i.getExtraObject();
                    if (null === e || void 0 === e) break;
                    let o = e.getSubTaskCount();
                    for (let i = 0; i < o; ++i) {
                        let o = e.getSubTaskByIndex(i),
                            r = o.getTaskAttribute(l.DownloadKernel.TaskAttribute.DownloadSubTask),
                            s = o.getTaskAttribute(l.DownloadKernel.TaskAttribute.SavePath),
                            u = o.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskName), d = a.join(s, u);
                        1 === r && u === t && (n = d)
                    }
                }
            } while (0);
            return n
        }
    }(t.TaskCtrlOperatorNS || (t.TaskCtrlOperatorNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = n(12), a = n(87), o = n(166), r = n(56);

    function s(e) {
        var t = new o(e), n = a(o.prototype.request, t);
        return i.extend(n, o.prototype, t), i.extend(n, t), n
    }

    var l = s(r);
    l.Axios = o, l.create = function (e) {
        return s(i.merge(r, e))
    }, l.Cancel = n(94), l.CancelToken = n(183), l.isCancel = n(93), l.all = function (e) {
        return Promise.all(e)
    }, l.spread = n(184), e.exports = l, e.exports.default = l
}, function (e, t) {
    function n(e) {
        return !!e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e)
    }

    /*!
 * Determine if an object is a Buffer
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */
    e.exports = function (e) {
        return null != e && (n(e) || function (e) {
            return "function" == typeof e.readFloatLE && "function" == typeof e.slice && n(e.slice(0, 0))
        }(e) || !!e._isBuffer)
    }
}, function (e, t, n) {
    "use strict";
    var i = n(56), a = n(12), o = n(178), r = n(179);

    function s(e) {
        this.defaults = e, this.interceptors = {request: new o, response: new o}
    }

    s.prototype.request = function (e) {
        "string" == typeof e && (e = a.merge({url: arguments[0]}, arguments[1])), (e = a.merge(i, {method: "get"}, this.defaults, e)).method = e.method.toLowerCase();
        var t = [r, void 0], n = Promise.resolve(e);
        for (this.interceptors.request.forEach(function (e) {
            t.unshift(e.fulfilled, e.rejected)
        }), this.interceptors.response.forEach(function (e) {
            t.push(e.fulfilled, e.rejected)
        }); t.length;) n = n.then(t.shift(), t.shift());
        return n
    }, a.forEach(["delete", "get", "head", "options"], function (e) {
        s.prototype[e] = function (t, n) {
            return this.request(a.merge(n || {}, {method: e, url: t}))
        }
    }), a.forEach(["post", "put", "patch"], function (e) {
        s.prototype[e] = function (t, n, i) {
            return this.request(a.merge(i || {}, {method: e, url: t, data: n}))
        }
    }), e.exports = s
}, function (e, t, n) {
    "use strict";
    var i = n(12);
    e.exports = function (e, t) {
        i.forEach(e, function (n, i) {
            i !== t && i.toUpperCase() === t.toUpperCase() && (e[t] = n, delete e[i])
        })
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12), a = n(88), o = n(90), r = n(169), s = n(170), l = n(57),
        u = "undefined" != typeof window && window.btoa && window.btoa.bind(window) || n(171);
    e.exports = function (e) {
        return new Promise(function (t, d) {
            var c = e.data, h = e.headers;
            i.isFormData(c) && delete h["Content-Type"];
            var f = new XMLHttpRequest, p = "onreadystatechange", g = !1;
            if ("undefined" == typeof window || !window.XDomainRequest || "withCredentials" in f || s(e.url) || (f = new window.XDomainRequest, p = "onload", g = !0, f.onprogress = function () {
            }, f.ontimeout = function () {
            }), e.auth) {
                var k = e.auth.username || "", m = e.auth.password || "";
                h.Authorization = "Basic " + u(k + ":" + m)
            }
            if (f.open(e.method.toUpperCase(), o(e.url, e.params, e.paramsSerializer), !0), f.timeout = e.timeout, f[p] = function () {
                if (f && (4 === f.readyState || g) && (0 !== f.status || f.responseURL && 0 === f.responseURL.indexOf("file:"))) {
                    var n = "getAllResponseHeaders" in f ? r(f.getAllResponseHeaders()) : null, i = {
                        data: e.responseType && "text" !== e.responseType ? f.response : f.responseText,
                        status: 1223 === f.status ? 204 : f.status,
                        statusText: 1223 === f.status ? "No Content" : f.statusText,
                        headers: n,
                        config: e,
                        request: f
                    };
                    a(t, d, i), f = null
                }
            }, f.onerror = function () {
                d(l("Network Error", e, null, f)), f = null
            }, f.ontimeout = function () {
                d(l("timeout of " + e.timeout + "ms exceeded", e, "ECONNABORTED", f)), f = null
            }, i.isStandardBrowserEnv()) {
                var T = n(172),
                    v = (e.withCredentials || s(e.url)) && e.xsrfCookieName ? T.read(e.xsrfCookieName) : void 0;
                v && (h[e.xsrfHeaderName] = v)
            }
            if ("setRequestHeader" in f && i.forEach(h, function (e, t) {
                void 0 === c && "content-type" === t.toLowerCase() ? delete h[t] : f.setRequestHeader(t, e)
            }), e.withCredentials && (f.withCredentials = !0), e.responseType) try {
                f.responseType = e.responseType
            } catch (t) {
                if ("json" !== e.responseType) throw t
            }
            "function" == typeof e.onDownloadProgress && f.addEventListener("progress", e.onDownloadProgress), "function" == typeof e.onUploadProgress && f.upload && f.upload.addEventListener("progress", e.onUploadProgress), e.cancelToken && e.cancelToken.promise.then(function (e) {
                f && (f.abort(), d(e), f = null)
            }), void 0 === c && (c = null), f.send(c)
        })
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12),
        a = ["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"];
    e.exports = function (e) {
        var t, n, o, r = {};
        return e ? (i.forEach(e.split("\n"), function (e) {
            if (o = e.indexOf(":"), t = i.trim(e.substr(0, o)).toLowerCase(), n = i.trim(e.substr(o + 1)), t) {
                if (r[t] && a.indexOf(t) >= 0) return;
                r[t] = "set-cookie" === t ? (r[t] ? r[t] : []).concat([n]) : r[t] ? r[t] + ", " + n : n
            }
        }), r) : r
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12);
    e.exports = i.isStandardBrowserEnv() ? function () {
        var e, t = /(msie|trident)/i.test(navigator.userAgent), n = document.createElement("a");

        function a(e) {
            var i = e;
            return t && (n.setAttribute("href", i), i = n.href), n.setAttribute("href", i), {
                href: n.href,
                protocol: n.protocol ? n.protocol.replace(/:$/, "") : "",
                host: n.host,
                search: n.search ? n.search.replace(/^\?/, "") : "",
                hash: n.hash ? n.hash.replace(/^#/, "") : "",
                hostname: n.hostname,
                port: n.port,
                pathname: "/" === n.pathname.charAt(0) ? n.pathname : "/" + n.pathname
            }
        }

        return e = a(window.location.href), function (t) {
            var n = i.isString(t) ? a(t) : t;
            return n.protocol === e.protocol && n.host === e.host
        }
    }() : function () {
        return !0
    }
}, function (e, t, n) {
    "use strict";
    var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    function a() {
        this.message = "String contains an invalid character"
    }

    a.prototype = new Error, a.prototype.code = 5, a.prototype.name = "InvalidCharacterError", e.exports = function (e) {
        for (var t, n, o = String(e), r = "", s = 0, l = i; o.charAt(0 | s) || (l = "=", s % 1); r += l.charAt(63 & t >> 8 - s % 1 * 8)) {
            if ((n = o.charCodeAt(s += .75)) > 255) throw new a;
            t = t << 8 | n
        }
        return r
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12);
    e.exports = i.isStandardBrowserEnv() ? {
        write: function (e, t, n, a, o, r) {
            var s = [];
            s.push(e + "=" + encodeURIComponent(t)), i.isNumber(n) && s.push("expires=" + new Date(n).toGMTString()), i.isString(a) && s.push("path=" + a), i.isString(o) && s.push("domain=" + o), !0 === r && s.push("secure"), document.cookie = s.join("; ")
        }, read: function (e) {
            var t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)"));
            return t ? decodeURIComponent(t[3]) : null
        }, remove: function (e) {
            this.write(e, "", Date.now() - 864e5)
        }
    } : {
        write: function () {
        }, read: function () {
            return null
        }, remove: function () {
        }
    }
}, function (e, t) {
    e.exports = require("assert")
}, function (e, t, n) {
    function i() {
        var e;
        try {
            e = t.storage.debug
        } catch (e) {
        }
        return !e && "undefined" != typeof process && "env" in process && (e = process.env.DEBUG), e
    }

    (t = e.exports = n(175)).log = function () {
        return "object" == typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments)
    }, t.formatArgs = function (e) {
        var n = this.useColors;
        if (e[0] = (n ? "%c" : "") + this.namespace + (n ? " %c" : " ") + e[0] + (n ? "%c " : " ") + "+" + t.humanize(this.diff), !n) return;
        var i = "color: " + this.color;
        e.splice(1, 0, i, "color: inherit");
        var a = 0, o = 0;
        e[0].replace(/%[a-zA-Z%]/g, function (e) {
            "%%" !== e && "%c" === e && (o = ++a)
        }), e.splice(o, 0, i)
    }, t.save = function (e) {
        try {
            null == e ? t.storage.removeItem("debug") : t.storage.debug = e
        } catch (e) {
        }
    }, t.load = i, t.useColors = function () {
        if ("undefined" != typeof window && window.process && "renderer" === window.process.type) return !0;
        if ("undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) return !1;
        return "undefined" != typeof document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || "undefined" != typeof window && window.console && (window.console.firebug || window.console.exception && window.console.table) || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)
    }, t.storage = "undefined" != typeof chrome && void 0 !== chrome.storage ? chrome.storage.local : function () {
        try {
            return window.localStorage
        } catch (e) {
        }
    }(), t.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"], t.formatters.j = function (e) {
        try {
            return JSON.stringify(e)
        } catch (e) {
            return "[UnexpectedJSONParseError]: " + e.message
        }
    }, t.enable(i())
}, function (e, t, n) {
    function i(e) {
        var n;

        function i() {
            if (i.enabled) {
                var e = i, a = +new Date, o = a - (n || a);
                e.diff = o, e.prev = n, e.curr = a, n = a;
                for (var r = new Array(arguments.length), s = 0; s < r.length; s++) r[s] = arguments[s];
                r[0] = t.coerce(r[0]), "string" != typeof r[0] && r.unshift("%O");
                var l = 0;
                r[0] = r[0].replace(/%([a-zA-Z%])/g, function (n, i) {
                    if ("%%" === n) return n;
                    l++;
                    var a = t.formatters[i];
                    if ("function" == typeof a) {
                        var o = r[l];
                        n = a.call(e, o), r.splice(l, 1), l--
                    }
                    return n
                }), t.formatArgs.call(e, r), (i.log || t.log || console.log.bind(console)).apply(e, r)
            }
        }

        return i.namespace = e, i.enabled = t.enabled(e), i.useColors = t.useColors(), i.color = function (e) {
            var n, i = 0;
            for (n in e) i = (i << 5) - i + e.charCodeAt(n), i |= 0;
            return t.colors[Math.abs(i) % t.colors.length]
        }(e), i.destroy = a, "function" == typeof t.init && t.init(i), t.instances.push(i), i
    }

    function a() {
        var e = t.instances.indexOf(this);
        return -1 !== e && (t.instances.splice(e, 1), !0)
    }

    (t = e.exports = i.debug = i.default = i).coerce = function (e) {
        return e instanceof Error ? e.stack || e.message : e
    }, t.disable = function () {
        t.enable("")
    }, t.enable = function (e) {
        var n;
        t.save(e), t.names = [], t.skips = [];
        var i = ("string" == typeof e ? e : "").split(/[\s,]+/), a = i.length;
        for (n = 0; n < a; n++) i[n] && ("-" === (e = i[n].replace(/\*/g, ".*?"))[0] ? t.skips.push(new RegExp("^" + e.substr(1) + "$")) : t.names.push(new RegExp("^" + e + "$")));
        for (n = 0; n < t.instances.length; n++) {
            var o = t.instances[n];
            o.enabled = t.enabled(o.namespace)
        }
    }, t.enabled = function (e) {
        if ("*" === e[e.length - 1]) return !0;
        var n, i;
        for (n = 0, i = t.skips.length; n < i; n++) if (t.skips[n].test(e)) return !1;
        for (n = 0, i = t.names.length; n < i; n++) if (t.names[n].test(e)) return !0;
        return !1
    }, t.humanize = n(176), t.instances = [], t.names = [], t.skips = [], t.formatters = {}
}, function (e, t) {
    var n = 1e3, i = 60 * n, a = 60 * i, o = 24 * a, r = 365.25 * o;

    function s(e, t, n) {
        if (!(e < t)) return e < 1.5 * t ? Math.floor(e / t) + " " + n : Math.ceil(e / t) + " " + n + "s"
    }

    e.exports = function (e, t) {
        t = t || {};
        var l, u = typeof e;
        if ("string" === u && e.length > 0) return function (e) {
            if ((e = String(e)).length > 100) return;
            var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);
            if (!t) return;
            var s = parseFloat(t[1]);
            switch ((t[2] || "ms").toLowerCase()) {
                case"years":
                case"year":
                case"yrs":
                case"yr":
                case"y":
                    return s * r;
                case"days":
                case"day":
                case"d":
                    return s * o;
                case"hours":
                case"hour":
                case"hrs":
                case"hr":
                case"h":
                    return s * a;
                case"minutes":
                case"minute":
                case"mins":
                case"min":
                case"m":
                    return s * i;
                case"seconds":
                case"second":
                case"secs":
                case"sec":
                case"s":
                    return s * n;
                case"milliseconds":
                case"millisecond":
                case"msecs":
                case"msec":
                case"ms":
                    return s;
                default:
                    return
            }
        }(e);
        if ("number" === u && !1 === isNaN(e)) return t.long ? s(l = e, o, "day") || s(l, a, "hour") || s(l, i, "minute") || s(l, n, "second") || l + " ms" : function (e) {
            if (e >= o) return Math.round(e / o) + "d";
            if (e >= a) return Math.round(e / a) + "h";
            if (e >= i) return Math.round(e / i) + "m";
            if (e >= n) return Math.round(e / n) + "s";
            return e + "ms"
        }(e);
        throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e))
    }
}, function (e) {
    e.exports = {
        _args: [["axios@0.18.0", "D:\\thunderx_bin\\trunk\\build\\app"]],
        _from: "axios@0.18.0",
        _id: "axios@0.18.0",
        _inBundle: !1,
        _integrity: "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
        _location: "/axios",
        _phantomChildren: {},
        _requested: {
            type: "version",
            registry: !0,
            raw: "axios@0.18.0",
            name: "axios",
            escapedName: "axios",
            rawSpec: "0.18.0",
            saveSpec: null,
            fetchSpec: "0.18.0"
        },
        _requiredBy: ["/", "/@types/axios", "/@xunlei/thunderx-login-main"],
        _resolved: "http://xnpm.repo.xunlei.cn/axios/-/axios-0.18.0.tgz",
        _spec: "0.18.0",
        _where: "D:\\thunderx_bin\\trunk\\build\\app",
        author: {name: "Matt Zabriskie"},
        browser: {"./lib/adapters/http.js": "./lib/adapters/xhr.js"},
        bugs: {url: "https://github.com/axios/axios/issues"},
        bundlesize: [{path: "./dist/axios.min.js", threshold: "5kB"}],
        dependencies: {"follow-redirects": "^1.3.0", "is-buffer": "^1.1.5"},
        description: "Promise based HTTP client for the browser and node.js",
        devDependencies: {
            bundlesize: "^0.5.7",
            coveralls: "^2.11.9",
            "es6-promise": "^4.0.5",
            grunt: "^1.0.1",
            "grunt-banner": "^0.6.0",
            "grunt-cli": "^1.2.0",
            "grunt-contrib-clean": "^1.0.0",
            "grunt-contrib-nodeunit": "^1.0.0",
            "grunt-contrib-watch": "^1.0.0",
            "grunt-eslint": "^19.0.0",
            "grunt-karma": "^2.0.0",
            "grunt-ts": "^6.0.0-beta.3",
            "grunt-webpack": "^1.0.18",
            "istanbul-instrumenter-loader": "^1.0.0",
            "jasmine-core": "^2.4.1",
            karma: "^1.3.0",
            "karma-chrome-launcher": "^2.0.0",
            "karma-coverage": "^1.0.0",
            "karma-firefox-launcher": "^1.0.0",
            "karma-jasmine": "^1.0.2",
            "karma-jasmine-ajax": "^0.1.13",
            "karma-opera-launcher": "^1.0.0",
            "karma-safari-launcher": "^1.0.0",
            "karma-sauce-launcher": "^1.1.0",
            "karma-sinon": "^1.0.5",
            "karma-sourcemap-loader": "^0.3.7",
            "karma-webpack": "^1.7.0",
            "load-grunt-tasks": "^3.5.2",
            minimist: "^1.2.0",
            sinon: "^1.17.4",
            typescript: "^2.0.3",
            "url-search-params": "^0.6.1",
            webpack: "^1.13.1",
            "webpack-dev-server": "^1.14.1"
        },
        homepage: "https://github.com/axios/axios",
        keywords: ["xhr", "http", "ajax", "promise", "node"],
        license: "MIT",
        main: "index.js",
        name: "axios",
        repository: {type: "git", url: "git+https://github.com/axios/axios.git"},
        scripts: {
            build: "NODE_ENV=production grunt build",
            coveralls: "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
            examples: "node ./examples/server.js",
            postversion: "git push && git push --tags",
            preversion: "npm test",
            start: "node ./sandbox/server.js",
            test: "grunt test && bundlesize",
            version: "npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"
        },
        typings: "./index.d.ts",
        version: "0.18.0"
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12);

    function a() {
        this.handlers = []
    }

    a.prototype.use = function (e, t) {
        return this.handlers.push({fulfilled: e, rejected: t}), this.handlers.length - 1
    }, a.prototype.eject = function (e) {
        this.handlers[e] && (this.handlers[e] = null)
    }, a.prototype.forEach = function (e) {
        i.forEach(this.handlers, function (t) {
            null !== t && e(t)
        })
    }, e.exports = a
}, function (e, t, n) {
    "use strict";
    var i = n(12), a = n(180), o = n(93), r = n(56), s = n(181), l = n(182);

    function u(e) {
        e.cancelToken && e.cancelToken.throwIfRequested()
    }

    e.exports = function (e) {
        return u(e), e.baseURL && !s(e.url) && (e.url = l(e.baseURL, e.url)), e.headers = e.headers || {}, e.data = a(e.data, e.headers, e.transformRequest), e.headers = i.merge(e.headers.common || {}, e.headers[e.method] || {}, e.headers || {}), i.forEach(["delete", "get", "head", "post", "put", "patch", "common"], function (t) {
            delete e.headers[t]
        }), (e.adapter || r.adapter)(e).then(function (t) {
            return u(e), t.data = a(t.data, t.headers, e.transformResponse), t
        }, function (t) {
            return o(t) || (u(e), t && t.response && (t.response.data = a(t.response.data, t.response.headers, e.transformResponse))), Promise.reject(t)
        })
    }
}, function (e, t, n) {
    "use strict";
    var i = n(12);
    e.exports = function (e, t, n) {
        return i.forEach(n, function (n) {
            e = n(e, t)
        }), e
    }
}, function (e, t, n) {
    "use strict";
    e.exports = function (e) {
        return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)
    }
}, function (e, t, n) {
    "use strict";
    e.exports = function (e, t) {
        return t ? e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") : e
    }
}, function (e, t, n) {
    "use strict";
    var i = n(94);

    function a(e) {
        if ("function" != typeof e) throw new TypeError("executor must be a function.");
        var t;
        this.promise = new Promise(function (e) {
            t = e
        });
        var n = this;
        e(function (e) {
            n.reason || (n.reason = new i(e), t(n.reason))
        })
    }

    a.prototype.throwIfRequested = function () {
        if (this.reason) throw this.reason
    }, a.source = function () {
        var e;
        return {
            token: new a(function (t) {
                e = t
            }), cancel: e
        }
    }, e.exports = a
}, function (e, t, n) {
    "use strict";
    e.exports = function (e) {
        return function (t) {
            return e.apply(null, t)
        }
    }
}, function (e) {
    e.exports = [["0", "\0", 127, "€"], ["8140", "丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪", 5, "乲乴", 9, "乿", 6, "亇亊"], ["8180", "亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂", 6, "伋伌伒", 4, "伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾", 4, "佄佅佇", 5, "佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], ["8240", "侤侫侭侰", 4, "侶", 8, "俀俁係俆俇俈俉俋俌俍俒", 4, "俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿", 11], ["8280", "個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯", 10, "倻倽倿偀偁偂偄偅偆偉偊偋偍偐", 4, "偖偗偘偙偛偝", 7, "偦", 5, "偭", 8, "偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎", 20, "傤傦傪傫傭", 4, "傳", 6, "傼"], ["8340", "傽", 17, "僐", 5, "僗僘僙僛", 10, "僨僩僪僫僯僰僱僲僴僶", 4, "僼", 9, "儈"], ["8380", "儉儊儌", 5, "儓", 13, "儢", 28, "兂兇兊兌兎兏児兒兓兗兘兙兛兝", 4, "兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦", 4, "冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒", 5], ["8440", "凘凙凚凜凞凟凢凣凥", 5, "凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄", 5, "剋剎剏剒剓剕剗剘"], ["8480", "剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳", 9, "剾劀劃", 4, "劉", 6, "劑劒劔", 6, "劜劤劥劦劧劮劯劰労", 9, "勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務", 5, "勠勡勢勣勥", 10, "勱", 7, "勻勼勽匁匂匃匄匇匉匊匋匌匎"], ["8540", "匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯", 9, "匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], ["8580", "厐", 4, "厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯", 6, "厷厸厹厺厼厽厾叀參", 4, "収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝", 4, "呣呥呧呩", 7, "呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], ["8640", "咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠", 4, "哫哬哯哰哱哴", 5, "哻哾唀唂唃唄唅唈唊", 4, "唒唓唕", 5, "唜唝唞唟唡唥唦"], ["8680", "唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋", 4, "啑啒啓啔啗", 4, "啝啞啟啠啢啣啨啩啫啯", 5, "啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠", 6, "喨", 8, "喲喴営喸喺喼喿", 4, "嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗", 4, "嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸", 4, "嗿嘂嘃嘄嘅"], ["8740", "嘆嘇嘊嘋嘍嘐", 7, "嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀", 11, "噏", 4, "噕噖噚噛噝", 4], ["8780", "噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽", 7, "嚇", 6, "嚐嚑嚒嚔", 14, "嚤", 10, "嚰", 6, "嚸嚹嚺嚻嚽", 12, "囋", 8, "囕囖囘囙囜団囥", 5, "囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國", 6], ["8840", "園", 9, "圝圞圠圡圢圤圥圦圧圫圱圲圴", 4, "圼圽圿坁坃坄坅坆坈坉坋坒", 4, "坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], ["8880", "垁垇垈垉垊垍", 4, "垔", 6, "垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹", 8, "埄", 6, "埌埍埐埑埓埖埗埛埜埞埡埢埣埥", 7, "埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥", 4, "堫", 4, "報堲堳場堶", 7], ["8940", "堾", 5, "塅", 6, "塎塏塐塒塓塕塖塗塙", 4, "塟", 5, "塦", 4, "塭", 16, "塿墂墄墆墇墈墊墋墌"], ["8980", "墍", 4, "墔", 4, "墛墜墝墠", 7, "墪", 17, "墽墾墿壀壂壃壄壆", 10, "壒壓壔壖", 13, "壥", 5, "壭壯壱売壴壵壷壸壺", 7, "夃夅夆夈", 4, "夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], ["8a40", "夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛", 4, "奡奣奤奦", 12, "奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], ["8a80", "妧妬妭妰妱妳", 5, "妺妼妽妿", 6, "姇姈姉姌姍姎姏姕姖姙姛姞", 4, "姤姦姧姩姪姫姭", 11, "姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪", 6, "娳娵娷", 4, "娽娾娿婁", 4, "婇婈婋", 9, "婖婗婘婙婛", 5], ["8b40", "婡婣婤婥婦婨婩婫", 8, "婸婹婻婼婽婾媀", 17, "媓", 6, "媜", 13, "媫媬"], ["8b80", "媭", 4, "媴媶媷媹", 4, "媿嫀嫃", 5, "嫊嫋嫍", 4, "嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬", 4, "嫲", 22, "嬊", 11, "嬘", 25, "嬳嬵嬶嬸", 7, "孁", 6], ["8c40", "孈", 7, "孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], ["8c80", "寑寔", 8, "寠寢寣實寧審", 4, "寯寱", 6, "寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧", 6, "屰屲", 6, "屻屼屽屾岀岃", 4, "岉岊岋岎岏岒岓岕岝", 4, "岤", 4], ["8d40", "岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅", 5, "峌", 5, "峓", 5, "峚", 6, "峢峣峧峩峫峬峮峯峱", 9, "峼", 4], ["8d80", "崁崄崅崈", 5, "崏", 4, "崕崗崘崙崚崜崝崟", 4, "崥崨崪崫崬崯", 4, "崵", 7, "崿", 7, "嵈嵉嵍", 10, "嵙嵚嵜嵞", 10, "嵪嵭嵮嵰嵱嵲嵳嵵", 12, "嶃", 21, "嶚嶛嶜嶞嶟嶠"], ["8e40", "嶡", 21, "嶸", 12, "巆", 6, "巎", 12, "巜巟巠巣巤巪巬巭"], ["8e80", "巰巵巶巸", 4, "巿帀帄帇帉帊帋帍帎帒帓帗帞", 7, "帨", 4, "帯帰帲", 4, "帹帺帾帿幀幁幃幆", 5, "幍", 6, "幖", 4, "幜幝幟幠幣", 14, "幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨", 4, "庮", 4, "庴庺庻庼庽庿", 6], ["8f40", "廆廇廈廋", 5, "廔廕廗廘廙廚廜", 11, "廩廫", 8, "廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], ["8f80", "弨弫弬弮弰弲", 6, "弻弽弾弿彁", 14, "彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢", 5, "復徫徬徯", 5, "徶徸徹徺徻徾", 4, "忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], ["9040", "怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰", 4, "怶", 4, "怽怾恀恄", 6, "恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], ["9080", "悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽", 7, "惇惈惉惌", 4, "惒惓惔惖惗惙惛惞惡", 4, "惪惱惲惵惷惸惻", 4, "愂愃愄愅愇愊愋愌愐", 4, "愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬", 18, "慀", 6], ["9140", "慇慉態慍慏慐慒慓慔慖", 6, "慞慟慠慡慣慤慥慦慩", 6, "慱慲慳慴慶慸", 18, "憌憍憏", 4, "憕"], ["9180", "憖", 6, "憞", 8, "憪憫憭", 9, "憸", 5, "憿懀懁懃", 4, "應懌", 4, "懓懕", 16, "懧", 13, "懶", 8, "戀", 5, "戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸", 4, "扂扄扅扆扊"], ["9240", "扏扐払扖扗扙扚扜", 6, "扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋", 5, "抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], ["9280", "拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳", 5, "挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖", 7, "捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙", 6, "採掤掦掫掯掱掲掵掶掹掻掽掿揀"], ["9340", "揁揂揃揅揇揈揊揋揌揑揓揔揕揗", 6, "揟揢揤", 4, "揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆", 4, "損搎搑搒搕", 5, "搝搟搢搣搤"], ["9380", "搥搧搨搩搫搮", 5, "搵", 4, "搻搼搾摀摂摃摉摋", 6, "摓摕摖摗摙", 4, "摟", 7, "摨摪摫摬摮", 9, "摻", 6, "撃撆撈", 8, "撓撔撗撘撚撛撜撝撟", 4, "撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆", 6, "擏擑擓擔擕擖擙據"], ["9440", "擛擜擝擟擠擡擣擥擧", 24, "攁", 7, "攊", 7, "攓", 4, "攙", 8], ["9480", "攢攣攤攦", 4, "攬攭攰攱攲攳攷攺攼攽敀", 4, "敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數", 14, "斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱", 7, "斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘", 7, "旡旣旤旪旫"], ["9540", "旲旳旴旵旸旹旻", 4, "昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷", 4, "昽昿晀時晄", 6, "晍晎晐晑晘"], ["9580", "晙晛晜晝晞晠晢晣晥晧晩", 4, "晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘", 4, "暞", 8, "暩", 4, "暯", 4, "暵暶暷暸暺暻暼暽暿", 25, "曚曞", 7, "曧曨曪", 5, "曱曵曶書曺曻曽朁朂會"], ["9640", "朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠", 5, "朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗", 4, "杝杢杣杤杦杧杫杬杮東杴杶"], ["9680", "杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹", 7, "柂柅", 9, "柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵", 7, "柾栁栂栃栄栆栍栐栒栔栕栘", 4, "栞栟栠栢", 6, "栫", 6, "栴栵栶栺栻栿桇桋桍桏桒桖", 5], ["9740", "桜桝桞桟桪桬", 7, "桵桸", 8, "梂梄梇", 7, "梐梑梒梔梕梖梘", 9, "梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], ["9780", "梹", 6, "棁棃", 5, "棊棌棎棏棐棑棓棔棖棗棙棛", 4, "棡棢棤", 9, "棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆", 4, "椌椏椑椓", 11, "椡椢椣椥", 7, "椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃", 16, "楕楖楘楙楛楜楟"], ["9840", "楡楢楤楥楧楨楩楪楬業楯楰楲", 4, "楺楻楽楾楿榁榃榅榊榋榌榎", 5, "榖榗榙榚榝", 9, "榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], ["9880", "榾榿槀槂", 7, "構槍槏槑槒槓槕", 5, "槜槝槞槡", 11, "槮槯槰槱槳", 9, "槾樀", 9, "樋", 11, "標", 5, "樠樢", 5, "権樫樬樭樮樰樲樳樴樶", 6, "樿", 4, "橅橆橈", 7, "橑", 6, "橚"], ["9940", "橜", 4, "橢橣橤橦", 10, "橲", 6, "橺橻橽橾橿檁檂檃檅", 8, "檏檒", 4, "檘", 7, "檡", 5], ["9980", "檧檨檪檭", 114, "欥欦欨", 6], ["9a40", "欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍", 11, "歚", 7, "歨歩歫", 13, "歺歽歾歿殀殅殈"], ["9a80", "殌殎殏殐殑殔殕殗殘殙殜", 4, "殢", 7, "殫", 7, "殶殸", 6, "毀毃毄毆", 4, "毌毎毐毑毘毚毜", 4, "毢", 7, "毬毭毮毰毱毲毴毶毷毸毺毻毼毾", 6, "氈", 4, "氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋", 4, "汑汒汓汖汘"], ["9b40", "汙汚汢汣汥汦汧汫", 4, "汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], ["9b80", "泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟", 5, "洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽", 4, "涃涄涆涇涊涋涍涏涐涒涖", 4, "涜涢涥涬涭涰涱涳涴涶涷涹", 5, "淁淂淃淈淉淊"], ["9c40", "淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽", 7, "渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], ["9c80", "渶渷渹渻", 7, "湅", 7, "湏湐湑湒湕湗湙湚湜湝湞湠", 10, "湬湭湯", 14, "満溁溂溄溇溈溊", 4, "溑", 6, "溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪", 5], ["9d40", "滰滱滲滳滵滶滷滸滺", 7, "漃漄漅漇漈漊", 4, "漐漑漒漖", 9, "漡漢漣漥漦漧漨漬漮漰漲漴漵漷", 6, "漿潀潁潂"], ["9d80", "潃潄潅潈潉潊潌潎", 9, "潙潚潛潝潟潠潡潣潤潥潧", 5, "潯潰潱潳潵潶潷潹潻潽", 6, "澅澆澇澊澋澏", 12, "澝澞澟澠澢", 4, "澨", 10, "澴澵澷澸澺", 5, "濁濃", 5, "濊", 6, "濓", 10, "濟濢濣濤濥"], ["9e40", "濦", 7, "濰", 32, "瀒", 7, "瀜", 6, "瀤", 6], ["9e80", "瀫", 9, "瀶瀷瀸瀺", 17, "灍灎灐", 13, "灟", 11, "灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞", 12, "炰炲炴炵炶為炾炿烄烅烆烇烉烋", 12, "烚"], ["9f40", "烜烝烞烠烡烢烣烥烪烮烰", 6, "烸烺烻烼烾", 10, "焋", 4, "焑焒焔焗焛", 10, "焧", 7, "焲焳焴"], ["9f80", "焵焷", 13, "煆煇煈煉煋煍煏", 12, "煝煟", 4, "煥煩", 4, "煯煰煱煴煵煶煷煹煻煼煾", 5, "熅", 4, "熋熌熍熎熐熑熒熓熕熖熗熚", 4, "熡", 6, "熩熪熫熭", 5, "熴熶熷熸熺", 8, "燄", 9, "燏", 4], ["a040", "燖", 9, "燡燢燣燤燦燨", 5, "燯", 9, "燺", 11, "爇", 19], ["a080", "爛爜爞", 9, "爩爫爭爮爯爲爳爴爺爼爾牀", 6, "牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅", 4, "犌犎犐犑犓", 11, "犠", 11, "犮犱犲犳犵犺", 6, "狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], ["a1a1", "　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈", 7, "〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], ["a2a1", "ⅰ", 9], ["a2b1", "⒈", 19, "⑴", 19, "①", 9], ["a2e5", "㈠", 9], ["a2f1", "Ⅰ", 11], ["a3a1", "！＂＃￥％", 88, "￣"], ["a4a1", "ぁ", 82], ["a5a1", "ァ", 85], ["a6a1", "Α", 16, "Σ", 6], ["a6c1", "α", 16, "σ", 6], ["a6e0", "︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], ["a6ee", "︻︼︷︸︱"], ["a6f4", "︳︴"], ["a7a1", "А", 5, "ЁЖ", 25], ["a7d1", "а", 5, "ёж", 25], ["a840", "ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═", 35, "▁", 6], ["a880", "█", 7, "▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], ["a8a1", "āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], ["a8bd", "ńň"], ["a8c0", "ɡ"], ["a8c5", "ㄅ", 36], ["a940", "〡", 8, "㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤"], ["a959", "℡㈱"], ["a95c", "‐"], ["a960", "ー゛゜ヽヾ〆ゝゞ﹉", 9, "﹔﹕﹖﹗﹙", 8], ["a980", "﹢", 4, "﹨﹩﹪﹫"], ["a996", "〇"], ["a9a4", "─", 75], ["aa40", "狜狝狟狢", 5, "狪狫狵狶狹狽狾狿猀猂猄", 5, "猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀", 8], ["aa80", "獉獊獋獌獎獏獑獓獔獕獖獘", 7, "獡", 10, "獮獰獱"], ["ab40", "獲", 11, "獿", 4, "玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣", 5, "玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃", 4], ["ab80", "珋珌珎珒", 6, "珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳", 4], ["ac40", "珸", 10, "琄琇琈琋琌琍琎琑", 8, "琜", 5, "琣琤琧琩琫琭琯琱琲琷", 4, "琽琾琿瑀瑂", 11], ["ac80", "瑎", 6, "瑖瑘瑝瑠", 12, "瑮瑯瑱", 4, "瑸瑹瑺"], ["ad40", "瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑", 10, "璝璟", 7, "璪", 15, "璻", 12], ["ad80", "瓈", 9, "瓓", 8, "瓝瓟瓡瓥瓧", 6, "瓰瓱瓲"], ["ae40", "瓳瓵瓸", 6, "甀甁甂甃甅", 7, "甎甐甒甔甕甖甗甛甝甞甠", 4, "甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], ["ae80", "畝", 7, "畧畨畩畫", 6, "畳畵當畷畺", 4, "疀疁疂疄疅疇"], ["af40", "疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦", 4, "疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], ["af80", "瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], ["b040", "癅", 6, "癎", 5, "癕癗", 4, "癝癟癠癡癢癤", 6, "癬癭癮癰", 7, "癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], ["b080", "皜", 7, "皥", 8, "皯皰皳皵", 9, "盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], ["b140", "盄盇盉盋盌盓盕盙盚盜盝盞盠", 4, "盦", 7, "盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎", 10, "眛眜眝眞眡眣眤眥眧眪眫"], ["b180", "眬眮眰", 4, "眹眻眽眾眿睂睄睅睆睈", 7, "睒", 7, "睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], ["b240", "睝睞睟睠睤睧睩睪睭", 11, "睺睻睼瞁瞂瞃瞆", 5, "瞏瞐瞓", 11, "瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶", 4], ["b280", "瞼瞾矀", 12, "矎", 8, "矘矙矚矝", 4, "矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], ["b340", "矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃", 5, "砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], ["b380", "硛硜硞", 11, "硯", 7, "硸硹硺硻硽", 6, "场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], ["b440", "碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨", 7, "碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚", 9], ["b480", "磤磥磦磧磩磪磫磭", 4, "磳磵磶磸磹磻", 5, "礂礃礄礆", 6, "础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], ["b540", "礍", 5, "礔", 9, "礟", 4, "礥", 14, "礵", 4, "礽礿祂祃祄祅祇祊", 8, "祔祕祘祙祡祣"], ["b580", "祤祦祩祪祫祬祮祰", 6, "祹祻", 4, "禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], ["b640", "禓", 6, "禛", 11, "禨", 10, "禴", 4, "禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙", 5, "秠秡秢秥秨秪"], ["b680", "秬秮秱", 6, "秹秺秼秾秿稁稄稅稇稈稉稊稌稏", 4, "稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], ["b740", "稝稟稡稢稤", 14, "稴稵稶稸稺稾穀", 5, "穇", 9, "穒", 4, "穘", 16], ["b780", "穩", 6, "穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], ["b840", "窣窤窧窩窪窫窮", 4, "窴", 10, "竀", 10, "竌", 9, "竗竘竚竛竜竝竡竢竤竧", 5, "竮竰竱竲竳"], ["b880", "竴", 4, "竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], ["b940", "笯笰笲笴笵笶笷笹笻笽笿", 5, "筆筈筊筍筎筓筕筗筙筜筞筟筡筣", 10, "筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆", 6, "箎箏"], ["b980", "箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹", 7, "篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], ["ba40", "篅篈築篊篋篍篎篏篐篒篔", 4, "篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲", 4, "篸篹篺篻篽篿", 7, "簈簉簊簍簎簐", 5, "簗簘簙"], ["ba80", "簚", 4, "簠", 5, "簨簩簫", 12, "簹", 5, "籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], ["bb40", "籃", 9, "籎", 36, "籵", 5, "籾", 9], ["bb80", "粈粊", 6, "粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴", 4, "粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], ["bc40", "粿糀糂糃糄糆糉糋糎", 6, "糘糚糛糝糞糡", 6, "糩", 5, "糰", 7, "糹糺糼", 13, "紋", 5], ["bc80", "紑", 14, "紡紣紤紥紦紨紩紪紬紭紮細", 6, "肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], ["bd40", "紷", 54, "絯", 7], ["bd80", "絸", 32, "健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], ["be40", "継", 12, "綧", 6, "綯", 42], ["be80", "線", 32, "尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], ["bf40", "緻", 62], ["bf80", "縺縼", 4, "繂", 4, "繈", 21, "俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], ["c040", "繞", 35, "纃", 23, "纜纝纞"], ["c080", "纮纴纻纼绖绤绬绹缊缐缞缷缹缻", 6, "罃罆", 9, "罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], ["c140", "罖罙罛罜罝罞罠罣", 4, "罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂", 7, "羋羍羏", 4, "羕", 4, "羛羜羠羢羣羥羦羨", 6, "羱"], ["c180", "羳", 4, "羺羻羾翀翂翃翄翆翇翈翉翋翍翏", 4, "翖翗翙", 5, "翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], ["c240", "翤翧翨翪翫翬翭翯翲翴", 6, "翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫", 5, "耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], ["c280", "聙聛", 13, "聫", 5, "聲", 11, "隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], ["c340", "聾肁肂肅肈肊肍", 5, "肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇", 4, "胏", 6, "胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], ["c380", "脌脕脗脙脛脜脝脟", 12, "脭脮脰脳脴脵脷脹", 4, "脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], ["c440", "腀", 5, "腇腉腍腎腏腒腖腗腘腛", 4, "腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃", 4, "膉膋膌膍膎膐膒", 5, "膙膚膞", 4, "膤膥"], ["c480", "膧膩膫", 7, "膴", 5, "膼膽膾膿臄臅臇臈臉臋臍", 6, "摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], ["c540", "臔", 14, "臤臥臦臨臩臫臮", 4, "臵", 5, "臽臿舃與", 4, "舎舏舑舓舕", 5, "舝舠舤舥舦舧舩舮舲舺舼舽舿"], ["c580", "艀艁艂艃艅艆艈艊艌艍艎艐", 7, "艙艛艜艝艞艠", 7, "艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], ["c640", "艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], ["c680", "苺苼", 4, "茊茋茍茐茒茓茖茘茙茝", 9, "茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], ["c740", "茾茿荁荂荄荅荈荊", 4, "荓荕", 4, "荝荢荰", 6, "荹荺荾", 6, "莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡", 6, "莬莭莮"], ["c780", "莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], ["c840", "菮華菳", 4, "菺菻菼菾菿萀萂萅萇萈萉萊萐萒", 5, "萙萚萛萞", 5, "萩", 7, "萲", 5, "萹萺萻萾", 7, "葇葈葉"], ["c880", "葊", 6, "葒", 4, "葘葝葞葟葠葢葤", 4, "葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], ["c940", "葽", 4, "蒃蒄蒅蒆蒊蒍蒏", 7, "蒘蒚蒛蒝蒞蒟蒠蒢", 12, "蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], ["c980", "蓘", 4, "蓞蓡蓢蓤蓧", 4, "蓭蓮蓯蓱", 10, "蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], ["ca40", "蔃", 8, "蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢", 8, "蔭", 9, "蔾", 4, "蕄蕅蕆蕇蕋", 10], ["ca80", "蕗蕘蕚蕛蕜蕝蕟", 4, "蕥蕦蕧蕩", 8, "蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], ["cb40", "薂薃薆薈", 6, "薐", 10, "薝", 6, "薥薦薧薩薫薬薭薱", 5, "薸薺", 6, "藂", 6, "藊", 4, "藑藒"], ["cb80", "藔藖", 5, "藝", 6, "藥藦藧藨藪", 14, "恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], ["cc40", "藹藺藼藽藾蘀", 4, "蘆", 10, "蘒蘓蘔蘕蘗", 15, "蘨蘪", 13, "蘹蘺蘻蘽蘾蘿虀"], ["cc80", "虁", 11, "虒虓處", 4, "虛虜虝號虠虡虣", 7, "獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], ["cd40", "虭虯虰虲", 6, "蚃", 6, "蚎", 4, "蚔蚖", 5, "蚞", 4, "蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻", 4, "蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], ["cd80", "蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], ["ce40", "蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀", 6, "蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚", 5, "蝡蝢蝦", 7, "蝯蝱蝲蝳蝵"], ["ce80", "蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎", 4, "螔螕螖螘", 6, "螠", 4, "巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], ["cf40", "螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁", 4, "蟇蟈蟉蟌", 4, "蟔", 6, "蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯", 9], ["cf80", "蟺蟻蟼蟽蟿蠀蠁蠂蠄", 5, "蠋", 7, "蠔蠗蠘蠙蠚蠜", 4, "蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], ["d040", "蠤", 13, "蠳", 5, "蠺蠻蠽蠾蠿衁衂衃衆", 5, "衎", 5, "衕衖衘衚", 6, "衦衧衪衭衯衱衳衴衵衶衸衹衺"], ["d080", "衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗", 4, "袝", 4, "袣袥", 5, "小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], ["d140", "袬袮袯袰袲", 4, "袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚", 4, "裠裡裦裧裩", 6, "裲裵裶裷裺裻製裿褀褁褃", 5], ["d180", "褉褋", 4, "褑褔", 4, "褜", 4, "褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], ["d240", "褸", 8, "襂襃襅", 24, "襠", 5, "襧", 19, "襼"], ["d280", "襽襾覀覂覄覅覇", 26, "摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], ["d340", "覢", 30, "觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴", 6], ["d380", "觻", 4, "訁", 5, "計", 21, "印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], ["d440", "訞", 31, "訿", 8, "詉", 21], ["d480", "詟", 25, "詺", 6, "浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], ["d540", "誁", 7, "誋", 7, "誔", 46], ["d580", "諃", 32, "铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], ["d640", "諤", 34, "謈", 27], ["d680", "謤謥謧", 30, "帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], ["d740", "譆", 31, "譧", 4, "譭", 25], ["d780", "讇", 24, "讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], ["d840", "谸", 8, "豂豃豄豅豈豊豋豍", 7, "豖豗豘豙豛", 5, "豣", 6, "豬", 6, "豴豵豶豷豻", 6, "貃貄貆貇"], ["d880", "貈貋貍", 6, "貕貖貗貙", 20, "亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], ["d940", "貮", 62], ["d980", "賭", 32, "佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], ["da40", "贎", 14, "贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸", 8, "趂趃趆趇趈趉趌", 4, "趒趓趕", 9, "趠趡"], ["da80", "趢趤", 12, "趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], ["db40", "跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾", 6, "踆踇踈踋踍踎踐踑踒踓踕", 7, "踠踡踤", 4, "踫踭踰踲踳踴踶踷踸踻踼踾"], ["db80", "踿蹃蹅蹆蹌", 4, "蹓", 5, "蹚", 11, "蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], ["dc40", "蹳蹵蹷", 4, "蹽蹾躀躂躃躄躆躈", 6, "躑躒躓躕", 6, "躝躟", 11, "躭躮躰躱躳", 6, "躻", 7], ["dc80", "軃", 10, "軏", 21, "堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], ["dd40", "軥", 62], ["dd80", "輤", 32, "荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], ["de40", "轅", 32, "轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], ["de80", "迉", 4, "迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], ["df40", "這逜連逤逥逧", 5, "逰", 4, "逷逹逺逽逿遀遃遅遆遈", 4, "過達違遖遙遚遜", 5, "遤遦遧適遪遫遬遯", 4, "遶", 6, "遾邁"], ["df80", "還邅邆邇邉邊邌", 4, "邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], ["e040", "郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅", 19, "鄚鄛鄜"], ["e080", "鄝鄟鄠鄡鄤", 10, "鄰鄲", 6, "鄺", 8, "酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], ["e140", "酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀", 4, "醆醈醊醎醏醓", 6, "醜", 5, "醤", 5, "醫醬醰醱醲醳醶醷醸醹醻"], ["e180", "醼", 10, "釈釋釐釒", 9, "針", 8, "帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], ["e240", "釦", 62], ["e280", "鈥", 32, "狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧", 5, "饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], ["e340", "鉆", 45, "鉵", 16], ["e380", "銆", 7, "銏", 24, "恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], ["e440", "銨", 5, "銯", 24, "鋉", 31], ["e480", "鋩", 32, "洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], ["e540", "錊", 51, "錿", 10], ["e580", "鍊", 31, "鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], ["e640", "鍬", 34, "鎐", 27], ["e680", "鎬", 29, "鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], ["e740", "鏎", 7, "鏗", 54], ["e780", "鐎", 32, "纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡", 6, "缪缫缬缭缯", 4, "缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], ["e840", "鐯", 14, "鐿", 43, "鑬鑭鑮鑯"], ["e880", "鑰", 20, "钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], ["e940", "锧锳锽镃镈镋镕镚镠镮镴镵長", 7, "門", 42], ["e980", "閫", 32, "椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], ["ea40", "闌", 27, "闬闿阇阓阘阛阞阠阣", 6, "阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], ["ea80", "陘陙陚陜陝陞陠陣陥陦陫陭", 4, "陳陸", 12, "隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], ["eb40", "隌階隑隒隓隕隖隚際隝", 9, "隨", 7, "隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖", 9, "雡", 6, "雫"], ["eb80", "雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗", 4, "霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], ["ec40", "霡", 8, "霫霬霮霯霱霳", 4, "霺霻霼霽霿", 18, "靔靕靗靘靚靜靝靟靣靤靦靧靨靪", 7], ["ec80", "靲靵靷", 4, "靽", 7, "鞆", 4, "鞌鞎鞏鞐鞓鞕鞖鞗鞙", 4, "臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], ["ed40", "鞞鞟鞡鞢鞤", 6, "鞬鞮鞰鞱鞳鞵", 46], ["ed80", "韤韥韨韮", 4, "韴韷", 23, "怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], ["ee40", "頏", 62], ["ee80", "顎", 32, "睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶", 4, "钼钽钿铄铈", 6, "铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], ["ef40", "顯", 5, "颋颎颒颕颙颣風", 37, "飏飐飔飖飗飛飜飝飠", 4], ["ef80", "飥飦飩", 30, "铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒", 4, "锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤", 8, "镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], ["f040", "餈", 4, "餎餏餑", 28, "餯", 26], ["f080", "饊", 9, "饖", 12, "饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨", 4, "鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦", 6, "鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], ["f140", "馌馎馚", 10, "馦馧馩", 47], ["f180", "駙", 32, "瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], ["f240", "駺", 62], ["f280", "騹", 32, "颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], ["f340", "驚", 17, "驲骃骉骍骎骔骕骙骦骩", 6, "骲骳骴骵骹骻骽骾骿髃髄髆", 4, "髍髎髏髐髒體髕髖髗髙髚髛髜"], ["f380", "髝髞髠髢髣髤髥髧髨髩髪髬髮髰", 8, "髺髼", 6, "鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], ["f440", "鬇鬉", 5, "鬐鬑鬒鬔", 10, "鬠鬡鬢鬤", 10, "鬰鬱鬳", 7, "鬽鬾鬿魀魆魊魋魌魎魐魒魓魕", 5], ["f480", "魛", 32, "簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], ["f540", "魼", 62], ["f580", "鮻", 32, "酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], ["f640", "鯜", 62], ["f680", "鰛", 32, "觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅", 5, "龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞", 5, "鲥", 4, "鲫鲭鲮鲰", 7, "鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], ["f740", "鰼", 62], ["f780", "鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾", 4, "鳈鳉鳑鳒鳚鳛鳠鳡鳌", 4, "鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], ["f840", "鳣", 62], ["f880", "鴢", 32], ["f940", "鵃", 62], ["f980", "鶂", 32], ["fa40", "鶣", 62], ["fa80", "鷢", 32], ["fb40", "鸃", 27, "鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴", 9, "麀"], ["fb80", "麁麃麄麅麆麉麊麌", 5, "麔", 8, "麞麠", 5, "麧麨麩麪"], ["fc40", "麫", 8, "麵麶麷麹麺麼麿", 4, "黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰", 8, "黺黽黿", 6], ["fc80", "鼆", 4, "鼌鼏鼑鼒鼔鼕鼖鼘鼚", 5, "鼡鼣", 8, "鼭鼮鼰鼱"], ["fd40", "鼲", 4, "鼸鼺鼼鼿", 4, "齅", 10, "齒", 38], ["fd80", "齹", 5, "龁龂龍", 11, "龜龝龞龡", 4, "郎凉秊裏隣"], ["fe40", "兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(54), r = n(11), s = n(705), l = n(706),
        u = n(1).default.getLogger("Thunder.VipDownload.config");
    var d;
    !function (e) {
        e.configGet = "OnConfigGet"
    }(d = t.ConfigEventNS || (t.ConfigEventNS = {}));

    class c extends o.default {
        constructor() {
            super(...arguments), this.mSavePath = void 0, this.mConfig = new l.Config
        }

        init() {
            return i(this, void 0, void 0, function* () {
                this.setMaxListeners(0), this.config.init();
                let e = yield this.downloadConfig();
                e && (e = yield this.config.loadFile(this.savePath)), u.information("config init", "result", e), this.config.printConfigData(), this.fireEvent(d.configGet), yield r.FileSystemAWNS.unlinkAW(this.savePath)
            })
        }

        getValue(e, t) {
            return this.config.getValue(e, t)
        }

        downloadConfig() {
            return i(this, void 0, void 0, function* () {
                let e = yield r.FileSystemAWNS.existsAW(this.saveDir);
                return e || (e = yield r.FileSystemAWNS.mkdirsAW(this.saveDir)), e && (e = yield s.FileDownloadNS.downloadFile("http://media.info.client.xunlei.com/VipDownloadConfig.json", this.savePath)), e
            })
        }

        get config() {
            return this.mConfig
        }

        get savePath() {
            return this.mSavePath || (this.mSavePath = a.join(this.saveDir, "config.json")), this.mSavePath
        }

        get saveDir() {
            return a.join(__profilesDir, "VipDownload/")
        }
    }

    t.ConfigHelper = c, function (e) {
        const t = new c;
        e.getHelper = function () {
            return t
        }
    }(t.ConfigHelperNS || (t.ConfigHelperNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(14), o = n(3), r = n(730), s = n(2), l = n(7), u = n(1), d = n(11), c = n(95), h = n(108), f = n(273),
        p = n(6).default(s.join(__rootDir, "../bin/ThunderHelper.node")), g = u.default.getLogger("login-helper");
    !function (e) {
        e.loginUIHelper = new class {
            constructor() {
                this.loginWnd = null, this.retryLoginWnd = null, this.modifierUserInfoWnd = null, this.isReadyShow = !1, this.isLoadFinish = !1, this.lastLoginWndShowState = !1
            }

            createLoginWnd(e, t, n, i, a) {
                g.information("create loginwnd:", e, t, n, i, a, this.loginWnd), null === this.loginWnd && (l.isNullOrUndefined(e) || l.isNullOrUndefined(t) || (t = "file:///" + t, this.lastLoginWndShowState = e, this.isLoadFinish = !1, this.isReadyShow = !1, l.isNullOrUndefined(i) && (i = 300), l.isNullOrUndefined(a) && (a = 440), l.isNullOrUndefined(this.loginWnd) && (this.loginWnd = new o.remote.BrowserWindow({
                    width: i,
                    height: a,
                    modal: !1,
                    resizable: !1,
                    skipTaskbar: !0,
                    frame: !1,
                    center: !0,
                    parent: o.remote.getCurrentWindow(),
                    show: !1,
                    webPreferences: {webSecurity: !1, preload: `${__rootDir}/out/common-preload.js`}
                })), this.loginWnd.loadURL(t), this.lastHtmlUrl = t, this.loginWnd.on("hide", () => {
                    let e = o.remote.getCurrentWindow();
                    !e.isMinimized() && e.isVisible() && o.remote.getCurrentWindow().show()
                }), this.loginWnd.once("ready-to-show", () => {
                    this.isReadyShow = !0, g.information("create ready-to-show:", this.isReadyShow)
                }), this.loginWnd.webContents.once("did-finish-load", () => {
                    this.isLoadFinish = !0, g.information("create loginwnd did-finish-load:", this.isLoadFinish)
                }), this.loginWnd.on("closed", () => {
                    g.information("loginWnd closed"), this.loginWnd = null;
                    let e = o.remote.getCurrentWindow();
                    !e.isMinimized() && e.isVisible() && o.remote.getCurrentWindow().show()
                })))
            }

            closeLoginWnd(e) {
                g.information("closeLoginWnd:", e), null !== this.loginWnd && (this.loginWnd.close(), this.loginWnd = null)
            }

            updateLoginWnd(e, t, n, i, a) {
                if (g.information("updateLoginWnd:", e, t, n, i, this.loginWnd), l.isNullOrUndefined(this.loginWnd)) return null !== t && void 0 !== t && "" !== t || (t = this.lastHtmlUrl), void(e && this.createLoginWnd(e, t, a, n, i));
                this.lastLoginWndShowState = e, this.lastLoginWndShowState ? (g.information("updateLoginWnd:显示登陆框"), this.loginWnd.show(), c.ToolsUtilitiesAWNS.setForegroundWindow(p, this.loginWnd)) : this.loginWnd.hide()
            }

            createPersonalInfoWnd(e) {
                const t = "development" === o.remote.process.env.RUN_ENV ? "http://localhost:9080/personal-info-renderer/" : `file:///${__dirname}/../personal-info-renderer/index.html`;
                let n = o.remote.getCurrentWindow(), i = n.getBounds(), a = n.getContentSize();
                (i.x < 0 || i.y < 0) && (i.width >= a[0] && i.height >= a[1] ? (i.x = i.x + Math.round((i.width - a[0]) / 2), i.y = i.y + Math.round((i.height - a[1]) / 2) - 1) : (i.x = -1, i.y = -1)), g.information("updatePersonalInfoWnd:", i, a, e);
                let r = new o.remote.BrowserWindow({
                    x: i.x,
                    y: i.y + 48,
                    width: 270,
                    height: 370,
                    frame: !1,
                    skipTaskbar: !0,
                    resizable: !1,
                    parent: n,
                    show: !1,
                    modal: !1
                });
                return r.loadURL(t), r
            }

            createRetryLoginWnd(e, t) {
                let n = o.remote.getCurrentWindow(), i = 0, a = 0;
                if ("userAvatar" === e) {
                    let e = null;
                    e = n.getBounds();
                    let t = n.getContentSize();
                    e.x < 0 || e.y < 0 ? e.width > t[0] && e.height > t[1] ? (i = e.x + Math.round((e.width - t[0]) / 2), a = e.y + Math.round((e.height - t[1]) / 2) - 1) : (i = -1, a = -1) : (i = e.x, a = e.y), g.information("createRetryLoginWnd:", e, t)
                }
                if (null === this.retryLoginWnd) {
                    const e = "development" === o.remote.process.env.RUN_ENV ? "http://localhost:9080/retry-login-renderer/" : `file:///${__dirname}/../retry-login-renderer/index.html`;
                    this.retryLoginWnd = new o.remote.BrowserWindow({
                        x: i + 10,
                        y: a + 40,
                        width: 258,
                        height: 124,
                        frame: !1,
                        resizable: !1,
                        parent: n,
                        show: !1,
                        modal: !1,
                        alwaysOnTop: !0,
                        transparent: !0
                    }), this.retryLoginWnd.loadURL(e), this.retryLoginWnd.on("ready-to-show", () => {
                        this.retryLoginWnd.show(), o.ipcRenderer.send("onSendData", t)
                    }), this.retryLoginWnd.on("closed", () => {
                        this.retryLoginWnd = null
                    })
                } else this.retryLoginWnd.setBounds({
                    x: i + 10,
                    y: a + 40,
                    width: 258,
                    height: 124
                }, !1), this.retryLoginWnd.show(), o.ipcRenderer.send("onSendData", t)
            }

            createModifierUserInfoWnd(e) {
                if (null !== this.modifierUserInfoWnd) return;
                g.information("createModifierUserInfoWnd", e);
                const t = "development" === o.remote.process.env.RUN_ENV ? "http://localhost:9080/modifier-userinfo-renderer/" : `file:///${__dirname}/../modifier-userinfo-renderer/index.html`;
                let n = o.remote.getCurrentWindow();
                this.modifierUserInfoWnd = new o.remote.BrowserWindow({
                    width: 400,
                    height: 474,
                    frame: !1,
                    skipTaskbar: !0,
                    resizable: !1,
                    parent: n,
                    show: !1,
                    modal: !0,
                    center: !0
                }), this.modifierUserInfoWnd.loadURL(t), this.modifierUserInfoWnd.on("ready-to-show", () => {
                    this.modifierUserInfoWnd.show()
                }), this.modifierUserInfoWnd.on("closed", () => {
                    this.modifierUserInfoWnd = null
                })
            }

            closeModifierUserInfoWnd(e) {
                g.information("closeModifierUserInfoWnd:from = ", e), null !== this.modifierUserInfoWnd && (this.modifierUserInfoWnd.close(), this.modifierUserInfoWnd = null)
            }
        }, e.loginSDKHelper = new class {
            constructor() {
                this.curUserInfo = null, this.key = "XUNLEIACCOUNT123", this.loginInfo = null, this.loginDataDir = s.resolve(__profilesDir, "xlaccount/"), this.loginDataPath = s.resolve(__profilesDir, "xlaccount/accountdata.dat"), this.deviceId = "", g.information("loginSDKHelper obj create")
            }

            init() {
                return i(this, void 0, void 0, function* () {
                    let e = yield d.FileSystemAWNS.existsAW(this.loginDataPath);
                    e || (e = yield d.FileSystemAWNS.mkdirsAW(this.loginDataDir)) && (yield d.FileSystemAWNS.writeFileAW(this.loginDataPath, "")), yield this.loadLoginDataFromFile()
                })
            }

            getDeviceID() {
                return i(this, void 0, void 0, function* () {
                    let e = "";
                    do {
                        if (null !== this.deviceId && void 0 !== this.deviceId && "" !== this.deviceId) {
                            e = this.deviceId;
                            break
                        }
                        let t = "", n = "", i = "SYSTEM_CONFIG", a = "DEVICEID", o = p.getPublicUserDataPath(),
                            r = s.join(o, "Thunder Network/Thunder"), l = s.join(r, "/xlconfig.ini");
                        if ("" !== o && ((yield d.FileSystemAWNS.mkdirsAW(r)) && (n = p.readINI(l, i, a)), g.information("得到文件保存 peeridMd5Str:", n)), "" === n) {
                            let e = p.getPeerID();
                            n = c.ToolsUtilitiesAWNS.genarateMd5(e), g.information("重新计算 peeridStr:", e, ";peeridMd5Str:", n), (yield d.FileSystemAWNS.mkdirsAW(r)) && p.writeINI(l, i, a, n)
                        }
                        let u = p.getDmideCode(), h = c.ToolsUtilitiesAWNS.genarateMd5(u);
                        g.information("dmideCodeStr:", u, ";dmideCodeMd5Str:", h), t = h + n, e = c.ToolsUtilitiesAWNS.genarateMd5(t), this.deviceId = e
                    } while (0);
                    return g.information("deviceIDMd5Str:", e), e
                })
            }

            getInitData() {
                return JSON.stringify({
                    appid: "0",
                    package: "com.xunlei.thunderx",
                    appkey: "4af30ad6c6b0c02c4d8df3ded2cb79b8",
                    platform: "pc-xdas",
                    osversion: a.release()
                })
            }

            saveData(e, t, n) {
                return i(this, void 0, void 0, function* () {
                    g.information("SaveData type:", e, ";key:", t, ";data:", n);
                    let i = !1;
                    do {
                        if (l.isNullOrUndefined(e) || l.isNullOrUndefined(t) || l.isNullOrUndefined(n) || "" === n) break;
                        if ("memory" === e) {
                            l.isNullOrUndefined(this.curUserInfo) && (this.curUserInfo = {});
                            try {
                                this.curUserInfo[t] = JSON.parse(n)
                            } catch (e) {
                                g.information(e)
                            }
                            i = !0
                        } else if ("file" === e) {
                            l.isNullOrUndefined(this.loginInfo) && (this.loginInfo = {});
                            try {
                                this.loginInfo[t] = JSON.parse(n);
                                let e = JSON.stringify(this.loginInfo);
                                g.information("SaveData bufStr:", e);
                                let a = new Buffer(e), o = c.ToolsUtilitiesAWNS.encryptBuffer(a, this.key);
                                i = yield d.FileSystemAWNS.writeFileAW(this.loginDataPath, o)
                            } catch (e) {
                                g.information(e)
                            }
                        } else i = !0
                    } while (0);
                    return h.NativeCallHostModule.nativeCallHost.fireNativeEvent("onChangeLoginData", e, t, n), i
                })
            }

            loadData(e, t) {
                let n = null;
                do {
                    if (l.isNullOrUndefined(e) || l.isNullOrUndefined(t)) break;
                    if ("memory" === e) {
                        if (l.isNullOrUndefined(this.curUserInfo) || l.isNullOrUndefined(this.curUserInfo[t]) || "" === this.curUserInfo[t]) break;
                        n = JSON.stringify(this.curUserInfo[t])
                    } else {
                        if ("file" !== e) break;
                        if (l.isNullOrUndefined(this.loginInfo) || l.isNullOrUndefined(this.loginInfo[t]) || "" === this.loginInfo[t]) break;
                        n = JSON.stringify(this.loginInfo[t])
                    }
                } while (0);
                return g.information("loadData:data = ", n), n
            }

            loadLoginDataFromFile() {
                return i(this, void 0, void 0, function* () {
                    do {
                        let e = yield d.FileSystemAWNS.readFileAW(this.loginDataPath);
                        if (l.isNullOrUndefined(e) || "" === e.toString()) {
                            g.information("loadLoginDataFromFile no buf data");
                            break
                        }
                        let t = "";
                        try {
                            if (t = c.ToolsUtilitiesAWNS.decryptBuffer(e, this.key).toString(), l.isNullOrUndefined(t) || "" === t) {
                                g.information("loadLoginDataFromFile decryption bufStr is null");
                                break
                            }
                            this.loginInfo = JSON.parse(t), g.information("loadLoginDataFromFile decryption this.loginInfo:", this.loginInfo)
                        } catch (e) {
                            yield d.FileSystemAWNS.unlinkAW(this.loginDataPath);
                            break
                        }
                    } while (0)
                })
            }
        }, e.loginHelper = new class {
            constructor() {
                this.curUserInfo = null, this.curLoginInfo = null, this.dir = s.resolve(__profilesDir, "Community/UserImages"), g.information("loginHelper obj create")
            }

            getCurInternetState() {
                return p.getCurInternetState()
            }

            getUserHeaderAw(e) {
                return i(this, void 0, void 0, function* () {
                    let t = "";
                    do {
                        if (null === e || void 0 === e || "" === e) break;
                        let n = e + ".jpg", i = s.resolve(this.dir, n);
                        (yield d.FileSystemAWNS.existsAW(i)) && (t = "file:///" + i)
                    } while (0);
                    return t
                })
            }

            updateHeaderAw(e, t) {
                return i(this, void 0, void 0, function* () {
                    let n = "";
                    do {
                        if (null === e || void 0 === e || "" === e || null === t || void 0 === t || "" === t) break;
                        let i = t + ".jpg", a = s.resolve(this.dir, i);
                        (yield f.AxiosNS.downloadFileAW(e, a)) && (n = "file:///" + a)
                    } while (0);
                    return n
                })
            }

            getUserInfo(...e) {
                void 0 !== r.xlQuickLogin && r.xlQuickLogin.getUserInfo(...e)
            }

            getUserInfoEx(e, t) {
                r.xlQuickLogin.getAllUserInfo(n => {
                    this.curUserInfo = n, null !== this.curUserInfo && void 0 !== this.curUserInfo && "" !== this.curUserInfo ? r.xlQuickLogin.getUserInfo(n => {
                        this.curLoginInfo = n, g.information(this.curLoginInfo);
                        let i = "";
                        if (null === e || 0 === e || 3 === e) {
                            let e = {}, t = this.getUserInfoStr();
                            e[1] = t;
                            let n = this.getVipInfoStr();
                            e[2] = n, i = JSON.stringify(e)
                        } else if (1 === e) {
                            let e = this.getUserInfoStr();
                            i = JSON.stringify(e)
                        } else if (2 === e) {
                            let e = this.getVipInfoStr();
                            i = JSON.stringify(e)
                        }
                        t(i)
                    }) : t("")
                })
            }

            getAllUserInfo(...e) {
                void 0 !== r.xlQuickLogin && r.xlQuickLogin.getAllUserInfo(...e)
            }

            isLogined(...e) {
                void 0 !== r.xlQuickLogin && r.xlQuickLogin.isLogined(...e)
            }

            showLoginDlg(e, t) {
                g.information(e), null !== t && void 0 !== t || (t = !0), h.NativeCallHostModule.nativeCallHost.fireNativeEvent("onShowLoginWnd", e, t)
            }

            logout() {
                void 0 !== r.xlQuickLogin && r.xlQuickLogin.logout()
            }

            logIn(e) {
                void 0 !== r.xlQuickLogin && "function" == typeof r.xlQuickLogin.retryLogin && (g.information("enter xlQuickLogin.retryLogin"), r.xlQuickLogin.retryLogin())
            }

            switchAccount(e) {
                void 0 !== r.xlQuickLogin && "function" == typeof r.xlQuickLogin.switchAccount && r.xlQuickLogin.switchAccount()
            }

            isAutologin(...e) {
                void 0 !== r.xlQuickLogin && "function" == typeof r.xlQuickLogin.isAutologin && r.xlQuickLogin.isAutologin(...e)
            }

            getUserInfoStr() {
                return {
                    username: this.curLoginInfo.userName,
                    usernewno: this.curUserInfo.userNewNo,
                    userid: this.curUserInfo.userID,
                    sessionid: this.curLoginInfo.sessionid,
                    nickName: this.curUserInfo.nickName,
                    account: this.curUserInfo.account,
                    rank: this.curUserInfo.rank,
                    order: this.curUserInfo.order,
                    isSubAccount: this.curUserInfo.isSubAccount,
                    country: this.curUserInfo.country,
                    province: this.curUserInfo.province,
                    city: this.curUserInfo.city,
                    birthday: this.curUserInfo.birthday,
                    sex: this.curUserInfo.sex,
                    mobile: this.curUserInfo.mobile,
                    isSpecialNum: this.curUserInfo.isSpecialNum,
                    role: this.curUserInfo.role,
                    todayScore: this.curUserInfo.todayScore,
                    personalSign: this.curUserInfo.personalSign
                }
            }

            getVipInfoStr() {
                let e = this.curUserInfo.vipList[0];
                return {
                    vasid: e.vasid,
                    isVip: e.isVip,
                    vipLevel: e.vipLevel,
                    expireDate: e.expireDate,
                    vasType: e.vasType,
                    payId: e.payId,
                    payName: e.payName,
                    vipGrow: e.vipGrow,
                    vipDayGrow: e.vipDayGrow,
                    isAutoDeduct: e.isAutoDeduct,
                    isRemind: e.isRemind,
                    isYear: e.isYear,
                    register: e.register
                }
            }
        }
    }(t.LoginHelperNS || (t.LoginHelperNS = {}))
}, function (e, t, n) {
    e.exports = n(9)(130)
}, function (e, t, n) {
    e.exports = n(9)(66)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(20);
    t.default = function (e) {
        e || (e = i.remote.getCurrentWindow().getNativeWindowHandle().readUIntLE(0, 4));
        i.ipcRenderer.send(a.ThunderChannelList.channelMRBringWindowToTop, e)
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(8), o = n(17);
    !function (e) {
        e.getValue = function (e, t, n) {
            return i(this, void 0, void 0, function* () {
                return new Promise(i => {
                    a.NativeCallModule.nativeCall.CallNativeFunction("GetConfigValue", e, t, n, (e, t) => {
                        e === o.NativeFunctionErrorCode.Success ? i(t) : i(n)
                    })
                })
            })
        }, e.setValue = function (e, t, n) {
            return i(this, void 0, void 0, function* () {
                return new Promise((i, r) => {
                    a.NativeCallModule.nativeCall.CallNativeFunction("SetConfigValue", e, t, n, e => {
                        e === o.NativeFunctionErrorCode.Success ? i() : r()
                    })
                })
            })
        }
    }(t.ConfigHelperNS || (t.ConfigHelperNS = {}))
}, function (e, t, n) {
    var i = n(51), a = n(98), o = n(527), r = n(74), s = n(60), l = function (e, t, n) {
        var u, d, c, h = e & l.F, f = e & l.G, p = e & l.S, g = e & l.P, k = e & l.B, m = e & l.W,
            T = f ? a : a[t] || (a[t] = {}), v = T.prototype, w = f ? i : p ? i[t] : (i[t] || {}).prototype;
        for (u in f && (n = t), n) (d = !h && w && void 0 !== w[u]) && s(T, u) || (c = d ? w[u] : n[u], T[u] = f && "function" != typeof w[u] ? n[u] : k && d ? o(c, i) : m && w[u] == c ? function (e) {
            var t = function (t, n, i) {
                if (this instanceof e) {
                    switch (arguments.length) {
                        case 0:
                            return new e;
                        case 1:
                            return new e(t);
                        case 2:
                            return new e(t, n)
                    }
                    return new e(t, n, i)
                }
                return e.apply(this, arguments)
            };
            return t.prototype = e.prototype, t
        }(c) : g && "function" == typeof c ? o(Function.call, c) : c, g && ((T.virtual || (T.virtual = {}))[u] = c, e & l.R && v && !v[u] && r(v, u, c)))
    };
    l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l
}, function (e, t, n) {
    var i = n(99);
    e.exports = function (e, t) {
        if (!i(e)) return e;
        var n, a;
        if (t && "function" == typeof(n = e.toString) && !i(a = n.call(e))) return a;
        if ("function" == typeof(n = e.valueOf) && !i(a = n.call(e))) return a;
        if (!t && "function" == typeof(n = e.toString) && !i(a = n.call(e))) return a;
        throw TypeError("Can't convert object to primitive value")
    }
}, function (e, t) {
    e.exports = function (e) {
        if (void 0 == e) throw TypeError("Can't call method on  " + e);
        return e
    }
}, function (e, t) {
    var n = Math.ceil, i = Math.floor;
    e.exports = function (e) {
        return isNaN(e = +e) ? 0 : (e > 0 ? i : n)(e)
    }
}, function (e, t, n) {
    var i = n(197)("keys"), a = n(122);
    e.exports = function (e) {
        return i[e] || (i[e] = a(e))
    }
}, function (e, t, n) {
    var i = n(98), a = n(51), o = a["__core-js_shared__"] || (a["__core-js_shared__"] = {});
    (e.exports = function (e, t) {
        return o[e] || (o[e] = void 0 !== t ? t : {})
    })("versions", []).push({
        version: i.version,
        mode: n(121) ? "pure" : "global",
        copyright: "© 2018 Denis Pushkarev (zloirock.ru)"
    })
}, function (e, t) {
    e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
}, function (e, t) {
    t.f = Object.getOwnPropertySymbols
}, function (e, t) {
    e.exports = {}
}, function (e, t, n) {
    var i = n(75).f, a = n(60), o = n(78)("toStringTag");
    e.exports = function (e, t, n) {
        e && !a(e = n ? e : e.prototype, o) && i(e, o, {configurable: !0, value: t})
    }
}, function (e, t, n) {
    t.f = n(78)
}, function (e, t, n) {
    var i = n(51), a = n(98), o = n(121), r = n(202), s = n(75).f;
    e.exports = function (e) {
        var t = a.Symbol || (a.Symbol = o ? {} : i.Symbol || {});
        "_" == e.charAt(0) || e in t || s(t, e, {value: r.f(e)})
    }
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement;
        return (this._self._c || e)(this.item.type, {
            tag: "component",
            attrs: {item: this.item, label: this.item.label, formData: this.formData, value: this.value},
            on: {input: this.handleInput}
        })
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.classes}, [n("td-checkbox", {
            attrs: {value: !(0 == e.formData[e.item.name].value)},
            on: {input: e.handleInput}
        }, [e._v("\n    " + e._s(e.item.label) + "\n  ")]), e._v(" "), e._l(e.item.extEles, function (t, i) {
            return e.item.extEles ? n(t.type, {
                key: i,
                tag: "component",
                attrs: {
                    formData: e.formData,
                    item: e.item,
                    placeHolder: e.formData[t.name] && e.formData[t.name].value,
                    options: t.option,
                    disabled: !e.formData[e.item.name].value,
                    label: t.label,
                    classes: t.classes,
                    text: t.text,
                    name: t.name,
                    value: e.formData[t.name]
                },
                on: {input: e.handleInput}
            }) : e._e()
        })], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {class: this.item.outerClass}, [t("label", {staticClass: "td-textarea"}, [t("textarea", {
            staticClass: "td-textarea__inner",
            class: this.item.classes,
            attrs: {placeholder: this.item.placeholder},
            domProps: {value: this.formData[this.item.name].value},
            on: {change: this.handleChange}
        })])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.classes}, [n("p", [e._v("\n    限速时间段：\n    " + e._s(e.standardNumber(e.formData["ConfigNet-ConfigNet_Custom_Time_Begin_Hour"].value)) + ":\n    " + e._s(e.standardNumber(e.formData["ConfigNet-ConfigNet_Custom_Time_Begin_Minute"].value)) + "-" + e._s(e.standardNumber(e.formData["ConfigNet-ConfigNet_Custom_Time_End_Hour"].value)) + ":\n    " + e._s(e.standardNumber(e.formData["ConfigNet-ConfigNet_Custom_Time_End_Minute"].value)) + "\n  ")]), e._v(" "), n("p", [e._v("\n    最大下载速度: " + e._s(e.maxDownloadSpeed) + "   \n    最大上传速度: " + e._s(e.maxUploadSpeed))])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.outClasses}, [n("td-tooltip", {
            attrs: {
                content: e.item.toolTipsContent || "",
                visible: e.tooltipVisible,
                placement: "top"
            }
        }, [n("td-input", {
            ref: "input",
            class: e.item.classes,
            attrs: {
                label: e.label || e.item.label,
                value: e.valueData,
                placeholder: e.item.placeholder,
                disabled: e.disabled
            },
            on: {
                input: e.validate,
                change: e.handleChange,
                keydown: e.handleKeyDown,
                keyup: e.handleKeyup,
                blur: e.outFocus
            }
        })], 1), e._v(" "), e._l(e.item.extEles, function (t) {
            return [n(t.type, {
                key: t.name,
                tag: "component",
                attrs: {
                    item: t,
                    classes: t.classes,
                    text: t.text,
                    formData: e.formData,
                    disabled: e.disabled || !e.formData[e.item.name].value,
                    value: e.formData[t.name]
                },
                on: {input: e.handleInput}
            })]
        })], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.outerClass}, [n("td-button", {
            class: e.classes || e.item.classes,
            style: e.item.style || "",
            attrs: {disabled: e.disabled},
            on: {click: e.popDialog}
        }, [e._v("\n   " + e._s(e.text || e.item.text) + "\n")]), e._v(" "), e._l(e.item.extEles, function (e) {
            return [n(e.type, {
                key: e.name,
                tag: "component",
                style: e.style || "",
                attrs: {item: e, classes: e.classes, text: e.text}
            })]
        })], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.outerClass}, [n("td-checkbox", {
            attrs: {value: !(0 == e.formData[e.item.name].value)},
            on: {input: e.handleInput}
        }, [e._v("\n    " + e._s(e.item.label) + "\n  ")]), e._v(" "), e._l(e.item.extEles, function (t) {
            return [n(t.type, {
                key: t.name,
                tag: "component",
                attrs: {
                    item: t,
                    classes: t.classes,
                    text: t.text,
                    formData: e.formData,
                    name: t.name,
                    disabled: !e.formData[e.item.name].value,
                    value: e.formData[t.name]
                },
                on: {input: e.handleInput}
            })]
        }), e._v(" "), e.item.tip ? n("p", {class: e.item.tipClass}, [e._v("\n    " + e._s(e.item.tip) + "\n  ")]) : e._e()], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.outerClass}, ["" !== e.label ? n("span", [e._v("\n    " + e._s(e.label) + "\n  ")]) : e._e(), e._v(" "), n("select-native", {
            class: e.classes || e.item.classes,
            attrs: {
                value: e.valueStr,
                options: e.options || e.item.option,
                placeholder: e.placeHolder || e.formData[e.item.name].value + "",
                editable: e.item.editable,
                type: e.item.selectType
            },
            on: {input: e.handleInput, "choose-file": e.selectPath}
        })], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement;
        return (this._self._c || e)("p", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: !this.item.isReleventUser || this.item.isReleventUser && "" !== this.userId,
                expression: "!item.isReleventUser || (item.isReleventUser && userId !== '')"
            }], class: this.clas
        }, [this._v("\n   " + this._s(this.textContent) + "\n ")])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.outerClass}, [n("ul", {class: e.item.ulClasses}, e._l(e.item.option, function (t, i) {
            return n("li", {
                directives: [{
                    name: "show",
                    rawName: "v-show",
                    value: !e.item.isReleventUser || e.item.isReleventUser && "" !== e.userId,
                    expression: "!item.isReleventUser || (item.isReleventUser && userId !== '')"
                }], key: i, class: e.item.classes
            }, [n("td-radio", {
                attrs: {name: e.item.key, value: "" + e.formData[e.item.name].value, label: t},
                on: {input: e.handleInput}
            }, [e._v("\n        " + e._s(e.item.labels[i] || e.lable) + "\n      ")]), e._v(" "), e.item.extEles ? n(e.item.extEles[i].type, {
                tag: "component",
                attrs: {
                    text: e.item.extEles[i].text,
                    item: e.item.extEles[i],
                    label: e.item.extEles[i] && e.item.extEles[i].label,
                    classes: e.item.extEles[i].classes,
                    disabled: e.formData[e.item.name].value !== e.item.extActiveValue,
                    name: e.item.extEles[i].name,
                    value: e.formData[e.item.extEles[i].name],
                    formData: e.formData
                },
                on: {input: e.handleInput}
            }) : e._e()], 1)
        })), e._v(" "), e.item.tip ? n("p", {class: e.item.tipClass}, [e._v("\n    " + e._s(e.item.tip) + "\n  ")]) : e._e()])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", [n("td-checkbox", {
            attrs: {value: !(0 == e.formData[e.item.name].value)},
            on: {input: e.handleInput}
        }, [e._v("\n    " + e._s(e.item.label) + "\n  ")]), e._v(" "), e._l(e.item.extEles, function (t, i) {
            return e.item.extEles ? n(t.type, {
                key: i,
                tag: "component",
                attrs: {
                    formData: e.formData,
                    placeHolder: e.formData[t.name] && e.formData[t.name].value,
                    item: t,
                    value: e.formData[t.name],
                    disabled: !(e.formData[e.item.name] && e.formData[e.item.name].value),
                    name: t.name,
                    label: t.label,
                    classes: t.classes,
                    text: t.text
                },
                on: {input: e.handleInput}
            }) : e._e()
        })], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.item.outerClass}, [n("td-slider", {
            attrs: {
                value: e.sliderValue,
                marks: e.item.marks,
                scales: e.item.scales,
                disabled: e.disabled
            }, on: {input: e.handleSliderUpdate}
        }), e._v(" "), n("div", {staticClass: "xlx-dialog-setting__speed-input"}, [n("td-input", {
            ref: "input",
            staticClass: "xlx-setting__input-3",
            attrs: {value: e.value.value, disabled: e.disabled},
            on: {input: e.handleInput, blur: e.handleBlur}
        }), e._v(" "), n("popup", {
            ref: "tooltip",
            staticClass: "td-tooltip",
            attrs: {direction: "top", display: e.tooltipVisible, padding: 10},
            on: {
                "update:display": function (t) {
                    e.tooltipVisible = t
                }
            }
        }, [n("p", {staticClass: "td-tooltip__inner"}, [e._v(e._s(e.tooltip))])]), e._v(" "), n("span", {staticClass: "xlx-setting__text"}, [e._v("KB/s")])], 1)], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-dialog-setting__speed-time"}, [n("ul", e._l(e.data, function (t) {
            return n("li", {
                key: t.label,
                staticClass: "xlx-dialog-setting__item"
            }, [n("span", {staticClass: "xlx-dialog-setting__text"}, [e._v(e._s(t.label))]), e._v(" "), e._l(t.options, function (t) {
                return n("div", {
                    key: t.index,
                    staticClass: "xlx-dialog-setting__option"
                }, [n("select-native", {
                    staticClass: "xlx-select-size-1",
                    attrs: {
                        value: e.value[t.index].value.toString(),
                        options: "hour" === t.type ? e.hours : e.minutes,
                        disabled: e.disabled
                    },
                    on: {
                        input: function (n) {
                            return e.handleInput(n, t.index)
                        }
                    }
                }), e._v(" "), n("span", {staticClass: "xlx-dialog-setting__text"}, [e._v(e._s("hour" === t.type ? "时" : "分"))])], 1)
            })], 2)
        }))])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement;
        return (this._self._c || e)("i", {class: this.classes, attrs: {title: this.text}})
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(710), o = n(260), r = n(54), s = n(59), l = n(186), u = n(1).default.getLogger("Thunder.KuaiNiao"),
        d = s.UserHelperNS.getHelper(), c = l.ConfigHelperNS.getHelper();
    var h;
    !function (e) {
        e.statusChanged = "OnStatusChanged"
    }(h = t.KuainiaoEventNS || (t.KuainiaoEventNS = {}));

    class f extends r.default {
        constructor() {
            super(...arguments), this.mServerIp = void 0, this.mServerPort = void 0, this.mCanUpgrade = void 0, this.mDialAccount = void 0, this.mSession = new a.KuainiaoHttpSession, this.mHeartBeatTimer = null, this.mLoseHeartBeatCount = 0, this.mRetrySpeedUpCount = 0, this.mType = o.KuaiNiaoDefineNS.KuaiNiaoType.Try, this.mStatus = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Unkown, this.mAlived = !1, this.mTriggerTry = !1, this.mTryTimer = null, this.mDuration = void 0, this.mUserId = "0", this.mSessionId = "0"
        }

        init() {
            this.setMaxListeners(0), this.query().then(e => i(this, void 0, void 0, function* () {
                this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Init, yield this.checkAcclerate()
            })).catch(), d.attachListener(s.UserEventNS.login, () => i(this, void 0, void 0, function* () {
                yield this.onLogin()
            })), d.attachListener(s.UserEventNS.logout, () => i(this, void 0, void 0, function* () {
                yield this.onLogout()
            }))
        }

        clear() {
            this.mLoseHeartBeatCount = 0, this.mRetrySpeedUpCount = 0, this.mAlived = !1, this.mTriggerTry = !1, this.mDuration = void 0, this.mBandWidth = null
        }

        enter() {
            return i(this, void 0, void 0, function* () {
                u.information("enter");
                let e = !1;
                return this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Commiting, e = yield this.commit(), this.isEnter && (this.status = e ? o.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive : o.KuaiNiaoDefineNS.KuaiNiaoStatus.Failed), e
            })
        }

        exit() {
            return i(this, void 0, void 0, function* () {
                u.information("exit"), this.killHeartBeatTimer(), this.killTryTimer(), this.status !== o.KuaiNiaoDefineNS.KuaiNiaoStatus.Commiting && this.status !== o.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive || (yield this.unAcclerate()), this.clear(), this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Init
            })
        }

        triggerTry() {
            return i(this, void 0, void 0, function* () {
                if (!this.mCanUpgrade) return u.information("can not upgrade!"), !1;
                if (this.mTriggerTry) return u.information("already trigger try!"), !1;
                u.information("triggerTry"), this.mTriggerTry = !0;
                let e = yield this.queryTry();
                return e ? (this.isEnter || (this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Enable, e = yield this.enter()), e) : (u.information("can not try!"), this.mTriggerTry = !1, !1)
            })
        }

        get status() {
            return this.mStatus
        }

        set status(e) {
            this.mStatus !== e && (this.mStatus = e, u.information(h.statusChanged, "status", e), this.fireEvent(h.statusChanged, e))
        }

        get isTry() {
            return this.mType === o.KuaiNiaoDefineNS.KuaiNiaoType.Try
        }

        get bandWidth() {
            return this.mBandWidth
        }

        get downstreamString() {
            let e = 0;
            return this.bandWidth && (e = Math.floor(this.bandWidth.downstream / 1024)), e + "M"
        }

        get authority() {
            return d.isSuperVip
        }

        get isEnter() {
            return this.status > o.KuaiNiaoDefineNS.KuaiNiaoStatus.Enable
        }

        get host() {
            return {ip: this.mServerIp, port: this.mServerPort}
        }

        query() {
            return i(this, void 0, void 0, function* () {
                let e = yield this.queryPortal();
                return e ? (e = yield this.queryBand()) || (u.information("can not get band!"), !1) : (u.information("can not get portal!"), !1)
            })
        }

        commit() {
            return i(this, void 0, void 0, function* () {
                let e = yield this.acclerate();
                return this.isEnter && e ? (this.isTry ? this.createTryTimer() : this.keepAlive(), !0) : (u.information("can not acclerate!"), !1)
            })
        }

        queryPortal() {
            return i(this, void 0, void 0, function* () {
                u.information("queryPortal");
                let e = yield this.mSession.queryPortal();
                return u.information("queryPortal", "response", e), e && (0 === e.result ? (this.mServerIp = e.serverIp, this.mServerPort = e.serverPort) : this.mServerIp = ""), this.mServerIp && "" !== this.mServerIp
            })
        }

        queryBand() {
            return i(this, void 0, void 0, function* () {
                u.information("queryBand");
                let e = yield this.mSession.queryBand(this.host);
                if (u.information("queryBand", "response", e), e) switch (e.result) {
                    case 0:
                        this.mCanUpgrade = 1 === e.canUpgrade, this.mDialAccount = e.dialAccount;
                        break;
                    default:
                        this.mCanUpgrade = !1
                }
                return !0 === this.mCanUpgrade
            })
        }

        acclerate() {
            return i(this, void 0, void 0, function* () {
                u.information("acclerate");
                let e = {
                    host: this.host,
                    dialAccount: this.mDialAccount,
                    speedType: this.mType,
                    userId: this.mUserId,
                    sessionId: this.mSessionId
                }, t = !1, n = yield this.mSession.speedUp(e);
                if (u.information("acclerate", "response", n), n) switch (n.result) {
                    case 0:
                        t = !0, this.mBandWidth = n.bandWidth;
                        break;
                    case 812:
                        this.mAlived = !0, t = !0, this.mBandWidth = n.bandWidth
                }
                return t
            })
        }

        unAcclerate() {
            return i(this, void 0, void 0, function* () {
                u.information("unAcclerate");
                let e = {
                    host: this.host,
                    dialAccount: this.mDialAccount,
                    speedType: this.mType,
                    userId: this.mUserId,
                    sessionId: this.mSessionId
                }, t = yield this.mSession.speedDown(e);
                return u.information("unAcclerate", "response", t), !0
            })
        }

        heartBeat() {
            return i(this, void 0, void 0, function* () {
                u.information("heartBeat");
                let e = {host: this.host, dialAccount: this.mDialAccount}, t = yield this.mSession.heartBeat(e);
                if (u.information("heartBeat", "response", t), t) switch (t.result) {
                    case 0:
                        break;
                    case 513:
                        this.onHeartBeatError(!0);
                        break;
                    case 520:
                        this.onHeartBeatError();
                        break;
                    default:
                        this.onHeartBeatLose()
                } else this.onHeartBeatLose()
            })
        }

        queryTry() {
            return i(this, void 0, void 0, function* () {
                u.information("queryTry");
                let e = {host: this.host, dialAccount: this.mDialAccount}, t = yield this.mSession.queryTry(e);
                return u.information("queryTry", "response", t), 0 === t.result && (this.mDuration = t.duration), 0 === t.result && t.leftCount > 0
            })
        }

        onHeartBeatError(e) {
            this.status === o.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive && (u.information("onHeartBeatError"), this.killHeartBeatTimer(), e && this.mRetrySpeedUpCount < 3 ? (this.mRetrySpeedUpCount++, this.enter().catch()) : this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Failed)
        }

        onHeartBeatLose() {
            if (this.status === o.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive) {
                u.information("onHeartBeatLose");
                let e = c.getValue("KuaiNiao", "KuaiNiaoHeartBeatLoseMaxCount");
                ++this.mLoseHeartBeatCount >= e && this.onHeartBeatError(!0)
            }
        }

        createHeartBeatTimer() {
            if (!this.mHeartBeatTimer) {
                let e = c.getValue("KuaiNiao", "KuaiNiaoHeartBeatInterval");
                u.information("createHeartBeatTimer", "interval", e), this.mHeartBeatTimer = setInterval(() => i(this, void 0, void 0, function* () {
                    yield this.heartBeat()
                }), 1e3 * e)
            }
        }

        killHeartBeatTimer() {
            this.mHeartBeatTimer && (u.information("killHeartBeatTimer"), clearInterval(this.mHeartBeatTimer), this.mHeartBeatTimer = void 0)
        }

        keepAlive() {
            u.information("keepAlive"), this.mLoseHeartBeatCount = 0, this.mAlived && this.heartBeat().catch(), this.createHeartBeatTimer()
        }

        checkAcclerate() {
            return i(this, void 0, void 0, function* () {
                this.authority ? (this.mType = o.KuaiNiaoDefineNS.KuaiNiaoType.Vip, this.mCanUpgrade && (this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Enable, yield this.enter())) : this.mType = o.KuaiNiaoDefineNS.KuaiNiaoType.Try
            })
        }

        onLogin() {
            return i(this, void 0, void 0, function* () {
                this.mUserId = d.userId, this.mSessionId = yield d.getSessionId(), this.authority && this.isEnter && (yield this.exit()), yield this.checkAcclerate()
            })
        }

        onLogout() {
            return i(this, void 0, void 0, function* () {
                this.status > o.KuaiNiaoDefineNS.KuaiNiaoStatus.Init && (yield this.exit()), yield this.checkAcclerate(), this.mUserId = "0", this.mSessionId = "0"
            })
        }

        createTryTimer() {
            !this.mTryTimer && this.mDuration && (u.information("createTryTimer"), this.mTryTimer = setTimeout(() => i(this, void 0, void 0, function* () {
                this.status = o.KuaiNiaoDefineNS.KuaiNiaoStatus.Finish, yield this.exit()
            }), 1e3 * this.mDuration))
        }

        killTryTimer() {
            this.mTryTimer && (u.information("killTryTimer"), clearTimeout(this.mTryTimer), this.mTryTimer = void 0)
        }
    }

    t.KuainiaoManager = f, function (e) {
        const t = new f;
        e.getManager = function () {
            return t
        }
    }(t.KuainiaoManagerNS || (t.KuainiaoManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(54);
    !function (e) {
        e.taskAcclerateStatusChanged = "OnTaskAcclerateStatusChanged", e.vipTaskInfoChanged = "OnVipTaskInfoChanged", e.taskTryDetailChanged = "OnTaskTryDetailChanged", e.btSubFileForbidden = "OnBtSubFileForbidden", e.taskExpand = "OnTaskExpand"
    }(t.TaskEventNS || (t.TaskEventNS = {}));

    class a extends i.default {
        constructor() {
            super(), this.setMaxListeners(0)
        }

        onEvent(e, ...t) {
            this.fireEvent(e, ...t)
        }
    }

    t.TaskEventContainer = a, function (e) {
        const t = new a;
        e.getEventContainer = function () {
            return t
        }
    }(t.TaskEventContainerNS || (t.TaskEventContainerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(731);
    t.quitPromises = new class {
        constructor() {
            this.promiseFuncArray = []
        }

        add(e) {
            this.promiseFuncArray.push(e)
        }

        run() {
            a.HistoryDataNS.setExitType("normal");
            let e = [];
            for (let t of this.promiseFuncArray) "function" == typeof t && e.push(t());
            Promise.all(e).then(() => {
                i.remote.app.quit()
            }).catch(() => {
                i.remote.app.quit()
            })
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(36), o = n(82), r = n(17), s = n(732), l = n(43), u = n(21),
        d = i.default.getLogger("CommunityNaviteFunction"), c = s.CommunityTaskManagerNS.getTaskManager();
    !function (e) {
        class t extends a.EventEmitter {
            constructor() {
                super(), this.isRegisted = !1, d.verbose("construct")
            }

            static getNativeModule() {
                return t.instance || (t.instance = new t), t.instance
            }

            registerNativeFunction() {
                if (!this.isRegisted) {
                    this.isRegisted = !0;
                    let e = [{
                        functionName: "GetTaskSpeedByGcid",
                        nativeFunc: this.getTaskSpeedByGcid
                    }, {
                        functionName: "GetTaskNameByGcid",
                        nativeFunc: this.getTaskNameByGcid
                    }, {functionName: "SwitchToTask", nativeFunc: this.switchToTask}, {
                        functionName: "NotifyUnreadNum",
                        nativeFunc: this.notifyUnreadNum
                    }, {functionName: "ShowChatPanel", nativeFunc: this.showChatPanel}, {
                        functionName: "NewMessage",
                        nativeFunc: this.newMessage
                    }];
                    o.setDefaultNativeFunctionMap(e), c.init()
                }
            }

            sendOpenCommunityEvent(e, t) {
                if (void 0 !== t) {
                    d.information("sendOpenCommunityEvent", e);
                    let n = {userId: "" === e.extra.userId ? void 0 : e.extra.userId};
                    t.fireEvent("OnShowCommunity", e.type, "", JSON.stringify(n))
                }
            }

            showChatPanel(e, n, i, a) {
                do {
                    if (d.information("showChatPanel/////"), !e || !i || void 0 === n) break;
                    if (d.information("showChatPanel", a), d.verbose(a), !a || !a[0]) {
                        e.callNativeFunctionCallback(n, i, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    const o = a[0];
                    t.getNativeModule().emit("showChatPanel", o)
                } while (0)
            }

            newMessage(e, n, i, a) {
                do {
                    if (!e || !i || void 0 === n) break;
                    if (d.information("newMessage", a), d.verbose(a), !a || !a[0]) {
                        e.callNativeFunctionCallback(n, i, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    const o = a[0];
                    try {
                        let e = JSON.parse(o);
                        t.getNativeModule().emit("newMessage", e)
                    } catch (e) {
                        d.information("newMessage parse data error")
                    }
                } while (0)
            }

            getTaskSpeedByGcid(e, t, n, i) {
                do {
                    if (!e || !n || void 0 === t) break;
                    if (d.verbose(i), !i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    const a = i[0];
                    let o = c.getTaskAverageSpeedByTaskUniqueID(a);
                    d.information("getTaskSpeedByGcid gcid:", a, ", taskAverageSpeed:", o), e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, "" + o)
                } while (0)
            }

            getTaskNameByGcid(e, t, n, i) {
                do {
                    if (!e || !n || void 0 === t) break;
                    if (d.verbose(i), !i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    const a = i[0];
                    let o = c.getTaskNameByTaskUniqueID(a);
                    d.information("getTaskSpeedByGcid gcid:", a, ", taskName:", o), e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, o)
                } while (0)
            }

            switchToTask(e, t, n, i) {
                do {
                    if (!e || !n || void 0 === t) break;
                    if (d.verbose(i), !i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    const a = i[0];
                    d.information("switchToTask", a);
                    let o = c.getTaskInfoByTaskUniqueID(a);
                    if (!o) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    d.information("switchToTask gcid:", a, ", taskInfo:", o), l.default.fireEvent(u.NodeEventMesssageNS.eventDownloadSwitchCategory, o.categoryId, o.categoryViewId, o.taskId), e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success)
                } while (0)
            }

            notifyUnreadNum(e, n, i, a) {
                do {
                    if (!e || !i || void 0 === n) break;
                    if (d.verbose(a), !a || !Array.isArray(a) || a.length < 2) {
                        e.callNativeFunctionCallback(n, i, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    const o = a[0];
                    let s = null;
                    try {
                        s = JSON.parse(a[1])
                    } catch (e) {
                        break
                    }
                    t.getNativeModule().emit("NotifyUnreadNum", {
                        totalNum: a[0],
                        detail: s
                    }), d.information("notifyUnreadNum", o)
                } while (0)
            }
        }

        t.instance = null, e.CommunityNaviteFunction = t
    }(t.CommunityNaviteFunctionNS || (t.CommunityNaviteFunctionNS = {}))
}, , , function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(62), a = n.n(i), o = n(31), r = n.n(o), s = /%[sdj%]/g, l = function () {
    };

    function u() {
        for (var e = arguments.length, t = Array(e), n = 0; n < e; n++) t[n] = arguments[n];
        var i = 1, a = t[0], o = t.length;
        if ("function" == typeof a) return a.apply(null, t.slice(1));
        if ("string" == typeof a) {
            for (var r = String(a).replace(s, function (e) {
                if ("%%" === e) return "%";
                if (i >= o) return e;
                switch (e) {
                    case"%s":
                        return String(t[i++]);
                    case"%d":
                        return Number(t[i++]);
                    case"%j":
                        try {
                            return JSON.stringify(t[i++])
                        } catch (e) {
                            return "[Circular]"
                        }
                        break;
                    default:
                        return e
                }
            }), l = t[i]; i < o; l = t[++i]) r += " " + l;
            return r
        }
        return a
    }

    function d(e, t) {
        return void 0 === e || null === e || (!("array" !== t || !Array.isArray(e) || e.length) || !(!function (e) {
            return "string" === e || "url" === e || "hex" === e || "email" === e || "pattern" === e
        }(t) || "string" != typeof e || e))
    }

    function c(e, t, n) {
        var i = 0, a = e.length;
        !function o(r) {
            if (r && r.length) n(r); else {
                var s = i;
                i += 1, s < a ? t(e[s], o) : n([])
            }
        }([])
    }

    function h(e, t, n, i) {
        if (t.first) return c(function (e) {
            var t = [];
            return Object.keys(e).forEach(function (n) {
                t.push.apply(t, e[n])
            }), t
        }(e), n, i);
        var a = t.firstFields || [];
        !0 === a && (a = Object.keys(e));
        var o = Object.keys(e), r = o.length, s = 0, l = [], u = function (e) {
            l.push.apply(l, e), ++s === r && i(l)
        };
        o.forEach(function (t) {
            var i = e[t];
            -1 !== a.indexOf(t) ? c(i, n, u) : function (e, t, n) {
                var i = [], a = 0, o = e.length;

                function r(e) {
                    i.push.apply(i, e), ++a === o && n(i)
                }

                e.forEach(function (e) {
                    t(e, r)
                })
            }(i, n, u)
        })
    }

    function f(e) {
        return function (t) {
            return t && t.message ? (t.field = t.field || e.fullField, t) : {message: t, field: t.field || e.fullField}
        }
    }

    function p(e, t) {
        if (t) for (var n in t) if (t.hasOwnProperty(n)) {
            var i = t[n];
            "object" === (void 0 === i ? "undefined" : r()(i)) && "object" === r()(e[n]) ? e[n] = a()({}, e[n], i) : e[n] = i
        }
        return e
    }

    var g = function (e, t, n, i, a, o) {
        !e.required || n.hasOwnProperty(e.field) && !d(t, o || e.type) || i.push(u(a.messages.required, e.fullField))
    };
    var k = function (e, t, n, i, a) {
        (/^\s+$/.test(t) || "" === t) && i.push(u(a.messages.whitespace, e.fullField))
    }, m = {
        email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
        url: new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", "i"),
        hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
    }, T = {
        integer: function (e) {
            return T.number(e) && parseInt(e, 10) === e
        }, float: function (e) {
            return T.number(e) && !T.integer(e)
        }, array: function (e) {
            return Array.isArray(e)
        }, regexp: function (e) {
            if (e instanceof RegExp) return !0;
            try {
                return !!new RegExp(e)
            } catch (e) {
                return !1
            }
        }, date: function (e) {
            return "function" == typeof e.getTime && "function" == typeof e.getMonth && "function" == typeof e.getYear
        }, number: function (e) {
            return !isNaN(e) && "number" == typeof e
        }, object: function (e) {
            return "object" === (void 0 === e ? "undefined" : r()(e)) && !T.array(e)
        }, method: function (e) {
            return "function" == typeof e
        }, email: function (e) {
            return "string" == typeof e && !!e.match(m.email) && e.length < 255
        }, url: function (e) {
            return "string" == typeof e && !!e.match(m.url)
        }, hex: function (e) {
            return "string" == typeof e && !!e.match(m.hex)
        }
    };
    var v = "enum";
    var w = {
        required: g, whitespace: k, type: function (e, t, n, i, a) {
            if (e.required && void 0 === t) g(e, t, n, i, a); else {
                var o = e.type;
                ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"].indexOf(o) > -1 ? T[o](t) || i.push(u(a.messages.types[o], e.fullField, e.type)) : o && (void 0 === t ? "undefined" : r()(t)) !== e.type && i.push(u(a.messages.types[o], e.fullField, e.type))
            }
        }, range: function (e, t, n, i, a) {
            var o = "number" == typeof e.len, r = "number" == typeof e.min, s = "number" == typeof e.max, l = t,
                d = null, c = "number" == typeof t, h = "string" == typeof t, f = Array.isArray(t);
            if (c ? d = "number" : h ? d = "string" : f && (d = "array"), !d) return !1;
            f && (l = t.length), h && (l = t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "_").length), o ? l !== e.len && i.push(u(a.messages[d].len, e.fullField, e.len)) : r && !s && l < e.min ? i.push(u(a.messages[d].min, e.fullField, e.min)) : s && !r && l > e.max ? i.push(u(a.messages[d].max, e.fullField, e.max)) : r && s && (l < e.min || l > e.max) && i.push(u(a.messages[d].range, e.fullField, e.min, e.max))
        }, enum: function (e, t, n, i, a) {
            e[v] = Array.isArray(e[v]) ? e[v] : [], -1 === e[v].indexOf(t) && i.push(u(a.messages[v], e.fullField, e[v].join(", ")))
        }, pattern: function (e, t, n, i, a) {
            e.pattern && (e.pattern instanceof RegExp ? (e.pattern.lastIndex = 0, e.pattern.test(t) || i.push(u(a.messages.pattern.mismatch, e.fullField, t, e.pattern))) : "string" == typeof e.pattern && (new RegExp(e.pattern).test(t) || i.push(u(a.messages.pattern.mismatch, e.fullField, t, e.pattern))))
        }
    };
    var y = "enum";
    var S = function (e, t, n, i, a) {
        var o = e.type, r = [];
        if (e.required || !e.required && i.hasOwnProperty(e.field)) {
            if (d(t, o) && !e.required) return n();
            w.required(e, t, i, r, a, o), d(t, o) || w.type(e, t, i, r, a)
        }
        n(r)
    }, b = {
        string: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t, "string") && !e.required) return n();
                w.required(e, t, i, o, a, "string"), d(t, "string") || (w.type(e, t, i, o, a), w.range(e, t, i, o, a), w.pattern(e, t, i, o, a), !0 === e.whitespace && w.whitespace(e, t, i, o, a))
            }
            n(o)
        }, method: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), void 0 !== t && w.type(e, t, i, o, a)
            }
            n(o)
        }, number: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), void 0 !== t && (w.type(e, t, i, o, a), w.range(e, t, i, o, a))
            }
            n(o)
        }, boolean: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), void 0 !== t && w.type(e, t, i, o, a)
            }
            n(o)
        }, regexp: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), d(t) || w.type(e, t, i, o, a)
            }
            n(o)
        }, integer: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), void 0 !== t && (w.type(e, t, i, o, a), w.range(e, t, i, o, a))
            }
            n(o)
        }, float: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), void 0 !== t && (w.type(e, t, i, o, a), w.range(e, t, i, o, a))
            }
            n(o)
        }, array: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t, "array") && !e.required) return n();
                w.required(e, t, i, o, a, "array"), d(t, "array") || (w.type(e, t, i, o, a), w.range(e, t, i, o, a))
            }
            n(o)
        }, object: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), void 0 !== t && w.type(e, t, i, o, a)
            }
            n(o)
        }, enum: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                w.required(e, t, i, o, a), t && w[y](e, t, i, o, a)
            }
            n(o)
        }, pattern: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t, "string") && !e.required) return n();
                w.required(e, t, i, o, a), d(t, "string") || w.pattern(e, t, i, o, a)
            }
            n(o)
        }, date: function (e, t, n, i, a) {
            var o = [];
            if (e.required || !e.required && i.hasOwnProperty(e.field)) {
                if (d(t) && !e.required) return n();
                if (w.required(e, t, i, o, a), !d(t)) {
                    var r = void 0;
                    r = "number" == typeof t ? new Date(t) : t, w.type(e, r, i, o, a), r && w.range(e, r.getTime(), i, o, a)
                }
            }
            n(o)
        }, url: S, hex: S, email: S, required: function (e, t, n, i, a) {
            var o = [], s = Array.isArray(t) ? "array" : void 0 === t ? "undefined" : r()(t);
            w.required(e, t, i, o, a, s), n(o)
        }
    };

    function C() {
        return {
            default: "Validation error on field %s",
            required: "%s is required",
            enum: "%s must be one of %s",
            whitespace: "%s cannot be empty",
            date: {
                format: "%s date %s is invalid for format %s",
                parse: "%s date could not be parsed, %s is invalid ",
                invalid: "%s date %s is invalid"
            },
            types: {
                string: "%s is not a %s",
                method: "%s is not a %s (function)",
                array: "%s is not an %s",
                object: "%s is not an %s",
                number: "%s is not a %s",
                date: "%s is not a %s",
                boolean: "%s is not a %s",
                integer: "%s is not an %s",
                float: "%s is not a %s",
                regexp: "%s is not a valid %s",
                email: "%s is not a valid %s",
                url: "%s is not a valid %s",
                hex: "%s is not a valid %s"
            },
            string: {
                len: "%s must be exactly %s characters",
                min: "%s must be at least %s characters",
                max: "%s cannot be longer than %s characters",
                range: "%s must be between %s and %s characters"
            },
            number: {
                len: "%s must equal %s",
                min: "%s cannot be less than %s",
                max: "%s cannot be greater than %s",
                range: "%s must be between %s and %s"
            },
            array: {
                len: "%s must be exactly %s in length",
                min: "%s cannot be less than %s in length",
                max: "%s cannot be greater than %s in length",
                range: "%s must be between %s and %s in length"
            },
            pattern: {mismatch: "%s value %s does not match pattern %s"},
            clone: function () {
                var e = JSON.parse(JSON.stringify(this));
                return e.clone = this.clone, e
            }
        }
    }

    var D = C();

    function N(e) {
        this.rules = null, this._messages = D, this.define(e)
    }

    N.prototype = {
        messages: function (e) {
            return e && (this._messages = p(C(), e)), this._messages
        }, define: function (e) {
            if (!e) throw new Error("Cannot configure a schema with no rules");
            if ("object" !== (void 0 === e ? "undefined" : r()(e)) || Array.isArray(e)) throw new Error("Rules must be an object");
            this.rules = {};
            var t = void 0, n = void 0;
            for (t in e) e.hasOwnProperty(t) && (n = e[t], this.rules[t] = Array.isArray(n) ? n : [n])
        }, validate: function (e) {
            var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = arguments[2],
                o = e, s = n, d = i;
            if ("function" == typeof s && (d = s, s = {}), this.rules && 0 !== Object.keys(this.rules).length) {
                if (s.messages) {
                    var c = this.messages();
                    c === D && (c = C()), p(c, s.messages), s.messages = c
                } else s.messages = this.messages();
                var g = void 0, k = void 0, m = {};
                (s.keys || Object.keys(this.rules)).forEach(function (n) {
                    g = t.rules[n], k = o[n], g.forEach(function (i) {
                        var r = i;
                        "function" == typeof r.transform && (o === e && (o = a()({}, o)), k = o[n] = r.transform(k)), (r = "function" == typeof r ? {validator: r} : a()({}, r)).validator = t.getValidationMethod(r), r.field = n, r.fullField = r.fullField || n, r.type = t.getType(r), r.validator && (m[n] = m[n] || [], m[n].push({
                            rule: r,
                            value: k,
                            source: o,
                            field: n
                        }))
                    })
                });
                var T = {};
                h(m, s, function (e, t) {
                    var n = e.rule,
                        i = !("object" !== n.type && "array" !== n.type || "object" !== r()(n.fields) && "object" !== r()(n.defaultField));

                    function o(e, t) {
                        return a()({}, t, {fullField: n.fullField + "." + e})
                    }

                    function d() {
                        var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        if (Array.isArray(r) || (r = [r]), r.length && l("async-validator:", r), r.length && n.message && (r = [].concat(n.message)), r = r.map(f(n)), s.first && r.length) return T[n.field] = 1, t(r);
                        if (i) {
                            if (n.required && !e.value) return r = n.message ? [].concat(n.message).map(f(n)) : s.error ? [s.error(n, u(s.messages.required, n.field))] : [], t(r);
                            var d = {};
                            if (n.defaultField) for (var c in e.value) e.value.hasOwnProperty(c) && (d[c] = n.defaultField);
                            for (var h in d = a()({}, d, e.rule.fields)) if (d.hasOwnProperty(h)) {
                                var p = Array.isArray(d[h]) ? d[h] : [d[h]];
                                d[h] = p.map(o.bind(null, h))
                            }
                            var g = new N(d);
                            g.messages(s.messages), e.rule.options && (e.rule.options.messages = s.messages, e.rule.options.error = s.error), g.validate(e.value, e.rule.options || s, function (e) {
                                t(e && e.length ? r.concat(e) : e)
                            })
                        } else t(r)
                    }

                    i = i && (n.required || !n.required && e.value), n.field = e.field;
                    var c = n.validator(n, e.value, d, e.source, s);
                    c && c.then && c.then(function () {
                        return d()
                    }, function (e) {
                        return d(e)
                    })
                }, function (e) {
                    !function (e) {
                        var t, n = void 0, i = void 0, a = [], o = {};
                        for (n = 0; n < e.length; n++) t = e[n], Array.isArray(t) ? a = a.concat.apply(a, t) : a.push(t);
                        if (a.length) for (n = 0; n < a.length; n++) o[i = a[n].field] = o[i] || [], o[i].push(a[n]); else a = null, o = null;
                        d(a, o)
                    }(e)
                })
            } else d && d()
        }, getType: function (e) {
            if (void 0 === e.type && e.pattern instanceof RegExp && (e.type = "pattern"), "function" != typeof e.validator && e.type && !b.hasOwnProperty(e.type)) throw new Error(u("Unknown rule type %s", e.type));
            return e.type || "string"
        }, getValidationMethod: function (e) {
            if ("function" == typeof e.validator) return e.validator;
            var t = Object.keys(e), n = t.indexOf("message");
            return -1 !== n && t.splice(n, 1), 1 === t.length && "required" === t[0] ? b.required : b[this.getType(e)] || !1
        }
    }, N.register = function (e, t) {
        if ("function" != typeof t) throw new Error("Cannot register a validator by type, validator is not a function");
        b[e] = t
    }, N.messages = D;
    t.default = N
}, function (e, t, n) {
    e.exports = function (e) {
        function t(i) {
            if (n[i]) return n[i].exports;
            var a = n[i] = {i, l: !1, exports: {}};
            return e[i].call(a.exports, a, a.exports, t), a.l = !0, a.exports
        }

        var n = {};
        return t.m = e, t.c = n, t.i = function (e) {
            return e
        }, t.d = function (e, n, i) {
            t.o(e, n) || Object.defineProperty(e, n, {configurable: !1, enumerable: !0, get: i})
        }, t.n = function (e) {
            var n = e && e.__esModule ? function () {
                return e.default
            } : function () {
                return e
            };
            return t.d(n, "a", n), n
        }, t.o = function (e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        }, t.p = "/dist/", t(t.s = 4)
    }([function (e, t) {
        e.exports = {
            inserted: function (e, t, n) {
                var i = n.context.$refs[t.arg];
                i && i.addItem({el: e, value: t.value})
            }, unbind: function (e, t, n) {
                var i = n.context.$refs[t.arg];
                i && i.removeItem({el: e, value: t.value})
            }
        }
    }, function (e, t, n) {
        var i = n(5)(n(2), n(6), null, null, null);
        e.exports = i.exports
    }, function (e, t, n) {
        "use strict";
        Object.defineProperty(t, "__esModule", {value: !0});
        var i = n(3);
        t.default = {
            name: "Popup",
            props: {
                appendToBody: {type: Boolean, default: !0},
                arrowClass: String,
                direction: {type: String, default: "bottom"},
                display: {type: Boolean, default: !1},
                padding: {type: Number, default: 0},
                trigger: {type: String, default: "hover"},
                scrollShow: {type: Boolean, default: !0}
            },
            data: function () {
                return {
                    arrowStyle: {},
                    delay: 100,
                    directionMap: {top: "height", left: "width"},
                    secondDirection: "",
                    left: 0,
                    top: 0,
                    currentElement: null,
                    willHide: !1
                }
            },
            computed: {
                directionClass: function () {
                    var e = /(top)|(bottom)|(left)|(right)/i, t = e.exec(this.direction) || [],
                        n = this.secondDirection ? e.exec(this.secondDirection)[0] : "", i = t[0] || "";
                    return "" === n ? "popup-" + i : "popup-" + n
                }, triggerEvent: function () {
                    switch (this.trigger) {
                        case"hover":
                            return "mouseenter";
                        case"focus":
                            return "focus";
                        case"click":
                            return "click"
                    }
                }, unTriggerEl: function () {
                    return "click" === this.trigger ? document : this.$el
                }, unTriggerEvent: function () {
                    switch (this.trigger) {
                        case"hover":
                            return "mouseleave";
                        case"focus":
                            return "blur";
                        case"click":
                            return "click"
                    }
                }
            },
            mounted: function () {
                this.appendToBody && document.body.appendChild(this.$el), this.$el.addEventListener(this.triggerEvent, this.handlePopupVisible), this.unTriggerEl.addEventListener(this.unTriggerEvent, this.handlePopupInvisible), this.handleResizeThrottle = n.i(i.a)(this.handleResize, 16), window.addEventListener("resize", this.handleResizeThrottle)
            },
            beforeDestroy: function () {
                this.$el.removeEventListener(this.triggerEvent, this.handlePopupVisible), this.unTriggerEl.removeEventListener(this.unTriggerEvent, this.handlePopupInvisible), window.removeEventListener("resize", this.handleResizeThrottle)
            },
            destroyed: function () {
                this.appendToBody && this.$el && document.body.hasChildNodes(this.$el) && document.body.removeChild(this.$el)
            },
            methods: {
                addItem: function (e) {
                    e.el.handleVisible = this.handleVisible.bind(this, e.value, e.el), e.el.addEventListener(this.triggerEvent, e.el.handleVisible), "click" !== this.trigger && (e.el.handleInvisible = this.handleInvisible.bind(this, e.value), e.el.addEventListener(this.unTriggerEvent, e.el.handleInvisible)), this.bindScroll(e.el)
                }, removeItem: function (e) {
                    e.el.removeEventListener(this.triggerEvent, e.el.handleVisible), "click" !== this.trigger && e.el.removeEventListener(this.unTriggerEvent, e.el.handleInvisible), this.unbindScroll(e.el)
                }, bindScroll: function (e) {
                    for (e = e.parentNode; e;) e.addEventListener("scroll", this.handleScroll), e = e.parentNode
                }, unbindScroll: function (e) {
                    for (e = e.parentNode; e;) e.removeEventListener("scroll", this.handleScroll), e = e.parentNode
                }, computePosition: function (e, t) {
                    e = e.getBoundingClientRect();
                    var n = 0, i = 0, a = (t = t.getBoundingClientRect()).top - e.height - this.padding,
                        o = t.left + t.width + this.padding, r = t.top + t.height + this.padding,
                        s = t.left - e.width - this.padding;
                    /(top)|(bottom)/i.test(this.direction) ? (n = t.left + (t.width - e.width) / 2, "bottomStart" !== this.direction && "topStart" !== this.direction || (n = t.left), "bottomEnd" !== this.direction && "topEnd" !== this.direction || (n = t.left - e.width + t.width), n < 0 ? (n = 0, this.arrowStyle = {left: (t.left + t.right) / 2 + "px"}) : n + e.width > window.innerWidth ? (n = window.innerWidth - e.width, this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"}) : this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"}, "top" === this.direction || "topStart" === this.direction || "topEnd" === this.direction ? a < 0 && r + e.height <= window.innerHeight ? (i = r, this.secondDirection = "bottom", "topStart" === this.direction && (this.secondDirection = "bottomStart", this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"}), "topEnd" === this.direction && (this.secondDirection = "bottomEnd", this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"})) : (i = a, this.secondDirection = "", this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"}) : r + e.height > window.innerHeight && a >= 0 ? (i = a, this.secondDirection = "top", "bottomStart" === this.direction && (this.secondDirection = "topStart", this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"}), "bottomEnd" === this.direction && (this.secondDirection = "topEnd", this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"})) : (i = r, this.secondDirection = "", this.arrowStyle = {left: (t.left + t.right) / 2 - n + "px"})) : /(left)|(right)/i.test(this.direction) && (i = t.top + (t.height - e.height) / 2, "leftStart" !== this.direction && "rightStart" !== this.direction || (i = t.top), "leftEnd" !== this.direction && "rightEnd" !== this.direction || (i = t.top - e.height + t.height), i < 0 ? (i = 0, this.arrowStyle = {top: (t.top + t.bottom) / 2 + "px"}) : i + e.height > window.innerHeight ? (i = window.innerHeight - e.height, this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"}) : this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"}, "left" === this.direction || "leftStart" === this.direction || "leftEnd" === this.direction ? s < 0 && o + e.width <= window.innerWidth ? (n = o, this.secondDirection = "right", "leftStart" === this.direction && (this.secondDirection = "rightStart", this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"}), "leftEnd" === this.direction && (this.secondDirection = "rightEnd", this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"})) : (n = s, this.secondDirection = "", this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"}) : o + e.width > window.innerWidth && s >= 0 ? (n = s, this.secondDirection = "left", "rightStart" === this.direction && (this.secondDirection = "leftStart", this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"}), "rightEnd" === this.direction && (this.secondDirection = "leftEnd", this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"})) : (n = o, this.secondDirection = "", this.arrowStyle = {top: (t.top + t.bottom) / 2 - i + "px"})), this.top = i, this.left = n
                }, handleVisible: function (e, t, n) {
                    var i = this;
                    if ("click" === this.trigger && this.display && !0 !== n) return this.handleInvisible(e);
                    this.willHide = !1, this.currentElement = t, this.currentValue = e, this.$emit("update:display", !0), this.$emit("show", e), this.$nextTick(function () {
                        setTimeout(function () {
                            i.computePosition(i.$el, i.currentElement)
                        })
                    })
                }, handleInvisible: function (e) {
                    var t = this;
                    "click" === this.trigger ? (this.$emit("update:display", !1), this.$emit("hide", e)) : (this.willHide = !0, setTimeout(function () {
                        t.willHide && (t.$emit("update:display", !1), t.$emit("hide", e))
                    }, this.delay))
                }, handleScroll: function () {
                    this.scrollShow ? this.display && this.computePosition(this.$el, this.currentElement) : (this.$emit("update:display", !1), this.$emit("hide"))
                }, handlePopupVisible: function (e) {
                    e.stopPropagation(), this.willHide = !1, this.$emit("update:display", !0), this.$emit("show", this.value)
                }, handlePopupInvisible: function (e) {
                    var t = this;
                    "click" === this.trigger && this.isClosest(e.target, this.currentElement) || ("click" === this.trigger ? (this.$emit("update:display", !1), this.$emit("hide", this.value)) : (this.willHide = !0, setTimeout(function () {
                        t.willHide && (t.$emit("update:display", !1), t.$emit("hide", t.value))
                    }, this.delay)))
                }, handleResize: function () {
                    this.display && this.handleVisible(this.value, this.currentElement, !0)
                }, show: function (e, t) {
                    this.handleVisible(t, e)
                }, hide: function () {
                    this.handleInvisible()
                }, isDirectionLine: function (e) {
                    return "top" === e || "bottom" === e ? "top" === this.direction || "bottom" === this.direction : "left" === this.direction || "right" === this.direction
                }, isClosest: function (e, t) {
                    return e !== document && (e === t || this.isClosest(e.parentNode, t))
                }
            }
        }
    }, function (e, t, n) {
        "use strict";
        t.a = function (e, t) {
            var n = this, i = 0;
            return function () {
                for (var a = arguments.length, o = Array(a), r = 0; r < a; r++) o[r] = arguments[r];
                var s = +new Date;
                s - i > t && (e.apply(n, o), i = s)
            }
        }
    }, function (e, t, n) {
        var i = n(0), a = n(1);
        a.install = function (e) {
            e.directive("popup", i), e.component(a.name, a)
        }, e.exports = a
    }, function (e, t) {
        e.exports = function (e, t, n, i, a) {
            var o, r = e = e || {}, s = typeof e.default;
            "object" !== s && "function" !== s || (o = e, r = e.default);
            var l, u = "function" == typeof r ? r.options : r;
            if (t && (u.render = t.render, u.staticRenderFns = t.staticRenderFns), i && (u._scopeId = i), a ? (l = function (e) {
                (e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), n && n.call(this, e), e && e._registeredComponents && e._registeredComponents.add(a)
            }, u._ssrRegister = l) : n && (l = n), l) {
                var d = u.functional, c = d ? u.render : u.beforeCreate;
                d ? u.render = function (e, t) {
                    return l.call(t), c(e, t)
                } : u.beforeCreate = c ? [].concat(c, l) : [l]
            }
            return {esModule: o, exports: r, options: u}
        }
    }, function (e, t) {
        e.exports = {
            render: function () {
                var e = this, t = e.$createElement, n = e._self._c || t;
                return n("div", {
                    class: e.directionClass,
                    style: {display: e.display ? "block" : "none", left: e.left + "px", top: e.top + "px"},
                    attrs: {tabindex: "999"}
                }, [e._t("default"), e._v(" "), n("span", {
                    staticClass: "popup-arrow",
                    class: e.arrowClass,
                    style: e.arrowStyle
                })], 2)
            }, staticRenderFns: []
        }
    }])
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e[e.ValueNull = 0] = "ValueNull", e[e.ValueInt = 1] = "ValueInt", e[e.ValueBigint = 2] = "ValueBigint", e[e.ValueDouble = 3] = "ValueDouble", e[e.ValueString = 4] = "ValueString", e[e.ValueBlob = 5] = "ValueBlob"
    }(t.ValueType || (t.ValueType = {})), function (e) {
        e[e.StatementBengin = -1] = "StatementBengin", e[e.CreateTaskBase = 0] = "CreateTaskBase", e[e.CreateP2spTask = 1] = "CreateP2spTask", e[e.CreateBtTask = 2] = "CreateBtTask", e[e.CreateBtFile = 3] = "CreateBtFile", e[e.CreateEmuleTask = 4] = "CreateEmuleTask", e[e.CreateGroupTask = 5] = "CreateGroupTask", e[e.CreateMagnetTask = 6] = "CreateMagnetTask", e[e.DestroyTaskBase = 7] = "DestroyTaskBase", e[e.DestroyP2spTask = 8] = "DestroyP2spTask", e[e.DestroyBtTask = 9] = "DestroyBtTask", e[e.DestroyBtFile = 10] = "DestroyBtFile", e[e.DestroyEmuleTask = 11] = "DestroyEmuleTask", e[e.DestroyGroupTask = 12] = "DestroyGroupTask", e[e.DestroyMagnetTask = 13] = "DestroyMagnetTask", e[e.LoadTaskBase = 14] = "LoadTaskBase", e[e.LoadP2spTask = 15] = "LoadP2spTask", e[e.LoadBtTask = 16] = "LoadBtTask", e[e.LoadBtFile = 17] = "LoadBtFile", e[e.LoadEmuleTask = 18] = "LoadEmuleTask", e[e.LoadGroupTask = 19] = "LoadGroupTask", e[e.SetTaskSavePath = 20] = "SetTaskSavePath", e[e.SetTaskName = 21] = "SetTaskName", e[e.SetTaskNamingType = 22] = "SetTaskNamingType", e[e.SetTaskDescription = 23] = "SetTaskDescription", e[e.SetTaskCid = 24] = "SetTaskCid", e[e.SetTaskGcid = 25] = "SetTaskGcid", e[e.SetTaskStatus = 26] = "SetTaskStatus", e[e.SetTaskFileCreated = 27] = "SetTaskFileCreated", e[e.SetTaskFileSize = 28] = "SetTaskFileSize", e[e.SetTaskReceiveSize = 29] = "SetTaskReceiveSize", e[e.SetTaskDownloadSize = 30] = "SetTaskDownloadSize", e[e.SetTaskCompletionTime = 31] = "SetTaskCompletionTime", e[e.SetTaskDownloadingPeriod = 32] = "SetTaskDownloadingPeriod", e[e.SetTaskRemovingToRecycleTime = 33] = "SetTaskRemovingToRecycleTime", e[e.SetTaskFailureErrorCode = 34] = "SetTaskFailureErrorCode", e[e.SetTaskUserRead = 35] = "SetTaskUserRead", e[e.SetTaskOpenOnCompelete = 36] = "SetTaskOpenOnCompelete", e[e.SetTaskForbidden = 37] = "SetTaskForbidden", e[e.SetTaskUserData = 38] = "SetTaskUserData", e[e.SetTaskDownload = 39] = "SetTaskDownload", e[e.SetTaskOrigin = 40] = "SetTaskOrigin", e[e.SetTaskChannelInfo = 41] = "SetTaskChannelInfo", e[e.SetP2spTaskUseOriginOnly = 42] = "SetP2spTaskUseOriginOnly", e[e.SetP2spTaskThreadCount = 43] = "SetP2spTaskThreadCount", e[e.SetBtFileInfo = 44] = "SetBtFileInfo", e[e.SetBtFileCid = 45] = "SetBtFileCid", e[e.SetCategoryId = 46] = "SetCategoryId", e[e.LoadCategory = 47] = "LoadCategory", e[e.CreateCategory = 48] = "CreateCategory", e[e.SetCategoryPassword = 49] = "SetCategoryPassword", e[e.SetCategoryAccountPassword = 50] = "SetCategoryAccountPassword", e[e.SearchTaskByName = 51] = "SearchTaskByName", e[e.SearchTaskByBtDisplayName = 52] = "SearchTaskByBtDisplayName", e[e.StatementEnd = 53] = "StatementEnd"
    }(t.StatementType || (t.StatementType = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(5), o = n(52), r = n(28), s = n(63), l = n(11), u = r.DownloadKernelTaskManager.getTaskManager();
    !function (e) {
        e.findTaskAW = function (e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = null;
                    e.taskType === a.DownloadKernel.TaskType.P2sp ? n = {
                        keyType: a.DownloadKernel.KeyType.P2spUrl,
                        keyValue: e.value,
                        keyFilter: a.DownloadKernel.KeyFilter.All
                    } : e.taskType === a.DownloadKernel.TaskType.Emule ? n = {
                        keyType: a.DownloadKernel.KeyType.EmuleFileHash,
                        keyValue: e.value,
                        keyFilter: a.DownloadKernel.KeyFilter.All
                    } : e.taskType === a.DownloadKernel.TaskType.Bt ? n = {
                        keyType: a.DownloadKernel.KeyType.BtInfoId,
                        keyValue: e.value,
                        keyFilter: a.DownloadKernel.KeyFilter.All
                    } : e.taskType === a.DownloadKernel.TaskType.Magnet && (n = {
                        keyType: a.DownloadKernel.KeyType.MagnetUrl,
                        keyValue: e.value,
                        keyFilter: a.DownloadKernel.KeyFilter.All
                    }), null !== n && void 0 !== n.keyValue ? u.findTaskAsync(n, (n, i) => {
                        let o = null;
                        if (n && null !== i && void 0 !== i && (e.taskType === a.DownloadKernel.TaskType.P2sp || e.taskType === a.DownloadKernel.TaskType.Emule)) {
                            let e = i.getTaskAttribute(a.DownloadKernel.TaskAttribute.GroupTaskId);
                            if (e > 0) {
                                let t = u.getTaskFromTaskId(e);
                                null !== t && void 0 !== t && (o = t)
                            }
                        }
                        t({result: n, task: i, owner: o})
                    }) : t({result: !1, task: null, owner: null})
                })
            })
        }, e.importUnfinishedTaskAW = function (e, t) {
            return i(this, void 0, void 0, function* () {
                return new Promise(n => {
                    o.DownloadKernelManager.importUnfinishedTask(e, t, (e, t, i) => {
                        n({ret: e, url: t, torrentPath: i})
                    })
                })
            })
        }, e.parserBtFileInfoAW = function (e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => i(this, void 0, void 0, function* () {
                    (yield l.FileSystemAWNS.existsAW(e)) ? s.ThunderKernel.parserBtFileInfo(e, (e, n) => {
                        t(0 === e && n ? n : null)
                    }) : t(null)
                }))
            })
        }
    }(t.TaskUtilitiesAWNS || (t.TaskUtilitiesAWNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e.guidDownloadAndPlay = "{6B0A52BF-FDC5-4dfd-A20E-597CCD50CB8F}", e.guidTaskRequest = "{D30770E1-0A7F-4879-A103-AC738CB477C6}", e.guidUnzip = "{C60B84A8-6D18-475d-989D-965ADBECF135}", e.guidDownloadCompleteInstall = "{66F815D6-ADE3-4c85-A6B2-E48D50C096A7}", e.guidDownloadCompleteRunParams = "{D30770E1-0A7F-4879-A103-AC738CB477C6}"
    }(t.TaskUserDataGUID || (t.TaskUserDataGUID = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(33), a = n(114), o = n(29), r = n(95), s = n(1).default.getLogger("Thunder.shub-http.shub-crypto");
    !function (e) {
        function t(e) {
            let t = o.createHash("md5");
            return t.update(e), t.digest()
        }

        e.encryptHttpBuffer = function (e) {
            if (0 !== e.readUInt16LE(16)) {
                let t = i.Buffer.alloc(20);
                e.copy(t, 0, 0, 20);
                let n = i.Buffer.alloc(e.length - 20);
                e.copy(n, 0, 20);
                let o = a.deflateSync(n);
                e = i.Buffer.concat([t, o])
            }
            let n = i.Buffer.alloc(8);
            e.copy(n, 0, 0, 7), n = t(n);
            let o = i.Buffer.alloc(12);
            e.copy(o, 0, 0, 11);
            let s = i.Buffer.alloc(e.length - 12);
            e.copy(s, 0, 12), s = r.ToolsUtilitiesAWNS.encryptBuffer(s, n);
            let l = i.Buffer.concat([o, s]);
            return l.writeUInt32LE(s.length, 8), l
        }, e.decryptHttpBuffer = function (e) {
            let n = null;
            try {
                let o = i.Buffer.alloc(8);
                e.copy(o, 0, 0, 7), o = t(o);
                let l = i.Buffer.alloc(12);
                e.copy(l, 0, 0, 11);
                let u = i.Buffer.alloc(e.length - 12);
                if (e.copy(u, 0, 12), u = r.ToolsUtilitiesAWNS.decryptBuffer(u, o), 0 !== (n = i.Buffer.concat([l, u])).readUInt16LE(16)) {
                    let e = i.Buffer.alloc(20);
                    n.copy(e, 0, 0, 20);
                    let t = i.Buffer.alloc(n.length - 20);
                    n.copy(t, 0, 20);
                    let o = a.inflateSync(t);
                    n = i.Buffer.concat([e, o])
                }
            } catch (e) {
                s.error("decryptHttpBuffer", e)
            }
            return n
        }
    }(t.ShubCryptoNS || (t.ShubCryptoNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(487);
    !function (e) {
        e.writeUInt64LE = function (e, t, n) {
            const i = ~~(t / 4294967295), a = t % 4294967295 - i;
            return n = e.writeUInt32LE(a, n), n = e.writeUInt32LE(i, n)
        }, e.writeString = function (e, t, n, a) {
            let o = i.encode(t, a);
            return (n = e.writeUInt32LE(o.byteLength, n)) + o.copy(e, n, 0)
        }, e.readUInt64LE = function (e, t) {
            let n = e.readUInt32LE(t);
            t += 4;
            let i = e.readUInt32LE(t);
            return [t += 4, (i << 32) + n]
        }, e.readString = function (e, t, n) {
            let a = e.readUInt32LE(t);
            t += 4;
            let o = Buffer.alloc(a);
            return e.copy(o, 0, t, t + a), [t += a, i.decode(o, n)]
        }
    }(t.BufferUtilitiesNS || (t.BufferUtilitiesNS = {}))
}, function (e) {
    e.exports = [["a140", "", 62], ["a180", "", 32], ["a240", "", 62], ["a280", "", 32], ["a2ab", "", 5], ["a2e3", "€"], ["a2ef", ""], ["a2fd", ""], ["a340", "", 62], ["a380", "", 31, "　"], ["a440", "", 62], ["a480", "", 32], ["a4f4", "", 10], ["a540", "", 62], ["a580", "", 32], ["a5f7", "", 7], ["a640", "", 62], ["a680", "", 32], ["a6b9", "", 7], ["a6d9", "", 6], ["a6ec", ""], ["a6f3", ""], ["a6f6", "", 8], ["a740", "", 62], ["a780", "", 32], ["a7c2", "", 14], ["a7f2", "", 12], ["a896", "", 10], ["a8bc", ""], ["a8bf", "ǹ"], ["a8c1", ""], ["a8ea", "", 20], ["a958", ""], ["a95b", ""], ["a95d", ""], ["a989", "〾⿰", 11], ["a997", "", 12], ["a9f0", "", 14], ["aaa1", "", 93], ["aba1", "", 93], ["aca1", "", 93], ["ada1", "", 93], ["aea1", "", 93], ["afa1", "", 93], ["d7fa", "", 4], ["f8a1", "", 93], ["f9a1", "", 93], ["faa1", "", 93], ["fba1", "", 93], ["fca1", "", 93], ["fda1", "", 93], ["fe50", "⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], ["fe80", "䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓", 6, "䶮", 93]]
}, function (e) {
    e.exports = [["0", "\0", 127], ["a140", "　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], ["a1a1", "﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢", 4, "～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／"], ["a240", "＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁", 7, "▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], ["a2a1", "╮╰╯═╞╪╡◢◣◥◤╱╲╳０", 9, "Ⅰ", 9, "〡", 8, "十卄卅Ａ", 25, "ａ", 21], ["a340", "ｗｘｙｚΑ", 16, "Σ", 6, "α", 16, "σ", 6, "ㄅ", 10], ["a3a1", "ㄐ", 25, "˙ˉˊˇˋ"], ["a3e1", "€"], ["a440", "一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], ["a4a1", "丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], ["a540", "世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], ["a5a1", "央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], ["a640", "共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], ["a6a1", "式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], ["a740", "作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], ["a7a1", "均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], ["a840", "杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], ["a8a1", "芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], ["a940", "咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], ["a9a1", "屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], ["aa40", "昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], ["aaa1", "炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], ["ab40", "陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], ["aba1", "哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], ["ac40", "拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], ["aca1", "活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], ["ad40", "耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], ["ada1", "迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], ["ae40", "哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], ["aea1", "恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], ["af40", "浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], ["afa1", "砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], ["b040", "虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], ["b0a1", "陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], ["b140", "娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], ["b1a1", "情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], ["b240", "毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], ["b2a1", "瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], ["b340", "莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], ["b3a1", "部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], ["b440", "婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], ["b4a1", "插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], ["b540", "溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], ["b5a1", "窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], ["b640", "詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], ["b6a1", "間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], ["b740", "媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], ["b7a1", "楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], ["b840", "睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], ["b8a1", "腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], ["b940", "辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], ["b9a1", "飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], ["ba40", "愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], ["baa1", "滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], ["bb40", "罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], ["bba1", "說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], ["bc40", "劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], ["bca1", "慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], ["bd40", "瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], ["bda1", "翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], ["be40", "輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], ["bea1", "鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], ["bf40", "濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], ["bfa1", "縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], ["c040", "錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], ["c0a1", "嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], ["c140", "瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], ["c1a1", "薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], ["c240", "駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], ["c2a1", "癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], ["c340", "鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], ["c3a1", "獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], ["c440", "願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], ["c4a1", "纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], ["c540", "護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], ["c5a1", "禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], ["c640", "讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], ["c940", "乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], ["c9a1", "氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], ["ca40", "汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], ["caa1", "吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], ["cb40", "杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], ["cba1", "芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], ["cc40", "坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], ["cca1", "怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], ["cd40", "泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], ["cda1", "矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], ["ce40", "哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], ["cea1", "峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], ["cf40", "柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], ["cfa1", "洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], ["d040", "穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], ["d0a1", "苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], ["d140", "唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], ["d1a1", "恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], ["d240", "毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], ["d2a1", "牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], ["d340", "笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], ["d3a1", "荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], ["d440", "酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], ["d4a1", "唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], ["d540", "崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], ["d5a1", "捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], ["d640", "淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], ["d6a1", "痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], ["d740", "耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], ["d7a1", "蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], ["d840", "釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], ["d8a1", "堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], ["d940", "惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], ["d9a1", "晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], ["da40", "湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], ["daa1", "琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], ["db40", "罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], ["dba1", "菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], ["dc40", "軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], ["dca1", "隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], ["dd40", "媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], ["dda1", "搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], ["de40", "毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], ["dea1", "煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], ["df40", "稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], ["dfa1", "腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], ["e040", "觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], ["e0a1", "遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], ["e140", "凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], ["e1a1", "寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], ["e240", "榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], ["e2a1", "漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], ["e340", "禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], ["e3a1", "耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], ["e440", "裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], ["e4a1", "銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], ["e540", "噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], ["e5a1", "憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], ["e640", "澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], ["e6a1", "獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], ["e740", "膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], ["e7a1", "蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], ["e840", "踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], ["e8a1", "銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], ["e940", "噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], ["e9a1", "憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], ["ea40", "澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], ["eaa1", "瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], ["eb40", "蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], ["eba1", "諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], ["ec40", "錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], ["eca1", "魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], ["ed40", "檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], ["eda1", "瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], ["ee40", "蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], ["eea1", "謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], ["ef40", "鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], ["efa1", "鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], ["f040", "璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], ["f0a1", "臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], ["f140", "蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], ["f1a1", "鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], ["f240", "徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], ["f2a1", "礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], ["f340", "譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], ["f3a1", "鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], ["f440", "嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], ["f4a1", "禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], ["f540", "鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], ["f5a1", "鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], ["f640", "蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], ["f6a1", "騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], ["f740", "糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], ["f7a1", "驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], ["f840", "讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], ["f8a1", "齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], ["f940", "纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], ["f9a1", "龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(33), a = n(95), o = n(48), r = n(1).default.getLogger("Thunder.VipDownload.json-crypto");
    !function (e) {
        e.getAuthorization = function (e, t) {
            return e + ":" + t
        }, e.getAccept = function () {
            return "application/json; version=1.0"
        }, e.getUriParam = function (e, t, n) {
            const i = o.PluginHelperNS.getHelper();
            let a = "client_name=" + i.clientName + "&client_version=" + i.thunderVersionNumber + "&client_sequence=" + e + "&r=" + t;
            return void 0 !== n && (a = a + "&verify_type=" + n), a
        }, e.getAesKey = function (e, t) {
            const n = o.PluginHelperNS.getHelper();
            let i = n.clientName + n.thunderVersionNumber + e + t;
            return (i = a.ToolsUtilitiesAWNS.genarateMd5(i)).substr(0, 16).toUpperCase()
        }, e.encryptHttpBuffer = function (e, t) {
            r.information("aesKey", t);
            let n = JSON.stringify(e);
            r.information("jsonStr", n);
            let o = i.Buffer.from(n);
            r.information("buffer", o);
            let s = a.ToolsUtilitiesAWNS.encryptBuffer(o, t);
            return r.information("destBuffer", s), s
        }, e.decryptHttpBuffer = function (e, t) {
            r.information("aesKey", t), e = a.ToolsUtilitiesAWNS.decryptBuffer(e, t), r.information("buffer", e);
            let n = null;
            if (e) {
                let t = e.toString();
                r.information("jsonStr", t);
                try {
                    n = JSON.parse(t)
                } catch (e) {
                    r.warning(e)
                }
            }
            return n
        }
    }(t.HttpJsonCryptoNS || (t.HttpJsonCryptoNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        let t;
        !function (e) {
            e[e.Commit = 0] = "Commit", e[e.Token = 1] = "Token", e[e.Acclerate = 2] = "Acclerate"
        }(t = e.ErrorStep || (e.ErrorStep = {}))
    }(t.HttpDefineNS || (t.HttpDefineNS = {})), function (e) {
        let t = new Map;
        e.getMessage = function (e) {
            return t.get(e)
        }, e.errorOk = 0, t.set(e.errorOk, "成功"), e.errorConnect = -1, t.set(e.errorConnect, "服务器响应超时"), e.errorStatusCode = -2, t.set(e.errorStatusCode, "服务器响应超时"), e.errorData = -3, t.set(e.errorData, "服务器响应超时"), e.errorPrase = -4, t.set(e.errorPrase, "服务器响应超时")
    }(t.HttpErrorNS || (t.HttpErrorNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(11), r = n(6), s = n(652), l = n(54), u = n(7), d = n(21), c = n(25), h = n(515),
        f = u.promisify, p = r.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        g = n(1).default.getLogger("SettingConfigHelper");
    !function (e) {
        e.configBrowserHelper = new class {
            constructor() {
                this.browserconfig = null, this.installWatchBrowsers = [], this.configShowBrowsers = [], this.eventContainer = new l.default, this.isInit = !1
            }

            init() {
                return i(this, void 0, void 0, function* () {
                    g.information("ConfigBrowserHelper enter init ");
                    let e = yield this.onConfigInit(), t = yield this.onBhoConfigInit();
                    g.information("ConfigBrowserHelper init isConfigInit:", e, ";isBhoConfigInit:", t), e && t && (yield this.readBrowserConfigXml(), yield this.writeNewBrowserToConfigINI(), this.isInit = !0, g.information("ConfigBrowserHelper init Finished"), this.eventContainer.fireEvent(d.NodeEventMesssageNS.eventConfigBrowserInitFinished))
                })
            }

            attachListener(e, t) {
                do {
                    if (e === d.NodeEventMesssageNS.eventConfigBrowserInitFinished) {
                        if (this.isInit) {
                            t(this.isInit);
                            break
                        }
                        this.eventContainer.attachOnceListener(e, t);
                        break
                    }
                    this.eventContainer.attachListener(e, t)
                } while (0)
            }

            detachListener(e, t) {
                this.eventContainer.detachListener(e, t)
            }

            getConfigShowBrowsers() {
                let e = [];
                do {
                    if (null === this.configShowBrowsers || void 0 === this.configShowBrowsers || this.configShowBrowsers.length <= 0) break;
                    for (let t = 0; t < this.configShowBrowsers.length; ++t) {
                        let n = this.configShowBrowsers[t], i = n.browserName, a = "Motitor" + i, o = !1;
                        0 !== c.ConfigNS.getValue("Motitor", a, 2) && (o = !0);
                        let r = {content: i, name: n.name, key: a, isSelect: o};
                        e.push(r)
                    }
                } while (0);
                return g.information("getConfigShowBrowsers:", e), e
            }

            getWriteIniConfigShowBrowsers() {
                let e = "";
                do {
                    let t = this.getConfigShowBrowsers();
                    if (null === t || void 0 === t || t.length <= 0) break;
                    for (let n = 0; n < t.length; ++n) {
                        let i = t[n], a = i.name;
                        "IE浏览器" !== i.content && i.isSelect && (void 0 !== e && null !== e && "" !== e ? "edge" === a || "edgecp" === a ? e += "edge||edgecp||" : e = e + a + "||" : e = "edge" === a || "edgecp" === a ? "edge||edgecp||" : a + "||")
                    }
                } while (0);
                return e
            }

            getWatchBrowerByName(e) {
                let t = null;
                do {
                    if (null === this.installWatchBrowsers || void 0 === this.installWatchBrowsers || this.installWatchBrowsers.length <= 0) break;
                    for (let n = 0; n < this.installWatchBrowsers.length; ++n) {
                        let i = this.installWatchBrowsers[n];
                        if (i.browserName.toLowerCase() === e.toLowerCase()) {
                            t = i;
                            break
                        }
                    }
                } while (0);
                return t
            }

            savaMotiorBrowserToConfig() {
                do {
                    let e = this.getConfigShowBrowsers();
                    if (null === e || void 0 === e || e.length <= 0) break;
                    let t = !1;
                    for (let n = 0; n < e.length; ++n) {
                        let i = e[n];
                        i.isSelect && (t = !0), "IE浏览器" === i.content && (i.isSelect ? (h.BHOConfigNS.setValue("Monitor", "ConfigWatch_Browser", 1), h.BHOConfigNS.setValue("Monitor", "MonitorIE", 1)) : (h.BHOConfigNS.setValue("Monitor", "ConfigWatch_Browser", 0), h.BHOConfigNS.setValue("Monitor", "MonitorIE", 0)))
                    }
                    t || h.BHOConfigNS.setValue("Monitor", "ConfigWatch_Browser", 0)
                } while (0)
            }

            onConfigInit() {
                return i(this, void 0, void 0, function* () {
                    return new Promise(e => {
                        c.ConfigNS.attachListener(d.NodeEventMesssageNS.eventConfigInitFinished, () => {
                            e(!0)
                        })
                    })
                })
            }

            onBhoConfigInit() {
                return i(this, void 0, void 0, function* () {
                    return new Promise(e => {
                        h.BHOConfigNS.attachListener(d.NodeEventMesssageNS.eventBHOConfigInitFinished, () => {
                            e(!0)
                        })
                    })
                })
            }

            readBrowserConfigXml() {
                return i(this, void 0, void 0, function* () {
                    g.information("enter readBrowserConfigXml");
                    do {
                        if (null !== this.browserconfig && void 0 !== this.browserconfig) break;
                        let e = this.getShortThunderVersion();
                        if (null === e || void 0 === e || "" === e) break;
                        let t = p.getCommonFilesPath(),
                            n = "XLWFPDOWNLOAD-SSID-{DB09E578-4ECF-486e-90A5-505A33219F71}_" + e + ".xml",
                            i = a.join(t, "Thunder Network\\ServicePlatform\\"), r = a.join(i, n),
                            l = yield o.FileSystemAWNS.readFileAW(r);
                        if (!l || "" === l.toString()) break;
                        let u = {explicitArray: !1}, d = yield f(s.parseString)(l, u);
                        null !== d && void 0 !== d && (this.browserconfig = d.browserconfig, yield this.setInstallWatchBrowserList())
                    } while (0);
                    this.setConfigShowBrowsers(), g.information("leave readBrowserConfigXml")
                })
            }

            writeNewBrowserToConfigINI() {
                return i(this, void 0, void 0, function* () {
                    g.information("enter writeNewBrowserToConfigINI");
                    let e = "";
                    for (let t = 0; t < this.configShowBrowsers.length; ++t) {
                        let n = this.configShowBrowsers[t], i = "Motitor" + n.browserName;
                        2 === c.ConfigNS.getValue("Motitor", i, 2) && c.ConfigNS.setValue("Motitor", i, 1);
                        let a = n.name;
                        void 0 !== a && null !== a && "" !== a && (void 0 !== e && null !== e && "" !== e ? "edge" === a || "edgecp" === a ? e += "edge||edgecp||" : e = e + a + "||" : e = "edge" === a || "edgecp" === a ? "edge||edgecp||" : a + "||")
                    }
                    h.BHOConfigNS.setValue("Monitor", "ConfigBrowsers", e), g.information("leave writeNewBrowserToConfigINI")
                })
            }

            getShortThunderVersion() {
                let e = "";
                do {
                    let t = a.join(__rootDir, "../../Thunder.exe"), n = p.getFileVersion(t);
                    if (null === n || void 0 === n || "" === n) break;
                    let i = n.split(/\./);
                    null !== i && void 0 !== i && i.length >= 3 && (e = i[0] + "." + i[1] + "." + i[2])
                } while (0);
                return e
            }

            setInstallWatchBrowserList() {
                return i(this, void 0, void 0, function* () {
                    do {
                        if (null === this.browserconfig || void 0 === this.browserconfig) break;
                        if (null === this.browserconfig.browsers || void 0 === this.browserconfig.browsers) break;
                        let e = this.browserconfig.browsers;
                        if (null === e || void 0 === e || e.browser.length <= 0) break;
                        for (let t = 0; t < e.browser.length; ++t) {
                            let n = e.browser[t], i = !1;
                            "appReg" === n.type ? i = yield this.checkInstallByappReg(n) : "appPath" === n.type && (i = this.checkInstallByappPath(n)), i && this.installWatchBrowsers.push(n)
                        }
                        g.information("配置初始化时,安装的浏览器:", this.installWatchBrowsers)
                    } while (0)
                })
            }

            checkInstallByappReg(e) {
                return i(this, void 0, void 0, function* () {
                    let t = !1;
                    do {
                        if (null === e || void 0 === e) break;
                        if (null === e.reg || void 0 === e.reg) break;
                        let n = e.reg.regRoot;
                        if (null === n || void 0 === n || "" === n) break;
                        let i = e.reg.regKey;
                        if (null === i || void 0 === i || "" === i) break;
                        let r = e.reg.regName, s = p.queryRegValue(n, i, r);
                        if (g.information("checkInstallByappReg:", s, n, i, r), null === s || void 0 === s || "" === s) break;
                        s = this.getPathFromRegString(s);
                        let l = p.getLongPathName(s);
                        null !== l && void 0 !== l && "" !== l && (s = l);
                        let u = e.proName, d = u.toLowerCase();
                        if (s.toLowerCase().search(d) < 0) {
                            let e = a.extname(s);
                            if (void 0 === e || null === e || "" === e) s = a.join(s, u); else {
                                let e = a.dirname(s);
                                s = a.join(e, u)
                            }
                            if (!(t = yield o.FileSystemAWNS.existsAW(s))) {
                                let e = a.dirname(s);
                                s = this.getFilePathByDir(e, u)
                            }
                        }
                        t || (t = yield o.FileSystemAWNS.existsAW(s))
                    } while (0);
                    return t
                })
            }

            getPathFromRegString(e) {
                let t = e, n = t.search(/\,/);
                return n >= 0 && (t = t.substring(0, n)), t = t.replace(/\"/g, "")
            }

            getFilePathByDir(e, t) {
                return g.information("getFilePathByDir:", e, t), ""
            }

            checkInstallByappPath(e) {
                let t = !1;
                do {
                    if (null === e || void 0 === e) break;
                    if (null === e.filePath || void 0 === e.filePath || "" === e.filePath) break;
                    let n = p.getSystemTempPath();
                    if (null === n || void 0 === n || "" === n) break;
                    let i = n.substring(0, 1);
                    if (null === i || void 0 === i || "" === i) break;
                    i += ":\\";
                    let o = a.join(i, e.filePath);
                    t = p.queryFileExists(o)
                } while (0);
                return t
            }

            setConfigShowBrowsers() {
                do {
                    let e = {browserName: "IE浏览器", icoUrl: ""};
                    if (this.configShowBrowsers.push(e), void 0 === this.installWatchBrowsers || null === this.installWatchBrowsers || this.installWatchBrowsers.length <= 0) break;
                    for (let e = 0; e < this.installWatchBrowsers.length; ++e) {
                        let t = this.installWatchBrowsers[e], n = !1;
                        for (let e = 0; e < this.configShowBrowsers.length; ++e) {
                            let i = this.configShowBrowsers[e];
                            if (i.browserName.toLowerCase() === t.browserName.toLowerCase()) {
                                null !== i.icoUrl && void 0 !== i.icoUrl && "" !== i.icoUrl || (this.configShowBrowsers[e].icoUrl = t.icoUrl), n = !0;
                                break
                            }
                        }
                        n || this.configShowBrowsers.push(t)
                    }
                } while (0)
            }
        }
    }(t.SettingConfigHelperNS || (t.SettingConfigHelperNS = {}))
}, function (e, t) {
    e.exports = "data:image/png;base64, "
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(3), o = n(36), r = n(1), s = n(5), l = n(158), u = n(28), d = n(752), c = n(163), h = n(58), f = n(21),
        p = n(13), g = n(107), k = n(25), m = n(34), T = n(484), v = n(81), w = n(53), y = n(255), S = n(96),
        b = n(275), C = n(518), D = n(80), N = n(43), I = n(7), _ = n(2), x = n(511),
        E = r.default.getLogger("Thunder.ContextMenu"), A = v.DownloadKernelCategoryManager.getCategoryManager(),
        P = u.DownloadKernelTaskManager.getTaskManager(), M = b.GroupAccelerateManagerNS.getManager(),
        F = C.GroupAccelerateWebManagerNS.getManager(), O = x.SubtitleManagerNS.getSubtitleManger();
    var B;
    !function (e) {
        e[e.Unknown = 0] = "Unknown", e[e.DownloadingCategory = 1] = "DownloadingCategory", e[e.DownloadingBlank = 2] = "DownloadingBlank", e[e.DownloadingItem = 3] = "DownloadingItem", e[e.CompletedCategory = 4] = "CompletedCategory", e[e.CompletedItem = 5] = "CompletedItem", e[e.RecycleCategory = 6] = "RecycleCategory", e[e.RecycleBlank = 7] = "RecycleBlank", e[e.RecycleItem = 8] = "RecycleItem", e[e.ToolbarMore = 9] = "ToolbarMore", e[e.ChangeCategory = 10] = "ChangeCategory", e[e.PrivateSpaceHome = 11] = "PrivateSpaceHome", e[e.SearchMultiSel = 12] = "SearchMultiSel", e[e.Upper = 13] = "Upper"
    }(B = t.DownloadMenuType || (t.DownloadMenuType = {}));
    t.downloadContextMenu = new class {
        constructor() {
            this.contextInfo = [], this.count = 0, this.categoryId = -1, this.emitter = null, this.searchMode = !1, this.emitter = new o.EventEmitter
        }

        setContextInfo(e, t, n, i) {
            this.contextInfo = e, I.isNullOrUndefined(n) || (this.count = n), I.isNullOrUndefined(t) || (this.categoryId = t), I.isNullOrUndefined(i) ? this.searchMode = !1 : this.searchMode = i
        }

        attachListener(e, t) {
            this.emitter.addListener(e, t)
        }

        detachListener(e, t) {
            this.emitter.removeListener(e, t)
        }

        popMenu(e) {
            return i(this, void 0, void 0, function* () {
                switch (e) {
                    case B.DownloadingCategory: {
                        let e = [{
                            type: "submenu",
                            label: "排序",
                            submenu: this.getSortSubMenuOptions(this.contextInfo)
                        }, {
                            type: "normal",
                            label: "全选(&A)",
                            id: d.ContextMenuIdsNS.contextMenuDownloadSelectAll
                        }, {
                            type: "normal",
                            label: "全部开始",
                            id: d.ContextMenuIdsNS.contextMenuDownloadStartAll
                        }, {type: "normal", label: "全部暂停", id: d.ContextMenuIdsNS.contextMenuDownloadPauseAll}];
                        this.popMenuInternal(e)
                    }
                        break;
                    case B.CompletedCategory: {
                        let e = this.contextInfo.currentCategoryId,
                            t = l.TaskStatusHelper.canMarkAsOpened(this.contextInfo.completedTaskBaseList), n = [{
                                type: "submenu",
                                label: "排序",
                                submenu: this.getSortSubMenuOptions(this.contextInfo)
                            }, {
                                type: "normal",
                                label: "全选(&A)",
                                id: d.ContextMenuIdsNS.contextMenuDownloadSelectAll
                            }, {
                                type: "normal",
                                label: "删除不存在任务",
                                id: d.ContextMenuIdsNS.contextMenuDownloadDeleteNonexisting
                            }, {
                                type: "normal",
                                label: "全部标记为已打开",
                                id: d.ContextMenuIdsNS.contextMenuDownloadAsReadedAll,
                                enabled: t
                            }];
                        -1 !== e && (n = [{
                            type: "normal",
                            label: "全部标记为已打开",
                            id: d.ContextMenuIdsNS.contextMenuDownloadAsReadedAll,
                            enabled: t
                        }]), this.popMenuInternal(n)
                    }
                        break;
                    case B.RecycleCategory: {
                        let e = !0;
                        null !== this.contextInfo && 0 !== this.contextInfo.length || (e = !1);
                        let t = [{
                            type: "submenu",
                            label: "排序",
                            submenu: this.getSortSubMenuOptions(this.contextInfo)
                        }, {
                            type: "normal",
                            label: "全选(&A)",
                            id: d.ContextMenuIdsNS.contextMenuDownloadSelectAll
                        }, {
                            type: "normal",
                            label: "清空垃圾箱",
                            id: d.ContextMenuIdsNS.contextMenuDownloadClear,
                            enabled: e
                        }];
                        this.popMenuInternal(t)
                    }
                        break;
                    case B.DownloadingBlank: {
                        let e = [{
                            type: "normal",
                            label: "导入未完成任务(&I)",
                            id: d.ContextMenuIdsNS.contextMenuDownloadImportUncomplete
                        }];
                        this.popMenuInternal(e)
                    }
                        break;
                    case B.DownloadingItem:
                        if (null !== this.contextInfo && this.contextInfo.length > 0) {
                            let e = yield this.getLastestSavePathsOptions(!0, "MoveToDir", "LatestSavePath");
                            e.push({
                                type: "normal",
                                label: "其他目录",
                                id: d.ContextMenuIdsNS.contextMenuDownloadMoveFileOther,
                                statId: "downloading_rk_move_click",
                                extData: "button=other"
                            });
                            let t = yield this.canSelectTaskAcc(this.contextInfo), n = [];
                            if (-1 === this.categoryId ? n.push({
                                type: "normal",
                                label: "删除(&D)",
                                icon: `${__rootDir}/static/icon/deletetask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDelete,
                                statId: "downloading_rk_delete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Downloading
                            }, {
                                type: "normal",
                                label: "彻底删除(&Q)",
                                icon: `${__rootDir}/static/icon/destroytask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDestroy,
                                statId: "downloading_rk_completedelete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Downloading
                            }, {type: "submenu", label: "移动文件到", submenu: e}) : n.push({
                                type: "normal",
                                label: "彻底删除(&D)",
                                icon: `${__rootDir}/static/icon/destroytask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDestroy,
                                statId: "downloading_rk_completedelete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Downloading
                            }), n.push({type: "separator"}, {
                                type: "normal",
                                label: "会员加速",
                                id: d.ContextMenuIdsNS.contextMenuDownloadVipAcc,
                                statId: "downloading_rk_vipacc_click",
                                enabled: t
                            }), !this.searchMode && this.count > 3 && this.contextInfo.length !== this.count && n.splice(4, 0, {
                                type: "normal",
                                label: "上移到顶部",
                                id: d.ContextMenuIdsNS.contextMenuDownloadMoveTop
                            }, {
                                type: "normal",
                                label: "下移到底部",
                                id: d.ContextMenuIdsNS.contextMenuDownloadMoveBottom
                            }, {type: "separator"}), 1 === this.contextInfo.length) {
                                l.TaskStatusHelper.canStopSelectedTask(s.DownloadKernel.CategroyViewID.Downloading, this.contextInfo) ? n.unshift({
                                    type: "normal",
                                    label: "暂停(&P)",
                                    icon: `${__rootDir}/static/icon/stoptask.png`,
                                    id: d.ContextMenuIdsNS.contextMenuDownloadPause,
                                    statId: "downloading_rk_pause_click"
                                }) : n.unshift({
                                    type: "normal",
                                    label: "开始(&S)",
                                    icon: `${__rootDir}/static/icon/startalltask.png`,
                                    id: d.ContextMenuIdsNS.contextMenuDownloadStart,
                                    statId: "downloading_rk_start_click"
                                });
                                let e = yield c.TaskCtrlOperatorNS.canOpenSelectedTaskFolder(this.contextInfo[0]);
                                n.splice(0, 0, {
                                    type: "normal",
                                    label: "打开文件夹(&F)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadFolder,
                                    statId: "downloading_rk_openfolders_click",
                                    enabled: e,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Downloading
                                }), this.searchMode && n.splice(1, 0, {
                                    type: "normal",
                                    label: "打开任务位置(&G)",
                                    id: d.ContextMenuIdsNS.contextMenuOpenTaskPosition,
                                    statId: "openfile_position_click",
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Downloading
                                });
                                let t = 2;
                                M.canEnterGroupAccelerate(this.contextInfo[0].taskId) && (n.splice(t, 0, {
                                    type: "normal",
                                    label: "组队加速",
                                    icon: `${__rootDir}/static/icon/groupaccelerate.png`,
                                    id: d.ContextMenuIdsNS.contextMenuGroupAccelerate,
                                    statId: "downloading_rk_groupspeedup_click"
                                }), t += 1), P.getTaskFromTaskId(this.contextInfo[0].taskId).isSupportPlay() ? n.splice(t, 0, {
                                    type: "normal",
                                    label: "字幕搜索",
                                    icon: `${__rootDir}/static/icon/sunbtitle.png`,
                                    id: d.ContextMenuIdsNS.contxtMenuSubtitleSearch,
                                    statId: "downloading_rk_subtitlesearch_click"
                                }, {type: "separator"}) : n.splice(t, 0, {type: "separator"}), this.contextInfo[0].taskType === s.DownloadKernel.TaskType.Bt ? n.push({
                                    type: "normal",
                                    label: "种子文件另存为(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadTorrentSaveAs,
                                    statId: "downloading_rk_torrentsave_click"
                                }, {
                                    type: "normal",
                                    label: "复制磁力链接",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyMagnet,
                                    statId: "downloading_rk_copymagnet_click",
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Downloading
                                }) : n.push({
                                    type: "normal",
                                    label: "复制下载链接(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Downloading
                                })
                            } else {
                                let e = l.TaskStatusHelper.canStopSelectedTask(s.DownloadKernel.CategroyViewID.Downloading, this.contextInfo),
                                    t = l.TaskStatusHelper.canStartSelectedTask(s.DownloadKernel.CategroyViewID.Downloading, this.contextInfo);
                                e && n.unshift({
                                    type: "normal",
                                    label: "暂停(&P)",
                                    icon: `${__rootDir}/static/icon/stoptask.png`,
                                    id: d.ContextMenuIdsNS.contextMenuDownloadPause
                                }), t && n.unshift({
                                    type: "normal",
                                    label: "开始(&S)",
                                    icon: `${__rootDir}/static/icon/startalltask.png`,
                                    id: d.ContextMenuIdsNS.contextMenuDownloadStart
                                });
                                let i = l.TaskStatusHelper.canCopySelectTaskLink(this.contextInfo);
                                n.push({
                                    type: "normal",
                                    label: "复制下载链接(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                                    enabled: i,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Downloading
                                })
                            }
                            this.popMenuInternal(n)
                        }
                        break;
                    case B.CompletedItem:
                        if (null !== this.contextInfo && this.contextInfo.length > 0) {
                            let e = [];
                            if (-1 === this.categoryId ? e.push({
                                type: "normal",
                                label: "删除(&D)",
                                icon: `${__rootDir}/static/icon/deletetask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDelete,
                                statId: "finished_rk_delete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Completed
                            }, {
                                type: "normal",
                                label: "彻底删除(&Q)",
                                icon: `${__rootDir}/static/icon/destroytask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDestroy,
                                statId: "finished_rk_completedelete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Completed
                            }) : e.push({
                                type: "normal",
                                label: "彻底删除(&D)",
                                icon: `${__rootDir}/static/icon/destroytask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDestroy,
                                statId: "downloading_rk_completedelete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Completed
                            }), e.push({
                                type: "normal",
                                label: "重新下载(&T)",
                                icon: `${__rootDir}/static/icon/redownload.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadRedownload,
                                categoryView: s.DownloadKernel.CategroyViewID.Completed
                            }), -1 === this.categoryId) {
                                let t = yield this.getLastestSavePathsOptions(!0, "CopyToDir", "LatestSavePath", !0);
                                t.push({
                                    type: "normal",
                                    label: "其他目录",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyFileOther,
                                    statId: "finished_rk_copyfiles_click",
                                    extData: "button=other"
                                }), e.splice(2, 0, {type: "submenu", label: "复制文件到", submenu: t});
                                let n = yield this.getLastestSavePathsOptions(!0, "MoveToDir", "LatestSavePath");
                                n.push({
                                    type: "normal",
                                    label: "其他目录",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadMoveFileOther,
                                    enabled: !0,
                                    statId: "finished_rk_move_click",
                                    extData: "button=other"
                                }), e.splice(2, 0, {type: "separator"}, {type: "submenu", label: "移动文件到", submenu: n})
                            }
                            if (1 === this.contextInfo.length) {
                                e.splice(2, 0, {
                                    type: "normal",
                                    label: "重命名(&R)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadRename,
                                    statId: "finished_rk_rename_click"
                                });
                                let t = yield c.TaskCtrlOperatorNS.canOpenSelectedTaskFolder(this.contextInfo[0]),
                                    n = yield c.TaskCtrlOperatorNS.canOpenSelectedTaskFile(this.contextInfo[0]);
                                e.splice(0, 0, {
                                    type: "normal",
                                    label: "打开文件(&O)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadFile,
                                    statId: "finished_rk_openfiles_click",
                                    categoryView: s.DownloadKernel.CategroyViewID.Completed,
                                    enabled: n,
                                    userData: this.searchMode
                                }, {
                                    type: "normal",
                                    label: "打开文件夹(&F)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadFolder,
                                    statId: "finished_rk_openfolders_click",
                                    categoryView: s.DownloadKernel.CategroyViewID.Completed,
                                    enabled: t,
                                    userData: this.searchMode
                                }), this.searchMode && e.splice(2, 0, {
                                    type: "normal",
                                    label: "打开任务位置(&G)",
                                    id: d.ContextMenuIdsNS.contextMenuOpenTaskPosition,
                                    statId: "openfile_position_click",
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Completed
                                });
                                let i = 2;
                                M.canEnterGroupAccelerate(this.contextInfo[0].taskId) && (e.splice(i, 0, {
                                    type: "normal",
                                    label: "组队加速",
                                    icon: `${__rootDir}/static/icon/groupaccelerate.png`,
                                    id: d.ContextMenuIdsNS.contextMenuGroupAccelerate,
                                    statId: "finished_rk_groupspeedup_click"
                                }), i += 1), P.getTaskFromTaskId(this.contextInfo[0].taskId).isSupportPlay() ? e.splice(i, 0, {
                                    type: "normal",
                                    label: "字幕搜索",
                                    icon: `${__rootDir}/static/icon/sunbtitle.png`,
                                    id: d.ContextMenuIdsNS.contxtMenuSubtitleSearch,
                                    statId: "finished_rk_subtitlesearch_click"
                                }, {type: "separator"}) : e.splice(i, 0, {type: "separator"}), this.contextInfo[0].taskType === s.DownloadKernel.TaskType.Bt ? e.push({
                                    type: "normal",
                                    label: "种子文件另存为(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadTorrentSaveAs,
                                    statId: "finished_rk_torrent_click"
                                }, {
                                    type: "normal",
                                    label: "复制磁力链接",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyMagnet,
                                    statId: "finished_rk_copymagnet_click",
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Completed
                                }) : e.push({
                                    type: "normal",
                                    label: "复制下载链接(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                                    statId: "finished_rk_copyurl_click",
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Completed
                                })
                            } else {
                                let t = l.TaskStatusHelper.canCopySelectTaskLink(this.contextInfo);
                                e.push({
                                    type: "normal",
                                    label: "复制下载链接(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                                    statId: "finished_rk_copyurl_click",
                                    enabled: t,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Completed
                                })
                            }
                            this.popMenuInternal(e)
                        }
                        break;
                    case B.RecycleBlank: {
                        let e = !0;
                        null !== this.contextInfo && 0 === this.contextInfo.length && (e = !1);
                        let t = [{
                            type: "normal",
                            label: "清空(&B)",
                            enabled: e,
                            id: d.ContextMenuIdsNS.contextMenuDownloadClear
                        }];
                        this.popMenuInternal(t)
                    }
                        break;
                    case B.RecycleItem:
                        if (null !== this.contextInfo && this.contextInfo.length > 0) {
                            let e = [{
                                type: "normal",
                                label: "打开任务位置(&G)",
                                id: d.ContextMenuIdsNS.contextMenuOpenTaskPosition,
                                statId: "openfile_position_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Recycle
                            }, {
                                type: "normal",
                                label: "还原(&R)",
                                id: d.ContextMenuIdsNS.contextMenuDownloadRecover,
                                statId: "dustbin_rk_undo_click"
                            }, {
                                type: "normal",
                                label: "清空(&B)",
                                id: d.ContextMenuIdsNS.contextMenuDownloadClear,
                                statId: "dustbin_rk_clear_click"
                            }, {
                                type: "normal",
                                label: "彻底删除(&Q)",
                                icon: `${__rootDir}/static/icon/destroytask.png`,
                                id: d.ContextMenuIdsNS.contextMenuDownloadDestroy,
                                statId: "dustbin_rk_completedelete_click",
                                userData: this.searchMode,
                                categoryView: s.DownloadKernel.CategroyViewID.Recycle
                            }, {type: "separator"}, {
                                type: "normal",
                                label: "重新下载(&T)",
                                icon: `${__rootDir}/static/icon/redownload.png`,
                                categoryView: s.DownloadKernel.CategroyViewID.Recycle,
                                id: d.ContextMenuIdsNS.contextMenuDownloadRedownload
                            }];
                            if (this.searchMode || e.shift(), 1 === this.contextInfo.length) {
                                let t = yield c.TaskCtrlOperatorNS.canOpenSelectedTaskFolder(this.contextInfo[0]),
                                    n = this.contextInfo[0].taskStatus;
                                if (n === s.DownloadKernel.TaskStatus.Succeeded || n === s.DownloadKernel.TaskStatus.Seeding) {
                                    let n = yield c.TaskCtrlOperatorNS.canOpenSelectedTaskFile(this.contextInfo[0]);
                                    e.splice(2, 0, {type: "separator"}, {
                                        type: "normal",
                                        label: "打开文件(&O)",
                                        id: d.ContextMenuIdsNS.contextMenuDownloadFile,
                                        categoryView: s.DownloadKernel.CategroyViewID.Recycle,
                                        statId: "dustbin_rk_openfiles_click",
                                        enabled: n,
                                        userData: this.searchMode
                                    }, {
                                        type: "normal",
                                        label: "打开文件夹(&F)",
                                        id: d.ContextMenuIdsNS.contextMenuDownloadFolder,
                                        statId: "dustbin_rk_openfolders_click",
                                        enabled: t,
                                        userData: this.searchMode,
                                        categoryView: s.DownloadKernel.CategroyViewID.Recycle
                                    })
                                } else e.splice(2, 0, {type: "separator"}, {
                                    type: "normal",
                                    label: "打开文件夹(&F)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadFolder,
                                    statId: "dustbin_rk_openfolders_click",
                                    enabled: t,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Recycle
                                });
                                this.contextInfo[0].taskType === s.DownloadKernel.TaskType.Bt ? e.push({
                                    type: "normal",
                                    label: "种子文件另存为(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadTorrentSaveAs
                                }, {
                                    type: "normal",
                                    label: "复制磁力链接",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyMagnet,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Recycle
                                }) : e.push({
                                    type: "normal",
                                    label: "复制下载链接(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                                    statId: "dustbin_rk_copyurl_click",
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Recycle
                                })
                            } else {
                                e.splice(1, 0, {type: "separator"});
                                let t = l.TaskStatusHelper.canCopySelectTaskLink(this.contextInfo);
                                e.push({
                                    type: "normal",
                                    label: "复制下载链接(&C)",
                                    id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                                    statId: "dustbin_rk_copyurl_click",
                                    enabled: t,
                                    userData: this.searchMode,
                                    categoryView: s.DownloadKernel.CategroyViewID.Recycle
                                })
                            }
                            this.popMenuInternal(e)
                        }
                        break;
                    case B.ToolbarMore:
                        if (null !== this.contextInfo) {
                            let e = this.contextInfo.currentSelectdTaskInfos.length > 0, t = [{
                                type: "normal",
                                label: "彻底删除任务",
                                id: d.ContextMenuIdsNS.contextMenuToolbarMoreDestroy,
                                icon: `${__rootDir}/static/icon/destroytask.png`,
                                enabled: e,
                                statId: "top_morelist_click",
                                extData: "button=completedelete"
                            }, {
                                type: "submenu",
                                label: "排序",
                                submenu: this.getSortSubMenuOptions(this.contextInfo)
                            }, {
                                type: "normal",
                                label: "设置中心",
                                icon: `${__rootDir}/static/icon/config.png`,
                                id: d.ContextMenuIdsNS.contextMenuToolbarMoreConfig,
                                statId: "top_morelist_click",
                                extData: "button=setting"
                            }, {
                                type: "normal",
                                label: "搜索下载记录",
                                id: d.ContextMenuIdsNS.contextMenuToolbarMoreOpenSearch,
                                statId: "top_morelist_click",
                                extData: "button=searchtask"
                            }];
                            this.popMenuInternal(t)
                        }
                        break;
                    case B.ChangeCategory: {
                        let e = [{
                            type: "checkbox",
                            label: "我的电脑",
                            id: d.ContextMenuIdsNS.contextMenuTabChangeCategoryMyComputer,
                            checked: -1 === this.contextInfo,
                            statId: "top_dropdownlist_click",
                            extData: "button=computer"
                        }, {
                            type: "checkbox",
                            label: "私人空间",
                            id: d.ContextMenuIdsNS.contextMenuTabChangeCategoryPrivateSpace,
                            checked: -1 !== this.contextInfo,
                            statId: "top_dropdownlist_click",
                            extData: "button=private"
                        }];
                        this.popMenuInternal(e)
                    }
                        break;
                    case B.PrivateSpaceHome: {
                        let e = [{
                            type: "normal",
                            label: "全选",
                            id: d.ContextMenuIdsNS.contextMenuToolbarPrivateSpaceSelectAll
                        }, {type: "separator"}, {
                            type: "normal",
                            label: "私人空间下载设置",
                            id: d.ContextMenuIdsNS.contextMenuToolbarPrivateSpaceDownloadSetting
                        }];
                        this.popMenuInternal(e)
                    }
                        break;
                    case B.SearchMultiSel: {
                        let e = l.TaskStatusHelper.canCopySelectTaskLink(this.contextInfo), t = [{
                            type: "normal",
                            label: "删除(&D)",
                            icon: `${__rootDir}/static/icon/deletetask.png`,
                            id: d.ContextMenuIdsNS.contextMenuDownloadDelete,
                            userData: this.searchMode
                        }, {
                            type: "normal",
                            label: "彻底删除(&Q)",
                            icon: `${__rootDir}/static/icon/destroytask.png`,
                            id: d.ContextMenuIdsNS.contextMenuDownloadDestroy,
                            userData: this.searchMode
                        }, {
                            type: "normal",
                            label: "复制下载链接(&C)",
                            id: d.ContextMenuIdsNS.contextMenuDownloadCopyLink,
                            enabled: e,
                            userData: this.searchMode
                        }];
                        this.popMenuInternal(t)
                    }
                }
            })
        }

        getSortConfig(e) {
            let t = {sortBy: T.SortNS.SortType.Default, asce: !0};
            do {
                if (null === e || void 0 === e) break;
                let n = e.currentCategoryViewId;
                if (null === n || void 0 === n) break;
                let i = e.currentCategoryId;
                t = T.SortNS.getSortConfig(n, i)
            } while (0);
            return t
        }

        getSortSubMenuOptions(e) {
            let t = [];
            do {
                if (null === e || void 0 === e) break;
                let n = e.currentCategoryViewId;
                if (null === n || void 0 === n) break;
                let i = this.getSortConfig(e),
                    a = i.sortBy === T.SortNS.SortType.ByTime_Remain || i.sortBy === T.SortNS.SortType.ByTime_Creation || i.sortBy === T.SortNS.SortType.ByTime_Completion;
                t = [{
                    type: "checkbox",
                    label: "默认",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortByDefault,
                    checked: i.sortBy === T.SortNS.SortType.Default
                }, {
                    type: "checkbox",
                    label: "按时间",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortByTime,
                    checked: a,
                    userData: a ? i.asce : void 0
                }, {
                    type: "checkbox",
                    label: "按类型",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortByType,
                    checked: i.sortBy === T.SortNS.SortType.ByType,
                    userData: i.sortBy === T.SortNS.SortType.ByType ? i.asce : void 0
                }, {
                    type: "checkbox",
                    label: "按文件名",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortByName,
                    checked: i.sortBy === T.SortNS.SortType.ByName,
                    userData: i.sortBy === T.SortNS.SortType.ByName ? i.asce : void 0
                }, {
                    type: "checkbox",
                    label: "按文件大小",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortBySize,
                    checked: i.sortBy === T.SortNS.SortType.BySize,
                    userData: i.sortBy === T.SortNS.SortType.BySize ? i.asce : void 0
                }], n === s.DownloadKernel.CategroyViewID.Downloading && t.push({
                    type: "checkbox",
                    label: "按状态",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortByStatus,
                    checked: i.sortBy === T.SortNS.SortType.ByState,
                    userData: i.sortBy === T.SortNS.SortType.ByState ? i.asce : void 0
                }, {
                    type: "checkbox",
                    label: "按进度",
                    id: d.ContextMenuIdsNS.contextMenuToolbarMoreSortByProgress,
                    checked: i.sortBy === T.SortNS.SortType.ByProgress,
                    userData: i.sortBy === T.SortNS.SortType.ByProgress ? i.asce : void 0
                })
            } while (0);
            return t = t.slice(0, 1)
        }

        getLastestSavePathsOptions(e, t, n, a) {
            return i(this, void 0, void 0, function* () {
                let i = k.ConfigNS.getValue(t, n, []), o = [],
                    r = d.ContextMenuIdsNS.contextMenuDownloadMoveFileLastest;
                a && (r = d.ContextMenuIdsNS.contextMenuDownloadCopyFileLastest);
                for (let t of i) {
                    let n = /&/gi;
                    t = t.replace(n, "&&"), o.push({type: "normal", label: t, enabled: e, id: r})
                }
                return o
            })
        }

        handleMenuClick(e) {
            let t = e.id, n = e.label, a = e.categoryView;
            switch (t) {
                case d.ContextMenuIdsNS.contextMenuDownloadSelectAll:
                    this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuClick, "select_all");
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadDeleteNonexisting:
                    do {
                        if (void 0 === this.contextInfo || null === this.contextInfo) break;
                        if (void 0 === this.contextInfo.completedTaskBaseList || null === this.contextInfo.completedTaskBaseList) break;
                        if (0 === this.contextInfo.completedTaskBaseList.length) break;
                        h.TaskOperatorNs.removeNonExistingTask(this.contextInfo.completedTaskBaseList).catch(e => {
                            E.warning(e)
                        })
                    } while (0);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadAsReadedAll:
                    do {
                        if (void 0 === this.contextInfo || null === this.contextInfo) break;
                        if (void 0 === this.contextInfo.completedTaskBaseList || null === this.contextInfo.completedTaskBaseList) break;
                        if (0 === this.contextInfo.completedTaskBaseList.length) break;
                        h.TaskOperatorNs.markReadStatus(this.contextInfo.completedTaskBaseList, 1)
                    } while (0);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadImportUncomplete:
                    h.TaskOperatorNs.importUncompleted();
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadFolder:
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_openfolders_click", "", 0, 0, 0, 0, this.getStatExtData(a)), this.contextInfo.length > 0 && (h.TaskOperatorNs.openTaskFolder(this.contextInfo[0]).catch(e => {
                        E.warning(e)
                    }), void 0 !== a && a === s.DownloadKernel.CategroyViewID.Completed && h.TaskOperatorNs.markReadStatus(this.contextInfo, 1));
                    break;
                case d.ContextMenuIdsNS.contextMenuGroupAccelerate:
                    a === s.DownloadKernel.CategroyViewID.Downloading ? F.openGroupAccelerateTabByTaskId(this.contextInfo[0].taskId, "menu", "downloading", void 0).catch() : F.openGroupAccelerateTabByTaskId(this.contextInfo[0].taskId, "menu", "complete", void 0).catch();
                    break;
                case d.ContextMenuIdsNS.contxtMenuSubtitleSearch: {
                    let e = this.contextInfo[0].taskId, t = P.getTaskFromTaskId(e), n = t.getTaskName(),
                        i = t.getType(), a = "";
                    t && (a = t.getSavePath()), i === s.DownloadKernel.TaskType.Bt && t.getExtraObject().getDownloadFile().length > 1 && (a = _.join(a, n));
                    let o = O.getDisaplayName(e), r = 0;
                    (r = o.length) > 1 ? m.MessageBox.customAW("SubtitleTaskFilelist", {
                        size: "large",
                        taskId: e,
                        taskName: n,
                        taskType: i,
                        fileList: o,
                        saveDir: a
                    }).catch() : m.MessageBox.customAW("SubtitleSearch", {
                        size: "large",
                        taskId: e,
                        taskName: o[0].fileName,
                        cid: o[0].cid,
                        saveDir: a,
                        from: "taskList"
                    }).catch()
                }
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadStartAll:
                    do {
                        if (void 0 === this.contextInfo || null === this.contextInfo) break;
                        if (void 0 === this.contextInfo.downloadingTaskBaseList || null === this.contextInfo.downloadingTaskBaseList) break;
                        if (0 === this.contextInfo.downloadingTaskBaseList.length) break;
                        h.TaskOperatorNs.startAll()
                    } while (0);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadStart:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.startTasks(this.contextInfo);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadPauseAll:
                    do {
                        if (void 0 === this.contextInfo || null === this.contextInfo) break;
                        if (void 0 === this.contextInfo.downloadingTaskBaseList || null === this.contextInfo.downloadingTaskBaseList) break;
                        if (0 === this.contextInfo.downloadingTaskBaseList.length) break;
                        h.TaskOperatorNs.pauseTasks(this.contextInfo.downloadingTaskBaseList, s.DownloadKernel.TaskStopReason.ContextMenu)
                    } while (0);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadPause:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.pauseTasks(this.contextInfo, s.DownloadKernel.TaskStopReason.ContextMenu);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadDelete:
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_delete_click", "", 0, 0, 0, 0, this.getStatExtData(a)), this.contextInfo.length > 0 && h.TaskOperatorNs.deleteTasks(this.contextInfo);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadDestroy:
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_completedelete_click", "", 0, 0, 0, 0, this.getStatExtData(a)), this.contextInfo.length > 0 && h.TaskOperatorNs.destroyTasks(this.contextInfo);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMoveFilePrivateSpace:
                    this.contextInfo.length > 0 && S.default(!1, !0).then(e => {
                        e && "" !== e && y.PrivateSpaceHelperNS.accessPrivateCategory(e).then(t => {
                            if (0 === t) {
                                let t = A.getPrivateCategoryFromUserId(e);
                                t && h.TaskOperatorNs.moveCategoryTask(this.contextInfo, t.getId())
                            }
                        }, () => {
                        })
                    }).catch();
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMoveFileOutPrivateSpace:
                    this.contextInfo.length > 0 && A.getCurrentPrivateCategory() && h.TaskOperatorNs.moveCategoryTask(this.contextInfo, -1);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMoveFileOther:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.move2Dir(this.contextInfo).catch(e => {
                        E.warning(e)
                    });
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMoveFileLastest:
                    if (this.contextInfo.length > 0) {
                        let e = /&&/gi, t = n.replace(e, "&");
                        h.TaskOperatorNs.move2Dir(this.contextInfo, t).catch(e => {
                            E.warning(e)
                        })
                    }
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMoveTop:
                    this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuClick, "move_up");
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMoveBottom:
                    this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuClick, "move_down");
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadMerge:
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadVipAcc:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.vipAcclerate(this.contextInfo[0]).catch();
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadCopyLink:
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_copylink_click", "", 0, 0, 0, 0, this.getStatExtData(a)), this.contextInfo.length > 0 && h.TaskOperatorNs.copyLink(this.contextInfo);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadCopyMagnet:
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_copylink_click", "", 0, 0, 0, 0, this.getStatExtData(a)), this.contextInfo.length > 0 && h.TaskOperatorNs.copyMagnetLink(this.contextInfo[0]);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadTorrentSaveAs:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.saveAsTorrent(this.contextInfo[0]).catch();
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadFile: {
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_openfiles_click", "", 0, 0, 0, 0, this.getStatExtData(a));
                    let t = "";
                    if (e.categoryView === s.DownloadKernel.CategroyViewID.Completed ? t = "finished" : e.categoryView === s.DownloadKernel.CategroyViewID.Recycle && (t = "dustbin"), this.contextInfo.length > 0) {
                        if (this.contextInfo[0].taskType === s.DownloadKernel.TaskType.Bt) h.TaskOperatorNs.openTaskFolder(this.contextInfo[0], !0).catch(); else if (this.contextInfo[0].taskType === s.DownloadKernel.TaskType.Group) {
                            let e = P.getTaskFromTaskId(this.contextInfo[0].taskId);
                            h.TaskOperatorNs.executeInstallFile(e).then(e => {
                                e || h.TaskOperatorNs.openTaskFolder(this.contextInfo[0], !0).catch()
                            }).catch()
                        } else h.TaskOperatorNs.openTaskItem(this.contextInfo[0], void 0, void 0, t, this.categoryId).catch(e => {
                            E.warning(e)
                        });
                        void 0 !== a && a === s.DownloadKernel.CategroyViewID.Completed && h.TaskOperatorNs.markReadStatus(this.contextInfo, 1)
                    }
                }
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadRename:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.renameTask(this.contextInfo[0]);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadCopyFileOther:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.copy2Dir(this.contextInfo).catch(e => {
                        E.warning(e)
                    });
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadCopyFileLastest:
                    if (this.contextInfo.length > 0) {
                        let e = /&&/gi, t = n.replace(e, "&");
                        h.TaskOperatorNs.copy2Dir(this.contextInfo, t).catch(e => {
                            E.warning(e)
                        })
                    }
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadRedownload:
                    if (this.contextInfo.length > 0) {
                        let e = "";
                        void 0 !== a && a === s.DownloadKernel.CategroyViewID.Completed ? e = "finished_rk_reload_click" : a === s.DownloadKernel.CategroyViewID.Recycle && (e = "dustbin_rk_reload_click"), c.TaskCtrlOperatorNS.redownloadTask(this.contextInfo, void 0, e).catch()
                    }
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadRecover:
                    this.contextInfo.length > 0 && h.TaskOperatorNs.recoverTask(this.contextInfo);
                    break;
                case d.ContextMenuIdsNS.contextMenuDownloadClear:
                    h.TaskOperatorNs.clearRecycle();
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreConfig:
                    if (null !== this.contextInfo) {
                        let e = {tabType: g.TabType.XDAS, tabParam: {title: "设置中心", name: "conf-setting"}};
                        this.contextInfo.CREATE_NEW_TAB(e)
                    }
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreOpenSearch:
                    N.default.fireEvent(f.NodeEventMesssageNS.eventShowSearchTaskPage, !0);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortByDefault:
                    T.SortNS.handleSortMenuClick(this.contextInfo.SORT_CATEGORY_BY_FUNCTION, T.SortNS.SortType.Default, e.userData, this.contextInfo.currentCategoryViewId, this.contextInfo.currentCategoryId);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortByTime:
                    T.SortNS.handleSortMenuClick(this.contextInfo.SORT_CATEGORY_BY_FUNCTION, T.SortNS.SortType.ByTime, e.userData, this.contextInfo.currentCategoryViewId, this.contextInfo.currentCategoryId);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortByType:
                    T.SortNS.handleSortMenuClick(this.contextInfo.SORT_CATEGORY_BY_FUNCTION, T.SortNS.SortType.ByType, e.userData, this.contextInfo.currentCategoryViewId, this.contextInfo.currentCategoryId);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortByName:
                    T.SortNS.handleSortMenuClick(this.contextInfo.SORT_CATEGORY_BY_FUNCTION, T.SortNS.SortType.ByName, e.userData, this.contextInfo.currentCategoryViewId, this.contextInfo.currentCategoryId);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortBySize:
                    T.SortNS.handleSortMenuClick(this.contextInfo.SORT_CATEGORY_BY_FUNCTION, T.SortNS.SortType.BySize, e.userData, this.contextInfo.currentCategoryViewId, this.contextInfo.currentCategoryId);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortByStatus:
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreSortByProgress:
                    T.SortNS.handleSortMenuClick(this.contextInfo.SORT_CATEGORY_BY_FUNCTION, T.SortNS.SortType.ByProgress, e.userData, this.contextInfo.currentCategoryViewId, this.contextInfo.currentCategoryId);
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarMoreDestroy:
                    if (null !== this.contextInfo) {
                        let e = this.contextInfo.currentSelectdTaskInfos;
                        null !== e && void 0 !== e && e.length > 0 && h.TaskOperatorNs.destroyTasks(e)
                    }
                    break;
                case d.ContextMenuIdsNS.contextMenuTabChangeCategoryMyComputer:
                    this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuClick, "my_computer");
                    break;
                case d.ContextMenuIdsNS.contextMenuTabChangeCategoryPrivateSpace:
                    this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuClick, "private_space");
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarPrivateSpaceSelectAll:
                    this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuClick, "select_all");
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarPrivateSpaceDownloadSetting:
                    w.default("GetUserID").then(e => i(this, void 0, void 0, function* () {
                        if (e && "" !== e) {
                            let t = k.ConfigNS.getValue("PrivateSpaceDefaultPath", e, ""),
                                n = k.ConfigNS.getValue("PrivateSpaceLockUserTask", e, 1);
                            m.MessageBox.customAW("private-space-download-setting", {
                                savePath: t,
                                hideLocalDir: 1 === n
                            }).then(t => i(this, void 0, void 0, function* () {
                                k.ConfigNS.setValue("PrivateSpaceDefaultPath", e, t.savePath), k.ConfigNS.setValue("PrivateSpaceLockUserTask", e, t.hideLocalDir), y.PrivateSpaceHelperNS.setPrivateSavePath(e, t.savePath).then().catch(), y.PrivateSpaceHelperNS.setAllTaskFileHidden(e, 1 === t.hideLocalDir)
                            }), () => {
                            })
                        }
                    })).catch();
                    break;
                case d.ContextMenuIdsNS.contextMenuToolbarPrivateSpaceTaskManager:
                    m.MessageBox.customAW("private-space-task-manager", {}).then(e => {
                    }, () => {
                    });
                    break;
                case d.ContextMenuIdsNS.contextMenuOpenTaskPosition:
                    !0 === e.userData && p.XLStatNS.trackEvent("download_leftpanel", "search_rk_openlocation_click", "", 0, 0, 0, 0, this.getStatExtData(a)), N.default.fireEvent(f.NodeEventMesssageNS.eventShowSearchTaskPage, !1), D.ThunderNewTask.selectTask(this.contextInfo[0].taskId)
            }
        }

        getStatExtData(e) {
            let t = "mypc";
            -1 !== N.default.getCurrentCategoryId() && (t = "private");
            let n = "unknown";
            switch (e) {
                case s.DownloadKernel.CategroyViewID.Completed:
                    n = "finished";
                    break;
                case s.DownloadKernel.CategroyViewID.Downloading:
                    n = "downloading";
                    break;
                case s.DownloadKernel.CategroyViewID.Recycle:
                    n = "dustbin"
            }
            return "panel_type=" + t + ",panel=" + n
        }

        popMenuInternal(e) {
            let t = this.buildMenuTemplate(e);
            if (t.length > 0) {
                const e = a.remote.getCurrentWindow();
                this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuPopup, t);
                const n = a.remote.Menu.buildFromTemplate(t);
                n.setStyle({}), n.popup({
                    window: e,
                    async: !1
                }), this.emitter.emit(f.NodeEventMesssageNS.eventDownloadContextMenuEnd)
            }
        }

        canSelectTaskAcc(e) {
            return i(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: t} = yield Promise.resolve().then(() => n(38));
                let i = !1;
                do {
                    if (void 0 === e) break;
                    if (0 === e.length) break;
                    for (let n of e) if (n.taskStatus !== s.DownloadKernel.TaskStatus.Failed && (i = t.taskCanVipAccelerate(n.taskId))) break
                } while (0);
                return i
            })
        }

        statExtData(e) {
            let t = "panel_type=mypc";
            return -1 !== this.categoryId && (t = "panel_type=private"), void 0 !== e && "" !== e && (t = t + "," + e), t
        }

        buildMenuTemplate(e) {
            let t = [];
            for (let n = 0; n < e.length; n++) {
                let i = null, a = e[n];
                if ("submenu" === a.type) {
                    let e = this.buildMenuTemplate(a.submenu);
                    i = {type: a.type, label: a.label, submenu: e}
                } else i = "separator" === a.type ? {type: a.type} : {
                    type: a.type,
                    label: a.label,
                    enabled: a.enabled,
                    icon: a.icon,
                    id: a.id,
                    checked: a.checked,
                    click: (e, t, n) => {
                        if (E.verbose(e, t, n), void 0 !== a.statId && "" !== a.statId) {
                            void 0 === a.extData && (a.extData = "");
                            let e = this.statExtData(a.extData);
                            E.information("trackEvent", "download_leftpanel", a.statId, e), p.XLStatNS.trackEvent("download_leftpanel", a.statId, "", 0, 0, 0, 0, e)
                        }
                        this.handleMenuClick(a)
                    }
                };
                null !== i && t.push(i)
            }
            return t
        }
    }
}, function (e, t, n) {
    e.exports = !n(76) && !n(100)(function () {
        return 7 != Object.defineProperty(n(241)("div"), "a", {
            get: function () {
                return 7
            }
        }).a
    })
}, function (e, t, n) {
    var i = n(99), a = n(51).document, o = i(a) && i(a.createElement);
    e.exports = function (e) {
        return o ? a.createElement(e) : {}
    }
}, function (e, t, n) {
    var i = n(60), a = n(77), o = n(530)(!1), r = n(196)("IE_PROTO");
    e.exports = function (e, t) {
        var n, s = a(e), l = 0, u = [];
        for (n in s) n != r && i(s, n) && u.push(n);
        for (; t.length > l;) i(s, n = t[l++]) && (~o(u, n) || u.push(n));
        return u
    }
}, function (e, t, n) {
    var i = n(244);
    e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) {
        return "String" == i(e) ? e.split("") : Object(e)
    }
}, function (e, t) {
    var n = {}.toString;
    e.exports = function (e) {
        return n.call(e).slice(8, -1)
    }
}, function (e, t, n) {
    var i = n(194);
    e.exports = function (e) {
        return Object(i(e))
    }
}, function (e, t, n) {
    "use strict";
    var i = n(121), a = n(192), o = n(247), r = n(74), s = n(200), l = n(537), u = n(201), d = n(540),
        c = n(78)("iterator"), h = !([].keys && "next" in [].keys()), f = function () {
            return this
        };
    e.exports = function (e, t, n, p, g, k, m) {
        l(n, t, p);
        var T, v, w, y = function (e) {
                if (!h && e in D) return D[e];
                switch (e) {
                    case"keys":
                    case"values":
                        return function () {
                            return new n(this, e)
                        }
                }
                return function () {
                    return new n(this, e)
                }
            }, S = t + " Iterator", b = "values" == g, C = !1, D = e.prototype, N = D[c] || D["@@iterator"] || g && D[g],
            I = N || y(g), _ = g ? b ? y("entries") : I : void 0, x = "Array" == t && D.entries || N;
        if (x && (w = d(x.call(new e))) !== Object.prototype && w.next && (u(w, S, !0), i || "function" == typeof w[c] || r(w, c, f)), b && N && "values" !== N.name && (C = !0, I = function () {
            return N.call(this)
        }), i && !m || !h && !C && D[c] || r(D, c, I), s[t] = I, s[S] = f, g) if (T = {
            values: b ? I : y("values"),
            keys: k ? I : y("keys"),
            entries: _
        }, m) for (v in T) v in D || o(D, v, T[v]); else a(a.P + a.F * (h || C), t, T);
        return T
    }
}, function (e, t, n) {
    e.exports = n(74)
}, function (e, t, n) {
    var i = n(118), a = n(538), o = n(198), r = n(196)("IE_PROTO"), s = function () {
    }, l = function () {
        var e, t = n(241)("iframe"), i = o.length;
        for (t.style.display = "none", n(539).appendChild(t), t.src = "javascript:", (e = t.contentWindow.document).open(), e.write("<script>document.F=Object<\/script>"), e.close(), l = e.F; i--;) delete l.prototype[o[i]];
        return l()
    };
    e.exports = Object.create || function (e, t) {
        var n;
        return null !== e ? (s.prototype = i(e), n = new s, s.prototype = null, n[r] = e) : n = l(), void 0 === t ? n : a(n, t)
    }
}, function (e, t, n) {
    var i = n(242), a = n(198).concat("length", "prototype");
    t.f = Object.getOwnPropertyNames || function (e) {
        return i(e, a)
    }
}, function (e, t, n) {
    "use strict";
    var i = n(955);
    n.n(i).a
}, , , function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(677), o = n(7), r = n(63), s = i.default.getLogger("DownloadKernel.TaskUserData");
    t.TaskUserData = class {
        constructor(e, t) {
            this.userData = new a.BencodeMap.BencodeMap, s.information("new TaskUserData userData:", t), this.task = e, this.userData.decode(t)
        }

        getTask() {
            return this.task
        }

        setTaskPriorityLevel(e, t) {
            r.ThunderKernel.setTaskPriorityLevel(this.task.getId(), e, t)
        }

        setUserData(e, t, n) {
            let i = !1;
            if (!e || 38 !== e.length) return s.warning("setUserData invalid userGuid:", e), i;
            let a = this.userData.addMapItem("UserData").addMapItem(e);
            if (o.isNumber(n) ? (i = a.addItem(t, n), s.information("addItem number key:", t, ", value:", n)) : o.isString(n) ? (i = a.addItem(t, n), s.information("addItem string key:", t, ", value:", n)) : s.information("addItem not support value type. key:", t, ", value:", n), i) {
                let e = "";
                e = this.userData.encode(e), s.information("bencodingUserData:", e), r.ThunderKernel.saveTaskUserData(this.task.getTaskBaseInfo().taskId, e)
            }
            return i
        }

        getUserData(e, t) {
            if (!e || 38 !== e.length) return void s.warning("getUserData invalid userGuid:", e);
            let n = this.userData.getItem("UserData");
            if (!n) return;
            let i = n.getItem(e);
            if (!i) return;
            let o = i.getItem(t);
            if (o) switch (o.getType()) {
                case a.BencodeMap.BencodeDataType.Integer:
                case a.BencodeMap.BencodeDataType.String:
                    return o.getValue()
            }
        }

        getAllUserData() {
            return this.userData.encode("")
        }

        setAllUserData(e) {
            this.userData.decode(e);
            let t = "";
            t = this.userData.encode(t), r.ThunderKernel.saveTaskUserData(this.task.getTaskBaseInfo().taskId, t)
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(55), o = n(1).default.getLogger("config-modules");
    const r = new class {
        constructor() {
            this.configModulesJsonData = null
        }

        init() {
            return i(this, void 0, void 0, function* () {
                let e = null;
                try {
                    a.default.defaults.adapter = n(71), e = yield a.default.get("http://static-xl9-ssl.xunlei.com/json/modules.json")
                } catch (e) {
                    o.information(e)
                }
                null !== e && void 0 !== e.status && 200 === e.status && void 0 !== e.data && null !== e.data && "" !== e.data && (this.configModulesJsonData = e.data)
            })
        }

        getConfigInfo(e, t) {
            let n = null;
            do {
                if (null === this.configModulesJsonData || void 0 === this.configModulesJsonData) break;
                null === e || void 0 === e || "" === e ? n = this.configModulesJsonData : null === t || void 0 === t || "" === t ? null !== this.configModulesJsonData[e] && void 0 !== this.configModulesJsonData[e] && (n = this.configModulesJsonData[e]) : null !== this.configModulesJsonData[e] && void 0 !== this.configModulesJsonData[e] && null !== this.configModulesJsonData[e][t] && void 0 !== this.configModulesJsonData[e][t] && (n = this.configModulesJsonData[e][t])
            } while (0);
            return n
        }
    };
    t.default = r
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(3), r = n(8), s = n(5), l = n(81), u = n(25), d = n(11), c = n(10), h = n(1), f = n(34),
        p = n(32), g = n(43), k = n(20), m = n(6), T = n(36),
        v = m.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        w = p.DownloadKernelEventManager.getEventManager(), y = l.DownloadKernelCategoryManager.getCategoryManager(),
        S = h.default.getLogger("Thunder.PrivateSpaceHelper");
    let b = null, C = null;
    !function (e) {
        let t = void 0, n = void 0, l = "", h = !0, p = void 0, m = void 0;
        const D = new T.EventEmitter;
        let N;

        function I(e, t, n) {
            S.information("onInsertToCategoryView categoryId:", e, ", categoryViewId:", t);
            for (let t = 0; t < n.length; t++) {
                let i = n[t];
                if (i.getTaskAttribute(s.DownloadKernel.TaskAttribute.Background)) return;
                let a = i.getTaskStatus();
                S.information("onInsertToCategoryView taskStatus:", a), a !== s.DownloadKernel.TaskStatus.Succeeded && a !== s.DownloadKernel.TaskStatus.Seeding || x(i, -1 !== e).then().catch()
            }
        }

        function _(e) {
            for (let t = 0; t < e.length; t++) {
                let n = e[t];
                if (n.getTaskAttribute(s.DownloadKernel.TaskAttribute.Background)) continue;
                let i = n.getTaskStatus();
                i !== s.DownloadKernel.TaskStatus.Succeeded && i !== s.DownloadKernel.TaskStatus.Seeding || n.getIsPrivate() && x(n, !0).then().catch()
            }
        }

        function x(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = e.getTaskStatus(), o = e.getTaskBaseInfo().taskType;
                if (S.information("moveTaskFileToPrivateSpace taskType:", o, ", taskStatus:", n, ", moveIn:", t), n === s.DownloadKernel.TaskStatus.Succeeded || n === s.DownloadKernel.TaskStatus.Seeding) {
                    if (e.getTaskAttribute(s.DownloadKernel.TaskAttribute.GroupTaskId) > 0) return;
                    let n = "";
                    if (t ? (n = yield A(l), n = a.join(n, l)) : n = yield c.ThunderUtil.getDownloadDir(), S.information("moveTaskFileToPrivateSpace newSrcPath:", n), o === s.DownloadKernel.TaskType.Group) return function (e, t, n) {
                        return i(this, void 0, void 0, function* () {
                            let i = e.getSavePath(), o = e.getTaskName();
                            if (!(yield d.FileSystemAWNS.existsAW(i))) return;
                            let r = a.join(i, o);
                            if (S.information("destPath:", r), i !== r) {
                                yield d.FileSystemAWNS.mkdirsAW(n);
                                let a = yield E(i, r);
                                if (a) {
                                    e.setSavePath(n), M(e, !!t && P());
                                    let i = e.getExtraObject(), a = i.getSubTaskCount();
                                    if (a && a > 0) for (let e = 0; e < a; e++) {
                                        let t = i.getSubTaskByIndex(e);
                                        t && t.setSavePath(r)
                                    }
                                    w.fireTaskEvent(s.DownloadKernel.TaskEventType.TaskMovedEnd, [e])
                                }
                            } else M(e, !!t && P())
                        })
                    }(e, t, n);
                    if (o === s.DownloadKernel.TaskType.Bt) return function (e, t, n) {
                        return i(this, void 0, void 0, function* () {
                            let i = e.getExtraObject(), o = i.getDownloadFile();
                            if (1 !== o.length) return;
                            let r = i.getBtFileList(), l = r.get(o[0]);
                            if (!l) return;
                            let u = l.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FileName),
                                c = l.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FilePath);
                            if (!u || "" === u) return;
                            let h = e.getSavePath();
                            h = a.join(h, c);
                            let f = a.join(h, u);
                            if (yield d.FileSystemAWNS.existsAW(f)) if (h !== n) {
                                yield d.FileSystemAWNS.mkdirsAW(n);
                                let i = a.join(n, u), o = yield E(f, i);
                                o && (e.setSavePath(n), w.fireTaskEvent(s.DownloadKernel.TaskEventType.TaskMovedEnd, [e]), M(e, !!t && P()))
                            } else M(e, !!t && P())
                        })
                    }(e, t, n);
                    if (o === s.DownloadKernel.TaskType.P2sp || o === s.DownloadKernel.TaskType.Emule) return function (e, t, n) {
                        return i(this, void 0, void 0, function* () {
                            let i = e.getSavePath(), o = e.getTaskName(), r = a.join(i, o);
                            if (yield d.FileSystemAWNS.existsAW(r)) if (i !== n) {
                                yield d.FileSystemAWNS.mkdirsAW(n);
                                let i = a.join(n, o), l = yield E(r, i);
                                l && (e.setSavePath(n), w.fireTaskEvent(s.DownloadKernel.TaskEventType.TaskMovedEnd, [e]), M(e, !!t && P()))
                            } else M(e, !!t && P())
                        })
                    }(e, t, n)
                }
            })
        }

        function E(e, t) {
            return i(this, void 0, void 0, function* () {
                return S.information("moveFile srcParh:", e, ", destPath:", t), new Promise(n => i(this, void 0, void 0, function* () {
                    if (e[0] === t[0]) {
                        yield d.FileSystemAWNS.renameAW(e, t);
                        let i = yield d.FileSystemAWNS.existsAW(t);
                        S.information("moveFile existsAW success:", i), n(i)
                    } else {
                        let i = !1;
                        (yield d.FileSystemAWNS.lstatAW(e)).isDirectory() ? (i = yield d.FileSystemAWNS.copyDirsAW(e, t), S.information("moveFile copyDirsAW success:", i), i && (i = yield d.FileSystemAWNS.rmdirsAW(e), S.information("moveFile rmdirsAW success:", i))) : (i = yield d.FileSystemAWNS.copyFileAW(e, t), S.information("moveFile copyFileAW success:", i), i && (i = yield d.FileSystemAWNS.unlinkAW(e), S.information("moveFile unlinkAW success:", i))), n(i)
                    }
                }))
            })
        }

        function A(e) {
            return i(this, void 0, void 0, function* () {
                let t = u.ConfigNS.getValue("PrivateSpaceDefaultPath", e, "");
                if (t && "" !== t) {
                    let n = a.join(t, e);
                    if (yield d.FileSystemAWNS.existsAW(n)) return t;
                    if (yield d.FileSystemAWNS.mkdirAW(n)) return t
                }
                let n = u.ConfigNS.getValue("TaskDefaultSettings", "DefaultPath", "");
                return void 0 !== n && "" !== n || (n = c.ThunderUtil.getDefaultDownloadDir()), void 0 !== n && "" !== n ? (u.ConfigNS.setValue("PrivateSpaceDefaultPath", e, n), n) : ""
            })
        }

        function P(e) {
            return e && "" === e || (e = l), 1 === u.ConfigNS.getValue("PrivateSpaceLockUserTask", e, 1)
        }

        function M(e, t) {
            let n = e.getSavePath(), i = e.getTaskName();
            S.information("setTaskHidden path:", n, ", name:", i, ", hidden:", t), t && !function (e) {
                if (!e || "" === e) return !1;
                let t = l;
                "" !== l && "0" !== l || (t = "私人空间");
                if (S.information("userId:", t), S.information("filePath:", e), new RegExp(t).test(e)) return !0;
                return !1
            }(n) || (F(n, t), F(a.join(n, i), t))
        }

        function F(e, t) {
            let n = t ? 2 : 128, i = v.setFileAttributes(e, n);
            S.information("setPathHidden ret:", i, ", path:", e, ", hidden:", t)
        }

        function O(e, t) {
            return i(this, void 0, void 0, function* () {
                if (!t || "" === t) return;
                if (t = a.join(t, e), !(yield d.FileSystemAWNS.existsAW(t))) {
                    yield d.FileSystemAWNS.mkdirAW(t)
                }
                1 === u.ConfigNS.getValue("PrivateSpaceLockUserTask", e, 1) && F(t, !0)
            })
        }

        function B(e) {
            h = e
        }

        function U() {
            return h
        }

        !function (e) {
            e.Unknow = "Unknow", e.SetPassword = "SetPassword"
        }(N = e.EventType || (e.EventType = {})), e.getEventEmitter = function () {
            return D
        }, e.setPrivateSavePath = O, e.setAllTaskFileHidden = function (e, t) {
            let n = y.getPrivateCategoryFromUserId(e);
            if (!n) return;
            let i = n.getCategoryViews();
            if (i && !(i.length <= 0)) for (let e = 0; e < i.length; e++) {
                let n = i[e].getTasks();
                for (let e of n.values()) {
                    if (e.getTaskAttribute(s.DownloadKernel.TaskAttribute.Background)) continue;
                    let n = e.getTaskStatus();
                    n !== s.DownloadKernel.TaskStatus.Succeeded && n !== s.DownloadKernel.TaskStatus.Seeding || e.getIsPrivate() && M(e, t)
                }
            }
        }, e.openPrivateCategory = function (e) {
            return i(this, void 0, void 0, function* () {
                return new Promise((t, n) => {
                    let a = null;
                    if (a = e && "" !== e ? y.getPrivateCategoryFromUserId(e) : y.getCurrentPrivateCategory()) {
                        let e = a.getPassword();
                        e && "" !== e ? t(0) : b ? t(1) : function () {
                            return i(this, void 0, void 0, function* () {
                                return new Promise((e, t) => {
                                    (b = f.MessageBox.custom("private-space-set-password", {})).on("closed", function (e) {
                                        S.verbose(e), b = null
                                    }), b.on("unresponsive", function (e) {
                                        S.verbose(e), b = null
                                    }), o.remote.ipcMain.once("message-box-resolve", (t, n) => {
                                        e(n)
                                    }), o.remote.ipcMain.once("message-box-reject", (e, n) => {
                                        t(n)
                                    })
                                })
                            })
                        }().then(e => {
                            let n = y.getCurrentPrivateCategory();
                            n && n.setPassword(e.password, "", !0, (e, n) => {
                                e && (B(!1), D.emit(N.SetPassword, !0), t(0))
                            })
                        }).catch(() => {
                            t(-1)
                        })
                    } else t(-1)
                })
            })
        }, e.accessPrivateCategory = function (e) {
            return i(this, void 0, void 0, function* () {
                return new Promise((t, n) => {
                    let a = null;
                    if (a = e && "" !== e ? y.getPrivateCategoryFromUserId(e) : y.getCurrentPrivateCategory()) if (U()) {
                        let e = a.getPassword();
                        e && "" !== e ? C ? t(1) : function (e) {
                            return i(this, void 0, void 0, function* () {
                                return new Promise((t, n) => {
                                    (C = f.MessageBox.custom("private-space-verify-password", {password: e})).on("closed", function (e) {
                                        S.verbose(e), C = null
                                    }), C.on("unresponsive", function (e) {
                                        S.verbose(e), C = null
                                    }), o.remote.ipcMain.once("message-box-resolve", (e, n) => {
                                        t(n)
                                    }), o.remote.ipcMain.once("message-box-reject", (e, t) => {
                                        n(t)
                                    })
                                })
                            })
                        }(e).then(e => {
                            e && e.success && (B(!1), t(0))
                        }).catch(() => {
                            t(-1)
                        }) : t(0)
                    } else t(0); else t(-1)
                })
            })
        }, e.setNeedPassword = B, e.getNeedPassword = U, e.init = function () {
            return i(this, void 0, void 0, function* () {
                (function () {
                    return i(this, void 0, void 0, function* () {
                        t = r.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => i(this, void 0, void 0, function* () {
                            if (S.information("OnUserLogin userId:", e), l = e, y.setUserInfo(e, ""), y.getCurrentPrivateCategory()) {
                                let t = yield A(e);
                                t && "" !== t && O(e, t).then().catch()
                            }
                        })), n = r.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                            S.information("OnUserLogout currentUserId:", l), l = "", h = !0, y.setUserInfo("", "")
                        })
                    })
                })().then().catch(), p = w.attachTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                    do {
                        if (!e) break;
                        if (e[0] !== s.DownloadKernel.TaskEventType.StatusChanged) break;
                        if (!e[1]) break;
                        let t = e[1];
                        t.length > 0 && _(t)
                    } while (0)
                }), m = w.attachTaskEvent(s.DownloadKernel.TaskEventType.InsertToCategoryView, (...e) => {
                    do {
                        if (!e) break;
                        if (e[0] !== s.DownloadKernel.TaskEventType.InsertToCategoryView) break;
                        if (void 0 === e[1] || !e[2] || !e[3]) break;
                        let t = e[1], n = e[2];
                        S.information("insertTaskCallback categoryId:", t, ", categoryViewId:", n);
                        let i = e[3], a = e[4];
                        i.length > 0 && a === s.DownloadKernel.TaskInsertReason.MoveThoughCategory && I(t, n, i)
                    } while (0)
                }), o.remote.ipcMain.on(k.ThunderChannelList.channelRMGetPrivateSpaceInfo, e => i(this, void 0, void 0, function* () {
                    let t = !0, n = y.getCurrentPrivateCategory();
                    if (n) {
                        let e = n.getPassword();
                        e && "" !== e && (t = !0)
                    }
                    let i = g.default.getCurrentCategoryId();
                    e.sender.send(k.ThunderChannelList.channelMRGetPrivateSpaceInfoResult, t, i)
                }))
            })
        }, e.uninit = function () {
            r.NativeCallModule.nativeCall.DetachNativeEvent("onLoginSuc", t), r.NativeCallModule.nativeCall.DetachNativeEvent("onLogout", n), w.detachTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged, p), w.detachTaskEvent(s.DownloadKernel.TaskEventType.InsertToCategoryView, m)
        }
    }(t.PrivateSpaceHelperNS || (t.PrivateSpaceHelperNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(17), o = n(2), r = i.remote.require(o.join(__rootDir, "../bin/ThunderHelper.node")), s = 2,
        l = 2, u = 2;
    t.browserSupport = new class {
        constructor() {
            this.browserComponent = void 0, this.browserManager = void 0, this.dpiAwareSupport = !1, this.systemDpiFactor = 0, this.browserParentWndHandle = 0, this.d3dHwnd = 0, this.browserParentWnd = void 0
        }
    };
    let d = n(3).remote.getCurrentWindow();

    function c() {
        let e = 1;
        return e = t.browserSupport.dpiAwareSupport ? r.getMonitorDPIFactor(t.browserSupport.browserParentWndHandle) : t.browserSupport.systemDpiFactor
    }

    function h() {
        return window.document.querySelector(".xlx-client__header").getBoundingClientRect().height
    }

    d.on("ready-to-show", () => {
        do {
            r.setDllDirectory(o.join(__rootDir, "../bin/TBC"));
            const e = i.remote.require(o.join(__rootDir, "../bin/ThunderBrowserSupport.node"));
            let n = r.getPeerID(), s = o.join(__rootDir, "../../Thunder.exe"), l = r.getFileVersion(s),
                u = e.TsBrowserComponent(), c = u.getUserAgent();
            if (n = n || "", l = l || "", c = c || "", !0 !== u.init({
                dataPath: o.join(__rootDir, "../bin/TBC/Data"),
                userAgent: c + " Thunder/" + l,
                enableSandbox: !1,
                productVersion: l,
                peerId: n
            })) break;
            t.browserSupport.browserComponent = u;
            let h = e.TsBrowserManager();
            t.browserSupport.browserManager = h;
            let f = r.getDPIAwareSupport(), p = r.getSysDPIFactor();
            t.browserSupport.dpiAwareSupport = f, t.browserSupport.systemDpiFactor = p;
            let g = d.getNativeWindowHandle().readUIntLE(0, 4);
            t.browserSupport.browserParentWndHandle = g, t.browserSupport.browserParentWnd = d;
            let k = t.browserSupport.browserParentWndHandle, m = r.findChildWindow(k, "Intermediate D3D Window");
            m && (t.browserSupport.d3dHwnd = m, r.setWindowLong(m, a.SetWindowType.GWL_STYLE, a.WindowStyle.WS_CLIPSIBLINGS)), r.setWindowLong(g, a.SetWindowType.GWL_STYLE, a.WindowStyle.WS_CLIPCHILDREN)
        } while (0)
    }), t.resizeBrowserWindow = function (e) {
        let n = !1;
        {
            let i = h(), o = t.browserSupport.browserParentWnd.getContentSize(), d = c();
            r.setWindowPos(e, a.OptionOfhwndInAfter.HWND_TOP, s * d, i * d, (o[0] - s - l) * d, (o[1] - i - u) * d, a.Uflags.SWP_SHOWWINDOW), n = !0
        }
        return n
    }, t.getBrowserWindowRect = function () {
        let e = {x: 0, y: 0, width: 0, height: 0}, n = t.browserSupport.browserParentWnd.getContentSize(), i = h(),
            a = c();
        return e.x = s * a, e.y = i * a, e.width = (n[0] - s - l) * a, e.height = (n[1] - i - u) * a, e
    }, t.getHeaderHeight = h
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(108), o = n(647), r = n(82), s = n(17), l = n(5), u = n(32), d = n(21), c = n(43),
        h = i.default.getLogger("TaskDetail.TaskDetail"), f = o.TaskInfoManagerNS.getTaskInfoManager(),
        p = u.DownloadKernelEventManager.getEventManager();
    var g;
    !function (e) {
        e.Comments = "comments", e.FileList = "files", e.Attribute = "detail"
    }(g = t.DetailIndex || (t.DetailIndex = {}));
    !function (e) {
        const t = new class {
            constructor() {
                this.isPageReady = !1, this.unFireTaskId = 0, this.unFireTaskData = "", this.unFireIndex = g.Comments, this.curTaskId = 0, this.curPannel = "", this.select = !1
            }

            init() {
                p.attachTaskEvent(l.DownloadKernel.TaskEventType.DetailChanged, (...e) => {
                    this.updateTaskInfo(...e)
                }), p.attachTaskEvent(l.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                    this.updateTaskInfo(...e)
                }), p.attachTaskEvent(l.DownloadKernel.TaskEventType.ChannelInfoChanged, (...e) => {
                    this.updateTaskInfo(...e)
                }), p.attachTaskEvent(l.DownloadKernel.TaskEventType.TaskDescriptionChanged, (...e) => {
                    this.updateTaskInfo(...e)
                }), p.attachTaskEvent(l.DownloadKernel.TaskEventType.TaskRenamed, (...e) => {
                    this.updateTaskInfo(...e)
                }), p.attachTaskEvent(l.DownloadKernel.TaskEventType.BtSubFileDetailChanged, (...e) => {
                    this.onBtSubFileDetailChanged(...e)
                }), p.attachTaskEvent(l.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged, (...e) => {
                    this.onGroupTaskSubFileDetailChanged(...e)
                }), c.default.attachListener(d.NodeEventMesssageNS.eventDownloadItemActive, (e, t, n, i, a, o) => {
                    t ? (this.curTaskId = n, this.select = !0, this.onTaskSelectChanged(e, o)) : (a || n === this.curTaskId) && (this.curTaskId = 0, this.curPannel = "", this.select = !1, setTimeout(() => {
                        this.select || this.onTaskSelectChanged(e)
                    }, 100))
                }), c.default.attachListener(d.NodeEventMesssageNS.eventDetailSwitch2Index, (e, t) => {
                    this.switch2DetailIndex(e, t)
                });
                let e = [{functionName: "GetCurTask", nativeFunc: this.getCurTask.bind(this)}];
                r.setDefaultNativeFunctionMap(e)
            }

            pageReady() {
                this.isPageReady = !0, h.information("pageReady"), 0 !== this.unFireTaskId && (this.onCurTaskChange(this.unFireTaskId, this.unFireTaskData, this.unFireIndex), this.unFireTaskId = 0, this.unFireTaskData = "")
            }

            switch2DetailIndex(e, t) {
                this.isPageReady ? a.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnSwitchDetail", e, t) : this.unFireTaskId === e && (this.unFireIndex = t)
            }

            updateTaskInfo(...e) {
                do {
                    if (!e) break;
                    if (!e[1]) break;
                    let t = e[1];
                    for (let e = 0; e < t.length; ++e) {
                        let n = t[e];
                        if (!n) continue;
                        let i = n.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskId);
                        i === this.curTaskId && (n.getTaskAttribute(l.DownloadKernel.TaskAttribute.GroupTaskId) > 0 || f.getTaskInfoString(i).then(e => {
                            this.onTaskInfoChange(i, e)
                        }).catch())
                    }
                } while (0)
            }

            onBtSubFileDetailChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== l.DownloadKernel.TaskEventType.BtSubFileDetailChanged) break;
                    if (!e[1] || !e[2]) break;
                    let t = e[1];
                    if (t !== this.curTaskId) break;
                    let n = e[2], i = f.getBtSubFileListString(t, n);
                    this.onSubFileInfoChange(t, i)
                } while (0)
            }

            onGroupTaskSubFileDetailChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== l.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged) break;
                    if (!e[1] || !e[2]) break;
                    let t = e[1];
                    if (t !== this.curTaskId) break;
                    let n = e[2], i = f.getGroupTaskSubFileListString(n);
                    this.onSubFileInfoChange(t, i)
                } while (0)
            }

            onTaskSelectChanged(e, t) {
                let n = "";
                switch (e) {
                    case l.DownloadKernel.CategroyViewID.Downloading:
                        n = "downloading";
                        break;
                    case l.DownloadKernel.CategroyViewID.Completed:
                        n = "complete";
                        break;
                    case l.DownloadKernel.CategroyViewID.Recycle:
                        n = "trash"
                }
                this.curPannel = n;
                let i = {};
                i.pannel = n;
                let a = JSON.stringify(i);
                this.onCurTaskChange(this.curTaskId, a, t)
            }

            onCurTaskChange(e, t, n) {
                this.isPageReady ? (h.information("OnCurTaskChange", e, t, n), a.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnCurTaskChange", e, t, n)) : (this.unFireTaskId = e, this.unFireTaskData = t, this.unFireIndex = n)
            }

            onTaskInfoChange(e, t) {
                a.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnTaskInfoChange", e, t)
            }

            onSubFileInfoChange(e, t) {
                a.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnSubFileInfoChange", e, t)
            }

            getCurTask(e, t, n) {
                do {
                    if (!e || !t || !n) break;
                    let i = {};
                    i.taskID = this.curTaskId, i.pannel = this.curPannel;
                    let a = JSON.stringify(i);
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, a)
                } while (0)
            }
        };
        e.init = function () {
            t.init()
        }, e.pageReady = function () {
            t.pageReady()
        }
    }(t.TaskDetailNS || (t.TaskDetailNS = {}))
}, function (e, t) {
    e.exports = require("string_decoder")
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(110), o = n(693);

    class r {
        constructor() {
            this.mTasks = new Map
        }

        deleteTask(e) {
            this.mTasks.delete(e)
        }

        getTask(e) {
            return this.mTasks.get(e)
        }

        getTaskMap() {
            return this.mTasks
        }

        createTask(e) {
            return i(this, void 0, void 0, function* () {
                let t = this.mTasks.get(e);
                if (!t) {
                    let n = yield a.DkHelperNS.getHelper().getTaskBaseInfo(e);
                    n && n.groupTaskId <= 0 && (t = new o.Task(e, n), this.mTasks.set(e, t))
                }
                return t
            })
        }
    }

    t.TaskManager = r, function (e) {
        const t = new r;
        e.getTaskManager = function () {
            return t
        }
    }(t.TaskManagerNS || (t.TaskManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        let t, n;
        !function (e) {
            e[e.Vip = 1] = "Vip", e[e.Try = 2] = "Try"
        }(t = e.KuaiNiaoType || (e.KuaiNiaoType = {})), function (e) {
            e[e.Unkown = -1] = "Unkown", e[e.Init = 0] = "Init", e[e.Enable = 1] = "Enable", e[e.Commiting = 2] = "Commiting", e[e.Failed = 3] = "Failed", e[e.Alive = 4] = "Alive", e[e.Finish = 5] = "Finish"
        }(n = e.KuaiNiaoStatus || (e.KuaiNiaoStatus = {}))
    }(t.KuaiNiaoDefineNS || (t.KuaiNiaoDefineNS = {}))
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s = {}.hasOwnProperty;
        r = n(160), o = r.isObject, a = r.isFunction, i = n(73), t = n(653), e.exports = function (e) {
            function n(e, t, i) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing element name");
                this.name = this.stringify.eleName(t), this.attributes = {}, null != i && this.attribute(i), e.isDocument && (this.isRoot = !0, this.documentObject = e, e.rootObject = this)
            }

            return function (e, t) {
                for (var n in t) s.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, i), n.prototype.clone = function () {
                var e, t, n, i;
                for (t in(n = Object.create(this)).isRoot && (n.documentObject = null), n.attributes = {}, i = this.attributes) s.call(i, t) && (e = i[t], n.attributes[t] = e.clone());
                return n.children = [], this.children.forEach(function (e) {
                    var t;
                    return (t = e.clone()).parent = n, n.children.push(t)
                }), n
            }, n.prototype.attribute = function (e, n) {
                var i, r;
                if (null != e && (e = e.valueOf()), o(e)) for (i in e) s.call(e, i) && (r = e[i], this.attribute(i, r)); else a(n) && (n = n.apply()), this.options.skipNullAttributes && null == n || (this.attributes[e] = new t(this, e, n));
                return this
            }, n.prototype.removeAttribute = function (e) {
                var t, n, i;
                if (null == e) throw new Error("Missing attribute name");
                if (e = e.valueOf(), Array.isArray(e)) for (n = 0, i = e.length; n < i; n++) t = e[n], delete this.attributes[t]; else delete this.attributes[e];
                return this
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).element(this)
            }, n.prototype.att = function (e, t) {
                return this.attribute(e, t)
            }, n.prototype.a = function (e, t) {
                return this.attribute(e, t)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing CDATA text");
                this.text = this.stringify.cdata(t)
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.clone = function () {
                return Object.create(this)
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).cdata(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing comment text");
                this.text = this.stringify.comment(t)
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.clone = function () {
                return Object.create(this)
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).comment(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a = {}.hasOwnProperty;
        i = n(160).isObject, t = n(73), e.exports = function (e) {
            function n(e, t, a, o) {
                var r;
                n.__super__.constructor.call(this, e), i(t) && (t = (r = t).version, a = r.encoding, o = r.standalone), t || (t = "1.0"), this.version = this.stringify.xmlVersion(t), null != a && (this.encoding = this.stringify.xmlEncoding(a)), null != o && (this.standalone = this.stringify.xmlStandalone(o))
            }

            return function (e, t) {
                for (var n in t) a.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, t), n.prototype.toString = function (e) {
                return this.options.writer.set(e).declaration(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s, l = {}.hasOwnProperty;
        s = n(160).isObject, r = n(73), t = n(266), a = n(267), i = n(268), o = n(269), e.exports = function (e) {
            function n(e, t, i) {
                var a, o;
                n.__super__.constructor.call(this, e), this.documentObject = e, s(t) && (t = (a = t).pubID, i = a.sysID), null == i && (i = (o = [t, i])[0], t = o[1]), null != t && (this.pubID = this.stringify.dtdPubID(t)), null != i && (this.sysID = this.stringify.dtdSysID(i))
            }

            return function (e, t) {
                for (var n in t) l.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, r), n.prototype.element = function (e, t) {
                var n;
                return n = new i(this, e, t), this.children.push(n), this
            }, n.prototype.attList = function (e, n, i, a, o) {
                var r;
                return r = new t(this, e, n, i, a, o), this.children.push(r), this
            }, n.prototype.entity = function (e, t) {
                var n;
                return n = new a(this, !1, e, t), this.children.push(n), this
            }, n.prototype.pEntity = function (e, t) {
                var n;
                return n = new a(this, !0, e, t), this.children.push(n), this
            }, n.prototype.notation = function (e, t) {
                var n;
                return n = new o(this, e, t), this.children.push(n), this
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).docType(this)
            }, n.prototype.ele = function (e, t) {
                return this.element(e, t)
            }, n.prototype.att = function (e, t, n, i, a) {
                return this.attList(e, t, n, i, a)
            }, n.prototype.ent = function (e, t) {
                return this.entity(e, t)
            }, n.prototype.pent = function (e, t) {
                return this.pEntity(e, t)
            }, n.prototype.not = function (e, t) {
                return this.notation(e, t)
            }, n.prototype.up = function () {
                return this.root() || this.documentObject
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t, i, a, o, r) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing DTD element name");
                if (null == i) throw new Error("Missing DTD attribute name");
                if (!a) throw new Error("Missing DTD attribute type");
                if (!o) throw new Error("Missing DTD attribute default");
                if (0 !== o.indexOf("#") && (o = "#" + o), !o.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");
                if (r && !o.match(/^(#FIXED|#DEFAULT)$/)) throw new Error("Default value only applies to #FIXED or #DEFAULT");
                this.elementName = this.stringify.eleName(t), this.attributeName = this.stringify.attName(i), this.attributeType = this.stringify.dtdAttType(a), this.defaultValue = this.stringify.dtdAttDefault(r), this.defaultValueType = o
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.toString = function (e) {
                return this.options.writer.set(e).dtdAttList(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a = {}.hasOwnProperty;
        i = n(160).isObject, t = n(73), e.exports = function (e) {
            function n(e, t, a, o) {
                if (n.__super__.constructor.call(this, e), null == a) throw new Error("Missing entity name");
                if (null == o) throw new Error("Missing entity value");
                if (this.pe = !!t, this.name = this.stringify.eleName(a), i(o)) {
                    if (!o.pubID && !o.sysID) throw new Error("Public and/or system identifiers are required for an external entity");
                    if (o.pubID && !o.sysID) throw new Error("System identifier is required for a public external entity");
                    if (null != o.pubID && (this.pubID = this.stringify.dtdPubID(o.pubID)), null != o.sysID && (this.sysID = this.stringify.dtdSysID(o.sysID)), null != o.nData && (this.nData = this.stringify.dtdNData(o.nData)), this.pe && this.nData) throw new Error("Notation declaration is not allowed in a parameter entity")
                } else this.value = this.stringify.dtdEntityValue(o)
            }

            return function (e, t) {
                for (var n in t) a.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, t), n.prototype.toString = function (e) {
                return this.options.writer.set(e).dtdEntity(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t, i) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing DTD element name");
                i || (i = "(#PCDATA)"), Array.isArray(i) && (i = "(" + i.join(",") + ")"), this.name = this.stringify.eleName(t), this.value = this.stringify.dtdElementValue(i)
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.toString = function (e) {
                return this.options.writer.set(e).dtdElement(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t, i) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing notation name");
                if (!i.pubID && !i.sysID) throw new Error("Public or system identifiers are required for an external entity");
                this.name = this.stringify.eleName(t), null != i.pubID && (this.pubID = this.stringify.dtdPubID(i.pubID)), null != i.sysID && (this.sysID = this.stringify.dtdSysID(i.sysID))
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.toString = function (e) {
                return this.options.writer.set(e).dtdNotation(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing raw text");
                this.value = this.stringify.raw(t)
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.clone = function () {
                return Object.create(this)
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).raw(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing element text");
                this.value = this.stringify.eleText(t)
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.clone = function () {
                return Object.create(this)
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).text(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i = {}.hasOwnProperty;
        t = n(73), e.exports = function (e) {
            function n(e, t, i) {
                if (n.__super__.constructor.call(this, e), null == t) throw new Error("Missing instruction target");
                this.target = this.stringify.insTarget(t), i && (this.value = this.stringify.insValue(i))
            }

            return function (e, t) {
                for (var n in t) i.call(t, n) && (e[n] = t[n]);

                function a() {
                    this.constructor = e
                }

                a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype
            }(n, t), n.prototype.clone = function () {
                return Object.create(this)
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).processingInstruction(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(22), o = n(55), r = n(2), s = n(11), l = n(1).default.getLogger("Axios.Helper");
    !function (e) {
        e.getFileSizeWithUrlAW = function (e) {
            return i(this, void 0, void 0, function* () {
                let t = 0;
                do {
                    let n = a.parse(e);
                    if ("https:" !== n.protocol && "http:" !== n.protocol) break;
                    let i = null;
                    try {
                        i = yield o.default.get(e, {responseType: "arraybuffer"})
                    } catch (e) {
                        l.warning(e)
                    }
                    if (null !== i && void 0 !== i.status && 200 === i.status) {
                        let e = i.headers["content-length"];
                        void 0 !== e && (t = parseInt(e, 10))
                    }
                } while (0);
                return t
            })
        }, e.downloadFileAW = function (e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1;
                do {
                    let i = null;
                    try {
                        i = yield o.default.get(e, {responseType: "arraybuffer"})
                    } catch (e) {
                        l.information(e);
                        break
                    }
                    if (null !== i && void 0 !== i.status && 200 === i.status && void 0 !== i.data && null !== i.data && "" !== i.data) {
                        let e = r.dirname(t), a = yield s.FileSystemAWNS.mkdirsAW(e);
                        a && (a = yield s.FileSystemAWNS.writeFileAW(t, i.data)) && (n = !0)
                    }
                } while (0);
                return n
            })
        }
    }(t.AxiosNS || (t.AxiosNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(25), o = n(52), r = n(34);
    !function (e) {
        let t = void 0, n = void 0;

        function s() {
            void 0 !== t && (clearTimeout(t), t = void 0), void 0 !== n && (clearTimeout(n), n = void 0)
        }

        function l(e, t) {
            o.DownloadKernelManager.setDownloadSpeedLimit(e), o.DownloadKernelManager.setUploadSpeedLimit(t)
        }

        function u(e) {
            a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_DownloadSpeedChk", e.maxDownloadSpeedEnabled.value), a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_UploadSpeedChk", e.maxUploadSpeedEnabled.value);
            let t = 51200, n = 2048;
            if (t = Number(e.maxDownloadSpeed.value) || 1024, a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeedTmp", t), n = Number(e.maxUploadSpeed.value) || 1024, a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeedTmp", n), e.maxDownloadSpeedEnabled.value ? a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeed", t) : a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeed", -1), e.maxUploadSpeedEnabled.value ? a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeed", n) : a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeed", -1), a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_Time_Switch", e.limitTimeEnabled.value), e.limitTimeEnabled.value) {
                let t = e.limitTime[0].value, n = e.limitTime[1].value, i = e.limitTime[2].value,
                    o = e.limitTime[3].value;
                a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_Time_Begin_Hour", t), a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_Time_Begin_Minute", n), a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_Time_End_Hour", i), a.ConfigNS.setValue("ConfigNet", "ConfigNet_Custom_Time_End_Minute", o)
            }
            a.ConfigNS.setValue("ConfigNet", "ConfigNet_Type", "0")
        }

        e.handleCustomDownloadMode = function () {
            s();
            let e = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeed", 1024),
                i = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeed", 1024);
            if (a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_Switch", !1)) {
                let o = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_Begin_Hour", 0),
                    r = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_Begin_Minute", 0),
                    s = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_End_Hour", 23),
                    u = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_End_Minute", 59), d = new Date,
                    c = d.getHours(), h = d.getMinutes();
                (o > s || o === s && r > u) && (s += 24), (c > s || c === s && h > u) && (o += 24, s += 24);
                let f = 60 * c + h, p = 60 * o + r, g = 60 * s + u;
                p <= f && f < g ? (l(e, i), n = setTimeout(() => {
                    l(-1, -1), n = void 0
                }, 6e4 * (g - f))) : (l(-1, -1), t = setTimeout(() => {
                    l(e, i), t = void 0
                }, 6e4 * (p - f)), n = setTimeout(() => {
                    l(-1, -1), n = void 0
                }, 6e4 * (g - f)))
            } else l(e, i)
        }, e.getCurrentDownloadMode = function () {
            return a.ConfigNS.getValue("ConfigNet", "ConfigNet_Type", "1")
        }, e.getCustomModeDownloadSpeed = function () {
            return a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeed", 1024)
        }, e.getCustomModeUploadSpeed = function () {
            return a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeed", 1024)
        }, e.setFullDownloadMode = function () {
            a.ConfigNS.setValue("ConfigNet", "ConfigNet_Type", "1"), o.DownloadKernelManager.setDownloadSpeedLimit(-1), o.DownloadKernelManager.setUploadSpeedLimit(-1), s()
        }, e.setCustomDownloadMode = u, e.showCustomDownloadModeDlg = function () {
            return i(this, void 0, void 0, function* () {
                let e = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_MaxDownloadSpeedTmp", 1024),
                    t = a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_MaxUploadSpeedTmp", 1024),
                    n = r.MessageBox.pop({
                        title: "限制我的下载速度",
                        size: "large",
                        schemas: [{
                            name: "maxDownloadSpeedEnabled",
                            type: "confCheckbox",
                            label: "最大下载速度",
                            outerClass: "xlx-dialog-setting__item",
                            extEles: [{
                                name: "maxDownloadSpeed",
                                type: "confSpeed",
                                outerClass: "xlx-dialog-setting__speed-content",
                                rules: [["rule, value, callback", "let errors = [];\n\n                value = Number(value);\n\n                if (value < 60) {\n                  errors.push(new Error('输入值必须≥60'));\n                } else if (value > 51200) {\n                  errors.push(new Error('输入值必须≤51200'));\n                }\n\n                callback(errors);"]],
                                doEmit: ["key, newValue, oldValue", "\n              newValue = Number(newValue)\n              if (isNaN(newValue)) {\n                this.$emit('input', Number(oldValue), key);\n              } else if (newValue > 51200) {\n                this.$emit('input', Number(oldValue), key);\n              } else {\n                this.$emit('input', newValue, key)\n              }\n              "],
                                doBlur: ["key, value", "\n              value = Number(value)\n              if (value < 60) {\n                this.$emit('input', 60, key)\n              }\n              "],
                                scales: [60, 500, 1024, 5120, 51200],
                                marks: ["60KB", "500KB", "1MB", "5MB", "50MB"]
                            }]
                        }, {
                            name: "maxUploadSpeedEnabled",
                            type: "confCheckbox",
                            label: "最大上传速度",
                            outerClass: "xlx-dialog-setting__item",
                            extEles: [{
                                name: "maxUploadSpeed",
                                type: "confSpeed",
                                outerClass: "xlx-dialog-setting__speed-content",
                                rules: [["rule, value, callback", "let errors = [];\n\n                value = Number(value);\n\n                if (value < 30) {\n                  errors.push(new Error('输入值必须≥30'));\n                } else if (value > 2048) {\n                  errors.push(new Error('输入值必须≤2048'));\n                }\n\n                callback(errors);"]],
                                doEmit: ["key, newValue, oldValue", "\n              newValue = Number(newValue)\n              if (isNaN(newValue)) {\n                this.$emit('input', Number(oldValue), key);\n              } else if (newValue > 2048) {\n                this.$emit('input', Number(oldValue), key);\n              } else {\n                this.$emit('input', newValue, key)\n              }\n              "],
                                doBlur: ["key, value", "\n              value = Number(value)\n              if (value < 30) {\n                this.$emit('input', 30, key)\n              }\n              "],
                                scales: [30, 100, 200, 1024, 2048],
                                marks: ["30KB", "100KB", "200KB", "1MB", "2MB"]
                            }]
                        }, {
                            name: "limitTimeEnabled",
                            type: "confCheckbox",
                            label: "限速下载时间段",
                            outerClass: "xlx-dialog-setting__item",
                            extEles: [{
                                name: "limitTime",
                                type: "confSpeedTime",
                                outerClass: "xlx-dialog-setting__speed-content"
                            }]
                        }],
                        formData: {
                            maxDownloadSpeedEnabled: {value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_DownloadSpeedChk", !0)},
                            maxDownloadSpeed: {value: e},
                            maxUploadSpeedEnabled: {value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_UploadSpeedChk", !0)},
                            maxUploadSpeed: {value: t},
                            limitTimeEnabled: {value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_Switch", !1)},
                            limitTime: [{value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_Begin_Hour", 0)}, {value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_Begin_Minute", 0)}, {value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_End_Hour", 23)}, {value: a.ConfigNS.getValue("ConfigNet", "ConfigNet_Custom_Time_End_Minute", 59)}]
                        }
                    });
                return new Promise(e => {
                    n.then(t => {
                        u(t), e(!0)
                    }, () => {
                        e(!1)
                    })
                })
            })
        }
    }(t.DownloadModeNS || (t.DownloadModeNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(13), r = n(2), s = n(11), l = n(8), u = n(661), d = n(21), c = n(5), h = n(52), f = n(32),
        p = n(28), g = n(85), k = n(81), m = n(517), T = n(187), v = n(7),
        w = m.GroupAccelerateEventManagerNS.getEventManager(), y = p.DownloadKernelTaskManager.getTaskManager(),
        S = f.DownloadKernelEventManager.getEventManager(),
        b = g.DownloadKernelCategoryViewManager.getCategoryViewManager(),
        C = k.DownloadKernelCategoryManager.getCategoryManager(), D = a.default.getLogger("GroupAccelerate.Manager");
    !function (e) {
        class t {
            constructor() {
                this.reportInterval = 120, this.currentUserId = 0, this.currentUserLicensed = !1, this.enterGroupAccelerateTimeStamp = 0, this.enterGroupAccelerateUploadSize = 0, this.groupAcceleratingTaskNum = 0, this.insertToCategoryViewEventId = void 0, this.removeFromCategoryViewEventId = void 0, this.detailChangedEventId = void 0, this.taskStatusChangedEventId = void 0, this.taskGroupInfoMap = new Map, this.taskIdMap = new Map, this.insertToCategoryViewEventId = 0, this.removeFromCategoryViewEventId = 0, this.detailChangedEventId = 0, this.taskStatusChangedEventId = 0
            }

            init() {
                D.information("init"), l.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                    let t = Number(e);
                    isNaN(t) || (this.currentUserId = t), this.updatePrivateSpaceCategoryViewTaskIdMap(), y.isLoadStorageTaskFinish() && this.checkTaskGroupAccelerateStatus(), this.getUserGroupAccelerateInfo().then(e => {
                        D.information("init login getUserGroupAccelerateInfo")
                    }).catch(() => {
                        D.information("init login getUserGroupAccelerateInfo failed")
                    })
                }), l.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", e => {
                    this.exitAllTeam(this.currentUserId, !1), this.currentUserId = 0, this.currentUserLicensed = !1
                }), T.LoginHelperNS.loginHelper.getUserInfo("userid", e => {
                    if (D.information("getUserID:userid = ", e), e && "" !== e) {
                        let t = Number(e);
                        isNaN(t) || (this.currentUserId = t), y.isLoadStorageTaskFinish() && this.checkTaskGroupAccelerateStatus(), this.getUserGroupAccelerateInfo().then(e => {
                            D.information("init getUserGroupAccelerateInfo")
                        }).catch(() => {
                            D.information("init getUserGroupAccelerateInfo failed")
                        })
                    }
                }), this.insertToCategoryViewEventId = S.attachTaskEvent(c.DownloadKernel.TaskEventType.InsertToCategoryView, (...e) => {
                    e && e[0] === c.DownloadKernel.TaskEventType.InsertToCategoryView && this.onInsertToCategoryView(e[1], e[2], e[3])
                }), this.removeFromCategoryViewEventId = S.attachTaskEvent(c.DownloadKernel.TaskEventType.RemoveFromCategoryView, (...e) => {
                    e && e[0] === c.DownloadKernel.TaskEventType.RemoveFromCategoryView && this.onRemoveFromCategoryView(e[1], e[2], e[3])
                }), this.detailChangedEventId = S.attachTaskEvent(c.DownloadKernel.TaskEventType.DetailChanged, (...e) => {
                    e && e[0] === c.DownloadKernel.TaskEventType.DetailChanged && this.onDetailChanged(e[1])
                }), this.taskStatusChangedEventId = S.attachTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                    e && e[0] === c.DownloadKernel.TaskEventType.StatusChanged && this.onTaskStatusChanged(e[1])
                }), setInterval(() => {
                    this.reportGroupAccelerateTaskInfo()
                }, 1e3 * this.reportInterval), h.DownloadKernelManager.attachOnceListener(d.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, () => {
                    this.updateTaskIdMap(), this.checkTaskGroupAccelerateStatus()
                })
            }

            uninit() {
                void 0 !== this.insertToCategoryViewEventId && (S.detachTaskEvent(c.DownloadKernel.TaskEventType.InsertToCategoryView, this.insertToCategoryViewEventId), this.insertToCategoryViewEventId = void 0), void 0 !== this.removeFromCategoryViewEventId && (S.detachTaskEvent(c.DownloadKernel.TaskEventType.RemoveFromCategoryView, this.removeFromCategoryViewEventId), this.removeFromCategoryViewEventId = void 0), void 0 !== this.detailChangedEventId && (S.detachTaskEvent(c.DownloadKernel.TaskEventType.DetailChanged, this.detailChangedEventId), this.detailChangedEventId = void 0), void 0 !== this.taskStatusChangedEventId && (S.detachTaskEvent(c.DownloadKernel.TaskEventType.StatusChanged, this.taskStatusChangedEventId), this.taskStatusChangedEventId = void 0), this.taskGroupInfoMap.clear(), this.taskIdMap.clear()
            }

            canEnterGroupAccelerate(e) {
                D.information("canEnterGroupAccelerate", " taskId: ", e);
                let t = !1;
                do {
                    if (!e) break;
                    let n = y.getTaskFromTaskId(e);
                    if (!n) break;
                    let i = this.getTaskUniqueIdByTask(n);
                    if (!i || "" === i) break;
                    let a = n.getTaskStatus();
                    if (!a || a === c.DownloadKernel.TaskStatus.Failed) break;
                    t = !0
                } while (0);
                return t
            }

            isEnterGroupAccelerate(e) {
                D.information("canEnterGroupAccelerate", " taskId: ", e);
                let t = !1;
                do {
                    if (!e) break;
                    let n = y.getTaskFromTaskId(e);
                    if (!n) break;
                    let i = this.getTaskUniqueIdByTask(n);
                    if (!i || "" === i) break;
                    let a = n.getTaskStatus();
                    if (!a || a === c.DownloadKernel.TaskStatus.Failed) break;
                    let o = this.getTaskGroupInfo(i);
                    o && o.taskId === e && (t = !0)
                } while (0);
                return t
            }

            joinTeam(e, t, n, a, o) {
                return i(this, void 0, void 0, function* () {
                    D.information("joinTeam", " taskId: ", e, " groupId:", t, " groupName:", n, " memberCount: ", a, " taskUniqueId: ", o);
                    let i = 0;
                    i = "" !== o ? this.taskIdMap.get(o) : e || 0, D.information("joinTeam", " realTaskId: ", i);
                    do {
                        let e = this.taskGroupInfoMap.get(o);
                        if (e && e.taskId) {
                            D.information("joinTeam Alert! taskGroupInfo.taskId:", e.taskId);
                            break
                        }
                        if ((e = {}).groupId = Number(t), e.memberCount = a, e.groupName = n, e.taskId = i, e.currentIncreaseSize = 0, y.getTaskFromTaskId(i)) {
                            e.previousSpeed = this.getTaskAverageSpeed(i), (yield this.getIsVip()) ? this.setTaskPriority(i, 999) : this.setTaskPriority(i, 700), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnJoinTeam, i, o), 0 === this.groupAcceleratingTaskNum && (this.enterGroupAccelerateTimeStamp = (new Date).getTime(), this.enterGroupAccelerateUploadSize = h.DownloadKernelManager.getTotalUploadSize()), this.groupAcceleratingTaskNum += 1, D.information("joinTeam", " this.enterGroupAccelerateTimeStamp: ", this.enterGroupAccelerateTimeStamp), D.information("joinTeam", " this.enterGroupAccelerateUploadSize: ", this.enterGroupAccelerateUploadSize), D.information("joinTeam", " this.groupAcceleratingTaskNum: ", this.groupAcceleratingTaskNum)
                        } else e.previousSpeed = 0;
                        this.taskGroupInfoMap.set(o, e), D.information("joinTeam", " this.taskGroupInfoMap.size: ", this.taskGroupInfoMap.size), this.saveGroupAccelerateInfo().then(e => {
                            D.information("joinTeam saveGroupAccelerateInfo")
                        }).catch(() => {
                            D.information("joinTeam saveGroupAccelerateInfo failed")
                        })
                    } while (0)
                })
            }

            exitTeam(e, t, n) {
                if (D.information("exitTeam", " taskId: ", e, " groupId: ", t, " taskUniqueId: ", n), "" !== n) {
                    let e = this.taskGroupInfoMap.get(n);
                    if (e) {
                        D.information("exitTeam", " taskGroupInfo.taskId: ", e.taskId);
                        let t = e.taskId;
                        this.taskGroupInfoMap.delete(n), this.setTaskPriority(t, 0), this.saveGroupAccelerateInfo().then(e => {
                            D.information("exitTeam saveGroupAccelerateInfo")
                        }).catch(() => {
                            D.information("exitTeam saveGroupAccelerateInfo failed")
                        }), this.groupAcceleratingTaskNum -= 1, 0 === this.groupAcceleratingTaskNum && (this.enterGroupAccelerateTimeStamp = 0, this.enterGroupAccelerateUploadSize = 0), D.information("exitTeam", " this.enterGroupAccelerateTimeStamp: ", this.enterGroupAccelerateTimeStamp), D.information("exitTeam", " this.enterGroupAccelerateUploadSize: ", this.enterGroupAccelerateUploadSize), D.information("exitTeam", " this.groupAcceleratingTaskNum: ", this.groupAcceleratingTaskNum), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnExitTeam, t, n)
                    } else D.information("exitTeam bad taskGroupInfo")
                } else D.information("exitTeam bad taskUniqueId")
            }

            getTaskGroupInfo(e) {
                D.information("getTaskGroupInfo", " taskUniqueId: ", e);
                let t = null;
                return "" !== e && (t = this.taskGroupInfoMap.get(e)), t
            }

            exitAllTeamNoTask() {
                D.information("exitAllTeamNoTask"), this.taskGroupInfoMap.forEach((e, t) => {
                    e.taskId || (this.sendExitTeamCommand("" + e.groupId), this.taskGroupInfoMap.delete(t))
                }), this.saveGroupAccelerateInfo().then(e => {
                    D.information("exitAllTeamNoTask saveGroupAccelerateInfo")
                }).catch(() => {
                    D.information("exitAllTeamNoTask saveGroupAccelerateInfo failed")
                })
            }

            sendExitTeamCommand(e) {
                do {
                    D.information("sendExitTeamCommand", " taskUniqueId: ", e);
                    let t = this.taskGroupInfoMap.get(e);
                    if (!t) break;
                    u.fetchSlRes({
                        url: "/group_accel/exit",
                        data: {uid: this.currentUserId, group_id: t.groupId},
                        method: "post"
                    }).then(t => {
                        this.taskGroupInfoMap.delete(e), this.saveGroupAccelerateInfo().then(e => {
                            D.information("sendExitTeamCommand saveGroupAccelerateInfo")
                        }).catch(() => {
                            D.information("sendExitTeamCommand saveGroupAccelerateInfo failed")
                        })
                    }).catch(() => {
                    })
                } while (0)
            }

            isUserLicensed() {
                return this.currentUserLicensed
            }

            getTaskInfoJson(e, t) {
                D.information("getTaskInfoJson", " taskId: ", e, " taskUniqueId: ", t);
                let n = void 0;
                "" !== t && (n = this.taskIdMap.get(t)), D.information("getTaskInfoJson", " realTaskId: ", n), void 0 !== n && (e = n), D.information("getTaskInfoJson now", " taskId: ", e);
                let i = "null";
                do {
                    if (!e) {
                        i = "null";
                        break
                    }
                    let a = y.getTaskFromTaskId(n);
                    if (a) {
                        let e = {};
                        e.status = "" + a.getTaskBaseInfo().taskStatus, e.taskID = "" + n, e.type = "" + a.getTaskBaseInfo().taskType, e.name = a.getTaskBaseInfo().taskName, e.gcid = t;
                        let o = "", s = a.getTaskBaseInfo().taskType, l = e.name;
                        s !== c.DownloadKernel.TaskType.P2sp && s !== c.DownloadKernel.TaskType.Emule || (o = r.extname(l)) && (o = o.substring(1)), e.suffix = o, e.url = a.getTaskBaseInfo().url, e.size = a.getTaskBaseInfo().fileSize, e.progress = e.size > 0 ? 100 * a.getTaskBaseInfo().downloadSize / e.size : 0, D.information("taskInfoTable.progress:", e.progress), e.progress > 100 && (e.progress = 100);
                        let u = this.taskGroupInfoMap.get(t);
                        e.uploaded = u ? this.getUploadedSize() : 0, i = JSON.stringify(e)
                    } else i = "null"
                } while (0);
                return D.information("getTaskInfoJson", " taskInfoJson: ", i), i
            }

            updateTaskAccelerateInfo(e) {
                D.information("updateTaskAccelerateInfo", " taskId: ", e);
                do {
                    if (!e) break;
                    let t = this.getTaskUniqueIdByTaskId(e);
                    if (D.information("updateTaskAccelerateInfo", " taskUniqueId: ", t), !t || "" === t) break;
                    u.fetchSlRes({
                        url: "/group_accel/belong_batch",
                        data: {uid: this.currentUserId, tasks: [t]},
                        method: "post"
                    }).then(e => {
                        if (D.information("updateTaskAccelerateInfo fetchSlRes success res.data: ", e.data), "ok" === e.data.result && e.data.data) {
                            let t = e.data.data;
                            for (let e = 0; e < t.length; e++) {
                                let n = t[e].group_id, i = t[e].member_count, a = t[e].group_name, o = t[e].task,
                                    r = t[e].belong_status;
                                D.information("updateTaskAccelerateInfo data[", e, "]:", t[e]);
                                let s = this.taskGroupInfoMap.get(o);
                                s && (D.information("updateTaskAccelerateInfo has group"), 0 !== r ? (s.memberCount = i, s.groupName = a) : setTimeout(() => {
                                    this.exitTeam(s.taskId, n, o)
                                }, 100))
                            }
                            w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTeamInfoUpdated)
                        }
                    }).catch(() => {
                    })
                } while (0)
            }

            requestTaskTeamInfo(e) {
                do {
                    if (!e || "" === e) break;
                    D.information("requestTaskTeamInfo", " taskUniqueId: ", e), u.fetchSlRes({
                        url: "/group_accel/motorcade_list",
                        data: {task: e},
                        method: "get"
                    }).then(t => {
                        t && w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.RequestTaskTeamInfoSuccess, e, t.data)
                    }).catch(() => {
                        w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.RequestTaskTeamInfofailed, e)
                    })
                } while (0)
            }

            getTaskUniqueIdByTaskId(e) {
                D.information("getTaskUniqueIdByTaskId", " taskId: ", e);
                let t = "";
                if (e) {
                    let n = y.getTaskFromTaskId(e);
                    n && (t = this.getTaskUniqueIdByTask(n))
                }
                return D.information("getTaskUniqueIdByTaskId", " uniqueId: ", t), t
            }

            getTaskUniqueIdByTask(e) {
                let t = "";
                if (e) {
                    switch (e.getTaskBaseInfo().taskType) {
                        case c.DownloadKernel.TaskType.Bt:
                            let n = e.getExtraObject().getInfoId();
                            D.information("getTaskUniqueIdByTaskBase bt task infoId:", n), t = n;
                            break;
                        case c.DownloadKernel.TaskType.P2sp:
                        case c.DownloadKernel.TaskType.Emule:
                            let i = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.Gcid);
                            D.information("getTaskUniqueIdByTaskBase p2sp or emule task gcid: ", i), t = i
                    }
                }
                return D.information("getTaskUniqueIdByTaskId", " uniqueId: ", t), t
            }

            getTaskStatus(e) {
                D.information("getTaskStatus", " taskId: ", e);
                let t = c.DownloadKernel.TaskStatus.Unkown;
                if (e) {
                    let n = y.getTaskFromTaskId(e);
                    n && (t = n.getTaskStatus())
                }
                return D.information("getTaskStatus", " taskStatus: ", t), t
            }

            getTaskIdByTaskUniqueId(e) {
                D.information("getTaskIdByTaskUniqueId", " taskUniqueId: ", e);
                let t = 0;
                return e && "" !== e && ((t = this.taskIdMap.get(e)) || (t = 0)), D.information("getTaskIdByTaskUniqueId", " taskId: ", t), t
            }

            addTaskToExistingTeam(e) {
                do {
                    if (!e) break;
                    let t = e.getTaskBaseInfo().taskId;
                    if (!t) break;
                    D.information("addTaskToExistingTeam", " taskId: ", t);
                    let n = this.getTaskUniqueIdByTask(e);
                    if ("" !== n) {
                        D.information("addTaskToExistingTeam", " taskUniqueId: ", n), this.taskIdMap.set(n, t);
                        let e = this.taskGroupInfoMap.get(n);
                        e && (D.information("addTaskToExistingTeam has taskGroupInfo, taskGroupInfo.taskId:", e.taskId), e.taskId || (D.information("addTaskToExistingTeam do joinTeam"), this.joinTeam(t, "" + e.groupId, e.groupName, e.memberCount, n).catch()))
                    }
                    let i = e.getTaskStatus();
                    w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskStatusChange, t, i, n)
                } while (0)
            }

            exitAllTeam(e, t = !0) {
                if (D.information("exitAllTeam", " userId: ", e), !e) return;
                let n = new Map;
                for (let [e, t]of this.taskGroupInfoMap) this.setTaskPriority(t.taskId, 0), n.set(e, t);
                this.groupAcceleratingTaskNum = 0, this.enterGroupAccelerateTimeStamp = 0, t ? this.sendExitAllTeamCommand(e).then(e => {
                    D.information("exitAllTeam success"), this.saveGroupAccelerateInfo().then(e => {
                        D.information("exitAllTeam saveGroupAccelerateInfo")
                    }).catch(() => {
                        D.information("exitAllTeam saveGroupAccelerateInfo failed")
                    }), n.forEach((e, t) => {
                        w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnExitTeam, e.taskId, t)
                    })
                }).catch(() => {
                    D.information("exitAllTeam failed")
                }) : n.forEach((e, t) => {
                    w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnExitTeam, e.taskId, t)
                }), this.taskGroupInfoMap.clear()
            }

            updateCategoryViewTaskIdMap(e) {
                let t = e.getTasks();
                if (t) {
                    D.information("updateCategoryViewTaskIdMap tasks.size:", t.size);
                    for (let [, e]of t) if (e) {
                        let t = e.getTaskBaseInfo().taskId, n = this.getTaskUniqueIdByTask(e);
                        D.information("updateCategoryViewTaskIdMap", " taskId: ", t, " taskUniqueId: ", n), t && "" !== n && this.taskIdMap.set(n, t)
                    } else D.information("updateCategoryViewTaskIdMap bad task")
                }
            }

            updatePrivateSpaceCategoryViewTaskIdMap() {
                let e = [c.DownloadKernel.CategroyViewID.Downloading, c.DownloadKernel.CategroyViewID.Completed];
                for (let t of e) {
                    let e = C.getCurrentPrivateCategory();
                    if (e) {
                        let n = e.getCategoryViewFromId(t);
                        this.updateCategoryViewTaskIdMap(n)
                    }
                }
            }

            updateTaskIdMap() {
                D.information("updateTaskIdMap enter");
                let e = [c.DownloadKernel.CategroyViewID.Downloading, c.DownloadKernel.CategroyViewID.Completed];
                for (let t of e) {
                    D.information("updateTaskIdMap categroyViewID", t);
                    let e = b.getCategoryViewFromId(t);
                    this.updateCategoryViewTaskIdMap(e)
                }
                this.updatePrivateSpaceCategoryViewTaskIdMap()
            }

            onDetailChanged(e) {
                do {
                    if (!e) break;
                    D.information("onDetailChanged number of taskList:", e.length);
                    for (let t = 0; t < e.length; ++t) {
                        let n = e[t];
                        if (!n) continue;
                        let i = n.getTaskBaseInfo(), a = i.taskId;
                        if (!a) continue;
                        let o = this.getTaskUniqueIdByTask(n);
                        if (!o || "" === o) continue;
                        D.information("onDetailChanged", " taskId: ", a);
                        let r = this.taskIdMap.get(o);
                        D.information("onDetailChanged", " taskUniqueId: ", o, ", taskIdRecord:", r), r || (this.addTaskToExistingTeam(n), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnReceiveGcid, a, o));
                        let s = n.getDownloadSpeed(), l = this.getIncreaseSpeedInfo(a), u = l.increaseSpeed, d = {};
                        d.uploaded = this.getUploadedSize(), d.progress = i.fileSize > 0 ? 100 * i.downloadSize / i.fileSize : 0, d.progress > 100 && (d.progress = 100), d.increased = l.increaseSize;
                        let c = JSON.stringify(d);
                        D.information("onDetailChanged", " taskSpeed: ", s, " increaseSpeed: ", u, " extraInfoStr: ", c), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskSpeedChange, a, s, u, c, o)
                    }
                } while (0)
            }

            onTaskStatusChanged(e) {
                for (let t = 0; t < e.length; ++t) {
                    let n = e[t];
                    if (!n) continue;
                    let i = n.getId(), a = n.getTaskStatus();
                    n.getTaskPreStatus() === c.DownloadKernel.TaskStatus.StartPending && a === c.DownloadKernel.TaskStatus.Started && this.addTaskToExistingTeam(n);
                    let o = this.getTaskUniqueIdByTask(n);
                    if (!o || "" === o) continue;
                    let r = a;
                    if (D.information("onTaskStatusChanged", " taskId: ", i), D.information("onTaskStatusChanged", " taskUniqueId: ", o), D.information("onTaskStatusChanged", " status: ", r), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskStatusChange, i, r, o), a === c.DownloadKernel.TaskStatus.DestroyPending) {
                        D.information("onTaskStatusChanged delete taskInfoMap taskUniqueId:", o), this.taskIdMap.delete(o);
                        let e = this.taskGroupInfoMap.get(o);
                        e && e.taskId === i && (e.taskId = 0)
                    }
                    a !== c.DownloadKernel.TaskStatus.Succeeded && a !== c.DownloadKernel.TaskStatus.Seeding || this.sendFileCompleteStat(i)
                }
            }

            onInsertToCategoryView(e, t, n) {
                if (t === c.DownloadKernel.CategroyViewID.Recycle) do {
                    if (!n) break;
                    D.information("onInsertToCategoryView number of taskList:", n.length);
                    for (let e = 0; e < n.length; ++e) {
                        let t = n[e];
                        if (!t) continue;
                        let i = t.getId(), a = this.getTaskUniqueIdByTask(t);
                        a && "" !== a && (D.information("onInsertToCategoryView", " taskId: ", i), D.information("onInsertToCategoryView", " taskUniqueId: ", a), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskStatusChange, i, 20, a))
                    }
                } while (0)
            }

            onRemoveFromCategoryView(e, t, n) {
                if (t === c.DownloadKernel.CategroyViewID.Recycle) do {
                    if (!n) break;
                    D.information("onRemoveFromCategoryView number of taskList:", n.length);
                    for (let e = 0; e < n.length; ++e) {
                        let t = n[e];
                        if (!t) continue;
                        let i = t.getId(), a = t.getTaskStatus(), o = this.getTaskUniqueIdByTask(t);
                        if (!o || "" === o) continue;
                        let r = a;
                        D.information("onRemoveFromCategoryView", " taskId: ", i), D.information("onRemoveFromCategoryView", " taskUniqueId: ", o), D.information("onRemoveFromCategoryView", " status: ", r), w.emit(m.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskStatusChange, i, r, o)
                    }
                } while (0)
            }

            reportGroupAccelerateTaskInfo() {
                do {
                    if (!this.currentUserId || 0 === this.currentUserId) break;
                    D.information("reportGroupAccelerateTaskInfo", " currentUserId: ", this.currentUserId);
                    let e = new Array;
                    this.taskGroupInfoMap.forEach((t, n) => {
                        let i = {};
                        i.group_id = t.groupId, D.information("reportGroupAccelerateTaskInfo", " groupId: ", t.groupId), i.uid = this.currentUserId;
                        let a = t.taskId;
                        if (a) {
                            let e = y.getTaskFromTaskId(a);
                            if (e) {
                                let t = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.DownloadSize),
                                    n = e.getTaskAttribute(c.DownloadKernel.TaskAttribute.FileSize);
                                i.rate = Math.round(1e3 * t / n) / 10, i.ul_total = this.getUploadedSize(), i.ul_time = (new Date).getTime() - this.enterGroupAccelerateTimeStamp, i.dl_speed = this.getTaskAverageSpeed(a)
                            } else i.rate = 0, i.ul_total = 0, i.ul_time = 0, i.dl_speed = 0
                        } else i.rate = 0, i.ul_total = 0, i.ul_time = 0, i.dl_speed = 0;
                        D.information("reportGroupAccelerateTaskInfo", " group_id: ", i.group_id), D.information("reportGroupAccelerateTaskInfo", " rate: ", i.rate), D.information("reportGroupAccelerateTaskInfo", " ul_total: ", i.ul_total), D.information("reportGroupAccelerateTaskInfo", " ul_time: ", i.ul_time), D.information("reportGroupAccelerateTaskInfo", " dl_speed: ", i.dl_speed), e.push(i)
                    }), u.fetchSlRes({url: "/group_accel/report_batch", data: {data: e}, method: "post"}).then(e => {
                    }).catch(() => {
                    })
                } while (0)
            }

            checkTaskGroupAccelerateStatus() {
                D.information("checkTaskGroupAccelerateStatus this.currentUserId:", this.currentUserId), this.currentUserId && 0 !== this.currentUserId && this.loadGroupAccelerateInfo().then(e => {
                    do {
                        if (!e || e.size <= 0) {
                            D.information("checkTaskGroupAccelerateStatus bad taskGroupInfoMapTemp");
                            break
                        }
                        let t = [];
                        if (e.forEach((e, n) => {
                            let i = e.taskId;
                            if (D.information("checkTaskGroupAccelerateStatus", " taskUniqueId: ", n, " taskId: ", i), i) {
                                y.getTaskFromTaskId(i) && n && "" !== n && (D.information("checkTaskGroupAccelerateStatus has task"), t.push(n))
                            }
                        }), t.length <= 0) break;
                        u.fetchSlRes({
                            url: "/group_accel/belong_batch",
                            data: {uid: this.currentUserId, tasks: t},
                            method: "post"
                        }).then(t => {
                            if (D.information("checkTaskGroupAccelerateStatus fetchSlRes success res.data: ", t.data), "ok" === t.data.result && t.data.data) {
                                let n = t.data.data;
                                for (let t = 0; t < n.length; t++) if (D.information("checkTaskGroupAccelerateStatus data[", t, "]:", n[t]), 1 === n[t].belong_status) {
                                    let i = n[t].group_id, a = n[t].member_count, o = n[t].group_name, r = n[t].task;
                                    e.forEach((e, t) => {
                                        if (e.groupId === i && t === r) {
                                            this.joinTeam(e.taskId, "" + i, o, a, t).catch();
                                            let n = this.taskGroupInfoMap.get(t);
                                            n && (n.memberCount = a, n.groupName = o)
                                        }
                                    })
                                }
                            }
                        }).catch(() => {
                            D.information("checkTaskGroupAccelerateStatus", " fetchSlRes failed")
                        })
                    } while (0)
                }).catch(() => {
                })
            }

            sendExitAllTeamCommand(e) {
                return i(this, void 0, void 0, function* () {
                    let t = !1;
                    do {
                        if (!e) break;
                        let n = new Array;
                        this.taskGroupInfoMap.forEach((e, t) => {
                            n.push(e.groupId), D.information("sendExitAllTeamCommand", " groupId: ", e.groupId)
                        }), 0 === n.length && (D.information("sendExitAllTeamCommand no group"), t = !0), u.fetchSlRes({
                            url: "/group_accel/exit_batch",
                            data: {uid: this.currentUserId, group_ids: n},
                            method: "post"
                        }).then(e => {
                            D.information("sendExitAllTeamCommand success"), t = !0
                        }).catch(() => {
                            D.information("sendExitAllTeamCommand failed"), t = !1
                        })
                    } while (0);
                    return t
                })
            }

            getUserGroupAccelerateInfo() {
                return i(this, void 0, void 0, function* () {
                    D.information("getUserGroupAccelerateInfo this.currentUserId:", this.currentUserId), this.currentUserId && 0 !== this.currentUserId && u.fetchSlRes({
                        url: "/group_accel/user_info",
                        data: {uid: this.currentUserId},
                        method: "get"
                    }).then(e => {
                        do {
                            if (D.information("getUserGroupAccelerateInfo success ", e), !e) {
                                D.information("getUserGroupAccelerateInfo bad res"), this.currentUserLicensed = !1;
                                break
                            }
                            if (!e.data) {
                                D.information("getUserGroupAccelerateInfo bad res.data"), this.currentUserLicensed = !1;
                                break
                            }
                            if (!e.data.data) {
                                D.information("getUserGroupAccelerateInfo bad res.data"), this.currentUserLicensed = !1;
                                break
                            }
                            e.data.data.have_licence && 1 === e.data.data.have_licence ? (D.information("getUserGroupAccelerateInfo licensed"), this.currentUserLicensed = !0) : (D.information("getUserGroupAccelerateInfo not licensed"), this.currentUserLicensed = !1)
                        } while (0)
                    }).catch(() => {
                        D.information("getUserGroupAccelerateInfo fail"), this.currentUserLicensed = !1
                    })
                })
            }

            getNewPercent(e, t) {
                D.information("getNewPercent", " currentPercent: ", e, " taskType: ", t);
                let n = 0, i = 0, a = 5, o = 0;
                do {
                    if (t === c.DownloadKernel.TaskType.P2sp) n = 10, i = 40, a = 5; else if (t === c.DownloadKernel.TaskType.Bt) n = 30, i = 80, a = 10; else {
                        if (t !== c.DownloadKernel.TaskType.Emule) {
                            o = e;
                            break
                        }
                        n = 20, i = 60, a = 10
                    }
                    if (e) if (e < n || e > i) o = n + (i - n) * Math.random(); else {
                        let t = e - a;
                        t < n && (t = n);
                        let r = e + a;
                        r > i && (r = i), o = t + (r - t) * Math.random()
                    } else o = n + (i - n) * Math.random()
                } while (0);
                return D.information("getNewPercent", " newPercent: ", o), o
            }

            setTaskPriority(e, t) {
                do {
                    if (!e) break;
                    if (!t || 0 !== t && 700 !== t && 999 !== t) break;
                    let n = y.getTaskFromTaskId(e);
                    if (!n) break;
                    n.getExtraObject().setTaskPriorityLevel(-1, t), D.information("taskExtra.setTaskPriorityLevel taskId: ", e, ", index: -1, priority: ", t)
                } while (0)
            }

            getTaskAverageSpeed(e) {
                let t = y.getTaskFromTaskId(e);
                if (!t) return 0;
                let n = t.getTaskAttribute(c.DownloadKernel.TaskAttribute.DownloadingPeriod),
                    i = t.getTaskAttribute(c.DownloadKernel.TaskAttribute.DownloadSize);
                0 === n && (n = 1);
                let a = Math.round(i / n);
                return D.information("getTaskAverageSpeed taskId:", e, ", taskAverageSpeed:", a), D.information("getTaskAverageSpeed downloadSize:", i, ", downloadingPeriod:", n), a
            }

            getIncreaseSpeedInfo(e) {
                let t = {increaseSpeed: 0, increaseSize: 0};
                do {
                    if (!e) break;
                    let n = y.getTaskFromTaskId(e);
                    if (!n) break;
                    let i = this.getTaskUniqueIdByTaskId(e);
                    if (!i || "" === i) break;
                    let a = this.taskGroupInfoMap.get(i);
                    if (!a) break;
                    let o = n.getTaskBaseInfo().taskType, r = a.currentPercent, s = this.getNewPercent(r, o);
                    a.currentPercent = s;
                    let l = this.getTaskP2PSpeedInfo(e), u = Math.round(s * l.p2pSpeed / 100),
                        d = Math.round(s * l.p2pSize / 100), c = a.currentIncreaseSize;
                    c += d, a.currentIncreaseSpeed = u, a.currentIncreaseSize = c, t.increaseSpeed = u, t.increaseSize = c
                } while (0);
                return t
            }

            getTaskP2PSpeedInfo(e) {
                let t = {p2pSpeed: 0, p2pSize: 0};
                do {
                    if (!e) break;
                    let n = y.getTaskFromTaskId(e);
                    if (!n) break;
                    let i = this.getTaskUniqueIdByTask(n);
                    if (!i || "" === i) break;
                    let a = this.taskGroupInfoMap.get(i);
                    if (!a) break;
                    let o = n.getTaskBaseInfo().downloadingPeriod;
                    if (!o) break;
                    let r = n.getTaskChannelInfo();
                    if (!r) break;
                    let s = r.p2pSize - r.dcdnSize;
                    if (s < 0 && (s = 0), !a.lastDownloadingPeriod || !a.lastP2PSize) {
                        a.lastDownloadingPeriod = o, a.lastP2PSize = s;
                        break
                    }
                    let l = s - a.lastP2PSize;
                    l < 0 && (l = 0), a.lastP2PSize = s;
                    let u = o - a.lastDownloadingPeriod;
                    u < 0 && (u = 0), a.lastDownloadingPeriod = o;
                    let d = 0;
                    0 !== u && (d = Math.round(l / u));
                    let c = n.getTaskBaseInfo().downloadSpeed;
                    d > c && (d = c), t.p2pSpeed = d, t.p2pSize = l
                } while (0);
                return t
            }

            getUploadedSize() {
                let e = 0, t = h.DownloadKernelManager.getTotalUploadSize();
                return t && (e = t, this.enterGroupAccelerateUploadSize && (e -= this.enterGroupAccelerateUploadSize)), e
            }

            saveGroupAccelerateInfo() {
                return i(this, void 0, void 0, function* () {
                    if (D.information("saveGroupAccelerateInfo", " currentUserId: ", this.currentUserId), !this.currentUserId) return;
                    let e = r.join(__profilesDir, "GroupAccelerate");
                    (yield s.FileSystemAWNS.existsAW(e)) || (yield s.FileSystemAWNS.mkdirsAW(e));
                    let t = r.join(__profilesDir, "GroupAccelerate\\TaskInfoEx_" + this.currentUserId + ".txt");
                    D.information("saveGroupAccelerateInfo", " filePath: ", t), D.information("saveGroupAccelerateInfo", " this.taskGroupInfoMap.size: ", this.taskGroupInfoMap.size);
                    let n = JSON.stringify([...this.taskGroupInfoMap]);
                    D.information("saveGroupAccelerateInfo", " strData: ", n), yield s.FileSystemAWNS.writeFileAW(t, n)
                })
            }

            loadGroupAccelerateInfo() {
                return i(this, void 0, void 0, function* () {
                    if (D.information("loadGroupAccelerateInfo", " currentUserId: ", this.currentUserId), !this.currentUserId) return null;
                    let e = r.join(__profilesDir, "GroupAccelerate\\TaskInfoEx_" + this.currentUserId + ".txt");
                    D.information("loadGroupAccelerateInfo", " filePath: ", e);
                    let t = yield s.FileSystemAWNS.readFileAW(e), n = null;
                    try {
                        let e = t.toString();
                        return D.information("loadGroupAccelerateInfo", " fileStr: ", e), n = new Map(JSON.parse(e))
                    } catch (e) {
                        return null
                    }
                })
            }

            sendFileCompleteStat(e) {
                do {
                    if (!e) break;
                    let t = y.getTaskFromTaskId(e);
                    if (!t) break;
                    let n = this.getTaskUniqueIdByTask(t);
                    if (!n || "" === n) break;
                    let i = t.getTaskAttribute(c.DownloadKernel.TaskAttribute.FileSize);
                    if (!i || i < 104857600) break;
                    let a = this.taskGroupInfoMap.get(n);
                    if (!a) break;
                    let r = a.previousSpeed;
                    if (!r) break;
                    let s = "pannel=complete,taskid=" + e + ",gcid=" + n + ",previos_speed=" + r + ",stop_speed=" + this.getTaskAverageSpeed(e);
                    D.information("SendFileCompleteStat", " strExtData: ", s), o.XLStatNS.trackEvent("download_pannel", "groupspeed", "", 0, 0, 0, 0, s)
                } while (0)
            }

            getIsVip() {
                return i(this, void 0, void 0, function* () {
                    return new Promise(e => {
                        T.LoginHelperNS.loginHelper.getUserInfo("vipList", function (t) {
                            v.isArray(t) && t[0] ? e("1" === t[0].isVip) : e(!1)
                        })
                    })
                })
            }
        }

        e.Manager = t;
        const n = new t;
        e.getManager = function () {
            return n
        }
    }(t.GroupAccelerateManagerNS || (t.GroupAccelerateManagerNS = {}))
}, , function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(278), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(742), r = n(772), s = n(813);
    let l = class extends a.Vue {
    };
    l = i([a.Component({
        components: {
            MainTop: o.default,
            MainBottom: r.default,
            MainBackground: s.default
        }
    })], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(280), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(743), r = n(744), s = n(759), l = n(764), u = n(767), d = n(769);
    let c = class extends a.Vue {
        constructor() {
            super(...arguments), this.dragable = !0
        }
    };
    c = i([a.Component({
        components: {
            LoginArea: o.default,
            AddressBarContainer: r.default,
            SystemButtonsContainer: s.default,
            TabsContainer: l.default,
            MessageTips: u.default,
            BookMarks: d.default
        }
    })], c), t.default = c
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(282), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(3), r = n(4), s = n(2), l = n(8), u = n(95), d = n(187), c = n(1), h = n(13),
        f = n(6).default(s.join(__rootDir, "../bin/ThunderHelper.node")), p = n(238),
        g = c.default.getLogger("Thunder.Main");
    let k = class extends r.Vue {
        constructor() {
            super(...arguments), this.userNick = "点击登录", this.curLoginStatus = "unlogin", this.oldLoginStatus = "unlogin", this.isLogin = !1, this.isShowPersonalInfoWnd = !1, this.curUserid = "", this.isVip = 0, this.isYear = 0, this.vipLevel = 0, this.vipType = 2, this.headerUrl = "", this.curLoginHeaderUrl = p, this.yearIcon = "vip-icon-nian is-large is-disabled", this.rectDatas = "", this.bShowUserInfoPanle = !1, this.yearTipsText = "", this.strOpenVip = "", this.isShowYearTip = !1, this.personalInfoWnd = null, this.nVipGrow = 0, this.vipData = null
        }

        onHeaderChange(e, t) {
            g.information("curLoginHeaderUrl cur=", e, ";old=", t)
        }

        get strNickCss() {
            let e = "";
            return this.isLogin && 0 !== this.isVip && (e = "is-vip"), e
        }

        get userYearIcon() {
            return 0 !== this.isYear && 0 !== this.isVip ? (this.yearIcon = "vip-icon-nian", this.yearTipsText = "迅雷年费会员", this.strOpenVip = "") : (this.yearIcon = "vip-icon-nian is-disabled", this.yearTipsText = "年费会员享更低价格 更高特权,", this.strOpenVip = "开通会员"), this.yearIcon
        }

        get strIsOffline() {
            let e = "";
            return "offline" === this.curLoginStatus && (e = "is-offline"), g.information("strIsOffline:", e), e
        }

        closePersonalInfoWnd() {
            null !== this.personalInfoWnd && (this.personalInfoWnd.close(), this.personalInfoWnd = null)
        }

        showPersonalInfoWnd(e) {
            let t = this.getClientRectsEx(), n = this.isLoginInfoRect(t);
            n && (this.personalInfoWnd = d.LoginHelperNS.loginUIHelper.createPersonalInfoWnd(e), null !== this.personalInfoWnd && (this.personalInfoWnd.once("ready-to-show", () => {
                if (t = this.getClientRectsEx(), n = this.isLoginInfoRect(t)) {
                    this.personalInfoWnd.show(), u.ToolsUtilitiesAWNS.setForegroundWindow(f, this.personalInfoWnd), o.ipcRenderer.send("enteLeftTopUserInfoArea", e, t);
                    let n = "", i = "";
                    "header" === e ? i = "1" : "nick" === e ? i = "2" : "vip" === e && (i = "3"), n = "from=" + i + ",is_vip=" + this.isVip + ",vip_type=" + this.vipType;
                    let a = encodeURIComponent(n);
                    h.XLStatNS.trackEvent("clienttop", "logged_hover_layer_show", "", 0, 0, 0, 0, a)
                } else this.closePersonalInfoWnd()
            }), this.personalInfoWnd.once("closed", () => {
                this.personalInfoWnd = null;
                let e = o.remote.getCurrentWindow();
                e.isMinimized() && e.restore(), e.show()
            })))
        }

        onToolYearTip(e) {
            if (e) {
                if (this.$emit("tooltip-show"), "开通会员" === this.strOpenVip) {
                    let e = "";
                    e = "is_vip=" + this.isVip + ",vip_type=" + this.vipType, 0 === this.isVip && 0 === this.nVipGrow ? e += ",show_type=1" : 0 === this.isVip && 0 !== this.nVipGrow && (e += ",show_type=2");
                    let t = encodeURIComponent(e);
                    g.information(e, t), h.XLStatNS.trackEvent("clienttop", "xufei_botton_show", "", 0, 0, 0, 0, t)
                }
            } else this.$emit("tooltip-hide");
            this.isShowYearTip = e
        }

        getClientRectsEx() {
            let e = null, t = 10, n = 40;
            null !== this.$refs.userAvatar && void 0 !== this.$refs.userAvatar && null !== (e = this.$refs.userAvatar.getClientRects()) && void 0 !== e && e.length > 0 && null !== e[0] && void 0 !== e[0] && (t = e[0].left), null !== this.$refs.userVip && void 0 !== this.$refs.userVip && null !== (e = this.$refs.userVip.$el.getClientRects()) && void 0 !== e && e.length > 0 && null !== e[0] && void 0 !== e[0] && (n = e[0].right);
            let i = n - t + 5;
            return JSON.stringify({width: i, height: 40})
        }

        isLoginInfoRect(e) {
            let t = !1;
            do {
                let n = o.screen.getCursorScreenPoint(), i = null;
                try {
                    i = JSON.parse(e)
                } catch (e) {
                    g.warning(e)
                }
                if (null === i) break;
                let a = o.remote.getCurrentWindow().getBounds(), r = a.x + 10, s = a.y + 3,
                    l = a.x + 10 + Number(i.width), u = a.y + 10 + Number(i.height);
                n.x >= r && n.x <= l && n.y >= s && n.y <= u && (t = !0)
            } while (0);
            return t
        }

        getUserAvatarRect() {
            let e = o.remote.getCurrentWindow().getBounds(), t = this.$refs.userAvatar.getClientRects(),
                n = e.x + t[0].left, i = e.y + t[0].top, a = t[0].right - t[0].left, r = t[0].bottom - t[0].top;
            return JSON.stringify({x: n, y: i, width: a, height: r})
        }

        enter(e) {
            if (g.information("enter:", e, this.isLogin, this.personalInfoWnd), this.isLogin && null === this.personalInfoWnd) this.showPersonalInfoWnd(e); else if ("offline" === this.curLoginStatus && "head" === e) {
                let e = this.getUserAvatarRect();
                this.closePersonalInfoWnd(), d.LoginHelperNS.loginUIHelper.createRetryLoginWnd("userAvatar", e)
            }
        }

        clickUserHeader(e) {
            if (g.information("点击登录", this.curLoginStatus), this.isLogin && "online" === this.curLoginStatus) {
                let e = "http://pc.xunlei.com/d#/users/" + this.curUserid + "?entrypage=client_leftright_login&entry=client_leftright_login_head";
                l.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", e);
                let t = "";
                t = "is_vip=" + this.isVip + ",vip_type=" + this.vipType + ",referfrom=v_pc_xlx_ggong_head_nickname";
                let n = encodeURIComponent(t);
                g.information(t, n), h.XLStatNS.trackEvent("clienttop", "head_nickname_click", "", 0, 0, 0, 0, n)
            } else "unlogin" === this.curLoginStatus && d.LoginHelperNS.loginHelper.showLoginDlg("leftcenter_notlogged", !0);
            let t = `button=${e}`, n = "no";
            this.isLogin && (n = "yes"), t = `${t},is_login=${n}`, h.XLStatNS.trackEvent("clienttop", "clienttop_userinfo_click", "", 0, 0, 0, 0, t)
        }

        onClick(e) {
            let t = "", n = "", i = "";
            if ("nian" === e ? (t = "https://vip.xunlei.com/vip_service/year/?referfrom=v_pc_xlx_ggong_yearicon", n = "nf_icon_click", i = "v_pc_xlx_ggong_yearicon") : "vip" === e ? (t = 0 !== this.isVip ? "https://vip.xunlei.com/vip_service/rule/?referfrom=v_pc_xlx_ggong_vipicon" : "https://pay.xunlei.com/pay.html?bizNo=baijin?referfrom=v_pc_xlx_ggong_vipicon", n = "vip_icon_click", i = "v_pc_xlx_ggong_vipicon") : "nian_tip" === e && (this.isShowYearTip = !1, t = "https://vip.xunlei.com/vip_service/year/?referfrom=v_pc_xlx_ggong_pay_top", n = "xufei_botton_click", i = "v_pc_xlx_ggong_pay_top"), "" !== t) {
                l.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", t);
                let a = "";
                a = "is_vip=" + this.isVip + ",vip_type=" + this.vipType + ",referfrom=" + i, "vip" === e ? 0 === this.isVip && 0 === this.nVipGrow ? a += ",show_type=1,aidfrom=ktnovip" : 0 === this.isVip && 0 !== this.nVipGrow && (a += ",show_type=2,aidfrom=ktnovip1") : "nian_tip" === e && (0 === this.isVip && 0 === this.nVipGrow ? a += ",show_type=1,aidfrom=xfbtn_exp7_kt" : 0 === this.isVip && 0 !== this.nVipGrow && (a += ",show_type=2,aidfrom=xfbtn_exp7_kt"));
                let o = encodeURIComponent(a);
                g.information(e, a, o), h.XLStatNS.trackEvent("clienttop", n, "", 0, 0, 0, 0, o)
            }
        }

        switchAccount() {
            this.isLogin = !1, this.curUserid = "", this.curLoginStatus = "unlogin", this.userNick = "", this.curLoginHeaderUrl = p, this.rectDatas = "", this.updateLoginStatus(), d.LoginHelperNS.loginHelper.switchAccount("changeaccount")
        }

        personalCenter() {
            l.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", "http://i.xunlei.com/login.html")
        }

        updateLoginStatus() {
            if (g.information(this.oldLoginStatus, this.curLoginStatus), this.oldLoginStatus === this.curLoginStatus) ; else {
                let e = this.oldLoginStatus;
                this.oldLoginStatus = this.curLoginStatus, l.NativeCallModule.nativeCall.CallNativeFunction("NativeFireEvent", "onLoginStatusChange", e, this.curLoginStatus, function (e) {
                })
            }
        }

        updateLgoinInfo(e) {
            return a(this, void 0, void 0, function* () {
                return new Promise(t => {
                    d.LoginHelperNS.loginHelper.getAllUserInfo(n => {
                        do {
                            if (g.information("收到 getAllUserInfo 返回数据"), null === n || void 0 === n) {
                                g.information("getAllUserInfo 得到数据是 null");
                                break
                            }
                            this.isLogin = !0, this.curLoginStatus = "online", "login" === e && this.updateLoginStatus(), this.curUserid = n.userID, this.userNick = n.nickName, this.rectDatas = "";
                            let t = n.imgURL;
                            if (null !== t && void 0 !== t && "" !== t || (t = "http://img2.user.kanimg.com/usrimg/" + this.curUserid + "/%s"), t = t.replace("%s", "100*100"), this.headerUrl = t, null === n.vipList || void 0 === n.vipList) break;
                            if (null === n.vipList[0] || void 0 === n.vipList[0]) break;
                            let i = n.vipList[0];
                            this.vipData = [{
                                VIPLevel: i.vipLevel,
                                isVIP: i.isVip,
                                isYear: i.isYear,
                                uid: n.userID,
                                vasID: 2,
                                vasType: i.vasType
                            }], this.isYear = Number(i.isYear), this.isVip = Number(i.isVip), this.vipLevel = Number(i.vipLevel), this.vipType = Number(i.vasType), "" !== i.vipGrow && (this.nVipGrow = Number(i.vipGrow))
                        } while (0);
                        t()
                    })
                })
            })
        }

        setChangeData(e, t) {
            if (g.information("onLoginFailed:getCurInternetState: setChangeData: ", e, t), 0 === e && 2 === t) {
                this.isLogin = !1, this.curLoginStatus = "offline", this.updateLoginStatus();
                let e = this.getUserAvatarRect();
                this.closePersonalInfoWnd(), d.LoginHelperNS.loginUIHelper.createRetryLoginWnd("userAvatar", e)
            } else this.isLogin = !1, this.curLoginStatus = "unlogin", this.userNick = "", this.rectDatas = "", this.curLoginHeaderUrl = p, this.updateLoginStatus()
        }

        mounted() {
            l.NativeCallModule.nativeCall.AttachNativeEvent("onLoginBefore", (e, t) => a(this, void 0, void 0, function* () {
                if (g.information("收到onLoginBefore事件：this.oldLoginStatus = ", this.oldLoginStatus, e, t), "unlogin" === this.oldLoginStatus) if (this.rectDatas = "", this.curLoginStatus = "loging", this.updateLoginStatus(), null !== t && void 0 !== t && "" !== t && null !== e && void 0 !== e && "" !== e) {
                    this.userNick = e, this.curLoginHeaderUrl = p;
                    let n = yield d.LoginHelperNS.loginHelper.getUserHeaderAw(t);
                    g.information("onLoginBefore:getUserHeaderAw = ", n, "this.curLoginStatus:", this.curLoginStatus), "loging" === this.curLoginStatus && null !== n && void 0 !== n && "" !== n && (this.curLoginHeaderUrl = n)
                } else this.userNick = "正在登录...", this.curLoginHeaderUrl = p
            })), l.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", () => {
                g.information("收到 onLoginSuc 事件"), this.updateLgoinInfo("login").then(() => {
                    d.LoginHelperNS.loginHelper.updateHeaderAw(this.headerUrl, this.curUserid).then(e => {
                        g.information("下载头像成功：", e), null !== e && void 0 !== e && "" !== e && (this.curLoginHeaderUrl = e, l.NativeCallModule.nativeCall.CallNativeFunction("NativeFireEvent", "onUserHeaderChange", e, function (e) {
                        }))
                    }).catch(), this.enter("onLoginSuc")
                }).catch()
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onLoginFailed", (e, t) => {
                g.information("收到 onLoginFailed 事件, this.oldLoginStatus:", this.oldLoginStatus, ";erro:", e, ";code:", t);
                let n = Number(e), i = d.LoginHelperNS.loginHelper.getCurInternetState();
                "offline" !== this.oldLoginStatus ? 0 === i ? setTimeout(() => {
                    let e = d.LoginHelperNS.loginHelper.getCurInternetState();
                    this.setChangeData(n, e)
                }, 3e3) : this.setChangeData(n, i) : 1 === n && (this.isLogin = !1, this.curLoginStatus = "unlogin", this.userNick = "", this.rectDatas = "", this.curLoginHeaderUrl = p, this.updateLoginStatus())
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                g.information("收到 onLogout 事件"), this.isLogin = !1, this.curLoginStatus = "unlogin", this.userNick = "", this.curLoginHeaderUrl = p, this.rectDatas = "", this.updateLoginStatus(), this.closePersonalInfoWnd()
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onSwitchAccount", () => {
                this.switchAccount(), this.closePersonalInfoWnd()
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onInternetConnectChange", (e, t) => {
                if (2 === t) {
                    if ("online" === this.curLoginStatus) {
                        this.isLogin = !1, this.curLoginStatus = "offline", this.updateLoginStatus();
                        let e = this.getUserAvatarRect();
                        this.closePersonalInfoWnd(), d.LoginHelperNS.loginUIHelper.createRetryLoginWnd("userAvatar", e)
                    }
                } else 1 === t && (g.information("onInternetConnectChange:", this.curLoginStatus), "offline" === this.curLoginStatus && setTimeout(() => {
                    d.LoginHelperNS.loginHelper.logIn("RetryLogin")
                }, 3e3))
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onUserDetailInfoChange", e => {
                if (null !== e && void 0 !== e && "" !== e) try {
                    let t = JSON.parse(e);
                    this.userNick = t.nickName
                } catch (e) {
                    g.warning(e)
                }
            }), l.NativeCallModule.nativeCall.AttachNativeEvent("onLoginUpdate", (e, t) => {
                g.information("收到事件 onLoginUpdate:", e, t), "vipinfo" !== e && "userinfo" !== e || (this.updateLgoinInfo("update").catch(), l.NativeCallModule.nativeCall.CallNativeFunction("NativeFireEvent", "onUserInfoChange", e, t, function (e) {
                    g.information("fire onUserInfoChange:", e)
                }))
            }), o.remote.ipcMain.on("onCancelRetry", () => {
                g.information("收到 onCancelRetry 事件"), this.isLogin = !1, this.curLoginStatus = "unlogin", this.userNick = "", this.curLoginHeaderUrl = p, this.rectDatas = "", this.updateLoginStatus()
            })
        }
    };
    i([r.Watch("curLoginHeaderUrl", {immediate: !0})], k.prototype, "onHeaderChange", null), k = i([r.Component({})], k), t.default = k
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(284), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(745), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            currentTabIndex: e => e.Tabs.current,
            bookMarks: e => e.BookMarks.bookMarks
        },
        mapGettersToProps: {
            currentTab: e => e.currentTab,
            currentSelectdTaskIds: e => e.currentSelectdTaskInfos.map(e => e.taskId)
        },
        mapCommitToProps: {
            createNewTab: "CREATE_NEW_TAB",
            onOriginalUrlChange: "ON_ORIGINAL_URL_CHANGE",
            addBookMarksItem: "ADD_BOOK_MARKS_ITEM",
            deleteBookMarksItem: "REMOVE_BOOK_MARKS_ITEM"
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(286), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(288), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(760), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {bookMarks: e => e.BookMarks.bookMarks},
        mapCommitToProps: {createNewTab: "CREATE_NEW_TAB"},
        mapGettersToProps: {currentTab: e => e.currentTab}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(290), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(3), s = n(107), l = n(761), u = n(25), d = n(663), c = n(34), h = n(2), f = n(6), p = n(8),
        g = n(55), k = n(13), m = n(223), T = n(1), v = f.default(h.join(__rootDir, "../bin/ThunderHelper.node")),
        w = T.default.getLogger("system-buttons"),
        y = m.CommunityNaviteFunctionNS.CommunityNaviteFunction.getNativeModule(), S = n(83);
    let b = class extends o.Vue {
        constructor() {
            super(...arguments), this.bSelectAutoRun = !0, this.maximized = !1, this.disableHover = !1, this.showNewIcon = !1, this.communityName = "community", this.blankPage = "http://misc.xl9.xunlei.com/chrome/client/view/dist/1.0/new_tab.html", this.bSelectShowBookmark = !1
        }

        onMaximizedChange(e, t) {
        }

        get curUrl() {
            return S(this.currentTab, "tab", "url")
        }

        get hideCollectIcon() {
            return w.information("cur url", this.curUrl), S(this.currentTab, "tab", "type") === s.TabType.XDAS || S(this.currentTab, "tab", "name") === this.communityName || S(this.currentTab, "tab", "url") === this.blankPage
        }

        closeMainWindow() {
            k.XLStatNS.trackEvent("clienttop", "clienttop_close_click"), this.disableHover = !0, this.$nextTick(() => {
                r.ipcRenderer.send("closeMainWindow")
            })
        }

        minizeMainWindow(e) {
            this.disableHover = !0;
            let t = encodeURIComponent("button=small_get");
            k.XLStatNS.trackEvent("clienttop", "clienttop_maxminum_click", "", 0, 0, 0, 0, t), this.$nextTick(() => {
                r.ipcRenderer.send("minizeMainWindow")
            })
        }

        toggleMaximizeMainWindow() {
            this.disableHover = !0;
            let e = `button=${this.maximized ? "get_back" : "big_get"}`, t = encodeURIComponent(e);
            k.XLStatNS.trackEvent("clienttop", "clienttop_maxminum_click", "", 0, 0, 0, 0, t), this.$nextTick(() => {
                this.maximized ? r.ipcRenderer.send("restoreMainWindow") : r.ipcRenderer.send("maximizeMainWindow")
            })
        }

        showMenu() {
            k.XLStatNS.trackEvent("clienttop", "clienttop_dropdown_click"), this.showNewIcon = !1, u.ConfigNS.getValue("XLUpdate", "ShowMainUpdateIcon", !0) && u.ConfigNS.setValue("XLUpdate", "ShowMainUpdateIcon", !1);
            let e = v.readRegString("HKEY_CURRENT_USER", "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Thunder");
            this.bSelectAutoRun = "" !== e, u.ConfigNS.getValue("ConfigNormalSession", "ConfigNormal_AutoRun", !0) !== this.bSelectAutoRun && u.ConfigNS.setValue("ConfigNormalSession", "ConfigNormal_AutoRun", this.bSelectAutoRun), this.bSelectShowBookmark = u.ConfigNS.getValue("Bookmark", "ShowBookmarkBar", 0) && !0;
            let t = [{
                type: "normal",
                label: "新建下载(&N)",
                accelerator: "CmdOrCtrl+N",
                role: "",
                icon: `${__rootDir}/static/icon/newtask.png`,
                click: () => {
                    this.menuItemClick("newtask", !0)
                }
            }, {
                type: "normal", label: "导入未完成下载", click: () => {
                    this.menuItemClick("unfinished", !0)
                }
            }, {type: "separator"}, {
                type: "checkbox", label: "开机启动", checked: this.bSelectAutoRun, click: () => {
                    this.menuItemClick("autorun", !0)
                }
            }, {
                type: "normal", label: "设置中心", icon: `${__rootDir}/static/icon/config.png`, click: () => {
                    this.menuItemClick("setting", !0)
                }
            }, {type: "separator"}, {
                type: "submenu", label: "更多", enabled: !0, submenu: [{
                    type: "normal", label: "关于迅雷", click: () => {
                        this.menuItemClick("more_about", !0)
                    }
                }]
            }, {type: "separator"}, {
                type: "normal",
                label: "退出(&X)",
                icon: `${__rootDir}/static/icon/exit.png`,
                click: () => {
                    this.menuItemClick("quit")
                }
            }], n = r.remote.Menu.buildFromTemplate(t), i = r.remote.getCurrentWindow();
            n.setStyle({}), n.popup({window: i})
        }

        menuItemClick(e, t) {
            if (t) {
                let t = "button=" + e;
                k.XLStatNS.trackEvent("clienttop", "clienttop_dropdownlist_click", "", 0, 0, 0, 0, t)
            }
            if ("quit" === e) d.default.exitThunderX("system-menu"); else if ("newtask" === e) d.default.showNewTaskPanel("system-menu"); else if ("setting" === e) {
                let e = {tabType: s.TabType.XDAS, tabParam: {title: "设置中心", name: "conf-setting"}};
                this.createNewTab(e)
            } else if ("autorun" === e) this.bSelectAutoRun ? this.bSelectAutoRun = !1 : this.bSelectAutoRun = !0, u.ConfigNS.setValue("ConfigNormalSession", "ConfigNormal_AutoRun", this.bSelectAutoRun); else if ("unfinished" === e) d.default.importUncompleted("system-menu"); else if ("check" === e) u.ConfigNS.getValue("XLUpdate", "ShowMenuUpdateIcon", !1) && u.ConfigNS.setValue("XLUpdate", "ShowMenuUpdateIcon", !1), v.startManualUpdateWithUI(); else if ("more_about" === e) {
                let e = h.join(__rootDir, "../../Thunder.exe"), t = v.getFileVersion(e);
                c.MessageBox.custom("about", {size: "large", version: t})
            } else if ("more_kefu" === e) p.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", "http://help.xunlei.com/"); else if ("privacy" === e) p.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", "https://i.xunlei.com/xluser/privacy.html"); else if ("feedback" === e) {
                let e = v.getPeerID(), t = h.join(__rootDir, "../../Thunder.exe"),
                    n = "http://misc-xl9-ssl.xunlei.com/client/view/dist/1.0/feedback.html?version=" + v.getFileVersion(t) + "&pid=" + e;
                p.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", n)
            } else "addBookmark" === e && (this.hideCollectIcon || (w.information("send handleCollent"), y.emit("handleCollent")))
        }

        bookMarkClick(e) {
            let t = `button=${e}`;
            k.XLStatNS.trackEvent("clienttop", "clienttop_dropdownlist_bookmarks_click", "", 0, 0, 0, 0, t)
        }

        loadUpgradeConfig(e) {
            if (0 === e.code && e.data) if (e.data.md5 && e.data.t) {
                u.ConfigNS.getValue("XLUpdate", "UpdateMd5", "") !== e.data.md5 && 2 === parseInt(e.data.t, 10) && (u.ConfigNS.setValue("XLUpdate", "UpdateMd5", e.data.md5), u.ConfigNS.setValue("XLUpdate", "ShowMainUpdateIcon", !0), u.ConfigNS.setValue("XLUpdate", "ShowMenuUpdateIcon", !0)), u.ConfigNS.getValue("XLUpdate", "ShowMainUpdateIcon", !0) && (this.showNewIcon = !0)
            } else u.ConfigNS.setValue("XLUpdate", "UpdateMd5", ""), u.ConfigNS.setValue("XLUpdate", "ShowMainUpdateIcon", !1), u.ConfigNS.setValue("XLUpdate", "ShowMenuUpdateIcon", !1); else u.ConfigNS.setValue("XLUpdate", "UpdateMd5", ""), u.ConfigNS.setValue("XLUpdate", "ShowMainUpdateIcon", !1), u.ConfigNS.setValue("XLUpdate", "ShowMenuUpdateIcon", !1)
        }

        checkUpgrade() {
            return a(this, void 0, void 0, function* () {
                let e = h.join(__rootDir, "../../Thunder.exe"), t = v.getFileVersion(e), n = v.getPeerID(),
                    i = v.getChannelID(),
                    a = `http://upgrade.xl9.xunlei.com/pc?peerid=${n}&os=${v.getOSVersion()}&pid=1&v=${t}&cid=${i}&t=2&lng=0804`,
                    o = null;
                try {
                    o = yield g.default.get(a)
                } catch (e) {
                    w.warning(e)
                }
                o && 200 === o.status && o.data && this.loadUpgradeConfig(o.data)
            })
        }

        mounted() {
            const e = r.remote.getCurrentWindow();
            e.on("maximize", () => {
                this.maximized = !0
            }), e.on("minimize", () => {
                this.maximized = !1
            }), e.on("unmaximize", () => {
                this.maximized = !1
            }), setTimeout(() => {
                this.checkUpgrade()
            }, 3e3)
        }
    };
    i([o.Prop({})], b.prototype, "createNewTab", void 0), i([o.Prop({})], b.prototype, "currentTab", void 0), i([o.Prop({})], b.prototype, "bookMarks", void 0), i([o.Watch("maximized")], b.prototype, "onMaximizedChange", null), b = i([o.Component({components: {MessageButtonContainer: l.default}})], b), t.default = b
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(292), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(762), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            showMessageButton: e => e.Community.showMessageButton,
            unReadNums: e => e.Community.unreadNums,
            messages: e => e.Community.messages,
            chatMsgs: e => e.Community.chatMsgs,
            stars: e => e.Community.stars,
            chatUserId: e => e.Community.chatUserId,
            tabs: e => e.Tabs.tabs
        },
        mapGettersToProps: {
            currentTab: e => e.currentTab,
            unreadCount: e => e.totalUnread,
            unreadMsgsLen: e => e.UnreadMsgsLen
        },
        mapCommitToProps: {
            createNewTab: "CREATE_NEW_TAB",
            setUnreadNums: "SET_UNREAD_NUMS",
            setShowMessageButton: "SET_SHOW_MESSAGE_BUTTON",
            setUnreadMsgs: "SET_UNREAD_MESSAGES",
            setChatMsgs: "SET_CHAT_MSGS",
            setUnreadStars: "SET_UNREAD_STARS",
            selectTab: "SELECT_TAB",
            resetChatsNum: "RESET_CHATS_NUM",
            setMineId: "SET_MINE_ID"
        },
        mapDispatchToProps: {
            getUnreadNums: "getUnreadNums",
            getUnreadNoticeNum: "getUnreadNoticeNum",
            getUnreadMessages: "getUnreadMessages",
            getUnreadStars: "getUnreadStars",
            getUserSessionList: "getUserSessionList"
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(294), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(1), s = n(662), l = n(107), u = n(96), d = n(8), c = n(223), h = n(658), f = n(3), p = n(25),
        g = n(516), k = n(13), m = n(254), T = n(83),
        v = c.CommunityNaviteFunctionNS.CommunityNaviteFunction.getNativeModule(),
        w = r.default.getLogger("MessageButton"), y = f.remote.getGlobal("mainRendererWindow"),
        S = g.MsgQueueManagerNS.MsgQueue.getInstance().getQueue("notification");
    v.registerNativeFunction();
    let b = class extends o.Vue {
        constructor() {
            super(...arguments), this.communityTabDistance = {
                x: 0,
                y: 0
            }, this.timer = null, this.userId = "", this.notifyDuration = 5e3, this.storageKey = "communityMsg", this.mesgLogoutkey = "mesgLogoutkey", this.previousLogoutTime = 0, this.settingNotifyFlag = "", this.canNotifyFlag = "1", this.communityMsgProperty = 0, this.communityShow = !1, this.isMsgTipsShowing = !1, this.width = 300, this.height = 107, this.chatMsgType = 100, this.otherUserId = "", this.communSection = "community", this.communityKey = "entry_page", this.communityDefaultPage = "http://misc.xl9.xunlei.com/community/dist/", this.isStartLogin = !1, this.envelopeTips = !0, this.communityUpdate = !1
        }

        onshowMessageButtonChange(e) {
            e || null === this.timer ? "" !== this.userId && this.setGetMessageTimer(this.userId) : (clearInterval(this.timer), this.timer = null)
        }

        onunreadMsgsLenChange(e) {
            if (w.information("onunreadMsgsLenChange", e), 0 === e && "" !== this.userId && !this.communityShow) return w.information("清除本地存储数据"), void this.clearStorage();
            this.communityUpdate = !0, this.isStartLogin ? setTimeout(() => {
                this.handleOpenTips(), this.isStartLogin = !1
            }, 3e3) : this.handleOpenTips()
        }

        onunreadCountChange(e) {
            w.information("onunreadCountChange"), 0 === e && "" !== this.userId && this.clearStorage()
        }

        get showBadge() {
            if (this.unreadCount > 0 && this.envelopeTips) {
                let e = "type=envelope";
                k.XLStatNS.trackEvent("community", "comtab_show", "", 0, 0, 0, 0, e), k.XLStatNS.trackEvent("community", "comtab_show", "", 0, 0, 0, 0, "type=comtab"), this.envelopeTips = !1
            }
            return 0 === this.unreadCount && (this.envelopeTips = !0), this.unreadCount > 0
        }

        get style() {
            if (w.information(this.showMessageButton, this.communityTabDistance), this.showMessageButton) return "";
            {
                let {x: e, y: t} = this.communityTabDistance;
                return w.information("getCommunityTabDistance", e, t), `transform: translate3d(${e}px, ${t}px, 0px); opacity: 0; pointer-events: none;`
            }
        }

        created() {
            return a(this, void 0, void 0, function* () {
                this.initUI();
                let e = yield u.default(!0);
                this.initUser(e), null === this.timer && e && this.setGetMessageTimer(e)
            })
        }

        initUI() {
            this.$root.$on("community.show", () => {
                w.information("community.show"), this.getCommunityTabDistance(), this.setShowMessageButton(!1)
            }), this.$root.$on("tab.closeTab", ({tabInfo: e}) => {
                w.information("On tab.closeTab", e), "community" === T(e, "tab", "name") && (this.setShowMessageButton(!0), this.communityShow = !1, k.XLStatNS.trackEvent("community", "comtab_close"))
            }), this.$root.$on("tab.click", e => {
                w.information("On tab.click", e), "community" === T(e, "tab", "name") && k.XLStatNS.trackEvent("community", "comtab_click")
            })
        }

        getUserAllMsg(e) {
            this.getUnreadNums(e), this.getUnreadNoticeNum(e), this.getUnreadMessages(e), this.getUnreadStars(e)
        }

        initUser(e) {
            "" !== e && void 0 !== e && (this.userId = e, this.getUserAllMsg(e))
        }

        clickHadler() {
            return a(this, void 0, void 0, function* () {
                let e = "is_red=no";
                this.showBadge && (e = "is_red=yes"), k.XLStatNS.trackEvent("clienttop", "clienttop_envelope_click", "", 0, 0, 0, 0, e);
                let t = yield u.default(!1, !0);
                if (this.userId = t, w.information("commnunity-page", m.default.getConfigInfo(this.communSection, this.communityKey)), t) {
                    let e = {
                        tabType: l.TabType.Chromium,
                        tabParam: {
                            title: "社区",
                            url: m.default.getConfigInfo(this.communSection, this.communityKey) || this.communityDefaultPage,
                            name: "community",
                            index: 1,
                            showUrl: !1
                        }
                    };
                    this.createNewTab(e), this.$nextTick(() => {
                        w.information("NotifyUnreadNum emit community show"), this.$root.$emit("community.show")
                    })
                }
            })
        }

        getCommunityTabDistance() {
            let e = this.$el.getBoundingClientRect(),
                t = document.querySelectorAll(".td-browser-tab__item")[1].getBoundingClientRect();
            w.information(e, t), this.communityTabDistance = {
                x: t.left + .5 * t.width - e.left - .5 * e.width,
                y: t.top + .5 * t.height - e.top - .5 * e.height
            }
        }

        setGetMessageTimer(e) {
            this.timer = setInterval(() => {
                this.getUserAllMsg(e)
            }, 3e5)
        }

        openMessageTab() {
            this.communityShow = !0, w.information("NotifyUnreadNum openMessageTab");
            let e = "";
            this.unReadNums.notice > 0 ? e = "notice" : this.unReadNums.comment > 0 ? e = "comment" : this.unReadNums.star > 0 ? (w.information("this.unReadNums.star"), e = "praise") : e = "", "" !== this.otherUserId && (e = "chat"), this.setUnreadMsgs([]), this.setUnreadStars([]), this.resetChatsNum(), w.information("showChatPanel otherUserId", this.otherUserId);
            let t = this.getTabIndexByTitleAndName({name: "community", title: "社区"}),
                n = {type: e, extra: {userId: this.otherUserId || this.chatUserId}};
            S.clearQueuesByName("community"), v.sendOpenCommunityEvent(n, T(this.tabs, t, "tab")), this.otherUserId = "";
            this.communityUpdate && k.XLStatNS.trackEvent("community", "comtab_show", "", 0, 0, 0, 0, "entrypage=clienttop_envelope")
        }

        clearStorage() {
            window.localStorage.setItem(this.storageKey, "")
        }

        hasNotify(e) {
            return (window.localStorage.getItem(this.storageKey) || "").includes(e.msgid + "")
        }

        setItemNotify(e) {
            let t = window.localStorage.getItem("communityMsg") || "";
            for (let n = 0; n < e.length; n++) t += `#${e[n].msgid}`;
            window.localStorage.setItem(this.storageKey, t)
        }

        mainWindowVisiable() {
            return y.isVisible()
        }

        showMainWindow() {
            const e = y.isMinimized(), t = y.isVisible();
            w.information("showMainWindow--isMinimized", e, "-----isVisiable", t), !e && (e || t) && t || (w.information("showMainWindow mainWindow.restore"), y.restore(), y.show())
        }

        getUnnotifyMsgs(e) {
            return e.filter(e => !this.hasNotify(e) && e.createTime > this.previousLogoutTime)
        }

        setConfNotifyFlag() {
            this.settingNotifyFlag = p.ConfigNS.getValue("UserCommunitySet", `radio_id_${this.userId}`, "1"), w.information("setConfNotifyFlag", this.settingNotifyFlag)
        }

        getTabIndexByTitleAndName(e) {
            let t = -1;
            if (void 0 === this.tabs) return t;
            for (let n = 0; n < this.tabs.length; n++) if (this.tabs[n].title === e.title && this.tabs[n].tab.name === e.name) {
                t = n;
                break
            }
            return t
        }

        openCommunityTab(e) {
            this.otherUserId = e, w.information("CallMsgBtnOpenTab", this.communityShow), this.showMainWindow();
            let t = this.getTabIndexByTitleAndName({name: "community", title: "社区"});
            -1 === t ? this.clickHadler() : (this.selectTab(t), e && this.openMessageTab())
        }

        handleOpenTips() {
            let e = this.getUnnotifyMsgs(this.stars), t = this.getUnnotifyMsgs([...this.messages, ...this.chatMsgs]);
            if (w.information("getUnnotifyMsgs", t), w.information("getUnnotifyMsgstar", e), this.setItemNotify(t), this.setItemNotify(e), this.settingNotifyFlag !== this.canNotifyFlag || this.communityShow) return;
            let n = S.isEmpty();
            [...t, ...e].length > 0 && S.enQueue({
                callback: () => {
                    h.Notification.notify({
                        type: "CommunityTips",
                        duration: this.notifyDuration,
                        data: {communityMsgs: [...t, ...e], msgType: t.length > 0 ? 0 : 1},
                        width: this.width,
                        height: this.height
                    })
                }, name: "community", priority: this.communityMsgProperty
            }), n && !this.isMsgTipsShowing && (w.information("deQueue", S.isEmpty()), S.deQueue(), this.isMsgTipsShowing = !0, setTimeout(() => {
                this.isMsgTipsShowing = !1
            }, this.notifyDuration))
        }

        mounted() {
            v.on("NotifyUnreadNum", e => {
                if (w.information("NotifyUnreadNum NotifyUnreadNum", e), this.setUnreadNums({
                    star: e.detail.star,
                    comment: e.detail.comment,
                    notice: e.detail.notice,
                    chat: e.detail.chat
                }), e.detail.star + e.detail.comment + e.detail.notice + e.detail.chat > 0) {
                    let e = (new Date).getTime() + "";
                    window.localStorage.setItem(`${this.mesgLogoutkey}${this.userId}`, e.substring(0, e.length - 3))
                }
            }), f.remote.ipcMain.on("CallMsgBtnOpenTab", (e, t) => {
                this.openCommunityTab(t)
            }), v.on("showChatPanel", e => {
                w.information("showChatPanel nativeModule", e), this.openCommunityTab(e)
            }), f.remote.ipcMain.on("openSettingTab", e => {
                this.showMainWindow();
                let t = this.getTabIndexByTitleAndName({name: "conf-setting", title: "设置中心"});
                if (-1 === t) {
                    let e = {tabType: l.TabType.XDAS, tabParam: {title: "设置中心", name: "conf-setting"}};
                    this.createNewTab(e), this.$nextTick(() => {
                        v.emit("selectMsgNotice")
                    })
                } else this.selectTab(t)
            }), v.on("community.pageReady", () => {
                this.communityShow || this.openMessageTab()
            }), d.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                this.setMineId(0), S.clearQueuesByName("community"), this.userId = "", null !== this.timer && (clearInterval(this.timer), this.timer = null), this.setUnreadNums({
                    star: 0,
                    comment: 0,
                    notice: 0,
                    chat: 0
                }), this.setUnreadMsgs([]), this.setUnreadStars([]), this.resetChatsNum()
            }), d.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                this.previousLogoutTime = Number(window.localStorage.getItem(`${this.mesgLogoutkey}${e}`)) || 0, w.information("previous OnLogout time", this.previousLogoutTime), this.isStartLogin = !0, this.setMineId(Number(e) || 0), null === this.timer && void 0 !== e && this.showMessageButton && (this.initUser(e), this.setGetMessageTimer(e), this.setConfNotifyFlag()), setTimeout(() => {
                    this.getUserSessionList(e)
                }, 1e3)
            }), d.NativeCallModule.nativeCall.AttachNativeEvent("OnConfigValueChanaged", (e, t, n, i) => {
                "radio_id_" === t && (this.settingNotifyFlag = i)
            }), y.on("hide", e => {
                w.information("windowHide"), void 0 !== this.userId && this.communityShow && null === this.timer && this.setGetMessageTimer(this.userId)
            }), y.on("show", e => {
                w.information("show"), void 0 !== this.userId && this.communityShow && null !== this.timer && (clearInterval(this.timer), this.timer = null)
            })
        }
    };
    i([o.Prop({})], b.prototype, "showMessageButton", void 0), i([o.Prop({})], b.prototype, "unreadCount", void 0), i([o.Prop({})], b.prototype, "unReadNums", void 0), i([o.Prop({})], b.prototype, "currentTab", void 0), i([o.Prop({})], b.prototype, "messages", void 0), i([o.Prop({})], b.prototype, "chatMsgs", void 0), i([o.Prop({})], b.prototype, "stars", void 0), i([o.Prop({})], b.prototype, "unreadMsgsLen", void 0), i([o.Prop({})], b.prototype, "tabs", void 0), i([o.Prop({})], b.prototype, "chatUserId", void 0), i([o.Prop({})], b.prototype, "getUnreadNums", void 0), i([o.Prop({})], b.prototype, "getUnreadNoticeNum", void 0), i([o.Prop({})], b.prototype, "getUnreadMessages", void 0), i([o.Prop({})], b.prototype, "getUnreadStars", void 0), i([o.Prop({})], b.prototype, "getUserSessionList", void 0), i([o.Prop({})], b.prototype, "createNewTab", void 0), i([o.Prop({})], b.prototype, "selectTab", void 0), i([o.Prop({})], b.prototype, "setUnreadNums", void 0), i([o.Prop({})], b.prototype, "setShowMessageButton", void 0), i([o.Prop({})], b.prototype, "setUnreadMsgs", void 0), i([o.Prop({})], b.prototype, "setChatMsgs", void 0), i([o.Prop({})], b.prototype, "setMineId", void 0), i([o.Prop({})], b.prototype, "resetChatsNum", void 0), i([o.Prop({})], b.prototype, "setUnreadStars", void 0), i([o.Watch("showMessageButton")], b.prototype, "onshowMessageButtonChange", null), i([o.Watch("unreadMsgsLen")], b.prototype, "onunreadMsgsLenChange", null), i([o.Watch("unreadCount")], b.prototype, "onunreadCountChange", null), b = i([o.Component({filters: {unread: s.unread}})], b), t.default = b
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(296), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(765), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            currentCategoryId: e => e.DownloadListState.currentCategoryId,
            tabs: e => e.Tabs.tabs,
            current: e => e.Tabs.current
        },
        mapCommitToProps: {
            createNewTab: "CREATE_NEW_TAB",
            onBrowserBindWindowHandle: "ON_BIND_WND_HANDLE",
            onBrowserTitleChange: "ON_TITLE_CHANGE",
            onBrowserLoadStatusChange: "ON_LOAD_STATUS_CHANGE",
            onBrowserAddressChange: "ON_ADDRESS_CHANGE",
            onBrowserNewBrowserPopup: "ON_NEW_BROWSER_POPUP",
            onBrowserNewBrowserPopupCompleted: "ON_NEW_BROWSER_POPUP_COMPLETED",
            onBrowserLoadStart: "ON_LOAD_START",
            onBrowserLoadError: "ON_LOAD_ERROR",
            onAppQuit: "ON_APP_QUIT"
        },
        mapDispatchToProps: {
            closeTab: "closeTab",
            selectTab: "selectTab",
            onJsCallNativeFunction: "onChromiumCallNativeFunction",
            onJsCheckNativeFunction: "onChromiumCheckNativeFunction"
        },
        mapGettersToProps: {unread: e => e.totalUnread}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(298), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(17), r = n(82), s = n(107), l = n(256), u = n(3), d = n(8), c = n(222), h = n(662), f = n(7),
        p = n(2), g = n(1), k = n(6), m = n(80), T = n(13), v = n(239), w = n(190),
        y = g.default.getLogger("Thunder.Main.Renderer.view.tabs"),
        S = k.default(p.join(__rootDir, "../bin/ThunderHelper.node")), b = r.TabEventManagerNS.getEventEmitter(),
        C = n(83);
    let D = class extends a.Vue {
        handleAdd() {
            T.XLStatNS.trackEvent("clienttop", "clienttop_newtab_add");
            let e = {tabType: s.TabType.Chromium, tabParam: {}};
            this.createNewTab(e), this.$root.$emit("tab.createTab", e), b.emit(r.TabEventManagerNS.EventType.AddTab, e), this.$nextTick(() => {
                this.fireTabVisibleChangeEvent()
            })
        }

        handleRemove({tab: e, index: t}) {
            T.XLStatNS.trackEvent("clienttop", "clienttop_newtab_close");
            let n = {tabInfo: e, index: t};
            this.closeTab(n), this.$root.$emit("tab.closeTab", n), b.emit(r.TabEventManagerNS.EventType.RemoveTab, n), this.$nextTick(() => {
                this.fireTabVisibleChangeEvent()
            })
        }

        handleChange({tab: e, index: t}) {
            y.verbose(e), this.selectTab(t), b.emit(r.TabEventManagerNS.EventType.ChangeTab, t, e), this.$nextTick(() => {
                this.fireTabVisibleChangeEvent()
            })
        }

        handleClick() {
            y.information("tab.click", C(this.tabs, `${this.current}`)), this.$root.$emit("tab.click", C(this.tabs, `${this.current}`))
        }

        showChangeCategoryMenu() {
            0 === this.current && (T.XLStatNS.trackEvent("download_leftpanel", "top_dropdown_click"), v.downloadContextMenu.setContextInfo(this.currentCategoryId, this.currentCategoryId), v.downloadContextMenu.popMenu(v.DownloadMenuType.ChangeCategory).catch())
        }

        getTabIndexByTitleAndName(e, t, n, i) {
            do {
                if (y.information(e), f.isNullOrUndefined(e)) {
                    y.error(e);
                    break
                }
                if (f.isNullOrUndefined(t) || f.isNullOrUndefined(n)) {
                    y.error(t, n);
                    break
                }
                if (f.isNullOrUndefined(i) || f.isNullOrUndefined(i[0])) {
                    let i = e.callNativeFunctionCallback(t, n, o.NativeFunctionErrorCode.ParamError);
                    !0 !== i && y.error(i);
                    break
                }
                let a = null;
                try {
                    a = JSON.parse(i[0])
                } catch (e) {
                    y.warning(e)
                }
                let r = -1;
                if (!a) break;
                if (void 0 !== this.tabs) for (let e = 0; e < this.tabs.length; e++) if (this.tabs[e].title === a.title && this.tabs[e].tab.name === a.name) {
                    r = e;
                    break
                }
                e.callNativeFunctionCallback(t, n, o.NativeFunctionErrorCode.Success, r)
            } while (0)
        }

        mounted() {
            u.remote.globalShortcut.register("ctrl+shift+f12", () => {
                this.tabs[this.current].tab.showDevTool(!0)
            }), window.addEventListener("keyup", e => {
                "F5" === e.key && this.tabs[this.current].tab.refresh(!1)
            }, !0);
            let e = [{
                eventName: "OnBindWindowHandle",
                listener: this.onBindWindowHandle
            }, {eventName: "OnBeforeNavigate", listener: this.onBeforeNavigate}, {
                eventName: "OnTitleChange",
                listener: this.onTitleChange
            }, {eventName: "OnFaviconURLChange", listener: this.onFaviconURLChange}, {
                eventName: "OnAddressChange",
                listener: this.onAddressChange
            }, {
                eventName: "OnNewBrowserPopup",
                listener: this.onNewBrowserPopup
            }, {
                eventName: "OnNewBrowserPopupCompleted",
                listener: this.onNewBrowserPopupCompleted
            }, {eventName: "OnOpenURLFromTab", listener: this.onOpenURLFromTab}, {
                eventName: "OnBrowserDestroy",
                listener: this.onBrowserDestroy
            }, {eventName: "OnAfterBrowserDestroy", listener: this.onAfterBrowserDestroy}, {
                eventName: "OnLoadStart",
                listener: this.onLoadStart
            }, {eventName: "OnLoadEnd", listener: this.onLoadEnd}, {
                eventName: "OnLoadingStateChange",
                listener: this.onLoadingStateChange
            }, {eventName: "OnLoadError", listener: this.onLoadError}, {
                eventName: "OnGotFocus",
                listener: this.onGotFocus
            }, {
                eventName: "OnBeforeDownload",
                listener: this.onBeforeDownload
            }, {
                eventName: "OnCustomProtocalExecution",
                listener: this.onCustomProtocalExecution
            }, {
                eventName: "OnJsCallNativeFunction",
                listener: this.onChromiumJsCallNativeFunction
            }, {
                eventName: "OnJsCheckNativeFunction",
                listener: this.onChromiumCheckNativeFunction
            }, {eventName: "OnCloseBrowser", listener: this.onClose}, {eventName: "OnHotKey", listener: this.onHotKey}];
            r.setDefaultListeners(e);
            let t, n = [{functionName: "openNewTab", nativeFunc: this.openNewTab.bind(this)}, {
                functionName: "OpenNewTab",
                nativeFunc: this.openNewTab.bind(this)
            }, {
                functionName: "GetTabIndexByTitleAndName",
                nativeFunc: this.getTabIndexByTitleAndName.bind(this)
            }, {
                functionName: "SelectTab",
                nativeFunc: this.selectTabByIndex.bind(this)
            }, {
                functionName: "IsTabSelected",
                nativeFunc: this.isTabSelected.bind(this)
            }, {functionName: "CloseCurrentTab", nativeFunc: this.closeCurrentTab.bind(this)}];
            r.setDefaultNativeFunctionMap(n), (t = f.isNullOrUndefined(l.browserSupport.browserParentWnd) ? u.remote.getCurrentWindow() : l.browserSupport.browserParentWnd).on("resize", () => {
                this.resizeCurrentBrowserWindow()
            }), t.on("move", () => {
                this.resizeCurrentBrowserWindow()
            }), t.on("show", () => {
                this.resizeCurrentBrowserWindow()
            }), c.quitPromises.add(this.quitBrowser), d.NativeCallModule.nativeCall.AttachNativeEvent("onWebEvent", (...e) => {
                if (0 === this.tabs.length) return;
                if (f.isNullOrUndefined(e) || f.isNullOrUndefined(e[0])) return;
                let t = e[0];
                e.splice(0, 1);
                for (let n = 0; n < this.tabs.length; n++) this.tabs[n].tab.fireEvent(t, ...e)
            }), d.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                if (0 !== this.tabs.length) for (let t = 0; t < this.tabs.length; t++) this.tabs[t].tab.fireEvent("OnUserLogin", e)
            }), d.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", e => {
                if (0 !== this.tabs.length) {
                    y.information("监听到了退出事件！onLogout");
                    for (let t = 0; t < this.tabs.length; t++) this.tabs[t].tab.fireEvent("OnUserLogout", e)
                }
            }), d.NativeCallModule.nativeCall.AttachNativeEvent("onLoginWndClose", e => {
                if (0 !== this.tabs.length) {
                    y.information("监听到了关闭事件：onLoginWndClose：", e);
                    for (let t = 0; t < this.tabs.length; t++) this.tabs[t].tab.fireEvent("OnLoginWndClose", e)
                }
            }), t.on("hide", this.fireTabVisibleChangeEvent.bind(this)), t.on("minimize", this.fireTabVisibleChangeEvent.bind(this)), t.on("show", this.fireTabVisibleChangeEvent.bind(this)), t.on("restore", this.fireTabVisibleChangeEvent.bind(this))
        }

        fireTabVisibleChangeEvent() {
            let e,
                t = (e = f.isNullOrUndefined(l.browserSupport.browserParentWnd) ? u.remote.getCurrentWindow() : l.browserSupport.browserParentWnd).isVisible(),
                n = e.isMinimized();
            y.information("发送tab状态和主窗口状态改变事件 visible:", t, ", minimized:", n, ", current:", this.current);
            for (let e = 0; e < this.tabs.length; e++) this.tabs[e].tab.fireEvent("OnTabVisibleChange", t && !n, this.current === e)
        }

        quitBrowser() {
            return u.remote.globalShortcut.unregister("ctrl+shift+f12"), new Promise(e => {
                this.onAppQuit(), e(!0)
            })
        }

        onBindWindowHandle(e, t) {
            let n = {hwnd: e, browser: t};
            this.onBrowserBindWindowHandle(n)
        }

        onTitleChange(e, t) {
            let n = {title: e, browser: t};
            this.onBrowserTitleChange(n)
        }

        onBeforeNavigate(e, t, n) {
            y.information("beforenavigate"), y.information(e), y.information(t), y.information(n)
        }

        onFaviconURLChange(e) {
            y.information("icon"), y.information(e)
        }

        onAddressChange(e, t, n) {
            y.information(e), y.information(t);
            let i = {isMainFrame: e, url: t, browser: n};
            this.onBrowserAddressChange(i)
        }

        onNewBrowserPopup(e, t, n) {
            let i = {url: e, refUrl: t, browser: n};
            this.onBrowserNewBrowserPopup(i)
        }

        onNewBrowserPopupCompleted(e, t) {
            y.information(e);
            let n = {url: e, browser: t};
            this.onBrowserNewBrowserPopupCompleted(n)
        }

        onOpenURLFromTab(e, t) {
            y.information(e), y.information(t)
        }

        onBrowserDestroy(e) {
            y.information("onBrowserDestroy"), f.isNullOrUndefined(l.browserSupport.browserManager) || l.browserSupport.browserManager.deleteBrowser(e)
        }

        onAfterBrowserDestroy(e) {
            y.information(e)
        }

        onLoadStart(e, t, n, i) {
            y.information("OnLoadStart"), y.information(e), y.information(t), y.information(n);
            let a = {isMainFrame: e, url: t, transitionType: n, browser: i};
            this.onBrowserLoadStart(a)
        }

        onLoadEnd(e, t, n) {
            y.information("onLoadEnd"), y.information(e), y.information(t), y.information(n)
        }

        onLoadingStateChange(e, t, n, i) {
            y.information("onLoadingStateChange"), y.information(e), y.information(t), y.information(n);
            let a = {isLoading: e, canGoBack: t, canGoForward: n, browser: i};
            this.onBrowserLoadStatusChange(a)
        }

        onLoadError(e, t, n, i, a, o) {
            y.information("OnLoadError"), y.information(e), y.information(n), y.information(i), y.information(a), y.information(t);
            let r = {isMainFrame: e, url: t, errorCode: n, errorText: i, failedUrl: a, browser: o};
            this.onBrowserLoadError(r)
        }

        onGotFocus(e) {
            let t = void 0;
            for (let n = 0; n < this.tabs.length; n++) f.isNullOrUndefined(this.tabs[n]) || f.isNullOrUndefined(this.tabs[n].tab) || (t = this.tabs[n].tab.getBrowser(), f.isNullOrUndefined(t) || e === t && b.emit(r.TabEventManagerNS.EventType.GotFocus, this.tabs[n].tab));
            w.default(l.browserSupport.browserParentWndHandle)
        }

        onBeforeDownload(e, t, n, i) {
            y.information("onBeforeDownload", e, t, "suggestName:", n, "mimeType", i), m.ThunderNewTask.createTaskByUrl(e, n)
        }

        onCustomProtocalExecution(e, t) {
            m.ThunderNewTask.createTaskByUrl(e)
        }

        onChromiumJsCallNativeFunction(e, t, n, i) {
            let a = {nativeCallId: 0, functionName: e, callBackId: t, browser: n, args: i};
            this.onJsCallNativeFunction(a)
        }

        onChromiumCheckNativeFunction(e, t, n) {
            let i = {nativeCallId: 0, functionName: e, callBackId: t, browser: n};
            this.onJsCheckNativeFunction(i)
        }

        onClose(e) {
            let t = void 0;
            for (let n = 0; n < this.tabs.length; n++) if (!f.isNullOrUndefined(this.tabs[n]) && !f.isNullOrUndefined(this.tabs[n].tab) && (t = this.tabs[n].tab.getBrowser(), !f.isNullOrUndefined(t) && e === t)) {
                let e = {tabInfo: this.tabs[n], index: n};
                this.closeTab(e);
                break
            }
        }

        onHotKey(e, t, n) {
            let i = void 0;
            for (let a = 0; a < this.tabs.length; a++) if (!f.isNullOrUndefined(this.tabs[a]) && !f.isNullOrUndefined(this.tabs[a].tab) && (i = this.tabs[a].tab.getBrowser(), !f.isNullOrUndefined(i) && n === i)) {
                if (116 == e) {
                    let e = 4 === t;
                    n.refresh(e)
                }
                break
            }
        }

        openNewTab(e, t, n, i) {
            do {
                if (y.information(e), f.isNullOrUndefined(e)) {
                    y.error(e);
                    break
                }
                if (f.isNullOrUndefined(t) || f.isNullOrUndefined(n)) {
                    y.error(t, n);
                    break
                }
                if (f.isNullOrUndefined(i) || f.isNullOrUndefined(i[0])) {
                    let i = e.callNativeFunctionCallback(t, n, o.NativeFunctionErrorCode.ParamError);
                    !0 !== i && y.error(i);
                    break
                }
                let a = i[0], r = i[1], l = {url: a};
                if (r) try {
                    l = Object.assign(l, JSON.parse(r))
                } catch (e) {
                    y.warning(e)
                }
                let u = {tabType: s.TabType.Chromium, tabParam: l};
                this.createNewTab(u), e.callNativeFunctionCallback(t, n, o.NativeFunctionErrorCode.Success, "create_new_tab_ok")
            } while (0)
        }

        closeCurrentTab(e, t, n, i) {
            do {
                if (y.information("closeCurrentTab", e), f.isNullOrUndefined(e)) {
                    y.error(e);
                    break
                }
                if (f.isNullOrUndefined(t) || f.isNullOrUndefined(n)) {
                    y.error(t, n);
                    break
                }
                if (e === this.tabs[this.current].tab) {
                    let e = {tabInfo: this.tabs[this.current], index: this.current};
                    this.closeTab(e)
                }
            } while (0)
        }

        isTabSelected(e, t, n, i) {
            let a = !1;
            do {
                if (y.information("isTabSelected tab:", e), f.isNullOrUndefined(e)) {
                    y.error(e);
                    break
                }
                if (f.isNullOrUndefined(t) || f.isNullOrUndefined(n)) {
                    y.error(t, n);
                    break
                }
                e === this.tabs[this.current].tab && (a = !0)
            } while (0);
            return a
        }

        selectTabByIndex(e, t, n, i) {
            do {
                if (y.information("selectTabByIndex", e), f.isNullOrUndefined(e)) {
                    y.error(e);
                    break
                }
                if (f.isNullOrUndefined(t) || f.isNullOrUndefined(n)) {
                    y.error(t, n);
                    break
                }
                let a = i[0];
                this.selectTab(a), e.callNativeFunctionCallback(t, n, o.NativeFunctionErrorCode.Success, "create_new_tab_ok")
            } while (0)
        }

        resizeCurrentBrowserWindow() {
            do {
                if (0 === this.tabs.length) break;
                let e = this.tabs[this.current].tab;
                if (f.isNullOrUndefined(e)) break;
                if (e.getTabType() === s.TabType.Chromium) {
                    let t = e.getBrowser();
                    if (f.isNullOrUndefined(t)) break;
                    if (!0 === e.isErrorPage) break;
                    let n = t.getWindowHandle();
                    if (!1 === S.isWindowHandle(n)) {
                        y.error(n);
                        break
                    }
                    l.resizeBrowserWindow(n)
                }
            } while (0)
        }
    };
    i([a.Prop({})], D.prototype, "currentCategoryId", void 0), i([a.Prop({})], D.prototype, "tabs", void 0), i([a.Prop({})], D.prototype, "unread", void 0), i([a.Prop({})], D.prototype, "createNewTab", void 0), i([a.Prop({})], D.prototype, "onBrowserBindWindowHandle", void 0), i([a.Prop({})], D.prototype, "onBrowserTitleChange", void 0), i([a.Prop({})], D.prototype, "onBrowserLoadStatusChange", void 0), i([a.Prop({})], D.prototype, "onBrowserAddressChange", void 0), i([a.Prop({})], D.prototype, "onBrowserNewBrowserPopup", void 0), i([a.Prop({})], D.prototype, "onBrowserNewBrowserPopupCompleted", void 0), i([a.Prop({})], D.prototype, "onBrowserLoadStart", void 0), i([a.Prop({})], D.prototype, "onBrowserLoadError", void 0), i([a.Prop({})], D.prototype, "onBrowserClose", void 0), i([a.Prop({})], D.prototype, "selectTab", void 0), i([a.Prop({})], D.prototype, "closeTab", void 0), i([a.Prop({})], D.prototype, "onAppQuit", void 0), i([a.Prop({})], D.prototype, "onJsCallNativeFunction", void 0), i([a.Prop({})], D.prototype, "onJsCheckNativeFunction", void 0), i([a.Prop({default: "transparent"})], D.prototype, "background", void 0), i([a.Prop({default: 0})], D.prototype, "current", void 0), D = i([a.Component({filters: {unread: h.unread}})], D), t.default = D
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(300), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(768), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            chatUsersInfo: e => e.Community.chatUsersInfo,
            showMessageButton: e => e.Community.showMessageButton,
            unReadNums: e => e.Community.unreadNums
        },
        mapCommitToProps: {setChatMsgs: "SET_CHAT_MSGS", setUserInfo: "SET_USERS_INFO", setChatsNum: "SET_CHATS_NUM"},
        mapDispatchToProps: {getUserInfo: "getUserInfo"}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(302), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(8), r = n(83), s = n(1).default.getLogger("MessageTips");
    let l = class extends a.Vue {
        constructor() {
            super(...arguments), this.serveiceType = "10007", this.chatMsgType = 100, this.msgWayType = 2, this.avatarLinkProtocol = "http", this.newMsgChatType = 1, this.isStartLogin = !1, this.msgImageType = 2, this.msgFileType = 4
        }

        getUserAvatar(e) {
            let t = e || 0;
            return `${this.avatarLinkProtocol}://img.user.kanimg.com/usrimg/${t}/300x300`
        }

        mounted() {
            o.NativeCallModule.nativeCall.AttachNativeEvent("OnMessageChannelUserLogin", () => {
                s.information("用户登录消息通道成功"), o.NativeCallModule.nativeCall.CallNativeFunction("MessageChannelRegisterService", this.serveiceType)
            }), o.NativeCallModule.nativeCall.AttachNativeEvent("OnMessageChannelServiceCallback", (e, t) => {
                s.information("收到私信,msgServiceArray", t), s.information("收到私信,serviceType", e);
                let n = [];
                try {
                    let i = JSON.parse(t);
                    if (e === this.serveiceType) for (let e = 0; e < i.length; e++) {
                        let t = i[e];
                        try {
                            let e = JSON.parse(t.data);
                            s.information("getUserInfo data", e);
                            let a = "";
                            if (a = r(e, "record", "class") === this.msgImageType ? "[图片]" : r(e, "record", "class") === this.msgFileType ? "[文件]" : r(e, "record", "content"), r(e, "message_type") === this.msgWayType) {
                                let t = !1, o = {
                                    msgType: this.chatMsgType,
                                    userId: r(e, "record", "sender") || 0,
                                    userAvatar: this.getUserAvatar(r(e, "record", "sender")),
                                    msgid: r(e, "record", "id"),
                                    messageContent: a,
                                    userName: "",
                                    createTime: r(e, "record", "created_at")
                                };
                                this.getUserInfo(r(e, "record", "sender")).then(e => {
                                    if (!e.error && "ok" === e.data.result && !t) {
                                        let i = e.data.user_info || {};
                                        o.userName = r(i, "nick_name") || r(this.chatUsersInfo[o.userId], "nick_name"), n.push(o), t = !0
                                    }
                                    s.information("私信未读数-getUserInfo chatMsgs", n), n.length === i.length && 0 !== n.length && (this.setChatMsgs(n), s.information("isStartLogin", !this.isStartLogin), !this.isStartLogin && this.showMessageButton && this.setChatsNum(this.unReadNums.chat + n.length))
                                })
                            }
                        } catch (e) {
                            s.information("json parse community error", e)
                        }
                    }
                } catch (e) {
                    s.information("json parse community error", e)
                }
            }), o.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                this.isStartLogin = !0, setTimeout(() => {
                    this.isStartLogin = !1
                }, 1e3)
            }), o.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                s.information("OnLogout"), this.isStartLogin = !1
            })
        }
    };
    i([a.Prop({})], l.prototype, "setChatMsgs", void 0), i([a.Prop({})], l.prototype, "setUserInfo", void 0), i([a.Prop({})], l.prototype, "setChatsNum", void 0), i([a.Prop({})], l.prototype, "getUserInfo", void 0), i([a.Prop({})], l.prototype, "chatUsersInfo", void 0), i([a.Prop({})], l.prototype, "showMessageButton", void 0), i([a.Prop({})], l.prototype, "unReadNums", void 0), l = i([a.Component({components: {}})], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(304), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(770), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            bookMarks: e => e.BookMarks.bookMarks,
            formData: e => e.SettingConf.formData
        },
        mapGettersToProps: {currentTab: e => e.currentTab},
        mapDispatchToProps: {initBookMarks: "initBookMarks"},
        mapCommitToProps: {
            createNewTab: "CREATE_NEW_TAB",
            deleteBookMarksItem: "REMOVE_BOOK_MARKS_ITEM",
            setConfigValue: "SET_CONFIG_VALUE"
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(306), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(3), r = n(107), s = n(25), l = n(21), u = n(223), d = n(34), c = n(256), h = n(8), f = n(13),
        p = n(83), g = n(1).default.getLogger("book-marks"), k = o.remote.getGlobal("mainRendererWindow"),
        m = u.CommunityNaviteFunctionNS.CommunityNaviteFunction.getNativeModule();
    let T = class extends a.Vue {
        constructor() {
            super(...arguments), this.bookMarksWidth = 128, this.moreBookMarkMenuWidth = 294, this.heanderHeight = 111, this.winWidth = 1, this.isSettingWidth = !1, this.curWnd = null, this.bookMarkMenuUrl = "", this.bookMarkMenuTitle = "", this.bookMarkConf = !1, this.indexPageTitle = "下载", this.settingPageTitle = "设置中心", this.communityName = "community", this.blankPageTitle = "新标签页", this.iconAndPaddingWidth = 32, this.fontSize = 12, this.bookMarkStrLen = 8, this.hoverMenuContext = null
        }

        get bookMarksList() {
            return Object.values(this.bookMarks) || []
        }

        get showMarksList() {
            return this.bookMarksList.slice(0, this.barMarkEnd)
        }

        get barMarkEnd() {
            let e = 0, t = 0;
            for (let n = 0; n < this.bookMarksList.length; n++) {
                if (this.bookMarksList[n].name.length >= this.bookMarkStrLen ? t += this.bookMarksWidth : t = t + this.bookMarksList[n].name.length * this.fontSize + this.iconAndPaddingWidth, t >= this.winWidth - this.bookMarksWidth) {
                    e = n;
                    break
                }
                e = n
            }
            return e + 1
        }

        get hideBookMarksList() {
            return this.bookMarksList.slice(this.barMarkEnd)
        }

        get isShowBookMarkBar() {
            let e = this.bookMarkConf && !this.pageHideBookMarks && 0 !== this.bookMarksList.length,
                t = p(this.currentTab, "tab", "browser");
            if (t) {
                let e = t.getWindowHandle();
                this.$nextTick(() => {
                    c.resizeBrowserWindow(e)
                })
            }
            return e
        }

        get MenuTemplate() {
            let e = [];
            for (let t = 0; t < this.hideBookMarksList.length; t++) {
                let n = this.hideBookMarksList[t].name.length > 8 ? this.hideBookMarksList[t].name.substring(0, 8) + "..." : this.hideBookMarksList[t].name,
                    i = void 0 !== this.hideBookMarksList[t].iconUrl && "" !== this.hideBookMarksList[t].iconUrl ? this.hideBookMarksList[t].iconUrl : `${__rootDir}/static/icon/address.png`;
                g.information("iconUrl", i);
                let a = {
                    icon: i, label: n, click: (e, n, i) => {
                        this.openNewTab(this.hideBookMarksList[t].url, this.hideBookMarksList[t].name)
                    }
                };
                e.push(a)
            }
            return e
        }

        get bookMarkTemplate() {
            return [{
                label: "在新标签页中打开", click: () => {
                    this.bookMarkRightClick("open_new"), this.openNewTab(this.bookMarkMenuUrl, this.bookMarkMenuTitle, "new")
                }
            }, {
                label: "删除", click: () => {
                    this.deleteBookMarksItem(this.bookMarkMenuUrl), f.XLStatNS.trackEvent("clienttop", "bookmarks_delete")
                }
            }]
        }

        get blankBookMarkMenu() {
            return [{
                label: "将此页添加书签",
                enabled: void 0 === this.bookMarks[p(this.currentTab, "tab", "url")] && p(this.currentTab, "tab", "title") !== this.blankPageTitle,
                click: () => {
                    m.emit("handleCollent")
                }
            }, {
                label: "隐藏书签栏", click: () => {
                    s.ConfigNS.setValue("Bookmark", "ShowBookmarkBar", 0)
                }
            }]
        }

        get pageHideBookMarks() {
            return p(this.currentTab, "tab", "type") === r.TabType.XDAS || p(this.currentTab, "tab", "name") === this.communityName
        }

        getContextMenu(e) {
            return o.remote.Menu.buildFromTemplate(e)
        }

        showBookMarkMenu(e, t, n = {}) {
            this.bookMarkMenuUrl = e, this.bookMarkMenuTitle = t;
            let i = this.getContextMenu(this.bookMarkTemplate);
            i.setStyle({}), i.popup(Object.assign({}, {window: this.curWnd}, n)), f.XLStatNS.trackEvent("clienttop", "bookmarks_top_right_click")
        }

        created() {
            s.ConfigNS.attachListener(l.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.initBookMarks()
            }), this.setWinWidth()
        }

        setWinWidth() {
            let e = k.getContentSize();
            this.winWidth = e[0]
        }

        showMenu(e) {
            let t = o.remote.getCurrentWindow().getBounds();
            g.information("event", e);
            let n = {
                x: t.x + e.x - this.moreBookMarkMenuWidth,
                y: t.y + e.y - 20,
                modal: !1,
                width: this.moreBookMarkMenuWidth
            };
            d.MessageBox.customAW("BookList", this.hideBookMarksList, n)
        }

        openNewTab(e, t, n = "") {
            if (p(this.currentTab, "tab", "title") === this.blankPageTitle && "new" !== n) return void p(this.currentTab, "tab").navigate(e);
            let i = {tabType: r.TabType.Chromium, tabParam: {title: t, url: e, name: "", showUrl: !0}};
            this.createNewTab(i), f.XLStatNS.trackEvent("clienttop", "bookmarks_bowser_open")
        }

        showAddBookMarkMenu(e) {
            let t = o.remote.Menu.buildFromTemplate(this.blankBookMarkMenu);
            f.XLStatNS.trackEvent("clienttop", "bookmarks_bar_blank_rihgt_click"), t.setStyle({}), t.popup({window: this.curWnd})
        }

        bookMarkRightClick(e) {
            let t = `button=${e}`;
            f.XLStatNS.trackEvent("clienttop", "bookmarks_top_right_click_menu", "", 0, 0, 0, 0, t)
        }

        mounted() {
            this.curWnd = o.remote.getCurrentWindow(), k.on("resize", e => {
                this.isSettingWidth || (this.isSettingWidth = !0, setTimeout(() => {
                    this.setWinWidth(), this.isSettingWidth = !1
                }, 20))
            }), o.remote.ipcMain.on("openNewTab-book-list", (e, t) => {
                g.information("openNewTab-book-list", t), this.openNewTab(t.url, t.title)
            }), o.remote.ipcMain.on("delete-book-list", (e, t) => {
                g.information("delete-book-list", t), this.deleteBookMarksItem(t.url)
            }), s.ConfigNS.attachListener(l.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.bookMarkConf = s.ConfigNS.getValue("Bookmark", "ShowBookmarkBar", !1)
            }), h.NativeCallModule.nativeCall.AttachNativeEvent("OnConfigValueChanaged", (e, t, n, i) => {
                "Bookmark" === e && (this.bookMarkConf = i)
            })
        }
    };
    i([a.Prop({})], T.prototype, "initBookMarks", void 0), i([a.Prop({})], T.prototype, "createNewTab", void 0), i([a.Prop({})], T.prototype, "deleteBookMarksItem", void 0), i([a.Prop({})], T.prototype, "setConfigValue", void 0), i([a.Prop({})], T.prototype, "currentTab", void 0), i([a.Prop({})], T.prototype, "bookMarks", void 0), i([a.Prop({})], T.prototype, "formData", void 0), T = i([a.Component({})], T), t.default = T
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(308), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(773), a = n(39);
    t.default = a.connector.connect({
        mapDispatchToProps: {initSettingData: "initSettingData"},
        mapGettersToProps: {currentTab: e => e.currentTab}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(310), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(774), r = n(807), s = n(83);
    let l = class extends a.Vue {
        get downloadShow() {
            return "" === s(this.currentTab, "tab", "url") && "下载" === s(this.currentTab, "title")
        }

        get settingViewShow() {
            return "conf-setting" === s(this.currentTab, "tab", "name") && "设置中心" === s(this.currentTab, "title")
        }

        get webviewShow() {
            return s(this.currentTab, "tab", "isErrorPage")
        }
    };
    i([a.Prop({})], l.prototype, "currentTab", void 0), i([a.Prop({})], l.prototype, "initSettingData", void 0), l = i([a.Component({
        components: {
            HomeTabView: o.default,
            BrowserViewContainer: r.default,
            SettingViewContainer: () => Promise.resolve().then(() => n(810))
        }
    })], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(312), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(775), r = n(804);
    let s = class extends a.Vue {
    };
    s = i([a.Component({components: {HomePage: r.default, DownloadPanel: o.default}})], s), t.default = s
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(314), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(776), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            currentCategoryId: e => e.DownloadListState.currentCategoryId,
            currentCategoryViewId: e => e.DownloadListState.currentCategoryViewId,
            showPrivateSpaceOpenPage: e => e.PrivateSpaceState.showPrivateSpaceOpenPage,
            showUpgradeTask: e => e.UpgradeTaskState.showUpgradeTask,
            currentTabId: e => e.Tabs.current
        },
        mapCommitToProps: {
            UPDATE_CATEGORY: "UPDATE_CATEGORY",
            UPDATE_CATEGORYVIEW: "UPDATE_CATEGORYVIEW",
            SHOW_PRIVATE_SPACE_OPEN_PAGE: "SHOW_PRIVATE_SPACE_OPEN_PAGE",
            SHOW_UPGRADE_TASK: "SHOW_UPGRADE_TASK"
        },
        mapDispatchToProps: {selectTab: "selectTab"},
        mapGettersToProps: {downloadingOrder: e => e.downloadingOrder}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(316), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(3), r = n(4), s = n(777), l = n(781), u = n(784), d = n(787), c = n(788), h = n(800), f = n(81),
        p = n(255), g = n(21), k = n(239), m = n(96), T = n(8), v = n(58), w = n(43), y = n(53), S = n(86), b = n(664),
        C = n(28), D = n(802), N = C.DownloadKernelTaskManager.getTaskManager(),
        I = f.DownloadKernelCategoryManager.getCategoryManager(), _ = b.DownloadKernelUpgradeNS.getUpgrade(), x = n(13);
    let E = class extends r.Vue {
        constructor() {
            super(...arguments), this.isSearch = !1
        }

        onCategoryChange(e, t) {
            if (-1 !== e) {
                let t = I.getCategoryFromId(e);
                if (t) {
                    let e = t.getPassword();
                    if (!e || "" === e) return void this.SHOW_PRIVATE_SPACE_OPEN_PAGE(!0)
                }
            }
            this.SHOW_PRIVATE_SPACE_OPEN_PAGE(!1)
        }

        onDownloadingOrderChange(e) {
            N.isLoadStorageTaskFinish() && S.DowloadDispatchNS.updateTasksOrder(e)
        }

        get isShowPrivateSpace() {
            return -1 !== this.currentCategoryId
        }

        myComputer() {
            -1 !== this.currentCategoryId && this.UPDATE_CATEGORY(-1)
        }

        closeSearchUI() {
            this.isSearch = !1
        }

        keyOpenSearchUI() {
            x.XLStatNS.trackEvent("download_leftpanel", "search_start_click", "", 0, 0, 0, 0, "entry=ctrlf"), this.openSearchUI()
        }

        openSearchUI() {
            this.isShowPrivateSpace || (this.isSearch = !0)
        }

        privateSpace() {
            return a(this, void 0, void 0, function* () {
                let e = yield m.default(!1, !0);
                if (e && "" !== e) {
                    let t = I.getPrivateCategoryFromUserId(e);
                    if (t && this.currentCategoryId !== t.getId()) {
                        0 === (yield p.PrivateSpaceHelperNS.accessPrivateCategory(e)) && this.UPDATE_CATEGORY(t.getId())
                    }
                }
            })
        }

        handleMenuClick(e) {
            switch (e) {
                case"my_computer":
                    this.myComputer();
                    break;
                case"private_space":
                    this.privateSpace()
            }
        }

        onUpgradeProgress(e, t) {
            e > t ? this.SHOW_UPGRADE_TASK(!0) : setTimeout(() => {
                this.SHOW_UPGRADE_TASK(!1)
            }, 10)
        }

        handleSwitchCategory(e, t, n) {
            return a(this, void 0, void 0, function* () {
                this.isSearch = !1;
                let i = o.remote.getCurrentWindow();
                if (i.isMinimized() && i.restore(), i.show(), 0 !== this.currentTabId && this.selectTab(0), this.currentCategoryId !== e) if (-1 !== e) {
                    let t = yield y.default("GetUserID");
                    if (0 !== (yield p.PrivateSpaceHelperNS.accessPrivateCategory(t))) return;
                    this.UPDATE_CATEGORY(e)
                } else this.UPDATE_CATEGORY(e);
                this.$nextTick(() => {
                    this.currentCategoryViewId !== t && this.UPDATE_CATEGORYVIEW(t), this.$refs.downloadlist.selectTask(t, n)
                })
            })
        }

        handleOpenSearchPage(e) {
            if (e) {
                let e = "entry=morelist";
                x.XLStatNS.trackEvent("download_leftpanel", "search_start_click", "", 0, 0, 0, 0, e), this.openSearchUI()
            } else this.closeSearchUI()
        }

        needUpgradeTask() {
            let e = "", t = 0;
            for (let n = 0; n < o.remote.process.argv.length; n++) {
                if (0 === o.remote.process.argv[n].indexOf("-StartType:")) e = o.remote.process.argv[n].substr("-StartType:".length); else {
                    if (0 === o.remote.process.argv[n].indexOf("-PreVersion:")) {
                        let e = o.remote.process.argv[n].substr("-PreVersion:".length);
                        t = parseInt(e.substr(0, 1), 10)
                    }
                }
            }
            let n = !1;
            return ("Install" === e && t < 9 || "LiveUD" === e && (0 === t || t < 9)) && (n = !0), n
        }

        created() {
            p.PrivateSpaceHelperNS.init(), this.onLogoutEventId = T.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", e => {
                -1 !== this.currentCategoryId && this.UPDATE_CATEGORY(-1);
                let t = I.getPrivateCategoryFromUserId(e);
                t && v.TaskOperatorNs.pauseCategoryAllTask(t.getId())
            });
            let e = o.remote.getCurrentWindow();
            e.on("hide", () => {
                this.UPDATE_CATEGORY(-1), p.PrivateSpaceHelperNS.setNeedPassword(!0)
            }), e.on("minimize", () => {
                this.UPDATE_CATEGORY(-1), p.PrivateSpaceHelperNS.setNeedPassword(!0)
            }), k.downloadContextMenu.attachListener(g.NodeEventMesssageNS.eventDownloadContextMenuClick, this.handleMenuClick), w.default.attachListener(g.NodeEventMesssageNS.eventDownloadSwitchCategory, this.handleSwitchCategory), w.default.attachListener(g.NodeEventMesssageNS.eventShowSearchTaskPage, this.handleOpenSearchPage), this.needUpgradeTask() && _.init() && (_.attachListener(_.eventUpgradeProgress, this.onUpgradeProgress), _.startUpgrade()), this.onLoginEventId = T.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                _.init() && _.upgradePrivateSpace(e)
            })
        }

        destroyed() {
            p.PrivateSpaceHelperNS.uninit(), void 0 !== this.onLogoutEventId && (T.NativeCallModule.nativeCall.DetachNativeEvent("onLogout", this.onLogoutEventId), this.onLogoutEventId = void 0), void 0 !== this.onLoginEventId && (T.NativeCallModule.nativeCall.DetachNativeEvent("onLoginSuc", this.onLoginEventId), this.onLoginEventId = void 0), k.downloadContextMenu.detachListener(g.NodeEventMesssageNS.eventDownloadContextMenuClick, this.handleMenuClick), w.default.detachListener(g.NodeEventMesssageNS.eventDownloadSwitchCategory, this.handleSwitchCategory), _.detachListener(_.eventUpgradeProgress, this.onUpgradeProgress)
        }
    };
    i([r.Prop({})], E.prototype, "currentTabId", void 0), i([r.Prop({})], E.prototype, "currentCategoryId", void 0), i([r.Prop({})], E.prototype, "currentCategoryViewId", void 0), i([r.Prop({})], E.prototype, "showPrivateSpaceOpenPage", void 0), i([r.Prop({})], E.prototype, "showUpgradeTask", void 0), i([r.Prop({})], E.prototype, "downloadingOrder", void 0), i([r.Prop({})], E.prototype, "SHOW_PRIVATE_SPACE_OPEN_PAGE", void 0), i([r.Prop({})], E.prototype, "SHOW_UPGRADE_TASK", void 0), i([r.Prop({})], E.prototype, "selectTab", void 0), i([r.Prop({})], E.prototype, "UPDATE_CATEGORY", void 0), i([r.Prop({})], E.prototype, "UPDATE_CATEGORYVIEW", void 0), i([r.Watch("currentCategoryId", {immediate: !0})], E.prototype, "onCategoryChange", null), i([r.Watch("downloadingOrder", {immediate: !0})], E.prototype, "onDownloadingOrderChange", null), E = i([r.Component({
        components: {
            ToolBarContainer: s.default,
            DownloadListContainer: c.default,
            PrivateSpaceOpenPageContainer: h.default,
            DownloadSearchContainer: D.default,
            UpgradeTaskContainer: u.default,
            ToastNotify: d.default,
            StatusBar: l.default
        }
    })], E), t.default = E
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(318), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(778), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {},
        mapGettersToProps: {toolbarButtons: e => e.toolbarButtons}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(320), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(779);
    let r = class extends a.Vue {
    };
    i([a.Prop({})], r.prototype, "toolbarButtons", void 0), r = i([a.Component({components: {ToolBarButtonContainer: o.default}})], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(322), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(780), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            currentCategoryId: e => e.DownloadListState.currentCategoryId,
            currentCategoryViewId: e => e.DownloadListState.currentCategoryViewId,
            showPrivateSpaceOpenPage: e => e.PrivateSpaceState.showPrivateSpaceOpenPage
        },
        mapCommitToProps: {CREATE_NEW_TAB: "CREATE_NEW_TAB", SORT_CATEGORY_BY_FUNCTION: "SORT_CATEGORY_BY_FUNCTION"},
        mapGettersToProps: {currentSelectdTaskInfos: e => e.currentSelectdTaskInfos}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(324), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4);
    let r = class extends o.Vue {
        constructor() {
            super(...arguments), this.disabled = !1, this.disableClass = ""
        }

        onSelectChange(e) {
            return a(this, void 0, void 0, function* () {
                "xlx-icon-nav-file" !== this.id && "xlx-icon-nav-folder" !== this.id || (this.disableClass = yield this.buttonClassFilter(this.currentCategoryId, this.currentCategoryViewId, e, this.showPrivateSpaceOpenPage), "" === this.disableClass ? this.disabled = !1 : this.disabled = !0)
            })
        }

        handleClick(e) {
            this.disabled || this.click(e, this)
        }

        get filterClass() {
            let e = this.disableClass;
            do {
                if ("" !== e) break;
                "string" == typeof(e = this.buttonClassFilter(this.currentCategoryId, this.currentCategoryViewId, this.currentSelectdTaskInfos, this.showPrivateSpaceOpenPage)) && (this.disabled = "" !== e)
            } while (0);
            return e
        }
    };
    i([o.Prop({})], r.prototype, "title", void 0), i([o.Prop({})], r.prototype, "id", void 0), i([o.Prop({})], r.prototype, "currentCategoryId", void 0), i([o.Prop({})], r.prototype, "currentCategoryViewId", void 0), i([o.Prop({})], r.prototype, "showPrivateSpaceOpenPage", void 0), i([o.Prop({})], r.prototype, "currentSelectdTaskInfos", void 0), i([o.Prop({})], r.prototype, "buttonClassFilter", void 0), i([o.Prop({})], r.prototype, "click", void 0), i([o.Prop({})], r.prototype, "CREATE_NEW_TAB", void 0), i([o.Prop({})], r.prototype, "SORT_CATEGORY_BY_FUNCTION", void 0), i([o.Watch("currentSelectdTaskInfos", {immediate: !0})], r.prototype, "onSelectChange", null), r = i([o.Component], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(326), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0}), n(931);
    const a = n(4), o = n(3), r = n(10), s = n(21), l = n(274), u = n(52), d = n(782), c = n(783), h = n(8), f = n(187),
        p = n(25), g = n(157), k = n(112), m = n(13), T = g.ToastNotifyManagerNS.getToastNotifyManger();
    let v = class extends a.Vue {
        constructor() {
            super(...arguments), this.totalDownloadSpeed = 0, this.totalUploadSpeed = 0, this.todayDownSize = 0, this.todayUpSize = 0, this.downloadVipSpeed = 0, this.bMaxSpeedMode = !0, this.downloadCompleteTaskType = d.ScheduleCompleteTaskType.UnKnown, this.canShowVipSpeed = !1, this.showVipText = "会员登录", this.statusStyle = "xlx-status", this.bDisplay = "none"
        }

        get vipText() {
            return this.showVipText
        }

        get curHoverSpeed() {
            let e = "";
            return e = r.ThunderUtil.formatSize(this.totalDownloadSpeed, 1) + "/s"
        }

        get curSpeed() {
            let e = "";
            return e = r.ThunderUtil.formatSize(this.totalDownloadSpeed, 1) + "/s"
        }

        get curUpSpeed() {
            let e = "";
            return e = r.ThunderUtil.formatSize(this.totalUploadSpeed, 1) + "/s"
        }

        get curVipSpeed() {
            let e = "";
            return e = r.ThunderUtil.formatSize(this.downloadVipSpeed, 1) + "/s"
        }

        get downSize() {
            let e = "";
            return e = r.ThunderUtil.formatSize(this.todayDownSize)
        }

        get upSize() {
            let e = "";
            return e = r.ThunderUtil.formatSize(this.todayUpSize)
        }

        showPop() {
            m.XLStatNS.trackEvent("download_leftpanel", "bottom_speed_hover"), this.bDisplay = "block"
        }

        hidePop() {
            this.bDisplay = "none"
        }

        handClickleVipText() {
            if ("会员登录" === this.showVipText) f.LoginHelperNS.loginHelper.showLoginDlg("stausbar", !0); else if ("会员加速" === this.showVipText) {
                let e = "https://pay.xunlei.com/pay.html?bizNo=baijin";
                h.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", e)
            }
        }

        onConfigInitFinished() {
            let e = l.DownloadModeNS.getCurrentDownloadMode();
            this.statusStyle = "1" === e ? "xlx-status" : "xlx-status is-limit", c.FlowMonitorNS.startMonitor(), d.ScheduleTaskNS.init(), u.DownloadKernelManager.attachListener(s.NodeEventMesssageNS.eventGlobalDownloadSpeedChanged, e => {
                this.totalDownloadSpeed = c.FlowMonitorNS.getCurrentDownloadSpeed(), this.downloadVipSpeed = c.FlowMonitorNS.getCurrentVipSpeed(), this.todayDownSize = c.FlowMonitorNS.getTodayDownloadSize()
            }), u.DownloadKernelManager.attachListener(s.NodeEventMesssageNS.eventGlobalUploadSpeedChanged, e => {
                this.totalUploadSpeed = e, this.todayUpSize = c.FlowMonitorNS.getTodayUploadSize()
            })
        }

        onGetUserInfo() {
            f.LoginHelperNS.loginHelper.getAllUserInfo(e => {
                do {
                    if (null === e || void 0 === e) break;
                    let t = e.vipList[0];
                    0 !== Number(t.isVip) ? this.canShowVipSpeed = !0 : this.showVipText = "会员加速"
                } while (0)
            })
        }

        created() {
            p.ConfigNS.attachListener(s.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.onConfigInitFinished()
            }), p.ConfigNS.attachListener(s.NodeEventMesssageNS.eventConfigValueChanged, (e, t, n, i) => {
                switch (e) {
                    case"ConfigNet":
                        "ConfigNet_Type" === t && ("1" === String(i) ? this.statusStyle = "xlx-status" : this.statusStyle = "xlx-status is-limit")
                }
            }), h.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", () => {
                this.onGetUserInfo()
            }), h.NativeCallModule.nativeCall.AttachNativeEvent("onUserInfoChange", (e, t) => {
                "vipinfo" === e && this.onGetUserInfo()
            }), h.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                this.canShowVipSpeed = !1, this.showVipText = "会员登录"
            })
        }

        getAfterFinishMenuLabel(e) {
            let t = "";
            return t = e === d.ScheduleCompleteTaskType.ShutDown ? "下载完成后(关机)" : e === d.ScheduleCompleteTaskType.Sleep ? "下载完成后(睡眠)" : e === d.ScheduleCompleteTaskType.Exit ? "下载完成后(退出迅雷)" : "下载完成后"
        }

        handleClick() {
            m.XLStatNS.trackEvent("download_leftpanel", "bottom_plan_click"), this.bMaxSpeedMode = "1" === l.DownloadModeNS.getCurrentDownloadMode(), this.downloadCompleteTaskType = d.ScheduleTaskNS.getDownloadCompleteTaskType();
            let e = [{
                type: "checkbox", label: "全速下载", checked: this.bMaxSpeedMode, click(e) {
                    m.XLStatNS.trackEvent("download_leftpanel", "bottom_planlist_click", "", 0, 0, 0, 0, "button=fullspeed"), e.checked && (l.DownloadModeNS.setFullDownloadMode(), T.showNotify(g.ToastNotifyManagerNS.notifyIdScheduleTaskDownloadMode, k.ToastNotifyItemType.GreenNotify, "已为您切换至全速下载模式", 3e3))
                }
            }, {
                type: "checkbox", checked: !this.bMaxSpeedMode, label: "限速下载", click(e) {
                    m.XLStatNS.trackEvent("download_leftpanel", "bottom_planlist_click", "", 0, 0, 0, 0, "button=limitspeed"), l.DownloadModeNS.showCustomDownloadModeDlg().then(e => {
                        e && T.showNotify(g.ToastNotifyManagerNS.notifyIdScheduleTaskDownloadMode, k.ToastNotifyItemType.GreenNotify, "已为您切换至限速下载模式", 3e3)
                    }).catch()
                }
            }, {type: "separator"}, {
                type: "normal", label: "计划任务", click() {
                    m.XLStatNS.trackEvent("download_leftpanel", "bottom_planlist_click", "", 0, 0, 0, 0, "button=plan"), d.ScheduleTaskNS.showPlanTaskDlg()
                }
            }, {
                type: "submenu",
                label: this.getAfterFinishMenuLabel(this.downloadCompleteTaskType),
                submenu: [{
                    type: "checkbox",
                    label: "关机",
                    checked: this.downloadCompleteTaskType === d.ScheduleCompleteTaskType.ShutDown,
                    click(e) {
                        if (e.checked) {
                            let e = "button=finished_close";
                            m.XLStatNS.trackEvent("download_leftpanel", "bottom_planlist_click", "", 0, 0, 0, 0, e), d.ScheduleTaskNS.setDownloadCompleteTaskType(d.ScheduleCompleteTaskType.ShutDown)
                        } else d.ScheduleTaskNS.cancelDownloadCompleteTask()
                    }
                }, {
                    type: "checkbox",
                    label: "睡眠",
                    checked: this.downloadCompleteTaskType === d.ScheduleCompleteTaskType.Sleep,
                    click(e) {
                        if (e.checked) {
                            let e = "button=finished_sleep";
                            m.XLStatNS.trackEvent("download_leftpanel", "bottom_planlist_click", "", 0, 0, 0, 0, e), d.ScheduleTaskNS.setDownloadCompleteTaskType(d.ScheduleCompleteTaskType.Sleep)
                        } else d.ScheduleTaskNS.cancelDownloadCompleteTask()
                    }
                }, {
                    type: "checkbox",
                    label: "退出迅雷",
                    checked: this.downloadCompleteTaskType === d.ScheduleCompleteTaskType.Exit,
                    click(e) {
                        if (e.checked) {
                            let e = "button=finished_exit";
                            m.XLStatNS.trackEvent("download_leftpanel", "bottom_planlist_click", "", 0, 0, 0, 0, e), d.ScheduleTaskNS.setDownloadCompleteTaskType(d.ScheduleCompleteTaskType.Exit)
                        } else d.ScheduleTaskNS.cancelDownloadCompleteTask()
                    }
                }]
            }];
            const t = o.remote.getCurrentWindow(), n = o.remote.Menu.buildFromTemplate(e);
            n.setStyle({}), n.popup({window: t})
        }
    };
    v = i([a.Component], v), t.default = v
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(328), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(785), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {showUpgradeTask: e => e.UpgradeTaskState.showUpgradeTask},
        mapCommitToProps: {SHOW_UPGRADE_TASK: "SHOW_UPGRADE_TASK"},
        mapDispatchToProps: {},
        mapGettersToProps: {}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(330), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0}), n(933);
    const a = n(4), o = n(664).DownloadKernelUpgradeNS.getUpgrade();
    let r = class extends a.Vue {
        constructor() {
            super(...arguments), this.progress = 0
        }

        onUpgradeProgress(e, t) {
            this.progress = e > 0 ? Math.floor(100 * t / e) : 0
        }

        created() {
            o.attachListener(o.eventUpgradeProgress, this.onUpgradeProgress)
        }

        destroyed() {
            o.detachListener(o.eventUpgradeProgress, this.onUpgradeProgress)
        }
    };
    r = i([a.Component], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(332), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0}), n(935);
    const a = n(4), o = n(157), r = n(112), s = o.ToastNotifyManagerNS.getToastNotifyManger();
    let l = class extends a.Vue {
        constructor() {
            super(...arguments), this.show = !1, this.showNotifyItem = null, this.message = "", this.type = "send", this.durationTimer = void 0
        }

        get cancel() {
            return !!this.showNotifyItem && this.showNotifyItem.getCancel()
        }

        handleClose() {
            this.showNotifyItem && s.closeNotify(this.showNotifyItem.getId())
        }

        handleCancel() {
            if (this.showNotifyItem) {
                if (this.showNotifyItem.getCancel()) {
                    this.showNotifyItem.cancel()
                }
                s.closeNotify(this.showNotifyItem.getId())
            }
        }

        handleMouseMove() {
            void 0 !== this.durationTimer && (clearTimeout(this.durationTimer), this.durationTimer = void 0)
        }

        handleMouseOut() {
            if (this.showNotifyItem) {
                let e = this.showNotifyItem.getDuration();
                e && e > 0 && (this.durationTimer = setTimeout(() => {
                    this.durationTimer = void 0, s.closeNotify(this.showNotifyItem.getId())
                }, e))
            }
        }

        onShowNotify(e, t) {
            switch (void 0 !== this.durationTimer && (clearTimeout(this.durationTimer), this.durationTimer = void 0), this.showNotifyItem = t, this.message = t.getMessage(), t.getType()) {
                case r.ToastNotifyItemType.GreenNotify:
                    this.type = "send";
                    break;
                case r.ToastNotifyItemType.RedNotify:
                case r.ToastNotifyItemType.RedCancelNotify:
                    this.type = "fail"
            }
            this.show = !0;
            let n = t.getDuration();
            n && n > 0 && (this.durationTimer = setTimeout(() => {
                this.durationTimer = void 0, s.closeNotify(e)
            }, n))
        }

        onCloseNotify(e, t) {
            this.showNotifyItem && e === this.showNotifyItem.getId() && (this.show = !1, this.showNotifyItem = null), void 0 !== this.durationTimer && (clearTimeout(this.durationTimer), this.durationTimer = void 0)
        }

        onUpdateNotify(e, t) {
            this.onShowNotify(e, t)
        }

        created() {
            s.attachListener("OnShowNotify", this.onShowNotify), s.attachListener("OnUpdateNotify", this.onUpdateNotify), s.attachListener("OnCloseNotify", this.onCloseNotify)
        }

        destroyed() {
            s.detachListener("OnShowNotify", this.onShowNotify), s.detachListener("OnUpdateNotify", this.onUpdateNotify), s.detachListener("OnCloseNotify", this.onCloseNotify)
        }
    };
    l = i([a.Component], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(334), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(789), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            currentCategoryId: e => e.DownloadListState.currentCategoryId,
            currentCategoryViewId: e => e.DownloadListState.currentCategoryViewId,
            currentTabId: e => e.Tabs.current
        },
        mapCommitToProps: {
            UPDATE_CATEGORY: "UPDATE_CATEGORY",
            UPDATE_CATEGORYVIEW: "UPDATE_CATEGORYVIEW",
            INIT_CATEGORY_TASKLIST: "INIT_CATEGORY_TASKLIST",
            UPDATE_DOWNLOADING_SELECTED_TASKS: "UPDATE_DOWNLOADING_SELECTED_TASKS",
            UPDATE_COMPLETED_SELECTED_TASKS: "UPDATE_COMPLETED_SELECTED_TASKS",
            UPDATE_RECYCLE_SELECTED_TASKS: "UPDATE_RECYCLE_SELECTED_TASKS",
            MOVE_TO_TOP: "MOVE_TO_TOP",
            MOVE_TO_BOTTOM: "MOVE_TO_BOTTOM",
            INSERT_TO_CATEGORY_VIEW: "INSERT_TO_CATEGORY_VIEW",
            UPDATE_TASK_STATUS: "UPDATE_TASK_STATUS",
            SORT_CATEGORY_HISTORY: "SORT_CATEGORY_HISTORY",
            SORT_CATEGORY_BY_FUNCTION: "SORT_CATEGORY_BY_FUNCTION",
            UPDATE_DOWNLOADING_TASKLIST: "UPDATE_DOWNLOADING_TASKLIST",
            UPDATE_COMPLETED_TASKLIST: "UPDATE_COMPLETED_TASKLIST",
            UPDATE_RECYCLE_TASKLIST: "UPDATE_RECYCLE_TASKLIST"
        },
        mapDispatchToProps: {attachTaskEvent: "attachTaskEvent", selectTab: "selectTab"},
        mapGettersToProps: {
            downloadingTaskList: e => e.downloadingTaskList,
            completedTaskList: e => e.completedTaskList,
            recycleTaskList: e => e.recycleTaskList,
            downloadingTaskBaseList: e => e.downloadingTaskBaseList,
            completedTaskBaseList: e => e.completedTaskBaseList,
            recycleTaskBaseList: e => e.recycleTaskBaseList,
            currentSelectdTaskInfos: e => e.currentSelectdTaskInfos,
            downloadingSelectedIndexs: e => e.downloadingSelectedIndexs,
            completedSelectedTaskIndexs: e => e.completedSelectedTaskIndexs,
            recycleSelectedTaskIndexs: e => e.recycleSelectedTaskIndexs
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(336), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(1), r = n(5), s = n(158), l = n(665), u = n(58), d = n(239), c = n(21), h = n(43), f = n(13),
        p = n(52), g = n(32), k = n(28), m = g.DownloadKernelEventManager.getEventManager(),
        T = k.DownloadKernelTaskManager.getTaskManager(), v = o.default.getLogger("DownloadList");
    let w = class extends a.Vue {
        constructor() {
            super(...arguments), this.categoryLastSelectList = [{
                category: r.DownloadKernel.CategroyViewID.Downloading,
                lastIndex: 0
            }, {
                category: r.DownloadKernel.CategroyViewID.Completed,
                lastIndex: 0
            }, {
                category: r.DownloadKernel.CategroyViewID.Recycle,
                lastIndex: 0
            }], this.bLoadDbFinish = !1, this.insertToCategoryViewEventId = void 0, this.statusChangedEventId = void 0, this.dataBaseLoadCookie = void 0, this.isHoverClass = !1
        }

        onCategoryChange(e) {
            h.default.fireEvent(c.NodeEventMesssageNS.eventDownloadItemActive, this.currentCategoryViewId, !1, 0, null, !0), this.INIT_CATEGORY_TASKLIST(), this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Downloading)
        }

        handleCollapseChange(e) {
            let t = e, n = "";
            t === r.DownloadKernel.CategroyViewID.Downloading ? n = "downloading_click" : t === r.DownloadKernel.CategroyViewID.Completed ? n = "finished_click" : t === r.DownloadKernel.CategroyViewID.Recycle && (n = "dustbin_click"), f.XLStatNS.trackEvent("download_leftpanel", n), this.UPDATE_CATEGORYVIEW(t)
        }

        handleDelete(e = !1) {
            e ? u.TaskOperatorNs.destroyTasks(this.currentSelectdTaskInfos) : u.TaskOperatorNs.deleteTasks(this.currentSelectdTaskInfos)
        }

        get downloadingCategoryTitle() {
            let e = "正在下载";
            return 0 !== this.downloadingTaskList.length && (e = e + "(" + this.downloadingTaskList.length + ")"), e
        }

        get completedCategoryTitle() {
            let e = "已完成";
            return 0 !== this.completedTaskList.length && (e = e + "(" + this.completedTaskList.length + ")"), e
        }

        get recycleCategoryTitle() {
            let e = "垃圾箱";
            return 0 !== this.recycleTaskList.length && (e = e + "(" + this.recycleTaskList.length + ")"), e
        }

        downloadingItemDbClick() {
            s.TaskStatusHelper.canStopSelectedTask(this.currentCategoryViewId, this.currentSelectdTaskInfos) ? u.TaskOperatorNs.pauseTasks(this.currentSelectdTaskInfos) : s.TaskStatusHelper.canStartSelectedTask(this.currentCategoryViewId, this.currentSelectdTaskInfos) ? u.TaskOperatorNs.startTasks(this.currentSelectdTaskInfos) : v.information("downloaditem dbclick do nothing")
        }

        handleDownloadingItemMenu() {
            d.downloadContextMenu.setContextInfo(this.currentSelectdTaskInfos, this.currentCategoryId, this.downloadingTaskList.length), d.downloadContextMenu.popMenu(d.DownloadMenuType.DownloadingItem)
        }

        handleCompletedItemMenu() {
            d.downloadContextMenu.setContextInfo(this.currentSelectdTaskInfos, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.CompletedItem)
        }

        handleRecycleItemMenu() {
            d.downloadContextMenu.setContextInfo(this.currentSelectdTaskInfos, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.RecycleItem)
        }

        handleDownloadingBlankMenu() {
            -1 === this.currentCategoryId && (0 === this.currentSelectdTaskInfos.length ? (d.downloadContextMenu.setContextInfo(null, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.DownloadingBlank)) : this.handleDownloadingItemMenu())
        }

        handleRecycleBlankMenu() {
            0 === this.currentSelectdTaskInfos.length ? (d.downloadContextMenu.setContextInfo(this.recycleTaskBaseList, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.RecycleBlank)) : this.handleRecycleItemMenu()
        }

        handleDownloadingCategoryMenu() {
            this.currentCategoryViewId === r.DownloadKernel.CategroyViewID.Downloading ? -1 === this.currentCategoryId && (d.downloadContextMenu.setContextInfo(this, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.DownloadingCategory)) : this.handleCollapseChange(r.DownloadKernel.CategroyViewID.Downloading)
        }

        handleCompletedCategoryMenu() {
            this.currentCategoryViewId === r.DownloadKernel.CategroyViewID.Completed ? (d.downloadContextMenu.setContextInfo(this, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.CompletedCategory)) : this.handleCollapseChange(r.DownloadKernel.CategroyViewID.Completed)
        }

        handleRecycleCategoryMenu() {
            this.currentCategoryViewId === r.DownloadKernel.CategroyViewID.Recycle ? (d.downloadContextMenu.setContextInfo(this, this.currentCategoryId), d.downloadContextMenu.popMenu(d.DownloadMenuType.RecycleCategory)) : this.handleCollapseChange(r.DownloadKernel.CategroyViewID.Recycle)
        }

        selectAll() {
            let e = [], t = null;
            switch (this.currentCategoryViewId) {
                case r.DownloadKernel.CategroyViewID.Downloading:
                    t = this.UPDATE_DOWNLOADING_SELECTED_TASKS, e = [...this.downloadingTaskList];
                    break;
                case r.DownloadKernel.CategroyViewID.Completed:
                    t = this.UPDATE_COMPLETED_SELECTED_TASKS, e = [...this.completedTaskList];
                    break;
                case r.DownloadKernel.CategroyViewID.Recycle:
                    t = this.UPDATE_RECYCLE_SELECTED_TASKS, e = [...this.recycleTaskList]
            }
            e.length > 0 && null !== t && t(e)
        }

        moveUp() {
            this.MOVE_TO_TOP(this.downloadingSelectedIndexs)
        }

        moveDown() {
            this.MOVE_TO_BOTTOM(this.downloadingSelectedIndexs)
        }

        handleMenuClick(e, ...t) {
            switch (e) {
                case"select_all":
                    this.selectAll();
                    break;
                case"move_up":
                    this.moveUp();
                    break;
                case"move_down":
                    this.moveDown()
            }
        }

        handleMenuPopup() {
        }

        handleMenuEnd() {
        }

        selectTask(e, t) {
            if (void 0 !== t) if (e === r.DownloadKernel.CategroyViewID.Downloading) {
                let e = this.downloadingTaskList.indexOf(t);
                -1 !== e && (1 === this.downloadingSelectedIndexs.length && this.downloadingSelectedIndexs[0] === t ? this.$refs.downloading.scrollTo(e) : e <= this.$refs.downloading.getLoadedCount() - 1 ? this.UPDATE_DOWNLOADING_SELECTED_TASKS([t]) : (this.$refs.downloading.setLoadedCount(e + 1), this.$nextTick(() => {
                    this.UPDATE_DOWNLOADING_SELECTED_TASKS([t])
                })))
            } else if (e === r.DownloadKernel.CategroyViewID.Completed) {
                let e = this.completedTaskList.indexOf(t);
                -1 !== e && (1 === this.completedSelectedTaskIndexs.length && this.completedSelectedTaskIndexs[0] === t ? this.$refs.completed.scrollTo(e) : e <= this.$refs.completed.getLoadedCount() - 1 ? this.UPDATE_COMPLETED_SELECTED_TASKS([t]) : (this.$refs.completed.setLoadedCount(e + 1), this.$nextTick(() => {
                    this.UPDATE_COMPLETED_SELECTED_TASKS([t])
                })))
            } else if (e === r.DownloadKernel.CategroyViewID.Recycle) {
                let e = this.recycleTaskList.indexOf(t);
                -1 !== e && (1 === this.recycleSelectedTaskIndexs.length && this.recycleSelectedTaskIndexs[0] === t ? this.$refs.dustbin.scrollTo(e) : e <= this.$refs.dustbin.getLoadedCount() - 1 ? this.UPDATE_RECYCLE_SELECTED_TASKS([t]) : (this.$refs.dustbin.setLoadedCount(e + 1), this.$nextTick(() => {
                    this.UPDATE_RECYCLE_SELECTED_TASKS([t])
                })))
            }
        }

        created() {
            this.attachTaskEvent(), d.downloadContextMenu.attachListener(c.NodeEventMesssageNS.eventDownloadContextMenuClick, this.handleMenuClick), d.downloadContextMenu.attachListener(c.NodeEventMesssageNS.eventDownloadContextMenuPopup, this.handleMenuPopup), d.downloadContextMenu.attachListener(c.NodeEventMesssageNS.eventDownloadContextMenuEnd, this.handleMenuEnd)
        }

        shouldChange2Complete() {
            let e = !1;
            do {
                if (this.currentCategoryViewId === r.DownloadKernel.CategroyViewID.Recycle && this.recycleSelectedTaskIndexs.length > 0) {
                    e = !1;
                    break
                }
                if (this.currentCategoryViewId !== r.DownloadKernel.CategroyViewID.Downloading) {
                    e = !0;
                    break
                }
                if (this.downloadingSelectedIndexs.length > 0) {
                    e = !1;
                    break
                }
                e = !0;
                for (let t of this.downloadingTaskBaseList) if (t.taskStatus === r.DownloadKernel.TaskStatus.StartPending || t.taskStatus === r.DownloadKernel.TaskStatus.Started) {
                    e = !1;
                    break
                }
            } while (0);
            return e
        }

        shouldChangeCompleteSelect() {
            let e = !1;
            do {
                if (this.currentCategoryViewId !== r.DownloadKernel.CategroyViewID.Completed) {
                    e = !0;
                    break
                }
                if (0 === this.completedSelectedTaskIndexs.length) {
                    e = !0;
                    break
                }
            } while (0);
            return e
        }

        onTaskDataBaseLoadEnd() {
            this.bLoadDbFinish = !0, this.$nextTick(() => {
                this.SORT_CATEGORY_HISTORY(), 0 === this.downloadingTaskList.length && this.completedTaskList.length > 0 && this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Completed)
            })
        }

        mounted() {
            this.statusChangedEventId = m.attachTaskEvent(r.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== r.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!e[1]) break;
                    let t = e[1];
                    if (t.length > 0) {
                        if (t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.CategoryId) !== this.currentCategoryId) break;
                        if (this.UPDATE_TASK_STATUS(t.map(e => e.getTaskBaseInfo())), t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.Background)) break;
                        if (t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.GroupTaskId) > 0) break;
                        t[0].getTaskStatus() !== r.DownloadKernel.TaskStatus.Succeeded && t[0].getTaskStatus() !== r.DownloadKernel.TaskStatus.Seeding || this.$nextTick(() => {
                            let e = this.shouldChange2Complete(), t = this.shouldChangeCompleteSelect();
                            e && (this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Completed), t && this.UPDATE_COMPLETED_SELECTED_TASKS([this.completedTaskList[0]]))
                        })
                    }
                } while (0)
            }), T.isLoadStorageTaskFinish() ? (this.bLoadDbFinish = !0, this.INIT_CATEGORY_TASKLIST()) : (this.dataBaseLoadCookie = 0, p.DownloadKernelManager.attachListener(c.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, this.onTaskDataBaseLoadEnd)), this.insertToCategoryViewEventId = m.attachTaskEvent(r.DownloadKernel.TaskEventType.InsertToCategoryView, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== r.DownloadKernel.TaskEventType.InsertToCategoryView) break;
                    if (void 0 === e[1] || !e[2] || !e[3]) break;
                    let t = e[1], n = e[2], i = e[3], a = e[4], o = i.map(e => e.getTaskBaseInfo());
                    this.INSERT_TO_CATEGORY_VIEW({
                        id: n,
                        categoryId: t,
                        tasks: o
                    }), this.bLoadDbFinish && n === r.DownloadKernel.CategroyViewID.Downloading && (a === r.DownloadKernel.TaskInsertReason.Create && this.UPDATE_CATEGORY(t), this.$nextTick(() => {
                        if (this.currentCategoryViewId !== r.DownloadKernel.CategroyViewID.Downloading) this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Downloading), this.$nextTick(() => {
                            setTimeout(() => {
                                let e = this.downloadingTaskList[0];
                                this.UPDATE_DOWNLOADING_SELECTED_TASKS([e])
                            }, 0)
                        }); else {
                            let e = this.downloadingTaskList[0];
                            this.UPDATE_DOWNLOADING_SELECTED_TASKS([e])
                        }
                    }))
                } while (0)
            })
        }

        destroyed() {
            d.downloadContextMenu.detachListener(c.NodeEventMesssageNS.eventDownloadContextMenuClick, this.handleMenuClick), d.downloadContextMenu.detachListener(c.NodeEventMesssageNS.eventDownloadContextMenuPopup, this.handleMenuPopup), d.downloadContextMenu.detachListener(c.NodeEventMesssageNS.eventDownloadContextMenuEnd, this.handleMenuEnd), void 0 !== this.insertToCategoryViewEventId && m.detachTaskEvent(r.DownloadKernel.TaskEventType.InsertToCategoryView, this.insertToCategoryViewEventId), void 0 !== this.statusChangedEventId && m.detachTaskEvent(r.DownloadKernel.TaskEventType.StatusChanged, this.statusChangedEventId), void 0 !== this.dataBaseLoadCookie && (this.dataBaseLoadCookie = void 0, p.DownloadKernelManager.detachListener(c.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, this.onTaskDataBaseLoadEnd))
        }
    };
    i([a.Prop({})], w.prototype, "currentTabId", void 0), i([a.Prop({})], w.prototype, "currentCategoryId", void 0), i([a.Prop({})], w.prototype, "currentCategoryViewId", void 0), i([a.Prop({})], w.prototype, "downloadingTaskList", void 0), i([a.Prop({})], w.prototype, "downloadingTaskBaseList", void 0), i([a.Prop({})], w.prototype, "completedTaskList", void 0), i([a.Prop({})], w.prototype, "completedTaskBaseList", void 0), i([a.Prop({})], w.prototype, "recycleTaskList", void 0), i([a.Prop({})], w.prototype, "recycleTaskBaseList", void 0), i([a.Prop({})], w.prototype, "downloadingSelectedIndexs", void 0), i([a.Prop({})], w.prototype, "completedSelectedTaskIndexs", void 0), i([a.Prop({})], w.prototype, "recycleSelectedTaskIndexs", void 0), i([a.Prop({})], w.prototype, "currentSelectdTaskInfos", void 0), i([a.Prop({})], w.prototype, "UPDATE_CATEGORY", void 0), i([a.Prop({})], w.prototype, "UPDATE_CATEGORYVIEW", void 0), i([a.Prop({})], w.prototype, "SORT_CATEGORY_HISTORY", void 0), i([a.Prop({})], w.prototype, "SORT_CATEGORY_BY_FUNCTION", void 0), i([a.Prop({})], w.prototype, "UPDATE_DOWNLOADING_SELECTED_TASKS", void 0), i([a.Prop({})], w.prototype, "UPDATE_COMPLETED_SELECTED_TASKS", void 0), i([a.Prop({})], w.prototype, "UPDATE_RECYCLE_SELECTED_TASKS", void 0), i([a.Prop({})], w.prototype, "MOVE_TO_TOP", void 0), i([a.Prop({})], w.prototype, "UPDATE_DOWNLOADING_TASKLIST", void 0), i([a.Prop({})], w.prototype, "UPDATE_COMPLETED_TASKLIST", void 0), i([a.Prop({})], w.prototype, "UPDATE_RECYCLE_TASKLIST", void 0), i([a.Prop({})], w.prototype, "MOVE_TO_BOTTOM", void 0), i([a.Prop({})], w.prototype, "INIT_CATEGORY_TASKLIST", void 0), i([a.Prop({})], w.prototype, "INSERT_TO_CATEGORY_VIEW", void 0), i([a.Prop({})], w.prototype, "UPDATE_TASK_STATUS", void 0), i([a.Prop({})], w.prototype, "attachTaskEvent", void 0), i([a.Prop({})], w.prototype, "selectTab", void 0), i([a.Watch("currentCategoryId")], w.prototype, "onCategoryChange", null), w = i([a.Component({components: {DownloadCategory: l.default}})], w), t.default = w
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(338), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(1), r = n(5), s = n(790), l = n(795), u = n(797), d = n(43), c = n(21), h = n(28), f = n(10),
        p = o.default.getLogger("DownloadCategory"), g = h.DownloadKernelTaskManager.getTaskManager();
    let k = class extends a.Vue {
        constructor() {
            super(...arguments), this.loadedIndex = 0, this.deleted = {}, this.opened = {}
        }

        get taskCount() {
            return this.tasklist.length
        }

        get loadedList() {
            let e = this.loadedIndex + 20;
            return e > this.taskCount && (e = this.taskCount), p.information("load more", e), this.tasklist.slice(0, e)
        }

        get loadedListWithKey() {
            return this.loadedList.map(e => Object.assign({
                key: e,
                template: {class: {"is-deleted": this.deleted[e], "is-opened": this.opened[e]}}
            }))
        }

        onLoadedListChanged(e) {
            e.forEach(e => {
                this.$set(this.deleted, String(e), e in this.deleted && this.deleted[e]), this.$set(this.opened, String(e), e in this.opened && this.opened[e])
            })
        }

        getLoadedCount() {
            return this.loadedIndex
        }

        setLoadedCount(e) {
            e > this.taskCount && (e = this.taskCount), this.loadedIndex = e
        }

        loadMore(e) {
            this.loadedIndex + 20 > this.taskCount ? this.loadedIndex = this.taskCount : this.loadedIndex += 20, e()
        }

        handleSelectChange(e) {
            this.COMMIT_SELECT(e)
        }

        handleListChange(e) {
            const t = e.map(e => {
                let t = Object.assign({}, e);
                return delete t.template, t.key
            });
            this.COMMIT_UPDATE_TASKLIST(t)
        }

        handleItemDbClick(e) {
            this.$emit("dblclick", e)
        }

        handleContextMenu(e) {
            this.$emit("contextmenu", e)
        }

        handleCancleActive(e) {
            p.information("receive eventShowHomePage", e);
            let t = g.getTaskFromTaskId(e);
            if (t) {
                let e = t.getTaskAttribute(r.DownloadKernel.TaskAttribute.CategoryViewId);
                e !== r.DownloadKernel.CategroyViewID.Unkown && e === this.currentCategoryViewId && this.COMMIT_SELECT([])
            }
        }

        handleActiveChange(e, t) {
            e && this.$nextTick(() => {
                this.scrollTo(t)
            })
        }

        handleActiveNearby(e) {
            do {
                if (0 === this.taskCount) break;
                if (e > this.taskCount) break;
                e <= this.taskCount - 1 ? this.COMMIT_SELECT([this.tasklist[e]]) : this.COMMIT_SELECT([this.tasklist[e - 1]])
            } while (0)
        }

        scrollTo(e) {
            let t = this.$el, n = t.querySelectorAll(".td-draglist-item"), i = void 0,
                a = document.querySelector("#app");
            void 0 !== a && null !== a && (i = -1 === this.currentCategoryId ? a.clientHeight - 249 : a.clientHeight - 224);
            do {
                if (null === n || void 0 === n || 0 === n.length) break;
                if (e < 0) break;
                if (e > n.length - 1) break;
                let a = n[e];
                f.ThunderUtil.autoAdaptScrollIntoView(a, t, i)
            } while (0)
        }

        mounted() {
            d.default.attachListener(c.NodeEventMesssageNS.eventShowHomePage, this.handleCancleActive)
        }

        destroyed() {
            d.default.detachListener(c.NodeEventMesssageNS.eventShowHomePage, this.handleCancleActive)
        }
    };
    i([a.Prop({})], k.prototype, "pulseForRename", void 0), i([a.Prop({default: ""})], k.prototype, "sharedKeyWords", void 0), i([a.Prop({})], k.prototype, "itemType", void 0), i([a.Prop({})], k.prototype, "currentCategoryId", void 0), i([a.Prop({})], k.prototype, "currentCategoryViewId", void 0), i([a.Prop({})], k.prototype, "componentName", void 0), i([a.Prop({})], k.prototype, "tasklist", void 0), i([a.Prop({})], k.prototype, "selectedTaskIds", void 0), i([a.Prop({default: !0})], k.prototype, "sortable", void 0), i([a.Prop({})], k.prototype, "COMMIT_SELECT", void 0), i([a.Prop({})], k.prototype, "COMMIT_UPDATE_TASKLIST", void 0), i([a.Watch("loadedList", {immediate: !0})], k.prototype, "onLoadedListChanged", null), k = i([a.Component({
        components: {
            DownloadingItemContainer: s.default,
            CompletedItemContainer: l.default,
            RecycleItemContainer: u.default
        }
    })], k), t.default = k
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(340), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(791), a = n(39), o = n(5);
    t.default = a.connector.connect({
        mapStateToProps: {
            taskBase: (e, t) => {
                let n = null, i = t.taskId;
                if (-1 === t.currentCategoryId) {
                    for (let t = 0; t < e.DownloadListState.taskList.length; t++) if (e.DownloadListState.taskList[t].id === o.DownloadKernel.CategroyViewID.Downloading) {
                        n = e.DownloadListState.taskList[t].tasksMap[i];
                        break
                    }
                } else for (let t = 0; t < e.DownloadListState.taskListPrivate.length; t++) e.DownloadListState.taskListPrivate[t].id === o.DownloadKernel.CategroyViewID.Downloading && (n = e.DownloadListState.taskListPrivate[t].tasksMap[i]);
                return n
            }
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(342), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0}), n(937);
    const o = n(4), r = n(5), s = n(28), l = n(10), u = n(37), d = n(158), c = n(21), h = n(58), f = n(43), p = n(13),
        g = n(257), k = n(32), m = n(86), T = n(7), v = n(275), w = n(518), y = n(517), S = n(1), b = n(666),
        C = k.DownloadKernelEventManager.getEventManager(), D = s.DownloadKernelTaskManager.getTaskManager(),
        N = v.GroupAccelerateManagerNS.getManager(), I = w.GroupAccelerateWebManagerNS.getManager(),
        _ = y.GroupAccelerateEventManagerNS.getEventManager(), x = S.default.getLogger("DownloadPanel.DownloadingItem");
    let E = class extends o.Vue {
        constructor() {
            super(...arguments), this.btSubDetailCookie = -1, this.groupTaskStatusCookie = -1, this.vipTaskInfo = null, this.hover = !1, this.titleOverFlow = "", this.subTaskCount = 0, this.highLight = "", this.fileNameDefaultCursor = "cursor:default", this.percentVisible = !1, this.isShowGroupAccelerate = !1, this.isAccelerated = !1, this.groupAccelerateIconTitle = "组队加速", this.checkGroupAccelerateTimer = void 0, this.isQuerying = !1, this.groupAccelerateJoinTeamListener = null, this.groupAccelerateExitTeamListener = null, this.groupAccelerateReceiveGcidListener = null, this.groupAccelerateTaskSpeedChangeListener = null, this.groupAccelerateTeamInfoUpdatedListener = null
        }

        onChosenChanged(e) {
            e && (this.percentVisible = !1)
        }

        onOptionsChanged(e, t) {
            this.active && f.default.fireEvent(c.NodeEventMesssageNS.eventDownloadItemActive, r.DownloadKernel.CategroyViewID.Downloading, e === r.DownloadKernel.CategroyViewID.Downloading, this.taskBase.taskId, this.$el)
        }

        onKeyWordsChange(e, t) {
            this.highLight = l.ThunderUtil.keywordsHighLight(this.taskBase.taskName, e, null)
        }

        onRenamePulse(e, t) {
            this.highLight = l.ThunderUtil.keywordsHighLight(this.taskBase.taskName, this.sharedKeyWords, null)
        }

        get subTaskCountDesc() {
            return this.subTaskCount > 999 ? "999+文件" : this.subTaskCount + "个文件"
        }

        onActiveChanged(e, t) {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: t} = yield Promise.resolve().then(() => n(38));
                if ("search" !== this.itemType && f.default.fireEvent(c.NodeEventMesssageNS.eventDownloadItemActive, r.DownloadKernel.CategroyViewID.Downloading, this.active, this.taskBase.taskId, this.$el), t.onItemExpandChanged(this.taskId, this.active), e && (this.percentVisible = !1), this.$emit("active-change", e), e) {
                    let e = !1;
                    do {
                        if (this.taskStatus === r.DownloadKernel.TaskStatus.Failed) break;
                        if (this.active) {
                            let t = N.getTaskUniqueIdByTaskId(this.taskId);
                            e = t && "" !== t
                        }
                    } while (0);
                    this.isShowGroupAccelerate = e;
                    let t = !1;
                    if (this.attachGroupAccelerateEvent(), this.isShowGroupAccelerate) {
                        let e = N.getTaskUniqueIdByTaskId(this.taskId);
                        e && "" !== e && (t = N.isEnterGroupAccelerate(this.taskId))
                    }
                    this.isAccelerated = t
                } else this.isShowGroupAccelerate = !1, this.detachGroupAccelerateEvent()
            })
        }

        onShowGroupAccelerate(e, t) {
            e ? this.checkGroupAccelerateTimer = setInterval(() => {
                N.updateTaskAccelerateInfo(this.taskId)
            }, 6e4) : this.checkGroupAccelerateTimer && (clearTimeout(this.checkGroupAccelerateTimer), this.checkGroupAccelerateTimer = void 0)
        }

        updateGroupAccelerateIconTitle() {
            let e = "组队加速";
            do {
                let t = N.getTaskUniqueIdByTaskId(this.taskId);
                if (!t || "" === t) break;
                let n = N.getTaskGroupInfo(t);
                if (!n) break;
                let i = 0;
                e = "共" + (i = T.isNumber(n.memberCount) ? n.memberCount : 1) + "个队友";
                let a = n.currentIncreaseSpeed;
                T.isNumber(a) || (a = 0);
                let o = "0B";
                a > 0 && (o = l.ThunderUtil.formatSize(a)), e = e + "，加速" + o + "/s", x.information("updateGroupAccelerateIconTitle currentIncreaseSpeed:", a, ", title: ", e)
            } while (0);
            this.groupAccelerateIconTitle = e
        }

        onTaskIdChanged(e, t) {
            void 0 !== t && (this.unInitialize(), this.initialize())
        }

        get taskError() {
            return this.taskBase.taskStatus === r.DownloadKernel.TaskStatus.Failed
        }

        get isForbidden() {
            let e = !1;
            do {
                if (this.taskError) {
                    let t = 0, n = D.getTaskFromTaskId(this.taskBase.taskId);
                    if (null !== n && (t = n.getTaskAttribute(r.DownloadKernel.TaskAttribute.ErrorCode)), 7 === t) {
                        e = !0;
                        break
                    }
                    if (t >= 700 && t <= 799) {
                        e = !0;
                        break
                    }
                }
            } while (0);
            return e
        }

        get errInfo() {
            let e = "";
            if (this.taskError) {
                let t = 0, n = D.getTaskFromTaskId(this.taskBase.taskId);
                null !== n && (t = n.getTaskAttribute(r.DownloadKernel.TaskAttribute.ErrorCode)), e = d.TaskStatusHelper.getTaskErrorInfoByCode(t)
            }
            return e
        }

        handleFileCountClick() {
            this.active ? f.default.fireEvent(c.NodeEventMesssageNS.eventDetailSwitch2Index, this.taskBase.taskId, g.DetailIndex.FileList) : f.default.fireEvent(c.NodeEventMesssageNS.eventDownloadItemActive, r.DownloadKernel.CategroyViewID.Downloading, !0, this.taskBase.taskId, this.$el, void 0, g.DetailIndex.FileList)
        }

        handleItemMouseOut() {
            this.percentVisible = !1, this.hover = !1
        }

        handleItemMouseHover() {
            this.hover = !0;
            do {
                if (this.chosen) {
                    this.percentVisible = !1;
                    break
                }
                if (this.active) {
                    this.percentVisible = !1;
                    break
                }
                this.percentVisible = !0;
                break
            } while (0)
        }

        handleTaskNameMouseOver(e) {
            let t = e.target, n = t.scrollHeight, i = t.offsetHeight;
            this.titleOverFlow = n > i ? this.taskBase.taskName : ""
        }

        get fileTypeClass() {
            return u.TaskUtilHelper.getTaskIcon(this.taskBase.taskName, this.taskBase.taskType)
        }

        get canPlay() {
            let e = !1;
            if (!this.taskError) {
                let t = D.getTaskFromTaskId(this.taskBase.taskId);
                t && (e = t.isSupportPlay())
            }
            return e
        }

        get taskName() {
            return "search" !== this.itemType ? this.taskBase.taskName : this.highLight
        }

        get fileSize() {
            return this.taskBase.fileSize
        }

        get fileSizeFormat() {
            return l.ThunderUtil.formatSize(this.taskBase.fileSize)
        }

        get downloadSize() {
            return this.taskBase.downloadSize
        }

        get downloadSizeFormat() {
            return l.ThunderUtil.formatSize(this.taskBase.downloadSize)
        }

        get progress() {
            let e = 0;
            return 0 !== this.taskBase.fileSize && (e = this.taskBase.downloadSize / this.taskBase.fileSize), 100 * e
        }

        get progressPercent() {
            let e = 0;
            0 !== this.taskBase.fileSize && (e = this.taskBase.downloadSize / this.taskBase.fileSize), e >= 1 && (e = .9999);
            let t = (100 * e).toFixed(2) + "%";
            return "100.00%" === t && (t = "99.99%"), t
        }

        get taskStatus() {
            return this.taskBase.taskStatus
        }

        get taskStatusSpeedInfo() {
            let e = "", t = d.TaskStatusHelper.getTaskStatusPrompt(this.taskBase),
                n = d.TaskStatusHelper.getTaskStartStatusPrompt(this.taskBase);
            if (void 0 !== t || void 0 !== n) "完成" === (e = void 0 !== n ? n : t) && (e = ""), "暂停" === e && (e = "已暂停"); else {
                let t = this.taskBase.downloadSpeed;
                e = l.ThunderUtil.formatSize(t, 1) + "/s"
            }
            return e
        }

        get taskType() {
            return this.taskBase.taskType
        }

        get showStartTemplate() {
            let e = !1;
            return this.taskBase.taskStatus !== r.DownloadKernel.TaskStatus.StartPending && this.taskBase.taskStatus !== r.DownloadKernel.TaskStatus.StopPending && this.taskBase.taskStatus !== r.DownloadKernel.TaskStatus.Started || (e = !0), e
        }

        get canPause() {
            let e = !1;
            return this.taskBase.taskStatus !== r.DownloadKernel.TaskStatus.StartWaiting && this.taskBase.taskStatus !== r.DownloadKernel.TaskStatus.StartPending && this.taskBase.taskStatus !== r.DownloadKernel.TaskStatus.Started || (e = !0), e
        }

        get isGroup() {
            let e = !1;
            return this.taskBase.taskType === r.DownloadKernel.TaskType.Group && (e = !0), e
        }

        get isBt() {
            let e = !1;
            return this.taskBase.taskType === r.DownloadKernel.TaskType.Bt && (e = !0), e
        }

        get bTaskCountShow() {
            let e = !1;
            return (this.isBt || this.isGroup) && (this.active || this.chosen) && (e = !0), e
        }

        get vipSpeed() {
            return "+" + l.ThunderUtil.formatSize(this.taskBase.vipSpeed, 1) + "/s"
        }

        get remain() {
            let e = "--:--:--";
            if (!this.hover || this.chosen || this.active) {
                if (this.taskBase.downloadSpeed > 0 && this.taskBase.fileSize > 0) {
                    let t = this.taskBase.fileSize - this.taskBase.downloadSize;
                    if (t > 0) {
                        let n = t / this.taskBase.downloadSpeed;
                        e = l.ThunderUtil.formatSeconds(n)
                    }
                }
            } else e = this.progressPercent;
            return e
        }

        get isShowExpand() {
            return this.taskStatus !== r.DownloadKernel.TaskStatus.Failed && this.active
        }

        get isShowVipSpeed() {
            if (this.taskStatus === r.DownloadKernel.TaskStatus.Started) {
                if (void 0 !== d.TaskStatusHelper.getTaskStartStatusPrompt(this.taskBase)) return !1;
                if (this.vipTaskInfo) return this.vipTaskInfo.isShowVipSpeed
            }
            return !1
        }

        get isSuperVip() {
            return !!this.vipTaskInfo && this.vipTaskInfo.isShowSuperSpeed
        }

        onShowQueryTip(e) {
            if (e) {
                let e = b.QueryTaskInfoNS.getQueryTaskId();
                this.isQuerying = e === this.taskBase.taskId
            } else this.isQuerying = !1
        }

        statExtData() {
            let e = "panel_type=mypc";
            return -1 !== this.currentCategoryId && (e = "panel_type=private"), e
        }

        handlePlayTask() {
            p.XLStatNS.trackEvent("download_leftpanel", "bianxiabianbo_click", "", 0, 0, 0, 0, this.statExtData()), D.getTaskFromTaskId(this.taskBase.taskId) && h.TaskOperatorNs.downloadAndPlay(this.taskBase.taskId, -1, "bianxiabianbo", "downloading", this.currentCategoryId).catch()
        }

        handleStartTask() {
            p.XLStatNS.trackEvent("download_leftpanel", "downloading_right_continue_click", "", 0, 0, 0, 0, this.statExtData()), m.DowloadDispatchNS.startTask(this.taskBase.taskId)
        }

        handlePauseTask() {
            p.XLStatNS.trackEvent("download_leftpanel", "downloading_right_pause_click", "", 0, 0, 0, 0, this.statExtData()), D.stopTask(this.taskBase.taskId, r.DownloadKernel.TaskStopReason.Button)
        }

        handleDestroyTask() {
            h.TaskOperatorNs.destroyTasks([this.taskBase])
        }

        handleDbClick(e) {
            this.$emit("dblclick", e)
        }

        handleVipTaskInfoChanged(e, t) {
            e === this.taskBase.taskId && (this.vipTaskInfo = t)
        }

        handleGroupAccelerateClick() {
            I.openGroupAccelerateTabByTaskId(this.taskId, "icon", "downloading", void 0).catch()
        }

        loadVipTaskInfo() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                let t = e.getVipTaskInfo(this.taskId);
                t && this.handleVipTaskInfoChanged(this.taskId, t)
            })
        }

        onBtSubFileDetailChanged(...e) {
            do {
                if (!e) break;
                if (e[0] !== r.DownloadKernel.TaskEventType.BtSubFileDetailChanged) break;
                if (!e[1] || !e[2]) break;
                if (e[1] === this.taskBase.taskId) {
                    let e = D.getTaskFromTaskId(this.taskBase.taskId).getExtraObject().getDownloadFile();
                    e.length !== this.subTaskCount && (this.subTaskCount = e.length)
                }
            } while (0)
        }

        onGroupTaskStatusChanged(...e) {
            do {
                if (!e) break;
                if (e[0] !== r.DownloadKernel.TaskEventType.StatusChanged) break;
                if (!e[1]) break;
                let t = e[1];
                if (t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.CategoryId) !== this.currentCategoryId) break;
                for (let e = 0; e < t.length; e++) {
                    let n = t[e];
                    if (n.getTaskAttribute(r.DownloadKernel.TaskAttribute.TaskId) === this.taskId) {
                        let e = n.getExtraObject();
                        this.subTaskCount = e.getDownloadTaskCount();
                        break
                    }
                }
            } while (0)
        }

        attachGroupAccelerateEvent() {
            x.information("attachGroupAccelerateEvent"), this.groupAccelerateJoinTeamListener || (this.groupAccelerateJoinTeamListener = ((e, t) => {
                x.information("OnJoinTeam taskId:", e, ", this.taskId", this.taskId, ", taskUniqueId:", t), e === this.taskId && (this.isAccelerated = !0)
            }), _.on(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnJoinTeam, this.groupAccelerateJoinTeamListener)), this.groupAccelerateExitTeamListener || (this.groupAccelerateExitTeamListener = ((e, t) => {
                x.information("OnExitTeam taskId:", e, ", this.taskId", this.taskId, ", taskUniqueId:", t), e === this.taskId && (this.isAccelerated = !1)
            }), _.on(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnExitTeam, this.groupAccelerateExitTeamListener)), this.groupAccelerateReceiveGcidListener || (this.groupAccelerateReceiveGcidListener = ((e, t) => {
                x.information("OnGroupAccelerateReceiveGcid taskId:", e, ", this.taskId", this.taskId, ", taskUniqueId:", t), e === this.taskId && (this.isShowGroupAccelerate = !0)
            }), _.on(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnReceiveGcid, this.groupAccelerateReceiveGcidListener)), this.groupAccelerateTaskSpeedChangeListener || (this.groupAccelerateTaskSpeedChangeListener = ((e, t, n, i, a) => {
                x.information("OnGroupAccelerateTaskSpeedChange taskId:", e, ", this.taskId", this.taskId, ", increaseSpeed:", n), this.taskId
            }), _.on(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskSpeedChange, this.groupAccelerateTaskSpeedChangeListener)), this.groupAccelerateTeamInfoUpdatedListener || (this.groupAccelerateTeamInfoUpdatedListener = (() => {
            }), _.on(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTeamInfoUpdated, this.groupAccelerateTeamInfoUpdatedListener))
        }

        detachGroupAccelerateEvent() {
            x.information("detachGroupAccelerateEvent"), this.groupAccelerateJoinTeamListener && (_.removeListener(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnJoinTeam, this.groupAccelerateJoinTeamListener), this.groupAccelerateJoinTeamListener = null), this.groupAccelerateExitTeamListener && (_.removeListener(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnExitTeam, this.groupAccelerateExitTeamListener), this.groupAccelerateExitTeamListener = null), this.groupAccelerateReceiveGcidListener && (_.removeListener(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnReceiveGcid, this.groupAccelerateReceiveGcidListener), this.groupAccelerateReceiveGcidListener = null), this.groupAccelerateTaskSpeedChangeListener && (_.removeListener(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskSpeedChange, this.groupAccelerateTaskSpeedChangeListener), this.groupAccelerateTaskSpeedChangeListener = null), this.groupAccelerateTeamInfoUpdatedListener && (_.removeListener(y.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTeamInfoUpdated, this.groupAccelerateTeamInfoUpdatedListener), this.groupAccelerateTeamInfoUpdatedListener = null)
        }

        initialize() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                if (e.attachTaskEvent("OnVipTaskInfoChanged", this.handleVipTaskInfoChanged), this.loadVipTaskInfo(), this.taskBase.taskType === r.DownloadKernel.TaskType.Bt) {
                    this.btSubDetailCookie = C.attachTaskEvent(r.DownloadKernel.TaskEventType.BtSubFileDetailChanged, this.onBtSubFileDetailChanged);
                    let e = D.getTaskFromTaskId(this.taskBase.taskId).getExtraObject().getDownloadFile();
                    this.subTaskCount = e.length
                } else if (this.taskBase.taskType === r.DownloadKernel.TaskType.Group) {
                    this.groupTaskStatusCookie = C.attachTaskEvent(r.DownloadKernel.TaskEventType.StatusChanged, this.onGroupTaskStatusChanged);
                    let e = D.getTaskFromTaskId(this.taskBase.taskId).getExtraObject();
                    this.subTaskCount = e.getDownloadTaskCount()
                }
            })
        }

        unInitialize() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.detachTaskEvent("OnVipTaskInfoChanged", this.handleVipTaskInfoChanged), -1 !== this.btSubDetailCookie && (C.detachTaskEvent(r.DownloadKernel.TaskEventType.BtSubFileDetailChanged, this.btSubDetailCookie), this.btSubDetailCookie = -1), -1 !== this.groupTaskStatusCookie && (C.detachTaskEvent(r.DownloadKernel.TaskEventType.StatusChanged, this.groupTaskStatusCookie), this.groupTaskStatusCookie = -1), this.detachGroupAccelerateEvent(), this.checkGroupAccelerateTimer && (clearTimeout(this.checkGroupAccelerateTimer), this.checkGroupAccelerateTimer = void 0)
            })
        }

        created() {
            this.initialize()
        }

        destroyed() {
            this.unInitialize(), this.active && (f.default.fireEvent(c.NodeEventMesssageNS.eventDownloadItemActive, r.DownloadKernel.CategroyViewID.Downloading, !1, this.taskBase.taskId, this.$el), f.default.getNeedSelectNext() && (f.default.setNeedSelectNext(!1), this.$emit("active-nearby", this.index)))
        }
    };
    i([o.Prop({})], E.prototype, "pulseForRename", void 0), i([o.Prop({default: ""})], E.prototype, "sharedKeyWords", void 0), i([o.Prop({})], E.prototype, "itemType", void 0), i([o.Prop({})], E.prototype, "index", void 0), i([o.Prop({})], E.prototype, "taskId", void 0), i([o.Prop({})], E.prototype, "taskBase", void 0), i([o.Prop({})], E.prototype, "currentCategoryId", void 0), i([o.Prop({})], E.prototype, "currentCategoryViewId", void 0), i([o.Prop()], E.prototype, "chosen", void 0), i([o.Prop()], E.prototype, "active", void 0), i([o.Watch("chosen")], E.prototype, "onChosenChanged", null), i([o.Watch("currentCategoryViewId")], E.prototype, "onOptionsChanged", null), i([o.Watch("sharedKeyWords", {immediate: !0})], E.prototype, "onKeyWordsChange", null), i([o.Watch("pulseForRename", {immediate: !0})], E.prototype, "onRenamePulse", null), i([o.Watch("active")], E.prototype, "onActiveChanged", null), i([o.Watch("isShowGroupAccelerate", {immediate: !0})], E.prototype, "onShowGroupAccelerate", null), i([o.Watch("taskId", {immediate: !0})], E.prototype, "onTaskIdChanged", null), E = i([o.Component({
        components: {ItemVipExpand: () => Promise.resolve().then(() => n(792))},
        watch: {}
    })], E), t.default = E
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(344), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(111), s = n(59), l = n(793), u = n(794);
    let d = class extends o.Vue {
        constructor() {
            super(...arguments), this.isVip = !1, this.authority = !1, this.taskUIStatus = "Init", this.btErrorType = "", this.taskInfo = null
        }

        onTaskIdChanged(e) {
            this.loadTaskInfo()
        }

        get isTry() {
            return !!this.taskInfo && this.taskInfo.taskType === r.VipDownloadDefineNS.VipTaskType.Try
        }

        transTaskUIStatus(e) {
            let t = "Init";
            switch (e) {
                case r.VipDownloadDefineNS.VipTaskStatus.Init:
                    t = "Init";
                    break;
                case r.VipDownloadDefineNS.VipTaskStatus.CommitWait:
                case r.VipDownloadDefineNS.VipTaskStatus.Commiting:
                case r.VipDownloadDefineNS.VipTaskStatus.AcclerateWait:
                    t = "Wait";
                    break;
                case r.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped:
                    t = "Stoped";
                    break;
                case r.VipDownloadDefineNS.VipTaskStatus.Acclerating:
                    t = "Started";
                    break;
                case r.VipDownloadDefineNS.VipTaskStatus.SearchResource:
                    t = "Search";
                    break;
                case r.VipDownloadDefineNS.VipTaskStatus.CommitFailed:
                case r.VipDownloadDefineNS.VipTaskStatus.AcclerateFailed:
                    t = "Failed";
                    break;
                case r.VipDownloadDefineNS.VipTaskStatus.Finished:
                    t = "Finished"
            }
            return t
        }

        loadTaskInfo() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                let t = e.getVipTaskInfo(this.taskId);
                this.onVipTaskInfoChanged(this.taskId, t)
            })
        }

        loadUserInfo() {
            this.onUserAuthorityChanged()
        }

        onVipTaskInfoChanged(e, t) {
            if (e === this.taskId) {
                let e = t ? t.taskStatus : void 0;
                this.taskUIStatus = this.transTaskUIStatus(e), this.taskInfo = t
            }
        }

        onBtSubFileForbidden(e, t) {
            e === this.taskId && (this.btErrorType = t || "Error")
        }

        onUserAuthorityChanged(e) {
            this.isVip = s.UserHelperNS.getHelper().isVip, this.authority = s.UserHelperNS.getHelper().authority
        }

        created() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.attachTaskEvent("OnVipTaskInfoChanged", this.onVipTaskInfoChanged), e.attachTaskEvent("OnBtSubFileForbidden", this.onBtSubFileForbidden), s.UserHelperNS.getHelper().attachListener(s.UserEventNS.authorityChanged, this.onUserAuthorityChanged), this.loadTaskInfo(), this.loadUserInfo()
            })
        }

        destroyed() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.detachTaskEvent("OnVipTaskInfoChanged", this.onVipTaskInfoChanged), e.detachTaskEvent("OnBtSubFileForbidden", this.onBtSubFileForbidden), s.UserHelperNS.getHelper().detachListener(s.UserEventNS.authorityChanged, this.onUserAuthorityChanged)
            })
        }
    };
    i([o.Prop({})], d.prototype, "taskId", void 0), i([o.Watch("taskId")], d.prototype, "onTaskIdChanged", null), d = i([o.Component({
        components: {
            ItemVipStatus: l.default,
            ItemTryStatus: u.default
        }
    })], d), t.default = d
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(346), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(108);
    let s = class extends o.Vue {
        constructor() {
            super(...arguments), this.sceneItem = null
        }

        clickErrorScenceText() {
            r.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnSwitchDetail", this.taskId, "files")
        }

        clickVipButton() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.clickVipAcclerateBtn(this.taskId, "task")
            })
        }

        clickOpenSuperVipButton() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.clickOpenSuperVipBtn()
            })
        }

        get isSuper() {
            return !!this.taskInfo && this.taskInfo.isSuper
        }

        get isSuperStarted() {
            return !(!this.isSuper || "Started" !== this.taskUIStatus)
        }

        get errorSceneText() {
            let e = "部分文件无法下载，点击查看";
            return "Forbidden" === this.btErrorType && (e = "含有敏感资源，部分文件无法下载"), e
        }

        get isErrorScene() {
            return !(!this.btErrorType || "" === this.btErrorType)
        }

        get taskStatusText() {
            let e = "";
            switch (this.taskUIStatus) {
                case"Wait":
                    e = "加速准备中";
                    break;
                case"Started":
                    e = this.isSuper ? "超级加速已开启" : "会员已加速";
                    break;
                case"Stoped":
                    e = "加速暂停中";
                    break;
                case"Search":
                    e = "正在查找资源"
            }
            return e
        }

        get showInit() {
            let e = !1;
            return this.isVip || (e = "Init" === this.taskUIStatus), e
        }

        get showNoAuthorityInit() {
            return !this.authority && this.showInit
        }

        get showFailed() {
            return "Failed" === this.taskUIStatus
        }

        loadTaskScene() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                let t = e.getSceneItem(this.taskId);
                this.onTaskSceneChanged(this.taskId, t)
            })
        }

        onTaskSceneChanged(e, t) {
            e === this.taskId && (this.sceneItem = t)
        }

        created() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                this.loadTaskScene(), e.attachSceneEvent("OnTaskSceneChanged", this.onTaskSceneChanged)
            })
        }

        destroyed() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.detachSceneEvent("OnTaskSceneChanged", this.onTaskSceneChanged)
            })
        }
    };
    i([o.Prop({})], s.prototype, "taskId", void 0), i([o.Prop({})], s.prototype, "taskUIStatus", void 0), i([o.Prop({})], s.prototype, "isVip", void 0), i([o.Prop({})], s.prototype, "authority", void 0), i([o.Prop({})], s.prototype, "btErrorType", void 0), i([o.Prop({})], s.prototype, "taskInfo", void 0), s = i([o.Component({})], s), t.default = s
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(348), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(260), s = n(220);
    let l = class extends o.Vue {
        constructor() {
            super(...arguments), this.progress = 0, this.remainSize = 0
        }

        clickVipButton() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                switch (this.taskUIStatus) {
                    case"Init":
                        e.clickTryAcclerateBtn(this.taskId, "task");
                        break;
                    default:
                        e.clickTryOpenVipBtn(this.taskId, this.taskUIStatus, this.isSuper)
                }
            })
        }

        get isSuper() {
            return !!this.taskInfo && this.taskInfo.isSuper
        }

        get pluginVipClass() {
            return this.isSuper ? "xlx-plugin-vip--super" : "xlx-plugin-vip--ordinary"
        }

        get taskStatusText() {
            return this.isSuper ? this.superStatusText : this.normalStatusText
        }

        get normalStatusText() {
            let e = "";
            switch (this.taskUIStatus) {
                case"Init":
                    e = "恭喜获得一次免费会员试用资格";
                    break;
                case"Wait":
                case"Stoped":
                case"Started":
                    e = "剩余试用加速流量：" + this.remainSizeFormat;
                    break;
                case"Failed":
                    e = "对不起，进入试用失败";
                    break;
                case"Finished":
                    e = "试用结束，开通会员加速不限时"
            }
            return e
        }

        get superStatusText() {
            let e = "";
            switch (this.taskUIStatus) {
                case"Init":
                    e = "恭喜获得一次免费会员试用资格";
                    break;
                case"Wait":
                case"Stoped":
                case"Started":
                    if (this.taskInfo && this.taskInfo.careKuaiNiao) if (this.taskInfo.kuaiNiaoStatus === r.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive) {
                        e = `快鸟已帮您将宽带提升至${s.KuainiaoManagerNS.getManager().downstreamString}`
                    } else e = "超级加速等待中"; else e = "剩余试用加速流量：" + this.remainSizeFormat;
                    break;
                case"Failed":
                    e = "超级加速失败";
                    break;
                case"Finished":
                    e = this.isVip ? "试用结束，立即升级为超级会员" : "试用结束，立即开通为超级会员"
            }
            return e
        }

        get buttonText() {
            return this.isSuper ? this.superButtonText : this.normalButtonText
        }

        get normalButtonText() {
            let e = "";
            switch (this.taskUIStatus) {
                case"Init":
                    e = "试用加速";
                    break;
                case"Wait":
                case"Stoped":
                case"Started":
                    e = "会员无限加速";
                    break;
                case"Failed":
                case"Finished":
                    e = "开通会员"
            }
            return e
        }

        get superButtonText() {
            let e = "";
            switch (this.taskUIStatus) {
                case"Init":
                    e = "试用超会";
                    break;
                case"Wait":
                case"Stoped":
                case"Started":
                case"Failed":
                case"Finished":
                    e = this.isVip ? "升级超会" : "开通超会"
            }
            return e
        }

        get showTrying() {
            return (!this.taskInfo || !this.taskInfo.careKuaiNiao) && ("Wait" === this.taskUIStatus || "Stoped" === this.taskUIStatus || "Started" === this.taskUIStatus)
        }

        get remainSizeFormat() {
            return this.formatSize(this.remainSize)
        }

        get progressPercent() {
            return (100 * (1 - this.progress)).toFixed(2) + "%"
        }

        formatSize(e) {
            let t = "0B";
            if ("number" == typeof e && e > 0) {
                let n = ["B", "K", "M", "G", "T"], i = 0, a = e;
                for (; a >= 1024 && !(i >= 4);) a /= 1024, i += 1;
                t = a.toFixed(2) + n[i]
            }
            return t
        }

        onTaskTryDetailChanged(e, t) {
            e === this.taskId && (this.remainSize = t.remainSize, this.progress = t.progress)
        }

        created() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.attachTaskEvent("OnTaskTryDetailChanged", this.onTaskTryDetailChanged)
            })
        }

        destroyed() {
            return a(this, void 0, void 0, function* () {
                const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
                e.detachTaskEvent("OnTaskTryDetailChanged", this.onTaskTryDetailChanged)
            })
        }
    };
    i([o.Prop({})], l.prototype, "taskId", void 0), i([o.Prop({})], l.prototype, "taskUIStatus", void 0), i([o.Prop({})], l.prototype, "isVip", void 0), i([o.Prop({})], l.prototype, "taskInfo", void 0), l = i([o.Component({})], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(350), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(796), a = n(39), o = n(5);
    t.default = a.connector.connect({
        mapStateToProps: {
            taskBase: (e, t) => {
                let n = null, i = t.taskId;
                if (-1 === t.currentCategoryId) {
                    for (let t = 0; t < e.DownloadListState.taskList.length; t++) if (e.DownloadListState.taskList[t].id === o.DownloadKernel.CategroyViewID.Completed) {
                        n = e.DownloadListState.taskList[t].tasksMap[i];
                        break
                    }
                } else for (let t = 0; t < e.DownloadListState.taskListPrivate.length; t++) e.DownloadListState.taskListPrivate[t].id === o.DownloadKernel.CategroyViewID.Completed && (n = e.DownloadListState.taskListPrivate[t].tasksMap[i]);
                return n
            }
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(352), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(2), r = n(18), s = n(4), l = n(1), u = n(5), d = n(28), c = n(10), h = n(37), f = n(163), p = n(58),
        g = n(21), k = n(13), m = n(257), T = n(43), v = n(34), w = n(230), y = n(11),
        S = l.default.getLogger("Thunder.Download.Completed"), b = d.DownloadKernelTaskManager.getTaskManager();
    let C = class extends s.Vue {
        constructor() {
            super(...arguments), this.titleOverFlow = "", this.lastFullFileName = void 0, this.fileTypeClass = "", this.isInstallFileIcon = !1, this.installFileIcon = "", this.highLight = "", this.fileNameDefaultCursor = "cursor:default"
        }

        onActiveChanged(e, t) {
            "search" !== this.itemType && T.default.fireEvent(g.NodeEventMesssageNS.eventDownloadItemActive, u.DownloadKernel.CategroyViewID.Completed, e, this.taskBase.taskId, this.$el), this.$emit("active-change", e)
        }

        onOptionsChanged(e, t) {
            this.active && T.default.fireEvent(g.NodeEventMesssageNS.eventDownloadItemActive, u.DownloadKernel.CategroyViewID.Completed, e === u.DownloadKernel.CategroyViewID.Completed, this.taskBase.taskId, this.$el)
        }

        onFullFileNameChange(e, t) {
            return a(this, void 0, void 0, function* () {
                void 0 !== t && r.unwatchFile(t, this.handleWatchFile), this.handleWatchFile(), r.watchFile(e, this.handleWatchFile), this.fileTypeClass = yield this.getFileTypeClass().catch()
            })
        }

        onOpenedChange(e) {
            this.$emit("update:opened", e)
        }

        onKeyWordsChange(e, t) {
            this.highLight = c.ThunderUtil.keywordsHighLight(this.taskBase.taskName, e, null)
        }

        onRenamePulse(e, t) {
            this.highLight = c.ThunderUtil.keywordsHighLight(this.taskBase.taskName, this.sharedKeyWords, null)
        }

        get opened() {
            return 1 === this.taskBase.userRead
        }

        get markTitle() {
            let e = "标记为未打开";
            return e = this.opened ? "标记为未打开" : "标记为已打开"
        }

        get fullFileName() {
            let e = this.taskBase.savePath, t = this.taskBase.taskName;
            void 0 !== t && t.indexOf(".") === t.length - 1 && (t = t.substring(0, t.length - 1));
            let n = "";
            return n = this.taskBase.taskType === u.DownloadKernel.TaskType.Group ? e : o.join(e, t)
        }

        handleWatchFile(e, t) {
            return a(this, void 0, void 0, function* () {
                void 0 !== e && void 0 !== t && S.information("fs watchFile", e.mtime, t.mtime, this.fullFileName), (yield f.TaskCtrlOperatorNS.isExistTaskFile(this.taskBase)) ? this.$emit("update:deleted", !1) : this.$emit("update:deleted", !0)
            })
        }

        destroyed() {
            S.information("item destroyed"), r.unwatchFile(this.fullFileName, this.handleWatchFile), this.active && (T.default.fireEvent(g.NodeEventMesssageNS.eventDownloadItemActive, u.DownloadKernel.CategroyViewID.Completed, !1, this.taskBase.taskId, this.$el), T.default.getNeedSelectNext() && (T.default.setNeedSelectNext(!1), this.$emit("active-nearby", this.index)))
        }

        get isExe() {
            let e = !1;
            do {
                if (this.taskBase.taskType !== u.DownloadKernel.TaskType.Emule && this.taskBase.taskType !== u.DownloadKernel.TaskType.P2sp) break;
                let t = o.extname(this.taskBase.taskName);
                if (null === t || void 0 === t) break;
                if (".exe" === t.toLowerCase()) {
                    e = !0;
                    break
                }
            } while (0);
            return e
        }

        getFileTypeClass() {
            return a(this, void 0, void 0, function* () {
                let e = "xlx-icon-type";
                if (e = e + " " + h.TaskUtilHelper.getTaskIcon(this.taskBase.taskName, this.taskBase.taskType), this.isGroup) {
                    let t = b.getTaskFromTaskId(this.taskBase.taskId), n = this.getInstallFileName(t);
                    if (null !== n && void 0 !== n && "" !== n) {
                        let t = f.TaskCtrlOperatorNS.getSavePathByFileName(this.taskBase.taskId, n);
                        if (null !== t && void 0 !== t && "" !== t) {
                            let n = yield p.TaskOperatorNs.getFileIcon(t).catch();
                            null !== n && void 0 !== n && "" !== n && (this.isInstallFileIcon = !0, this.installFileIcon = n, e = "xlx-icon-type")
                        }
                    }
                } else if (this.isExe && (yield y.FileSystemAWNS.existsAW(this.fullFileName))) {
                    let t = yield p.TaskOperatorNs.getFileIcon(this.fullFileName).catch();
                    null !== t && void 0 !== t && "" !== t && (this.isInstallFileIcon = !0, this.installFileIcon = t, e = "xlx-icon-type")
                }
                return e
            })
        }

        get taskName() {
            return "search" !== this.itemType ? this.taskBase.taskName : this.highLight
        }

        get canPlay() {
            let e = !1;
            do {
                if (this.deleted) break;
                let t = b.getTaskFromTaskId(this.taskBase.taskId);
                t && (e = t.isSupportPlay())
            } while (0);
            return e
        }

        get fileSizeFormat() {
            return c.ThunderUtil.formatSize(this.taskBase.fileSize)
        }

        get completeTime() {
            let e = "", t = this.taskBase.completionTime;
            if (t > 0) {
                let n = new Date(t);
                e = c.ThunderUtil.formatDate(n, "yyyy-MM-dd hh:mm")
            }
            return e
        }

        get isGroup() {
            let e = !1;
            return this.taskBase.taskType === u.DownloadKernel.TaskType.Group && (e = !0), e
        }

        get isBt() {
            let e = !1;
            return this.taskBase.taskType === u.DownloadKernel.TaskType.Bt && (e = !0), e
        }

        get bTaskCountShow() {
            let e = !1;
            return (this.isBt || this.isGroup) && (this.active || this.chosen) && (e = !0), e
        }

        get subTaskCount() {
            let e = "0个文件", t = 0;
            if (this.isBt) {
                t = b.getTaskFromTaskId(this.taskBase.taskId).getExtraObject().getDownloadFile().length
            } else if (this.isGroup) {
                t = b.getTaskFromTaskId(this.taskBase.taskId).getExtraObject().getDownloadTaskCount()
            }
            return e = t < 1e3 ? t + "个文件" : "999+文件"
        }

        getInstallFileName(e) {
            let t = "";
            do {
                if (e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Group) break;
                let n = e.getExtraObject().getUserData(w.TaskUserDataGUID.guidDownloadCompleteInstall, "installFile");
                if (void 0 === n || null === n || "" === n || "0" === n) break;
                t = n
            } while (0);
            return t
        }

        handleMark() {
            this.opened ? (k.XLStatNS.trackEvent("download_leftpanel", "finished_left_markcancel_click", "", 0, 0, 0, 0, this.statExtData()), p.TaskOperatorNs.markReadStatus([this.taskBase], 0)) : (k.XLStatNS.trackEvent("download_leftpanel", "finished_left_mark_click", "", 0, 0, 0, 0, this.statExtData()), p.TaskOperatorNs.markReadStatus([this.taskBase], 1))
        }

        handleTaskNameMouseOver(e) {
            let t = e.target, n = t.scrollHeight, i = t.offsetHeight;
            this.titleOverFlow = n > i ? this.taskName : ""
        }

        statExtData() {
            let e = "panel_type=mypc";
            return -1 !== this.currentCategoryId && (e = "panel_type=private"), e
        }

        handlePlayTask() {
            let e = this.statExtData();
            e = `${e},panel=finished,click_source=play`, k.XLStatNS.trackEvent("download_leftpanel", "play_click", "", 0, 0, 0, 0, e), b.getTaskFromTaskId(this.taskBase.taskId) && (p.TaskOperatorNs.downloadAndPlay(this.taskBase.taskId, -1, "play", "finished", this.currentCategoryId).catch(), p.TaskOperatorNs.markReadStatus([this.taskBase], 1))
        }

        handleOpenFile() {
            k.XLStatNS.trackEvent("download_leftpanel", "finished_right_openfiles_click", "", 0, 0, 0, 0, this.statExtData()), p.TaskOperatorNs.markReadStatus([this.taskBase], 1), p.TaskOperatorNs.openTaskFolder(this.taskBase)
        }

        handleDestroyTask() {
            k.XLStatNS.trackEvent("download_leftpanel", "finished_right_delete_click", "", 0, 0, 0, 0, this.statExtData()), p.TaskOperatorNs.destroyTasks([this.taskBase], !1)
        }

        handleDbClick() {
            p.TaskOperatorNs.markReadStatus([this.taskBase], 1);
            do {
                if (this.deleted) {
                    v.MessageBox.confirm({
                        title: "此文件已经被删除，是否需要重新下载？",
                        type: v.MessageBox.ConfirmType.Warning,
                        okText: "重新下载",
                        cancelText: "删除任务"
                    }).then(() => {
                        f.TaskCtrlOperatorNS.redownloadTask([this.taskBase], !1)
                    }, e => {
                        "cancel" === e && p.TaskOperatorNs.destroyTasks([this.taskBase], !1)
                    });
                    break
                }
                if (this.taskBase.taskType === u.DownloadKernel.TaskType.Bt) p.TaskOperatorNs.openTaskFolder(this.taskBase, !0); else if (this.taskBase.taskType === u.DownloadKernel.TaskType.Group) {
                    let e = b.getTaskFromTaskId(this.taskBase.taskId);
                    p.TaskOperatorNs.executeInstallFile(e).then(e => {
                        e || p.TaskOperatorNs.openTaskFolder(this.taskBase, !0)
                    }).catch()
                } else if (this.canPlay) {
                    let e = "double_click", t = this.statExtData();
                    t = `${t},panel=finished,click_source=${e}`, k.XLStatNS.trackEvent("download_leftpanel", "play_click", "", 0, 0, 0, 0, t), b.getTaskFromTaskId(this.taskBase.taskId) && p.TaskOperatorNs.downloadAndPlay(this.taskBase.taskId, -1, e, "finished", this.currentCategoryId).catch()
                } else p.TaskOperatorNs.openTaskItem(this.taskBase)
            } while (0)
        }

        handleFileCountClick() {
            this.active ? T.default.fireEvent(g.NodeEventMesssageNS.eventDetailSwitch2Index, this.taskBase.taskId, m.DetailIndex.FileList) : T.default.fireEvent(g.NodeEventMesssageNS.eventDownloadItemActive, u.DownloadKernel.CategroyViewID.Completed, !0, this.taskBase.taskId, this.$el, void 0, m.DetailIndex.FileList)
        }
    };
    i([s.Prop({})], C.prototype, "pulseForRename", void 0), i([s.Prop({})], C.prototype, "sharedKeyWords", void 0), i([s.Prop({})], C.prototype, "itemType", void 0), i([s.Prop({})], C.prototype, "index", void 0), i([s.Prop({})], C.prototype, "taskId", void 0), i([s.Prop({})], C.prototype, "taskBase", void 0), i([s.Prop({})], C.prototype, "currentCategoryId", void 0), i([s.Prop({})], C.prototype, "currentCategoryViewId", void 0), i([s.Prop()], C.prototype, "deleted", void 0), i([s.Prop()], C.prototype, "chosen", void 0), i([s.Prop()], C.prototype, "active", void 0), i([s.Watch("active")], C.prototype, "onActiveChanged", null), i([s.Watch("currentCategoryViewId")], C.prototype, "onOptionsChanged", null), i([s.Watch("fullFileName", {immediate: !0})], C.prototype, "onFullFileNameChange", null), i([s.Watch("opened", {immediate: !0})], C.prototype, "onOpenedChange", null), i([s.Watch("sharedKeyWords", {immediate: !0})], C.prototype, "onKeyWordsChange", null), i([s.Watch("pulseForRename", {immediate: !0})], C.prototype, "onRenamePulse", null), C = i([s.Component], C), t.default = C
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(354), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(798), a = n(39), o = n(5);
    t.default = a.connector.connect({
        mapStateToProps: {
            taskBase: (e, t) => {
                let n = null, i = t.taskId;
                if (-1 === t.currentCategoryId) for (let t = 0; t < e.DownloadListState.taskList.length; t++) if (e.DownloadListState.taskList[t].id === o.DownloadKernel.CategroyViewID.Recycle) {
                    n = e.DownloadListState.taskList[t].tasksMap[i];
                    break
                }
                return n
            }
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(356), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(2), r = n(18), s = n(4), l = n(5), u = n(28), d = n(10), c = n(37), h = n(163), f = n(58), p = n(21),
        g = n(43), k = n(13), m = n(34), T = u.DownloadKernelTaskManager.getTaskManager();
    let v = class extends s.Vue {
        constructor() {
            super(...arguments), this.titleOverFlow = "", this.bAttachFile = !1, this.highLight = "", this.fileNameDefaultCursor = "cursor:default"
        }

        onOptionsChanged(e, t) {
            this.active && g.default.fireEvent(p.NodeEventMesssageNS.eventDownloadItemActive, l.DownloadKernel.CategroyViewID.Recycle, e === l.DownloadKernel.CategroyViewID.Recycle, this.taskBase.taskId, this.$el)
        }

        onActiveChanged(e, t) {
            "search" !== this.itemType && g.default.fireEvent(p.NodeEventMesssageNS.eventDownloadItemActive, l.DownloadKernel.CategroyViewID.Recycle, e, this.taskBase.taskId, this.$el), this.$emit("active-change", e)
        }

        onTaskIdChanged(e, t) {
            this.taskBase.taskStatus !== l.DownloadKernel.TaskStatus.Succeeded && this.taskBase.taskStatus !== l.DownloadKernel.TaskStatus.Seeding || (this.bAttachFile = !0, this.handleWatchFile(), r.watchFile(this.fullFileName, this.handleWatchFile))
        }

        onKeyWordsChange(e, t) {
            this.highLight = d.ThunderUtil.keywordsHighLight(this.taskBase.taskName, e, null)
        }

        onRenamePulse(e, t) {
            this.highLight = d.ThunderUtil.keywordsHighLight(this.taskBase.taskName, this.sharedKeyWords, null)
        }

        get fullFileName() {
            let e = this.taskBase.savePath, t = this.taskBase.taskName;
            void 0 !== t && t.indexOf(".") === t.length - 1 && (t = t.substring(0, t.length - 1));
            let n = "";
            return n = this.taskBase.taskType === l.DownloadKernel.TaskType.Group ? e : o.join(e, t)
        }

        get fileTypeClass() {
            return c.TaskUtilHelper.getTaskIcon(this.taskBase.taskName, this.taskBase.taskType)
        }

        get taskName() {
            return "search" !== this.itemType ? this.taskBase.taskName : this.highLight
        }

        get fileSizeFormat() {
            return d.ThunderUtil.formatSize(this.taskBase.fileSize)
        }

        get creationTime() {
            let e = "", t = this.taskBase.createTime;
            if (t > 0) {
                let n = new Date(t);
                e = d.ThunderUtil.formatDate(n, "yyyy-MM-dd hh:mm")
            }
            return e
        }

        get canPlay() {
            let e = !1, t = T.getTaskFromTaskId(this.taskBase.taskId);
            return t && (e = t.isSupportPlay()), e
        }

        get isSingleTask() {
            let e = !0;
            if (this.taskBase.taskType === l.DownloadKernel.TaskType.Bt) {
                T.getTaskFromTaskId(this.taskBase.taskId).getExtraObject().getDownloadFile().length > 1 && (e = !1)
            }
            return e
        }

        handleWatchFile() {
            return a(this, void 0, void 0, function* () {
                (yield h.TaskCtrlOperatorNS.isExistTaskFile(this.taskBase)) ? this.$emit("update:deleted", !1) : this.$emit("update:deleted", !0)
            })
        }

        handleTaskNameMouseOver(e) {
            let t = e.target, n = t.scrollHeight, i = t.offsetHeight;
            this.titleOverFlow = n > i ? this.taskName : ""
        }

        statExtData() {
            let e = "panel_type=mypc";
            return -1 !== this.currentCategoryId && (e = "panel_type=private"), e
        }

        handleRestore() {
            k.XLStatNS.trackEvent("download_leftpanel", "dustbin_right_uno_click", "", 0, 0, 0, 0, this.statExtData()), T.recoverFromRecycle(this.taskBase.taskId)
        }

        handleClear() {
            k.XLStatNS.trackEvent("download_leftpanel", "dustbin_right_completedelete_click", "", 0, 0, 0, 0, this.statExtData()), f.TaskOperatorNs.destroyTasks([this.taskBase])
        }

        handleDbClick() {
            return a(this, void 0, void 0, function* () {
                do {
                    if (this.taskBase.taskStatus === l.DownloadKernel.TaskStatus.Succeeded || this.taskBase.taskStatus === l.DownloadKernel.TaskStatus.Seeding) {
                        if (!(yield h.TaskCtrlOperatorNS.canOpenSelectedTaskFile(this.taskBase))) {
                            m.MessageBox.confirm({
                                title: "此文件已经被删除，是否需要重新下载？",
                                type: m.MessageBox.ConfirmType.Warning,
                                okText: "重新下载",
                                cancelText: "删除任务"
                            }).then(() => {
                                h.TaskCtrlOperatorNS.redownloadTask([this.taskBase], !1)
                            }, e => {
                                "cancel" === e && f.TaskOperatorNs.destroyTasks([this.taskBase], !1)
                            });
                            break
                        }
                        if (this.taskBase.taskType === l.DownloadKernel.TaskType.Bt) f.TaskOperatorNs.openTaskFolder(this.taskBase, !0); else if (this.taskBase.taskType === l.DownloadKernel.TaskType.Group) f.TaskOperatorNs.openTaskFolder(this.taskBase, !0); else if (this.canPlay && this.isSingleTask) {
                            let e = "double_click", t = "panel=dustbin,click_source=" + e;
                            k.XLStatNS.trackEvent("download_leftpanel", "play_click", "", 0, 0, 0, 0, t), T.getTaskFromTaskId(this.taskBase.taskId) && f.TaskOperatorNs.downloadAndPlay(this.taskBase.taskId, -1, e, "dustbin", this.currentCategoryId).catch()
                        } else f.TaskOperatorNs.openTaskItem(this.taskBase)
                    }
                } while (0)
            })
        }

        destroyed() {
            this.bAttachFile && (this.bAttachFile = !1, r.unwatchFile(this.fullFileName, this.handleWatchFile)), this.active && (g.default.fireEvent(p.NodeEventMesssageNS.eventDownloadItemActive, l.DownloadKernel.CategroyViewID.Recycle, !1, this.taskBase.taskId, this.$el), g.default.getNeedSelectNext() && (g.default.setNeedSelectNext(!1), this.$emit("active-nearby", this.index)))
        }
    };
    i([s.Prop({})], v.prototype, "pulseForRename", void 0), i([s.Prop({})], v.prototype, "sharedKeyWords", void 0), i([s.Prop({})], v.prototype, "itemType", void 0), i([s.Prop({})], v.prototype, "index", void 0), i([s.Prop({})], v.prototype, "taskId", void 0), i([s.Prop({})], v.prototype, "taskBase", void 0), i([s.Prop({})], v.prototype, "currentCategoryId", void 0), i([s.Prop({})], v.prototype, "currentCategoryViewId", void 0), i([s.Prop()], v.prototype, "active", void 0), i([s.Prop()], v.prototype, "deleted", void 0), i([s.Watch("currentCategoryViewId")], v.prototype, "onOptionsChanged", null), i([s.Watch("active")], v.prototype, "onActiveChanged", null), i([s.Watch("taskId", {immediate: !0})], v.prototype, "onTaskIdChanged", null), i([s.Watch("sharedKeyWords", {immediate: !0})], v.prototype, "onKeyWordsChange", null), i([s.Watch("pulseForRename", {immediate: !0})], v.prototype, "onRenamePulse", null), v = i([s.Component], v), t.default = v
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(358), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(801), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {showPrivateSpaceOpenPage: e => e.PrivateSpaceState.showPrivateSpaceOpenPage},
        mapCommitToProps: {
            SHOW_PRIVATE_SPACE_OPEN_PAGE: "SHOW_PRIVATE_SPACE_OPEN_PAGE",
            UPDATE_CATEGORYVIEW: "UPDATE_CATEGORYVIEW"
        },
        mapDispatchToProps: {},
        mapGettersToProps: {}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(360), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(4), r = n(255), s = n(53);
    let l = class extends o.Vue {
        constructor() {
            super(...arguments), this.privateSpaceSetPasswordListener = null
        }

        openPrivateSpace() {
            return a(this, void 0, void 0, function* () {
                let e = yield s.default("GetUserID");
                e && "" !== e && r.PrivateSpaceHelperNS.openPrivateCategory(e)
            })
        }

        created() {
            let e = r.PrivateSpaceHelperNS.getEventEmitter();
            this.privateSpaceSetPasswordListener || (this.privateSpaceSetPasswordListener = (e => {
                e && this.SHOW_PRIVATE_SPACE_OPEN_PAGE(!1)
            }), e.on(r.PrivateSpaceHelperNS.EventType.SetPassword, this.privateSpaceSetPasswordListener))
        }

        destroyed() {
            if (this.privateSpaceSetPasswordListener) {
                r.PrivateSpaceHelperNS.getEventEmitter().removeListener(r.PrivateSpaceHelperNS.EventType.SetPassword, this.privateSpaceSetPasswordListener), this.privateSpaceSetPasswordListener = null
            }
        }
    };
    i([o.Prop({})], l.prototype, "SHOW_PRIVATE_SPACE_OPEN_PAGE", void 0), i([o.Prop({})], l.prototype, "UPDATE_CATEGORYVIEW", void 0), l = i([o.Component], l), t.default = l
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(362), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(803), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            currentCategoryId: e => e.DownloadListState.currentCategoryId,
            currentCategoryViewId: e => e.DownloadListState.currentCategoryViewId,
            currentTabId: e => e.Tabs.current
        },
        mapCommitToProps: {
            UPDATE_CATEGORY: "UPDATE_CATEGORY",
            UPDATE_CATEGORYVIEW: "UPDATE_CATEGORYVIEW",
            UPDATE_DOWNLOADING_SELECTED_TASKS: "UPDATE_DOWNLOADING_SELECTED_TASKS",
            UPDATE_COMPLETED_SELECTED_TASKS: "UPDATE_COMPLETED_SELECTED_TASKS",
            UPDATE_RECYCLE_SELECTED_TASKS: "UPDATE_RECYCLE_SELECTED_TASKS",
            UPDATE_TASK_STATUS: "UPDATE_TASK_STATUS",
            UPDATE_DOWNLOADING_TASKLIST: "UPDATE_DOWNLOADING_TASKLIST",
            UPDATE_COMPLETED_TASKLIST: "UPDATE_COMPLETED_TASKLIST",
            UPDATE_RECYCLE_TASKLIST: "UPDATE_RECYCLE_TASKLIST"
        },
        mapDispatchToProps: {attachTaskEvent: "attachTaskEvent", selectTab: "selectTab"},
        mapGettersToProps: {
            downloadingTaskList: e => e.downloadingTaskList,
            completedTaskList: e => e.completedTaskList,
            recycleTaskList: e => e.recycleTaskList,
            downloadingTaskBaseList: e => e.downloadingTaskBaseList,
            completedTaskBaseList: e => e.completedTaskBaseList,
            recycleTaskBaseList: e => e.recycleTaskBaseList,
            currentSelectdTaskInfos: e => e.currentSelectdTaskInfos,
            downloadingSelectedIndexs: e => e.downloadingSelectedIndexs,
            completedSelectedTaskIndexs: e => e.completedSelectedTaskIndexs,
            recycleSelectedTaskIndexs: e => e.recycleSelectedTaskIndexs
        }
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(364), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(1), r = n(5), s = n(158), l = n(665), u = n(58), d = n(239), c = n(21), h = n(43), f = n(13),
        p = n(52), g = n(32), k = n(28), m = n(7), T = n(10), v = n(63),
        w = g.DownloadKernelEventManager.getEventManager(), y = k.DownloadKernelTaskManager.getTaskManager(),
        S = o.default.getLogger("DownloadList");
    let b = class extends a.Vue {
        constructor() {
            super(...arguments), this.categoryLastSelectList = [{
                category: r.DownloadKernel.CategroyViewID.Downloading,
                lastIndex: 0
            }, {
                category: r.DownloadKernel.CategroyViewID.Completed,
                lastIndex: 0
            }, {
                category: r.DownloadKernel.CategroyViewID.Recycle,
                lastIndex: 0
            }], this.showNoResultTip = !1, this.showResultCountTip = !1, this.bLoadDbFinish = !1, this.insertToCategoryViewEventId = void 0, this.statusChangedEventId = void 0, this.dataBaseLoadCookie = void 0, this.inputFlag = !0, this.resultCount = 0, this.escapeCode = "", this.pulseEventFlag = !1, this.downloadingSearchArray = [], this.completeSearchArray = [], this.recycleSearchArray = [], this.downloadingSearchSelIndexs = [], this.completeSearchSelIndexs = [], this.recycleSearchSelIndexs = [], this.currentSelSearchTaskIds = [], this.searchListPanel = "Downloading", this.holderTextTip = "", this.searchType = "search", this.curSearchKey = "", this.inputFocus = !1
        }

        get recycleSearchList() {
            return void 0 === this.recycleSearchArray ? [] : this.recycleSearchArray
        }

        get completeSearchList() {
            return void 0 === this.completeSearchArray ? [] : this.completeSearchArray
        }

        get downloadingSearchList() {
            return void 0 !== this.downloadingSearchArray ? this.downloadingSearchArray : []
        }

        onInputFocus(e) {
            this.holderTextTip = "", this.inputFocus = !0
        }

        onInputBlur(e) {
            this.inputFocus = !1, this.curSearchKey.length < 1 && (this.holderTextTip = "搜索下载记录", this.showResultCountTip = !1)
        }

        preHandleSearchKey() {
            let e = this.curSearchKey.split(" "), t = [];
            if (e) for (let n = 0; n < e.length; n++) e[n].trim().length > 0 && t.push(e[n].trim());
            return t
        }

        getArrayIntersection(e, t) {
            let n = [], i = new Set(t);
            return n = Array.from(new Set(e.filter(e => i.has(e))))
        }

        replaceSpecialKeyForDB(e) {
            return e !== (e = e.replace(/\/|'|\[|]|%|&|_|\(|\)/g, function (e) {
                return "/" + e
            })) && (this.escapeCode = "/"), e
        }

        internalSearch(e) {
            S.information("多关键字数组:", e);
            let t = [], n = [];
            for (let i = 0; i < e.length; i++) {
                let a = r.DownloadKernel.SearchKeyType.NameInclude;
                this.escapeCode = "";
                let o = this.replaceSpecialKeyForDB(e[i]);
                v.ThunderKernel.searchTask(a, o, -1, this.escapeCode, i => {
                    let a, o;
                    if (this.clearSearch(), n = i, t[t.length] = n, t.length === e.length) {
                        let e;
                        t.length > 0 && (e = t[0]);
                        for (let n = 1; n < t.length; n++) e = this.getArrayIntersection(e, t[n]);
                        this.resultCount = e.length;
                        for (let t = 0; t < e.length; t++) (a = y.getTaskFromTaskId(e[t])) && (o = a.getTaskAttribute(r.DownloadKernel.TaskAttribute.CategoryViewId)), o && (o === r.DownloadKernel.CategroyViewID.Downloading ? this.downloadingSearchArray.push(e[t]) : o === r.DownloadKernel.CategroyViewID.Completed ? this.completeSearchArray.push(e[t]) : o === r.DownloadKernel.CategroyViewID.Recycle && this.recycleSearchArray.push(e[t]))
                    }
                })
            }
        }

        startSearch() {
            this.inputFlag && (m.isNullOrUndefined(this.curSearchKey) || (this.curSearchKey.trim().length < 1 ? this.clearSearch() : (this.showNoResultTip = !0, this.showResultCountTip = !0, this.internalSearch(this.preHandleSearchKey()))))
        }

        onDownloadTaskSelect(e) {
            if (!e) return;
            if (!e.length) return;
            let t, n;
            this.currentSelSearchTaskIds = e, this.currentSelSearchTaskInfos = [];
            for (let i = 0; i < e.length; i++) t = (n = y.getTaskFromTaskId(e[i])).getTaskBaseInfo(), this.currentSelSearchTaskInfos.push(t)
        }

        handlePopInputMenu() {
            T.ThunderUtil.popEditableDefaultContextMenu(void 0, -4)
        }

        onCategoryChange(e) {
            h.default.fireEvent(c.NodeEventMesssageNS.eventDownloadItemActive, this.currentCategoryViewId, !1, 0, null, !0), this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Downloading), -1 !== this.currentCategoryId && this.closeSearch()
        }

        clearSearch() {
            this.downloadingSearchArray = [], this.completeSearchArray = [], this.recycleSearchArray = [], this.resultCount = 0, this.showResultCountTip = !1, this.showNoResultTip = !1
        }

        clickCloseSearch() {
            f.XLStatNS.trackEvent("download_leftpanel", "search_close_click", "", 0, 0, 0, 0, "entry=close"), this.closeSearch()
        }

        keyCloseSearch() {
            f.XLStatNS.trackEvent("download_leftpanel", "search_close_click", "", 0, 0, 0, 0, "entry=ctrlf"), this.closeSearch()
        }

        closeSearch() {
            this.$emit("close:keysearch"), this.clearSearch(), this.curSearchKey = ""
        }

        handleDelete(e = !1) {
            e ? u.TaskOperatorNs.destroyTasks(this.currentSelSearchTaskInfos) : u.TaskOperatorNs.deleteTasks(this.currentSelSearchTaskInfos)
        }

        get downloadingCategoryTitle() {
            let e = "正在下载";
            return 0 !== this.downloadingSearchArray.length && (e = e + "(" + this.downloadingSearchArray.length + ")"), e
        }

        get completedCategoryTitle() {
            let e = "已完成";
            return 0 !== this.completeSearchArray.length && (e = e + "(" + this.completeSearchArray.length + ")"), e
        }

        get recycleCategoryTitle() {
            let e = "垃圾箱";
            return 0 !== this.recycleSearchArray.length && (e = e + "(" + this.recycleSearchArray.length + ")"), e
        }

        downloadingItemDbClick() {
            s.TaskStatusHelper.canStopSelectedTask(this.currentCategoryViewId, this.currentSelSearchTaskInfos) ? u.TaskOperatorNs.pauseTasks(this.currentSelSearchTaskInfos) : s.TaskStatusHelper.canStartSelectedTask(this.currentCategoryViewId, this.currentSelSearchTaskInfos) ? u.TaskOperatorNs.startTasks(this.currentSelSearchTaskInfos) : S.information("downloaditem dbclick do nothing")
        }

        recycleItemDbClick() {
            S.information("垃圾箱双击")
        }

        handleDownloadingItemMenu() {
            d.downloadContextMenu.setContextInfo(this.currentSelSearchTaskInfos, this.currentCategoryId, this.downloadingTaskList.length, !0);
            let e = d.DownloadMenuType.DownloadingItem;
            this.currentSelSearchTaskInfos.length > 1 && (e = d.DownloadMenuType.SearchMultiSel), d.downloadContextMenu.popMenu(e)
        }

        handleCompletedItemMenu() {
            d.downloadContextMenu.setContextInfo(this.currentSelSearchTaskInfos, this.currentCategoryId, null, !0);
            let e = d.DownloadMenuType.CompletedItem;
            this.currentSelSearchTaskInfos.length > 1 && (e = d.DownloadMenuType.SearchMultiSel), d.downloadContextMenu.popMenu(e)
        }

        handleRecycleItemMenu() {
            d.downloadContextMenu.setContextInfo(this.currentSelSearchTaskInfos, this.currentCategoryId, null, !0);
            let e = d.DownloadMenuType.RecycleItem;
            this.currentSelSearchTaskInfos.length > 1 && (e = d.DownloadMenuType.SearchMultiSel), d.downloadContextMenu.popMenu(e)
        }

        handleMenuClick(e, ...t) {
            e
        }

        compositionStart(e) {
            this.inputFocus && (this.inputFlag = !1)
        }

        compositionEnd(e) {
            this.inputFocus && (this.inputFlag = !0, this.$nextTick(() => {
                this.startSearch()
            }))
        }

        created() {
            this.attachTaskEvent(), this.holderTextTip = "搜索下载记录", d.downloadContextMenu.attachListener(c.NodeEventMesssageNS.eventDownloadContextMenuClick, this.handleMenuClick), this.currentSelSearchTaskInfos = [], document.addEventListener("compositionstart", this.compositionStart), document.addEventListener("compositionend", this.compositionEnd)
        }

        shouldChange2Complete() {
            let e = !1;
            do {
                if (this.currentCategoryViewId === r.DownloadKernel.CategroyViewID.Recycle && this.recycleSelectedTaskIndexs.length > 0) {
                    e = !1;
                    break
                }
                if (this.currentCategoryViewId !== r.DownloadKernel.CategroyViewID.Downloading) {
                    e = !0;
                    break
                }
                if (this.downloadingSelectedIndexs.length > 0) {
                    e = !1;
                    break
                }
                e = !0;
                for (let t of this.downloadingTaskBaseList) if (t.taskStatus === r.DownloadKernel.TaskStatus.StartPending || t.taskStatus === r.DownloadKernel.TaskStatus.Started) {
                    e = !1;
                    break
                }
            } while (0);
            return e
        }

        shouldChangeCompleteSelect() {
            let e = !1;
            do {
                if (this.currentCategoryViewId !== r.DownloadKernel.CategroyViewID.Completed) {
                    e = !0;
                    break
                }
                if (0 === this.completedSelectedTaskIndexs.length) {
                    e = !0;
                    break
                }
            } while (0);
            return e
        }

        onTaskDataBaseLoadEnd() {
            this.bLoadDbFinish = !0, this.$nextTick(() => {
                0 === this.downloadingTaskList.length && this.completedTaskList.length > 0 && this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Completed)
            })
        }

        mounted() {
            this.statusChangedEventId = w.attachTaskEvent(r.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== r.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!e[1]) break;
                    let t = e[1];
                    if (t.length > 0) {
                        if (t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.CategoryId) !== this.currentCategoryId) break;
                        if (this.UPDATE_TASK_STATUS(t.map(e => e.getTaskBaseInfo())), t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.Background)) break;
                        if (t[0].getTaskAttribute(r.DownloadKernel.TaskAttribute.GroupTaskId) > 0) break;
                        t[0].getTaskStatus() !== r.DownloadKernel.TaskStatus.Succeeded && t[0].getTaskStatus() !== r.DownloadKernel.TaskStatus.Seeding || this.$nextTick(() => {
                            this.startSearch()
                        })
                    }
                } while (0)
            }), y.isLoadStorageTaskFinish() ? this.bLoadDbFinish = !0 : (this.dataBaseLoadCookie = 0, p.DownloadKernelManager.attachListener(c.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, this.onTaskDataBaseLoadEnd)), this.insertToCategoryViewEventId = w.attachTaskEvent(r.DownloadKernel.TaskEventType.InsertToCategoryView, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== r.DownloadKernel.TaskEventType.InsertToCategoryView) break;
                    if (void 0 === e[1] || !e[2] || !e[3]) break;
                    let t = e[1], n = e[2], i = e[3], a = e[4];
                    i.map(e => e.getTaskBaseInfo()), this.$nextTick(() => {
                        this.startSearch()
                    }), this.bLoadDbFinish && n === r.DownloadKernel.CategroyViewID.Downloading && (a === r.DownloadKernel.TaskInsertReason.Create && this.UPDATE_CATEGORY(t), this.$nextTick(() => {
                        if (this.currentCategoryViewId !== r.DownloadKernel.CategroyViewID.Downloading) this.UPDATE_CATEGORYVIEW(r.DownloadKernel.CategroyViewID.Downloading), this.$nextTick(() => {
                            setTimeout(() => {
                                let e = this.downloadingTaskList[0];
                                this.UPDATE_DOWNLOADING_SELECTED_TASKS([e])
                            }, 0)
                        }); else {
                            let e = this.downloadingTaskList[0];
                            this.UPDATE_DOWNLOADING_SELECTED_TASKS([e])
                        }
                    }))
                } while (0)
            }), this.cookieOfTaskRenamed = w.attachTaskEvent(r.DownloadKernel.TaskEventType.TaskRenamed, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== r.DownloadKernel.TaskEventType.TaskRenamed) break;
                    this.pulseEventFlag = !this.pulseEventFlag, this.$nextTick(() => {
                        this.startSearch()
                    })
                } while (0)
            }), this.cookieOfTaskDestroyed = w.attachTaskEvent(r.DownloadKernel.TaskEventType.TaskDestroyed, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== r.DownloadKernel.TaskEventType.TaskDestroyed) break;
                    this.pulseEventFlag = !this.pulseEventFlag, this.$nextTick(() => {
                        this.startSearch()
                    })
                } while (0)
            })
        }

        destroyed() {
            d.downloadContextMenu.detachListener(c.NodeEventMesssageNS.eventDownloadContextMenuClick, this.handleMenuClick), document.removeEventListener("compositionstart", this.compositionStart), document.removeEventListener("compositionend", this.compositionEnd), this.clearSearch(), void 0 !== this.insertToCategoryViewEventId && w.detachTaskEvent(r.DownloadKernel.TaskEventType.InsertToCategoryView, this.insertToCategoryViewEventId), void 0 !== this.statusChangedEventId && w.detachTaskEvent(r.DownloadKernel.TaskEventType.StatusChanged, this.statusChangedEventId), void 0 !== this.dataBaseLoadCookie && (this.dataBaseLoadCookie = void 0, p.DownloadKernelManager.detachListener(c.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, this.onTaskDataBaseLoadEnd)), this.cookieOfTaskRenamed && (this.cookieOfTaskRenamed = void 0, w.detachTaskEvent(r.DownloadKernel.TaskEventType.TaskRenamed, this.cookieOfTaskRenamed)), this.cookieOfTaskDestroyed && (this.cookieOfTaskDestroyed = void 0, w.detachTaskEvent(r.DownloadKernel.TaskEventType.TaskDestroyed, this.cookieOfTaskDestroyed))
        }
    };
    i([a.Prop({})], b.prototype, "currentTabId", void 0), i([a.Prop({})], b.prototype, "currentCategoryId", void 0), i([a.Prop({})], b.prototype, "currentCategoryViewId", void 0), i([a.Prop({})], b.prototype, "downloadingTaskList", void 0), i([a.Prop({})], b.prototype, "downloadingTaskBaseList", void 0), i([a.Prop({})], b.prototype, "completedTaskList", void 0), i([a.Prop({})], b.prototype, "completedTaskBaseList", void 0), i([a.Prop({})], b.prototype, "recycleTaskList", void 0), i([a.Prop({})], b.prototype, "recycleTaskBaseList", void 0), i([a.Prop({})], b.prototype, "downloadingSelectedIndexs", void 0), i([a.Prop({})], b.prototype, "completedSelectedTaskIndexs", void 0), i([a.Prop({})], b.prototype, "recycleSelectedTaskIndexs", void 0), i([a.Prop({})], b.prototype, "currentSelectdTaskInfos", void 0), i([a.Prop({})], b.prototype, "downloadingResultCount", void 0), i([a.Prop({})], b.prototype, "completedResultCount", void 0), i([a.Prop({})], b.prototype, "recycleResultCount", void 0), i([a.Prop({})], b.prototype, "UPDATE_CATEGORY", void 0), i([a.Prop({})], b.prototype, "UPDATE_CATEGORYVIEW", void 0), i([a.Prop({})], b.prototype, "UPDATE_DOWNLOADING_SELECTED_TASKS", void 0), i([a.Prop({})], b.prototype, "UPDATE_COMPLETED_SELECTED_TASKS", void 0), i([a.Prop({})], b.prototype, "UPDATE_RECYCLE_SELECTED_TASKS", void 0), i([a.Prop({})], b.prototype, "UPDATE_DOWNLOADING_TASKLIST", void 0), i([a.Prop({})], b.prototype, "UPDATE_COMPLETED_TASKLIST", void 0), i([a.Prop({})], b.prototype, "UPDATE_RECYCLE_TASKLIST", void 0), i([a.Prop({})], b.prototype, "UPDATE_TASK_STATUS", void 0), i([a.Prop({})], b.prototype, "attachTaskEvent", void 0), i([a.Prop({})], b.prototype, "selectTab", void 0), i([a.Watch("currentCategoryId")], b.prototype, "onCategoryChange", null), b = i([a.Component({components: {DownloadCategory: l.default}})], b), t.default = b
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(366), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(805), a = n(39);
    t.default = a.connector.connect({
        mapStateToProps: {
            tabs: e => e.Tabs.tabs,
            homePageUrl: e => e.WebView.homePageUrl,
            preloadPath: e => `file:///${__rootDir}/out/common-preload.js`
        },
        mapCommitToProps: {onMounted: "ON_MOUNTED", createNewTab: "CREATE_NEW_TAB"},
        mapDispatchToProps: {selectTab: "selectTab"}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(368), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    }, a = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const o = n(2), r = n(4), s = n(107), l = n(667), u = n(1).default.getLogger("home-page"), d = n(660), c = n(108);
    let h = class extends r.Vue {
        indexOfTab(e) {
            let t = -1;
            for (let n = 0; n < this.tabs.length; n++) if (this.tabs[n].tab.getTabType() === s.TabType.Chromium && this.tabs[n].tab.getOriginalUrl() === e) {
                t = n;
                break
            }
            return t
        }

        mounted() {
            this.enableDevTools(), this.initNativeCall()
        }

        enableDevTools() {
            window.addEventListener("keyup", e => {
                "F12" === e.key && e.shiftKey && this.$refs.webview.openDevTools()
            }, !0)
        }

        initNativeCall() {
            return a(this, void 0, void 0, function* () {
                let e = l.default.getPluginUpdater(o.join(__rootDir, "plugins/ThunderXWebXDAS"));
                c.NativeCallHostModule.nativeCallHost.initialize();
                let t = {
                    onJsCallNativeFunction: d.onJsCallNativeFunction,
                    onJsCheckNativeFunction: d.onJsCheckNativeFunction
                };
                c.NativeCallHostModule.nativeCallHost.addDelegate(t);
                let i = yield e.getCurFilePath();
                u.information("url", i), this.onMounted(`file:///${o.join(i, "index.html")}#/home`), e.active(), document.querySelector("webview").addEventListener("new-window", e => {
                    let t = e.url, i = this.indexOfTab(t);
                    if (-1 !== i) this.selectTab(i); else {
                        const e = n(22).parse(t).protocol;
                        if ("http:" === e || "https:" === e) {
                            let e = {tabType: s.TabType.Chromium, tabParam: {url: t}};
                            this.createNewTab(e)
                        }
                    }
                })
            })
        }
    };
    i([r.Prop({})], h.prototype, "tabs", void 0), i([r.Prop({})], h.prototype, "homePageUrl", void 0), i([r.Prop({})], h.prototype, "preloadPath", void 0), i([r.Prop({})], h.prototype, "onMounted", void 0), i([r.Prop({})], h.prototype, "createNewTab", void 0), i([r.Prop({})], h.prototype, "selectTab", void 0), h = i([r.Component], h), t.default = h
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(370), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(808), a = n(39);
    t.default = a.connector.connect({mapGettersToProps: {currentTab: e => e.currentTab}})(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(372), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4), o = n(7);
    let r = class extends a.Vue {
        get canGoBack() {
            let e = !1;
            do {
                if (o.isNullOrUndefined(this.currentTab) || o.isNullOrUndefined(this.currentTab.tab)) break;
                e = this.currentTab.tab.canGoBack
            } while (0);
            return e
        }

        goBack() {
            do {
                if (o.isNullOrUndefined(this.currentTab) || o.isNullOrUndefined(this.currentTab.tab)) break;
                this.currentTab.tab.goBack()
            } while (0)
        }

        refresh() {
            do {
                if (o.isNullOrUndefined(this.currentTab) || o.isNullOrUndefined(this.currentTab.tab)) break;
                this.currentTab.tab.refresh(!1)
            } while (0)
        }
    };
    i([a.Prop({})], r.prototype, "currentTab", void 0), r = i([a.Component({})], r), t.default = r
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(374), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(811), a = n(39);
    t.default = a.connector.connect({
        mapDispatchToProps: {initSettingData: "initSettingData"},
        mapStateToProps: {formData: e => e.SettingConf.formData, confSchema: e => e.SettingConf.confSchema},
        mapCommitToProps: {
            setConfigValue: "SET_CONFIG_VALUE",
            setFormData: "SET_FOMR_DATA",
            addFormdataItem: "ADD_FORMDATA_ITEM",
            addSchemaItem: "ADD_SCHEMA_ITEM",
            addSelectItem: "ADD_SELECT_ITEM"
        },
        mapGettersToProps: {baseSetting: "baseSetting"}
    })(i.default)
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(376), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(521), o = n(4), r = n(8), s = n(25), l = n(21), u = n(223), d = n(237), c = n(514),
        h = n(1).default.getLogger("setting-center-view"),
        f = u.CommunityNaviteFunctionNS.CommunityNaviteFunction.getNativeModule();
    let p = class extends o.Vue {
        constructor() {
            super(...arguments), this.userId = "", this.currenIndex = 0, this.scrollSumHeight = 0, this.autoScroll = !1, this.browserSettingPosition = [1, 0], this.browsersConfSection = "Motitor", this.browserSettingItemType = "confCheckbox", this.browserSelectAll = "Motitor-MotitorAll"
        }

        handleScroll() {
            if (this.autoScroll) return;
            0 === this.getScrollTop() && (this.scrollSumHeight = 0, this.currenIndex = 0);
            let e = document.querySelectorAll(".contain-tab")[this.currenIndex];
            if (e.offsetHeight + this.scrollSumHeight < this.getScrollTop()) this.scrollSumHeight += e.offsetHeight, this.currenIndex++; else if (this.scrollSumHeight - this.getScrollTop() > e.offsetHeight || 0 === this.getScrollTop()) {
                if (0 === this.currenIndex) return;
                0 === this.getScrollTop() ? this.scrollSumHeight = 0 : this.scrollSumHeight -= e.offsetHeight, this.currenIndex--
            }
        }

        getScrollTop() {
            return this.$refs.settinContain.scrollTop
        }

        setScrollTop(e) {
            this.$refs.settinContain.scrollTop = e
        }

        clickTab(e) {
            this.scrollSumHeight = 0, this.currenIndex = e;
            let t = document.querySelectorAll(".contain-tab");
            for (let n = 0; n < e; n++) this.scrollSumHeight += t[n].offsetHeight;
            this.autoScroll = !0, this.setScrollTop(this.scrollSumHeight), this.autoScroll = !1
        }

        handleConfChange(e, t = "") {
            if ("" === t || void 0 === this.formData[t]) return;
            let n = void 0 !== this.formData[t].isReleventUser ? this.userId : "",
                i = {section: this.formData[t].section, key: this.formData[t].key, value: e, name: t, userId: n};
            this.setConfigValue(i)
        }

        created() {
            s.ConfigNS.attachListener(l.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.initSettingData()
            })
        }

        mounted() {
            this.confChangeEventId = r.NativeCallModule.nativeCall.AttachNativeEvent("OnConfigValueChanaged", (e, t, n, i) => {
                void 0 !== this.formData[`${e}-${t}`] && this.setFormData({section: e, key: t, value: i})
            }), this.loginEventId = r.NativeCallModule.nativeCall.AttachNativeEvent("onLoginSuc", e => {
                this.userId = e;
                let t = s.ConfigNS.getValue("UserCommunitySet", `radio_id_${e}`, "1");
                h.information("setting-center:handleConfChange", t), this.handleConfChange(t, "UserCommunitySet-radio_id_")
            }), this.logoutEventId = r.NativeCallModule.nativeCall.AttachNativeEvent("onLogout", () => {
                this.userId = ""
            }), f.on("selectMsgNotice", () => {
                this.clickTab(3)
            }), d.SettingConfigHelperNS.configBrowserHelper.attachListener(l.NodeEventMesssageNS.eventConfigBrowserInitFinished, () => {
                let e = d.SettingConfigHelperNS.configBrowserHelper.getConfigShowBrowsers();
                h.information("browsers", e);
                for (let t = 0; t < e.length; t++) void 0 === this.formData[`${this.browsersConfSection}-${e[t].key}`] && (this.addFormdataItem({
                    section: this.browsersConfSection,
                    key: e[t].key,
                    type: "number",
                    value: e[t].isSelect ? 1 : 0,
                    selectAllName: this.browserSelectAll
                }), this.addSchemaItem({
                    position: this.browserSettingPosition,
                    schemaItem: {
                        name: `${this.browsersConfSection}-${e[t].key}`,
                        type: this.browserSettingItemType,
                        label: e[t].content,
                        liClasses: "inline"
                    },
                    direction: -1
                }), this.addSelectItem({
                    target: this.browserSelectAll,
                    from: `${this.browsersConfSection}-${e[t].key}`
                }));
                if (e.length > 0) {
                    let t = e[e.length - 1];
                    this.handleConfChange(t.isSelect ? 1 : 0, `${this.browsersConfSection}-${t.key}`)
                }
                if (!this.formData[`${this.browsersConfSection}-browserConfigGuideButton`]) {
                    let e = {
                        type: "confBtn",
                        text: "手动更改浏览器默认下载方式",
                        classes: "td-button--small noMargin",
                        boxType: "browserGuideConfBox",
                        style: c.default().whetherShowEntry() ? "margin-left: 0" : "display: none",
                        extEles: [{
                            type: "confTip",
                            text: "由于技术原理的限制，迅雷默认提供的“接管浏览器”功能，未能有效接管HTTPS协议的下载请求。\n建议您手动更改浏览器默认下载方式，可以完美接管浏览器的所有下载请求！\n目前支持“360安全浏览器、搜狗浏览器、QQ浏览器",
                            classes: "td-icon-info",
                            style: c.default().whetherShowEntry() ? "margin-left: 0" : "display: none"
                        }]
                    };
                    this.addFormdataItem({
                        section: this.browsersConfSection,
                        key: "browserConfigGuideButton",
                        type: "number",
                        value: ""
                    }), this.addSchemaItem({position: this.browserSettingPosition, schemaItem: e, direction: -1})
                }
            })
        }

        beforeDestroy() {
            this.confChangeEventId && r.NativeCallModule.nativeCall.DetachNativeEvent("OnConfigValueChanaged", this.confChangeEventId), this.loginEventId && r.NativeCallModule.nativeCall.DetachNativeEvent("onLoginSuc", this.loginEventId), this.logoutEventId && r.NativeCallModule.nativeCall.DetachNativeEvent("onLogout", this.logoutEventId), f.removeAllListeners("selectMsgNotice")
        }
    };
    i([o.Prop({})], p.prototype, "initSettingData", void 0), i([o.Prop({})], p.prototype, "formData", void 0), i([o.Prop({})], p.prototype, "confSchema", void 0), i([o.Prop({})], p.prototype, "setConfigValue", void 0), i([o.Prop({})], p.prototype, "setFormData", void 0), i([o.Prop({})], p.prototype, "addFormdataItem", void 0), i([o.Prop({})], p.prototype, "addSchemaItem", void 0), i([o.Prop({})], p.prototype, "addSelectItem", void 0), p = i([o.Component({components: {generatorView: a.default}})], p), t.default = p
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(378), a = n.n(i);
    for (var o in i) "default" !== o && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(o);
    t.default = a.a
}, function (e, t, n) {
    "use strict";
    var i = this && this.__decorate || function (e, t, n, i) {
        var a, o = arguments.length, r = o < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(e, t, n, i); else for (var s = e.length - 1; s >= 0; s--) (a = e[s]) && (r = (o < 3 ? a(r) : o > 3 ? a(t, n, r) : a(t, n)) || r);
        return o > 3 && r && Object.defineProperty(t, n, r), r
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(4);
    let o = class extends a.Vue {
    };
    o = i([a.Component], o), t.default = o
}, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function (e, t, n) {
    var i;
    i = function () {
        return function (e) {
            var t = {};

            function n(i) {
                if (t[i]) return t[i].exports;
                var a = t[i] = {i, l: !1, exports: {}};
                return e[i].call(a.exports, a, a.exports, n), a.l = !0, a.exports
            }

            return n.m = e, n.c = t, n.i = function (e) {
                return e
            }, n.d = function (e, t, i) {
                n.o(e, t) || Object.defineProperty(e, t, {configurable: !1, enumerable: !0, get: i})
            }, n.n = function (e) {
                var t = e && e.__esModule ? function () {
                    return e.default
                } : function () {
                    return e
                };
                return n.d(t, "a", t), t
            }, n.o = function (e, t) {
                return Object.prototype.hasOwnProperty.call(e, t)
            }, n.p = "", n(n.s = 3)
        }([function (e, t, n) {
            "use strict";
            t.a = function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = "", n = "";
                if (!e || 0 === e.length) return {isVip: !1};
                var i = e.filter(function (e) {
                    return e && 2 === (e.vasId || e.vasID)
                })[0];
                if (n = i.vIPLevel || i.VIPLevel || 0, i) {
                    var a = {2: "", 3: "p", 5: "s"}[i.vasType] || "";
                    return t = "vip-icon-" + a + "vip" + n, {
                        isVip: "1" === i.isVIP,
                        isStop: "2" === i.isVIP,
                        isYear: "1" === i.isYear,
                        type: i.vasType,
                        level: n,
                        vipClass: t
                    }
                }
                return {isVip: !1}
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(4), a = n.n(i);
            a.a.install = function (e) {
                e.component(a.a.name, a.a)
            }, t.a = a.a
        }, function (e, t, n) {
            "use strict";
            Object.defineProperty(t, "__esModule", {value: !0});
            var i = n(0);
            t.default = {
                name: "vip-icon",
                props: {
                    vipData: {type: Array, required: !0},
                    size: {type: String, default: "normal"},
                    disabled: {type: Boolean, default: !1}
                },
                computed: {
                    vipInfo: function () {
                        return n.i(i.a)(this.vipData)
                    }, vipClass: function () {
                        var e = this.vipInfo.vipClass;
                        return "small" === this.size && (e += " is-small"), (this.vipInfo.isStop || "0" === this.vipInfo.level || this.disabled) && (e += " is-disabled"), e
                    }
                }
            }
        }, function (e, t, n) {
            "use strict";
            Object.defineProperty(t, "__esModule", {value: !0});
            var i = n(1), a = n(0);
            n.d(t, "vipInfo", function () {
                return a.a
            });
            /**
             * vip
             * (c) 2018 shijianan
             * @license MIT
             */
            var o = {
                install: function (e, t) {
                    e.use(i.a), e.prototype.$vipInfo = function (e) {
                        return n.i(a.a)(e)
                    }
                }
            };
            t.default = o
        }, function (e, t, n) {
            var i = n(5)(n(2), n(6), null, null, null);
            i.options.__file = "/Users/nancy/Desktop/work/@xunlei/vip/src/vip-icon/VipIcon.vue", i.esModule && Object.keys(i.esModule).some(function (e) {
                return "default" !== e && "__" !== e.substr(0, 2)
            }) && console.error("named exports are not supported in *.vue files."), i.options.functional && console.error("[vue-loader] VipIcon.vue: functional components are not supported with templates, they should use render functions."), e.exports = i.exports
        }, function (e, t) {
            e.exports = function (e, t, n, i, a) {
                var o, r = e = e || {}, s = typeof e.default;
                "object" !== s && "function" !== s || (o = e, r = e.default);
                var l, u = "function" == typeof r ? r.options : r;
                if (t && (u.render = t.render, u.staticRenderFns = t.staticRenderFns), i && (u._scopeId = i), a ? (l = function (e) {
                    (e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), n && n.call(this, e), e && e._registeredComponents && e._registeredComponents.add(a)
                }, u._ssrRegister = l) : n && (l = n), l) {
                    var d = u.functional, c = d ? u.render : u.beforeCreate;
                    d ? u.render = function (e, t) {
                        return l.call(t), c(e, t)
                    } : u.beforeCreate = c ? [].concat(c, l) : [l]
                }
                return {esModule: o, exports: r, options: u}
            }
        }, function (e, t, n) {
            e.exports = {
                render: function () {
                    var e = this.$createElement;
                    return (this._self._c || e)("i", {class: this.vipClass})
                }, staticRenderFns: []
            }, e.exports.render._withStripped = !0
        }])
    }, e.exports = i()
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(5), o = n(25), r = n(158);
    !function (e) {
        let t;

        function n(e, n) {
            let i = {sortBy: t.Default, asce: !0};
            do {
                if (void 0 === e || null === e) break;
                let r = "", s = "";
                if (e === a.DownloadKernel.CategroyViewID.Downloading) -1 === n ? (r = "CategoryViewId1_SortAttr", s = "CategoryViewId1_SortState") : (r = "CategoryViewId4_SortAttr", s = "CategoryViewId4_SortState"); else if (e === a.DownloadKernel.CategroyViewID.Completed) -1 === n ? (r = "CategoryViewId2_SortAttr", s = "CategoryViewId2_SortState") : (r = "CategoryViewId5_SortAttr", s = "CategoryViewId5_SortState"); else {
                    if (e !== a.DownloadKernel.CategroyViewID.Recycle) break;
                    r = "CategoryViewId3_SortAttr", s = "CategoryViewId3_SortState"
                }
                let l = o.ConfigNS.getValue("TaskList", r, t.Default);
                e !== a.DownloadKernel.CategroyViewID.Downloading && (l !== t.ByProgress && l !== t.ByState || (l = t.Default));
                let u = 0 === o.ConfigNS.getValue("TaskList", s, -1);
                i.sortBy = l, i.asce = u
            } while (0);
            return i
        }

        function s(e, t, n) {
            do {
                if (void 0 === t || null === t) break;
                let i = "", r = "";
                if (t === a.DownloadKernel.CategroyViewID.Downloading) -1 === n ? (i = "CategoryViewId1_SortAttr", r = "CategoryViewId1_SortState") : (i = "CategoryViewId4_SortAttr", r = "CategoryViewId4_SortState"); else if (t === a.DownloadKernel.CategroyViewID.Completed) -1 === n ? (i = "CategoryViewId2_SortAttr", r = "CategoryViewId2_SortState") : (i = "CategoryViewId5_SortAttr", r = "CategoryViewId5_SortState"); else {
                    if (t !== a.DownloadKernel.CategroyViewID.Recycle) break;
                    i = "CategoryViewId3_SortAttr", r = "CategoryViewId3_SortState"
                }
                o.ConfigNS.setValue("TaskList", i, e.sortBy);
                let s = e.asce ? 0 : -1;
                o.ConfigNS.setValue("TaskList", r, s)
            } while (0)
        }

        function l(e, t) {
            let n = null;
            return e === a.DownloadKernel.CategroyViewID.Downloading ? n = ((e, n) => {
                let i = e.createTime, a = n.createTime;
                return t ? i - a : a - i
            }) : e === a.DownloadKernel.CategroyViewID.Completed ? n = ((e, n) => {
                let i = e.completionTime, a = n.completionTime;
                return t ? i - a : a - i
            }) : e === a.DownloadKernel.CategroyViewID.Recycle && (n = ((e, n) => {
                let i = e.recycleTime, a = n.recycleTime;
                return t ? i - a : a - i
            })), n
        }

        function u(e) {
            return (t, n) => {
                let a = t.taskType, o = n.taskType;
                if (e) {
                    if (a === o) {
                        let e = i.extname(t.taskName).toLowerCase(), a = i.extname(n.taskName).toLowerCase();
                        return e === a ? 0 : e < a ? -1 : 1
                    }
                    return a - o
                }
                if (a === o) {
                    let e = i.extname(t.taskName).toLowerCase(), a = i.extname(n.taskName).toLowerCase();
                    return e === a ? 0 : e < a ? 1 : -1
                }
                return o - a
            }
        }

        function d(e) {
            return (t, n) => {
                let i = t.fileSize, a = n.fileSize;
                return e ? i - a : a - i
            }
        }

        function c(e) {
            return (t, n) => {
                let i = t.taskName, a = n.taskName;
                return e ? i === a ? 0 : i < a ? -1 : 1 : i === a ? 0 : i < a ? 1 : -1
            }
        }

        function h(e) {
            return (t, n) => {
                let i = r.TaskStatusHelper.getValueForSort(t), a = r.TaskStatusHelper.getValueForSort(n);
                return e ? i - a : a - i
            }
        }

        function f(e) {
            return (t, n) => {
                if (0 === t.fileSize && n.fileSize > 0) return e ? -1 : 1;
                if (t.fileSize > 0 && 0 === n.fileSize) return e ? 1 : -1;
                if (0 === t.fileSize && 0 === n.fileSize) return 0;
                {
                    let i = t.downloadSize / t.fileSize, a = n.downloadSize / n.fileSize;
                    return e ? i - a : a - i
                }
            }
        }

        function p(e, i, a) {
            let o = null;
            void 0 !== a && null !== a || (a = n(e, i));
            do {
                if (a.sortBy === t.Default) {
                    o = l(e, !1);
                    break
                }
                if (a.sortBy === t.ByTime_Creation || a.sortBy === t.ByTime_Completion || a.sortBy === t.ByTime_Remain) {
                    o = l(e, a.asce);
                    break
                }
                if (a.sortBy === t.BySize) {
                    o = d(a.asce);
                    break
                }
                if (a.sortBy === t.ByType) {
                    o = u(a.asce);
                    break
                }
                if (a.sortBy === t.ByName) {
                    o = c(a.asce);
                    break
                }
                if (a.sortBy === t.ByProgress) {
                    o = f(a.asce);
                    break
                }
                if (a.sortBy === t.ByState) {
                    o = h(a.asce);
                    break
                }
            } while (0);
            return null === o && (o = l(e, !1)), o
        }

        function g(e, t, n) {
            let i = void 0, o = void 0;
            return e === a.DownloadKernel.CategroyViewID.Downloading ? o = 0 : e === a.DownloadKernel.CategroyViewID.Completed ? o = 1 : e === a.DownloadKernel.CategroyViewID.Recycle && (o = 2), void 0 !== o && (i = {
                compareFn: p(e, t, n),
                index: o,
                categoryId: t
            }), i
        }

        !function (e) {
            e[e.Default = -10] = "Default", e[e.ByTime_Remain = 14] = "ByTime_Remain", e[e.ByTime_Creation = 17] = "ByTime_Creation", e[e.ByTime_Completion = 19] = "ByTime_Completion", e[e.ByType = 16] = "ByType", e[e.ByName = 1] = "ByName", e[e.BySize = 9] = "BySize", e[e.ByProgress = 18] = "ByProgress", e[e.ByState = 10] = "ByState", e[e.ByTime = 99] = "ByTime"
        }(t = e.SortType || (e.SortType = {})), e.getSortConfig = n, e.setSortConfig = s, e.getSortFuncByConfig = p, e.getSortCommitParamByConfig = g, e.handleSortMenuClick = function (e, n, i, o, r) {
            let l = !1;
            n === t.ByTime && (n = o === a.DownloadKernel.CategroyViewID.Downloading ? t.ByTime_Creation : o === a.DownloadKernel.CategroyViewID.Completed ? t.ByTime_Completion : o === a.DownloadKernel.CategroyViewID.Recycle ? t.ByTime_Remain : t.Default), n !== t.Default && (l = void 0 === i || i), s({
                sortBy: n,
                asce: !l
            }, o, r), e(g(o, r))
        }
    }(t.SortNS || (t.SortNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(6).default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        e.getXmpPath = function () {
            return i.join(__rootDir, "../../XMP/XMP.exe")
        }, e.getXmpReg = function (e) {
            let t = "";
            do {
                if (null === e || void 0 === e || "" === e) break;
                let n = "HKEY_LOCAL_MACHINE", i = "Software\\Thunder Network\\Xmp", o = e;
                t = a.queryRegValue(n, i, o);
                let r = a.getLongPathName(t);
                null !== r && void 0 !== r && "" !== r && (t = r)
            } while (0);
            return t
        }
    }(t.DownloadAndPlayNS || (t.DownloadAndPlayNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(14), o = n(690), r = n(2), s = n(11), l = n(5), u = n(28), d = n(32), c = n(86), h = n(80), f = n(1),
        p = n(485), g = n(6), k = n(34), m = n(3), T = n(20), v = n(646),
        w = g.default(r.join(__rootDir, "../bin/ThunderHelper.node")), y = f.default.getLogger("DownloadAndPlayHelper"),
        S = u.DownloadKernelTaskManager.getTaskManager(), b = d.DownloadKernelEventManager.getEventManager();
    const C = new class {
        constructor() {
            this.taskStatusChangedEventTable = [], y.information("constructor DownloadAndPlayHelper object")
        }

        init() {
            return i(this, void 0, void 0, function* () {
                if (!1 === (yield this.isCodecsIntegral())) {
                    let e = a.tmpdir(), t = "APlayerCodecs3.exe", n = r.join(e, "..\\..\\"), i = r.join(n, t);
                    (yield s.FileSystemAWNS.existsAW(i)) && (yield s.FileSystemAWNS.unlinkAW(i)), y.information("downloadplay:", n, i);
                    let o = "http://xmp.down.sandai.net/xmp/APlayerCodecs3Embed.exe";
                    y.information(n, i);
                    let u = {taskBaseInfo: {savePath: n, taskName: t}, p2spTaskInfo: {url: o}, isBackground: !0},
                        d = yield S.createTask(l.DownloadKernel.TaskType.P2sp, u);
                    if (null !== d) {
                        let e = d.getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskId);
                        this.attachTaskStatusChangedEvent(e), c.DowloadDispatchNS.startTask(e)
                    }
                }
            })
        }

        installXmp() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => i(this, void 0, void 0, function* () {
                    let t = r.join(__rootDir, "../../MiniXmp.zip"), n = r.join(__rootDir, "../../XMP/");
                    (yield s.FileSystemAWNS.existsAW(t)) ? (m.remote.ipcMain.once(T.ThunderChannelList.channelRMDownloadXmp, this.downloadXmp), k.MessageBox.customAW("XmpFixBox").catch(() => {
                        m.remote.ipcMain.removeListener(T.ThunderChannelList.channelRMDownloadXmp, this.downloadXmp)
                    }), v.UnzipUtilitiesAWNS.uncompressZipFile(n, t).then(t => {
                        m.ipcRenderer.send(T.ThunderChannelList.channelMRFixXmpSuc), e(!0)
                    }, () => {
                        m.ipcRenderer.send(T.ThunderChannelList.channelMRFixXMPFail), e(!1)
                    })) : (this.downloadXmp(), e(!1))
                }))
            })
        }

        openXmp(e) {
            return i(this, void 0, void 0, function* () {
                let t = 0;
                do {
                    let n = p.DownloadAndPlayNS.getXmpPath();
                    if (null === n || void 0 === n || "" === n) break;
                    let i = r.dirname(n);
                    w.shellExecute(0, "open", n, e, i, "SW_SHOW") > 32 && (t = 1)
                } while (0);
                return t
            })
        }

        getXmpCoreVersion() {
            return i(this, void 0, void 0, function* () {
                let e = "", t = p.DownloadAndPlayNS.getXmpPath();
                return (yield s.FileSystemAWNS.existsAW(t)) && (e = w.getFileVersion(t)), e
            })
        }

        getXmpUserDataPath() {
            return i(this, void 0, void 0, function* () {
                let e = "";
                do {
                    let t = yield this.getXmpCoreVersion();
                    if (null === t || void 0 === t || "" === t) break;
                    let n = r.join(__rootDir, "../../XMP");
                    t = "V" + t, e = r.join(n, t) + "\\XMP5\\" + t
                } while (0);
                return e
            })
        }

        getXmpBuildNum() {
            return i(this, void 0, void 0, function* () {
                let e = "";
                do {
                    let t = yield this.getXmpCoreVersion();
                    if (null === t || void 0 === t || "" === t) break;
                    let n = t.split(/\./);
                    null !== n && void 0 !== n && 4 === n.length && (e = n[3])
                } while (0);
                return e
            })
        }

        downloadXmp() {
            let e = [];
            e.push("http://xmp.down.sandai.net/xmp/XMPSetup5.exe"), h.ThunderNewTask.createPreNewTaskWindow(e)
        }

        isCodecsIntegral() {
            return i(this, void 0, void 0, function* () {
                let e = !1;
                {
                    let t = w.getPublicUserDataPath(),
                        n = r.join(t, "Thunder Network\\APlayer\\codecs\\avisplitter.dll"),
                        i = r.join(t, "Thunder Network\\APlayer\\codecs\\realmediasplitter.dll");
                    (yield s.FileSystemAWNS.existsAW(n)) && (yield s.FileSystemAWNS.existsAW(i)) && (e = !0)
                }
                return e
            })
        }

        attachTaskStatusChangedEvent(e) {
            void 0 !== this.taskStatusChangedEventTable[e] && null !== this.taskStatusChangedEventTable[e] || (this.taskStatusChangedEventTable[e] = b.attachTaskEvent(l.DownloadKernel.TaskEventType.StatusChanged, (...t) => {
                do {
                    if (!t) break;
                    if (t[0] !== l.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!t[1]) break;
                    let n = t[1];
                    if (n.length > 0) {
                        let t = n[0].getTaskAttribute(l.DownloadKernel.TaskAttribute.SavePath),
                            i = n[0].getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskName), a = r.join(t, i);
                        s.FileSystemAWNS.existsAW(a).then(t => {
                            if (t && n[0].getTaskAttribute(l.DownloadKernel.TaskAttribute.TaskId) === e) {
                                let t = n[0].getTaskStatus();
                                t !== l.DownloadKernel.TaskStatus.Succeeded && t !== l.DownloadKernel.TaskStatus.Seeding || (y.information("downloadplay:运行exe = ", a), o.spawn(a), null !== this.taskStatusChangedEventTable[e] && void 0 !== this.taskStatusChangedEventTable[e] && (y.information("downloadplay:取消监听 ", this.taskStatusChangedEventTable[e]), b.detachTaskEvent(l.DownloadKernel.TaskEventType.StatusChanged, this.taskStatusChangedEventTable[e]), this.taskStatusChangedEventTable[e] = null))
                            }
                        }).catch()
                    }
                } while (0)
            }))
        }
    };
    t.default = C
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer, a = n(488), o = e.exports;
    o.encodings = null, o.defaultCharUnicode = "�", o.defaultCharSingleByte = "?", o.encode = function (e, t, n) {
        e = "" + (e || "");
        var a = o.getEncoder(t, n), r = a.write(e), s = a.end();
        return s && s.length > 0 ? i.concat([r, s]) : r
    }, o.decode = function (e, t, n) {
        "string" == typeof e && (o.skipDecodeWarning || (console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"), o.skipDecodeWarning = !0), e = new i("" + (e || ""), "binary"));
        var a = o.getDecoder(t, n), r = a.write(e), s = a.end();
        return s ? r + s : r
    }, o.encodingExists = function (e) {
        try {
            return o.getCodec(e), !0
        } catch (e) {
            return !1
        }
    }, o.toEncoding = o.encode, o.fromEncoding = o.decode, o._codecDataCache = {}, o.getCodec = function (e) {
        o.encodings || (o.encodings = n(489));
        for (var t = ("" + e).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g, ""), i = {}; ;) {
            var a = o._codecDataCache[t];
            if (a) return a;
            var r = o.encodings[t];
            switch (typeof r) {
                case"string":
                    t = r;
                    break;
                case"object":
                    for (var s in r) i[s] = r[s];
                    i.encodingName || (i.encodingName = t), t = r.type;
                    break;
                case"function":
                    return i.encodingName || (i.encodingName = t), a = new r(i, o), o._codecDataCache[i.encodingName] = a, a;
                default:
                    throw new Error("Encoding not recognized: '" + e + "' (searched as: '" + t + "')")
            }
        }
    }, o.getEncoder = function (e, t) {
        var n = o.getCodec(e), i = new n.encoder(t, n);
        return n.bomAware && t && t.addBOM && (i = new a.PrependBOM(i, t)), i
    }, o.getDecoder = function (e, t) {
        var n = o.getCodec(e), i = new n.decoder(t, n);
        return !n.bomAware || t && !1 === t.stripBOM || (i = new a.StripBOM(i, t)), i
    };
    var r = "undefined" != typeof process && process.versions && process.versions.node;
    if (r) {
        var s = r.split(".").map(Number);
        (s[0] > 0 || s[1] >= 10) && n(503)(o), n(504)(o)
    }
}, function (e, t, n) {
    "use strict";

    function i(e, t) {
        this.encoder = e, this.addBOM = !0
    }

    function a(e, t) {
        this.decoder = e, this.pass = !1, this.options = t || {}
    }

    t.PrependBOM = i, i.prototype.write = function (e) {
        return this.addBOM && (e = "\ufeff" + e, this.addBOM = !1), this.encoder.write(e)
    }, i.prototype.end = function () {
        return this.encoder.end()
    }, t.StripBOM = a, a.prototype.write = function (e) {
        var t = this.decoder.write(e);
        return this.pass || !t ? t : ("\ufeff" === t[0] && (t = t.slice(1), "function" == typeof this.options.stripBOM && this.options.stripBOM()), this.pass = !0, t)
    }, a.prototype.end = function () {
        return this.decoder.end()
    }
}, function (e, t, n) {
    "use strict";
    for (var i = [n(490), n(491), n(492), n(493), n(494), n(495), n(496), n(497)], a = 0; a < i.length; a++) {
        e = i[a];
        for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o])
    }
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer;

    function a(e, t) {
        this.enc = e.encodingName, this.bomAware = e.bomAware, "base64" === this.enc ? this.encoder = l : "cesu8" === this.enc && (this.enc = "utf8", this.encoder = u, "💩" !== new i("eda0bdedb2a9", "hex").toString() && (this.decoder = d, this.defaultCharUnicode = t.defaultCharUnicode))
    }

    e.exports = {
        utf8: {type: "_internal", bomAware: !0},
        cesu8: {type: "_internal", bomAware: !0},
        unicode11utf8: "utf8",
        ucs2: {type: "_internal", bomAware: !0},
        utf16le: "ucs2",
        binary: {type: "_internal"},
        base64: {type: "_internal"},
        hex: {type: "_internal"},
        _internal: a
    }, a.prototype.encoder = s, a.prototype.decoder = r;
    var o = n(258).StringDecoder;

    function r(e, t) {
        o.call(this, t.enc)
    }

    function s(e, t) {
        this.enc = t.enc
    }

    function l(e, t) {
        this.prevStr = ""
    }

    function u(e, t) {
    }

    function d(e, t) {
        this.acc = 0, this.contBytes = 0, this.accBytes = 0, this.defaultCharUnicode = t.defaultCharUnicode
    }

    o.prototype.end || (o.prototype.end = function () {
    }), r.prototype = o.prototype, s.prototype.write = function (e) {
        return new i(e, this.enc)
    }, s.prototype.end = function () {
    }, l.prototype.write = function (e) {
        var t = (e = this.prevStr + e).length - e.length % 4;
        return this.prevStr = e.slice(t), e = e.slice(0, t), new i(e, "base64")
    }, l.prototype.end = function () {
        return new i(this.prevStr, "base64")
    }, u.prototype.write = function (e) {
        for (var t = new i(3 * e.length), n = 0, a = 0; a < e.length; a++) {
            var o = e.charCodeAt(a);
            o < 128 ? t[n++] = o : o < 2048 ? (t[n++] = 192 + (o >>> 6), t[n++] = 128 + (63 & o)) : (t[n++] = 224 + (o >>> 12), t[n++] = 128 + (o >>> 6 & 63), t[n++] = 128 + (63 & o))
        }
        return t.slice(0, n)
    }, u.prototype.end = function () {
    }, d.prototype.write = function (e) {
        for (var t = this.acc, n = this.contBytes, i = this.accBytes, a = "", o = 0; o < e.length; o++) {
            var r = e[o];
            128 != (192 & r) ? (n > 0 && (a += this.defaultCharUnicode, n = 0), r < 128 ? a += String.fromCharCode(r) : r < 224 ? (t = 31 & r, n = 1, i = 1) : r < 240 ? (t = 15 & r, n = 2, i = 1) : a += this.defaultCharUnicode) : n > 0 ? (t = t << 6 | 63 & r, i++, 0 === --n && (a += 2 === i && t < 128 && t > 0 ? this.defaultCharUnicode : 3 === i && t < 2048 ? this.defaultCharUnicode : String.fromCharCode(t))) : a += this.defaultCharUnicode
        }
        return this.acc = t, this.contBytes = n, this.accBytes = i, a
    }, d.prototype.end = function () {
        var e = 0;
        return this.contBytes > 0 && (e += this.defaultCharUnicode), e
    }
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer;

    function a() {
    }

    function o() {
    }

    function r() {
        this.overflowByte = -1
    }

    function s(e, t) {
        this.iconv = t
    }

    function l(e, t) {
        void 0 === (e = e || {}).addBOM && (e.addBOM = !0), this.encoder = t.iconv.getEncoder("utf-16le", e)
    }

    function u(e, t) {
        this.decoder = null, this.initialBytes = [], this.initialBytesLen = 0, this.options = e || {}, this.iconv = t.iconv
    }

    function d(e, t) {
        var n = t || "utf-16le";
        if (e.length >= 2) if (254 == e[0] && 255 == e[1]) n = "utf-16be"; else if (255 == e[0] && 254 == e[1]) n = "utf-16le"; else {
            for (var i = 0, a = 0, o = Math.min(e.length - e.length % 2, 64), r = 0; r < o; r += 2) 0 === e[r] && 0 !== e[r + 1] && a++, 0 !== e[r] && 0 === e[r + 1] && i++;
            a > i ? n = "utf-16be" : a < i && (n = "utf-16le")
        }
        return n
    }

    t.utf16be = a, a.prototype.encoder = o, a.prototype.decoder = r, a.prototype.bomAware = !0, o.prototype.write = function (e) {
        for (var t = new i(e, "ucs2"), n = 0; n < t.length; n += 2) {
            var a = t[n];
            t[n] = t[n + 1], t[n + 1] = a
        }
        return t
    }, o.prototype.end = function () {
    }, r.prototype.write = function (e) {
        if (0 == e.length) return "";
        var t = new i(e.length + 1), n = 0, a = 0;
        for (-1 !== this.overflowByte && (t[0] = e[0], t[1] = this.overflowByte, n = 1, a = 2); n < e.length - 1; n += 2, a += 2) t[a] = e[n + 1], t[a + 1] = e[n];
        return this.overflowByte = n == e.length - 1 ? e[e.length - 1] : -1, t.slice(0, a).toString("ucs2")
    }, r.prototype.end = function () {
    }, t.utf16 = s, s.prototype.encoder = l, s.prototype.decoder = u, l.prototype.write = function (e) {
        return this.encoder.write(e)
    }, l.prototype.end = function () {
        return this.encoder.end()
    }, u.prototype.write = function (e) {
        if (!this.decoder) {
            if (this.initialBytes.push(e), this.initialBytesLen += e.length, this.initialBytesLen < 16) return "";
            var t = d(e = i.concat(this.initialBytes), this.options.defaultEncoding);
            this.decoder = this.iconv.getDecoder(t, this.options), this.initialBytes.length = this.initialBytesLen = 0
        }
        return this.decoder.write(e)
    }, u.prototype.end = function () {
        if (!this.decoder) {
            var e = i.concat(this.initialBytes), t = d(e, this.options.defaultEncoding);
            this.decoder = this.iconv.getDecoder(t, this.options);
            var n = this.decoder.write(e), a = this.decoder.end();
            return a ? n + a : n
        }
        return this.decoder.end()
    }
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer;

    function a(e, t) {
        this.iconv = t
    }

    t.utf7 = a, t.unicode11utf7 = "utf7", a.prototype.encoder = r, a.prototype.decoder = s, a.prototype.bomAware = !0;
    var o = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;

    function r(e, t) {
        this.iconv = t.iconv
    }

    function s(e, t) {
        this.iconv = t.iconv, this.inBase64 = !1, this.base64Accum = ""
    }

    r.prototype.write = function (e) {
        return new i(e.replace(o, function (e) {
            return "+" + ("+" === e ? "" : this.iconv.encode(e, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"
        }.bind(this)))
    }, r.prototype.end = function () {
    };
    for (var l = /[A-Za-z0-9\/+]/, u = [], d = 0; d < 256; d++) u[d] = l.test(String.fromCharCode(d));
    var c = "+".charCodeAt(0), h = "-".charCodeAt(0), f = "&".charCodeAt(0);

    function p(e, t) {
        this.iconv = t
    }

    function g(e, t) {
        this.iconv = t.iconv, this.inBase64 = !1, this.base64Accum = new i(6), this.base64AccumIdx = 0
    }

    function k(e, t) {
        this.iconv = t.iconv, this.inBase64 = !1, this.base64Accum = ""
    }

    s.prototype.write = function (e) {
        for (var t = "", n = 0, a = this.inBase64, o = this.base64Accum, r = 0; r < e.length; r++) if (a) {
            if (!u[e[r]]) {
                if (r == n && e[r] == h) t += "+"; else {
                    var s = o + e.slice(n, r).toString();
                    t += this.iconv.decode(new i(s, "base64"), "utf16-be")
                }
                e[r] != h && r--, n = r + 1, a = !1, o = ""
            }
        } else e[r] == c && (t += this.iconv.decode(e.slice(n, r), "ascii"), n = r + 1, a = !0);
        if (a) {
            var l = (s = o + e.slice(n).toString()).length - s.length % 8;
            o = s.slice(l), s = s.slice(0, l), t += this.iconv.decode(new i(s, "base64"), "utf16-be")
        } else t += this.iconv.decode(e.slice(n), "ascii");
        return this.inBase64 = a, this.base64Accum = o, t
    }, s.prototype.end = function () {
        var e = "";
        return this.inBase64 && this.base64Accum.length > 0 && (e = this.iconv.decode(new i(this.base64Accum, "base64"), "utf16-be")), this.inBase64 = !1, this.base64Accum = "", e
    }, t.utf7imap = p, p.prototype.encoder = g, p.prototype.decoder = k, p.prototype.bomAware = !0, g.prototype.write = function (e) {
        for (var t = this.inBase64, n = this.base64Accum, a = this.base64AccumIdx, o = new i(5 * e.length + 10), r = 0, s = 0; s < e.length; s++) {
            var l = e.charCodeAt(s);
            32 <= l && l <= 126 ? (t && (a > 0 && (r += o.write(n.slice(0, a).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), r), a = 0), o[r++] = h, t = !1), t || (o[r++] = l, l === f && (o[r++] = h))) : (t || (o[r++] = f, t = !0), t && (n[a++] = l >> 8, n[a++] = 255 & l, a == n.length && (r += o.write(n.toString("base64").replace(/\//g, ","), r), a = 0)))
        }
        return this.inBase64 = t, this.base64AccumIdx = a, o.slice(0, r)
    }, g.prototype.end = function () {
        var e = new i(10), t = 0;
        return this.inBase64 && (this.base64AccumIdx > 0 && (t += e.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), t), this.base64AccumIdx = 0), e[t++] = h, this.inBase64 = !1), e.slice(0, t)
    };
    var m = u.slice();
    m[",".charCodeAt(0)] = !0, k.prototype.write = function (e) {
        for (var t = "", n = 0, a = this.inBase64, o = this.base64Accum, r = 0; r < e.length; r++) if (a) {
            if (!m[e[r]]) {
                if (r == n && e[r] == h) t += "&"; else {
                    var s = o + e.slice(n, r).toString().replace(/,/g, "/");
                    t += this.iconv.decode(new i(s, "base64"), "utf16-be")
                }
                e[r] != h && r--, n = r + 1, a = !1, o = ""
            }
        } else e[r] == f && (t += this.iconv.decode(e.slice(n, r), "ascii"), n = r + 1, a = !0);
        if (a) {
            var l = (s = o + e.slice(n).toString().replace(/,/g, "/")).length - s.length % 8;
            o = s.slice(l), s = s.slice(0, l), t += this.iconv.decode(new i(s, "base64"), "utf16-be")
        } else t += this.iconv.decode(e.slice(n), "ascii");
        return this.inBase64 = a, this.base64Accum = o, t
    }, k.prototype.end = function () {
        var e = "";
        return this.inBase64 && this.base64Accum.length > 0 && (e = this.iconv.decode(new i(this.base64Accum, "base64"), "utf16-be")), this.inBase64 = !1, this.base64Accum = "", e
    }
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer;

    function a(e, t) {
        if (!e) throw new Error("SBCS codec is called without the data.");
        if (!e.chars || 128 !== e.chars.length && 256 !== e.chars.length) throw new Error("Encoding '" + e.type + "' has incorrect 'chars' (must be of len 128 or 256)");
        if (128 === e.chars.length) {
            for (var n = "", a = 0; a < 128; a++) n += String.fromCharCode(a);
            e.chars = n + e.chars
        }
        this.decodeBuf = new i(e.chars, "ucs2");
        var o = new i(65536);
        o.fill(t.defaultCharSingleByte.charCodeAt(0));
        for (a = 0; a < e.chars.length; a++) o[e.chars.charCodeAt(a)] = a;
        this.encodeBuf = o
    }

    function o(e, t) {
        this.encodeBuf = t.encodeBuf
    }

    function r(e, t) {
        this.decodeBuf = t.decodeBuf
    }

    t._sbcs = a, a.prototype.encoder = o, a.prototype.decoder = r, o.prototype.write = function (e) {
        for (var t = new i(e.length), n = 0; n < e.length; n++) t[n] = this.encodeBuf[e.charCodeAt(n)];
        return t
    }, o.prototype.end = function () {
    }, r.prototype.write = function (e) {
        for (var t = this.decodeBuf, n = new i(2 * e.length), a = 0, o = 0, r = 0; r < e.length; r++) a = 2 * e[r], n[o = 2 * r] = t[a], n[o + 1] = t[a + 1];
        return n.toString("ucs2")
    }, r.prototype.end = function () {
    }
}, function (e, t, n) {
    "use strict";
    e.exports = {
        10029: "maccenteuro",
        maccenteuro: {
            type: "_sbcs",
            chars: "ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
        },
        808: "cp808",
        ibm808: "cp808",
        cp808: {
            type: "_sbcs",
            chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
        },
        ascii8bit: "ascii",
        usascii: "ascii",
        ansix34: "ascii",
        ansix341968: "ascii",
        ansix341986: "ascii",
        csascii: "ascii",
        cp367: "ascii",
        ibm367: "ascii",
        isoir6: "ascii",
        iso646us: "ascii",
        iso646irv: "ascii",
        us: "ascii",
        latin1: "iso88591",
        latin2: "iso88592",
        latin3: "iso88593",
        latin4: "iso88594",
        latin5: "iso88599",
        latin6: "iso885910",
        latin7: "iso885913",
        latin8: "iso885914",
        latin9: "iso885915",
        latin10: "iso885916",
        csisolatin1: "iso88591",
        csisolatin2: "iso88592",
        csisolatin3: "iso88593",
        csisolatin4: "iso88594",
        csisolatincyrillic: "iso88595",
        csisolatinarabic: "iso88596",
        csisolatingreek: "iso88597",
        csisolatinhebrew: "iso88598",
        csisolatin5: "iso88599",
        csisolatin6: "iso885910",
        l1: "iso88591",
        l2: "iso88592",
        l3: "iso88593",
        l4: "iso88594",
        l5: "iso88599",
        l6: "iso885910",
        l7: "iso885913",
        l8: "iso885914",
        l9: "iso885915",
        l10: "iso885916",
        isoir14: "iso646jp",
        isoir57: "iso646cn",
        isoir100: "iso88591",
        isoir101: "iso88592",
        isoir109: "iso88593",
        isoir110: "iso88594",
        isoir144: "iso88595",
        isoir127: "iso88596",
        isoir126: "iso88597",
        isoir138: "iso88598",
        isoir148: "iso88599",
        isoir157: "iso885910",
        isoir166: "tis620",
        isoir179: "iso885913",
        isoir199: "iso885914",
        isoir203: "iso885915",
        isoir226: "iso885916",
        cp819: "iso88591",
        ibm819: "iso88591",
        cyrillic: "iso88595",
        arabic: "iso88596",
        arabic8: "iso88596",
        ecma114: "iso88596",
        asmo708: "iso88596",
        greek: "iso88597",
        greek8: "iso88597",
        ecma118: "iso88597",
        elot928: "iso88597",
        hebrew: "iso88598",
        hebrew8: "iso88598",
        turkish: "iso88599",
        turkish8: "iso88599",
        thai: "iso885911",
        thai8: "iso885911",
        celtic: "iso885914",
        celtic8: "iso885914",
        isoceltic: "iso885914",
        tis6200: "tis620",
        tis62025291: "tis620",
        tis62025330: "tis620",
        10000: "macroman",
        10006: "macgreek",
        10007: "maccyrillic",
        10079: "maciceland",
        10081: "macturkish",
        cspc8codepage437: "cp437",
        cspc775baltic: "cp775",
        cspc850multilingual: "cp850",
        cspcp852: "cp852",
        cspc862latinhebrew: "cp862",
        cpgr: "cp869",
        msee: "cp1250",
        mscyrl: "cp1251",
        msansi: "cp1252",
        msgreek: "cp1253",
        msturk: "cp1254",
        mshebr: "cp1255",
        msarab: "cp1256",
        winbaltrim: "cp1257",
        cp20866: "koi8r",
        20866: "koi8r",
        ibm878: "koi8r",
        cskoi8r: "koi8r",
        cp21866: "koi8u",
        21866: "koi8u",
        ibm1168: "koi8u",
        strk10482002: "rk1048",
        tcvn5712: "tcvn",
        tcvn57121: "tcvn",
        gb198880: "iso646cn",
        cn: "iso646cn",
        csiso14jisc6220ro: "iso646jp",
        jisc62201969ro: "iso646jp",
        jp: "iso646jp",
        cshproman8: "hproman8",
        r8: "hproman8",
        roman8: "hproman8",
        xroman8: "hproman8",
        ibm1051: "hproman8",
        mac: "macintosh",
        csmacintosh: "macintosh"
    }
}, function (e, t, n) {
    "use strict";
    e.exports = {
        437: "cp437",
        737: "cp737",
        775: "cp775",
        850: "cp850",
        852: "cp852",
        855: "cp855",
        856: "cp856",
        857: "cp857",
        858: "cp858",
        860: "cp860",
        861: "cp861",
        862: "cp862",
        863: "cp863",
        864: "cp864",
        865: "cp865",
        866: "cp866",
        869: "cp869",
        874: "windows874",
        922: "cp922",
        1046: "cp1046",
        1124: "cp1124",
        1125: "cp1125",
        1129: "cp1129",
        1133: "cp1133",
        1161: "cp1161",
        1162: "cp1162",
        1163: "cp1163",
        1250: "windows1250",
        1251: "windows1251",
        1252: "windows1252",
        1253: "windows1253",
        1254: "windows1254",
        1255: "windows1255",
        1256: "windows1256",
        1257: "windows1257",
        1258: "windows1258",
        28591: "iso88591",
        28592: "iso88592",
        28593: "iso88593",
        28594: "iso88594",
        28595: "iso88595",
        28596: "iso88596",
        28597: "iso88597",
        28598: "iso88598",
        28599: "iso88599",
        28600: "iso885910",
        28601: "iso885911",
        28603: "iso885913",
        28604: "iso885914",
        28605: "iso885915",
        28606: "iso885916",
        windows874: {
            type: "_sbcs",
            chars: "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
        },
        win874: "windows874",
        cp874: "windows874",
        windows1250: {
            type: "_sbcs",
            chars: "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
        },
        win1250: "windows1250",
        cp1250: "windows1250",
        windows1251: {
            type: "_sbcs",
            chars: "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
        },
        win1251: "windows1251",
        cp1251: "windows1251",
        windows1252: {
            type: "_sbcs",
            chars: "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
        },
        win1252: "windows1252",
        cp1252: "windows1252",
        windows1253: {
            type: "_sbcs",
            chars: "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
        },
        win1253: "windows1253",
        cp1253: "windows1253",
        windows1254: {
            type: "_sbcs",
            chars: "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
        },
        win1254: "windows1254",
        cp1254: "windows1254",
        windows1255: {
            type: "_sbcs",
            chars: "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
        },
        win1255: "windows1255",
        cp1255: "windows1255",
        windows1256: {
            type: "_sbcs",
            chars: "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"
        },
        win1256: "windows1256",
        cp1256: "windows1256",
        windows1257: {
            type: "_sbcs",
            chars: "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
        },
        win1257: "windows1257",
        cp1257: "windows1257",
        windows1258: {
            type: "_sbcs",
            chars: "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
        },
        win1258: "windows1258",
        cp1258: "windows1258",
        iso88591: {
            type: "_sbcs",
            chars: " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
        },
        cp28591: "iso88591",
        iso88592: {
            type: "_sbcs",
            chars: " Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
        },
        cp28592: "iso88592",
        iso88593: {
            type: "_sbcs",
            chars: " Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"
        },
        cp28593: "iso88593",
        iso88594: {
            type: "_sbcs",
            chars: " ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
        },
        cp28594: "iso88594",
        iso88595: {
            type: "_sbcs",
            chars: " ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
        },
        cp28595: "iso88595",
        iso88596: {
            type: "_sbcs",
            chars: " ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"
        },
        cp28596: "iso88596",
        iso88597: {
            type: "_sbcs",
            chars: " ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
        },
        cp28597: "iso88597",
        iso88598: {
            type: "_sbcs",
            chars: " �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
        },
        cp28598: "iso88598",
        iso88599: {
            type: "_sbcs",
            chars: " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
        },
        cp28599: "iso88599",
        iso885910: {
            type: "_sbcs",
            chars: " ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
        },
        cp28600: "iso885910",
        iso885911: {
            type: "_sbcs",
            chars: " กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
        },
        cp28601: "iso885911",
        iso885913: {
            type: "_sbcs",
            chars: " ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
        },
        cp28603: "iso885913",
        iso885914: {
            type: "_sbcs",
            chars: " Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
        },
        cp28604: "iso885914",
        iso885915: {
            type: "_sbcs",
            chars: " ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
        },
        cp28605: "iso885915",
        iso885916: {
            type: "_sbcs",
            chars: " ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
        },
        cp28606: "iso885916",
        cp437: {
            type: "_sbcs",
            chars: "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
        },
        ibm437: "cp437",
        csibm437: "cp437",
        cp737: {
            type: "_sbcs",
            chars: "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
        },
        ibm737: "cp737",
        csibm737: "cp737",
        cp775: {
            type: "_sbcs",
            chars: "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "
        },
        ibm775: "cp775",
        csibm775: "cp775",
        cp850: {
            type: "_sbcs",
            chars: "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "
        },
        ibm850: "cp850",
        csibm850: "cp850",
        cp852: {
            type: "_sbcs",
            chars: "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "
        },
        ibm852: "cp852",
        csibm852: "cp852",
        cp855: {
            type: "_sbcs",
            chars: "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "
        },
        ibm855: "cp855",
        csibm855: "cp855",
        cp856: {
            type: "_sbcs",
            chars: "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "
        },
        ibm856: "cp856",
        csibm856: "cp856",
        cp857: {
            type: "_sbcs",
            chars: "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "
        },
        ibm857: "cp857",
        csibm857: "cp857",
        cp858: {
            type: "_sbcs",
            chars: "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ "
        },
        ibm858: "cp858",
        csibm858: "cp858",
        cp860: {
            type: "_sbcs",
            chars: "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
        },
        ibm860: "cp860",
        csibm860: "cp860",
        cp861: {
            type: "_sbcs",
            chars: "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
        },
        ibm861: "cp861",
        csibm861: "cp861",
        cp862: {
            type: "_sbcs",
            chars: "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
        },
        ibm862: "cp862",
        csibm862: "cp862",
        cp863: {
            type: "_sbcs",
            chars: "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
        },
        ibm863: "cp863",
        csibm863: "cp863",
        cp864: {
            type: "_sbcs",
            chars: "\0\b\t\n\v\f\r !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"
        },
        ibm864: "cp864",
        csibm864: "cp864",
        cp865: {
            type: "_sbcs",
            chars: "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
        },
        ibm865: "cp865",
        csibm865: "cp865",
        cp866: {
            type: "_sbcs",
            chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
        },
        ibm866: "cp866",
        csibm866: "cp866",
        cp869: {
            type: "_sbcs",
            chars: "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "
        },
        ibm869: "cp869",
        csibm869: "cp869",
        cp922: {
            type: "_sbcs",
            chars: " ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
        },
        ibm922: "cp922",
        csibm922: "cp922",
        cp1046: {
            type: "_sbcs",
            chars: "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"
        },
        ibm1046: "cp1046",
        csibm1046: "cp1046",
        cp1124: {
            type: "_sbcs",
            chars: " ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
        },
        ibm1124: "cp1124",
        csibm1124: "cp1124",
        cp1125: {
            type: "_sbcs",
            chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
        },
        ibm1125: "cp1125",
        csibm1125: "cp1125",
        cp1129: {
            type: "_sbcs",
            chars: " ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
        },
        ibm1129: "cp1129",
        csibm1129: "cp1129",
        cp1133: {
            type: "_sbcs",
            chars: " ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"
        },
        ibm1133: "cp1133",
        csibm1133: "cp1133",
        cp1161: {
            type: "_sbcs",
            chars: "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
        },
        ibm1161: "cp1161",
        csibm1161: "cp1161",
        cp1162: {
            type: "_sbcs",
            chars: "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
        },
        ibm1162: "cp1162",
        csibm1162: "cp1162",
        cp1163: {
            type: "_sbcs",
            chars: " ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
        },
        ibm1163: "cp1163",
        csibm1163: "cp1163",
        maccroatian: {
            type: "_sbcs",
            chars: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
        },
        maccyrillic: {
            type: "_sbcs",
            chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
        },
        macgreek: {
            type: "_sbcs",
            chars: "Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"
        },
        maciceland: {
            type: "_sbcs",
            chars: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
        },
        macroman: {
            type: "_sbcs",
            chars: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
        },
        macromania: {
            type: "_sbcs",
            chars: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
        },
        macthai: {
            type: "_sbcs",
            chars: "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"
        },
        macturkish: {
            type: "_sbcs",
            chars: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"
        },
        macukraine: {
            type: "_sbcs",
            chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
        },
        koi8r: {
            type: "_sbcs",
            chars: "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
        },
        koi8u: {
            type: "_sbcs",
            chars: "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
        },
        koi8ru: {
            type: "_sbcs",
            chars: "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
        },
        koi8t: {
            type: "_sbcs",
            chars: "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
        },
        armscii8: {
            type: "_sbcs",
            chars: " �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"
        },
        rk1048: {
            type: "_sbcs",
            chars: "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
        },
        tcvn: {
            type: "_sbcs",
            chars: "\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
        },
        georgianacademy: {
            type: "_sbcs",
            chars: "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
        },
        georgianps: {
            type: "_sbcs",
            chars: "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
        },
        pt154: {
            type: "_sbcs",
            chars: "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
        },
        viscii: {
            type: "_sbcs",
            chars: "\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
        },
        iso646cn: {
            type: "_sbcs",
            chars: "\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
        },
        iso646jp: {
            type: "_sbcs",
            chars: "\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
        },
        hproman8: {
            type: "_sbcs",
            chars: " ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"
        },
        macintosh: {
            type: "_sbcs",
            chars: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
        },
        ascii: {
            type: "_sbcs",
            chars: "��������������������������������������������������������������������������������������������������������������������������������"
        },
        tis620: {
            type: "_sbcs",
            chars: "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer;
    t._dbcs = u;
    for (var a = -1, o = -2, r = -1e3, s = new Array(256), l = 0; l < 256; l++) s[l] = a;

    function u(e, t) {
        if (this.encodingName = e.encodingName, !e) throw new Error("DBCS codec is called without the data.");
        if (!e.table) throw new Error("Encoding '" + this.encodingName + "' has no data.");
        var n = e.table();
        this.decodeTables = [], this.decodeTables[0] = s.slice(0), this.decodeTableSeq = [];
        for (var i = 0; i < n.length; i++) this._addDecodeChunk(n[i]);
        this.defaultCharUnicode = t.defaultCharUnicode, this.encodeTable = [], this.encodeTableSeq = [];
        var l = {};
        if (e.encodeSkipVals) for (i = 0; i < e.encodeSkipVals.length; i++) {
            var u = e.encodeSkipVals[i];
            if ("number" == typeof u) l[u] = !0; else for (var d = u.from; d <= u.to; d++) l[d] = !0
        }
        if (this._fillEncodeTable(0, 0, l), e.encodeAdd) for (var c in e.encodeAdd) Object.prototype.hasOwnProperty.call(e.encodeAdd, c) && this._setEncodeChar(c.charCodeAt(0), e.encodeAdd[c]);
        if (this.defCharSB = this.encodeTable[0][t.defaultCharSingleByte.charCodeAt(0)], this.defCharSB === a && (this.defCharSB = this.encodeTable[0]["?"]), this.defCharSB === a && (this.defCharSB = "?".charCodeAt(0)), "function" == typeof e.gb18030) {
            this.gb18030 = e.gb18030();
            var h = this.decodeTables.length, f = this.decodeTables[h] = s.slice(0), p = this.decodeTables.length,
                g = this.decodeTables[p] = s.slice(0);
            for (i = 129; i <= 254; i++) {
                var k = r - this.decodeTables[0][i], m = this.decodeTables[k];
                for (d = 48; d <= 57; d++) m[d] = r - h
            }
            for (i = 129; i <= 254; i++) f[i] = r - p;
            for (i = 48; i <= 57; i++) g[i] = o
        }
    }

    function d(e, t) {
        this.leadSurrogate = -1, this.seqObj = void 0, this.encodeTable = t.encodeTable, this.encodeTableSeq = t.encodeTableSeq, this.defaultCharSingleByte = t.defCharSB, this.gb18030 = t.gb18030
    }

    function c(e, t) {
        this.nodeIdx = 0, this.prevBuf = new i(0), this.decodeTables = t.decodeTables, this.decodeTableSeq = t.decodeTableSeq, this.defaultCharUnicode = t.defaultCharUnicode, this.gb18030 = t.gb18030
    }

    function h(e, t) {
        if (e[0] > t) return -1;
        for (var n = 0, i = e.length; n < i - 1;) {
            var a = n + Math.floor((i - n + 1) / 2);
            e[a] <= t ? n = a : i = a
        }
        return n
    }

    u.prototype.encoder = d, u.prototype.decoder = c, u.prototype._getDecodeTrieNode = function (e) {
        for (var t = []; e > 0; e >>= 8) t.push(255 & e);
        0 == t.length && t.push(0);
        for (var n = this.decodeTables[0], i = t.length - 1; i > 0; i--) {
            var o = n[t[i]];
            if (o == a) n[t[i]] = r - this.decodeTables.length, this.decodeTables.push(n = s.slice(0)); else {
                if (!(o <= r)) throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + e.toString(16));
                n = this.decodeTables[r - o]
            }
        }
        return n
    }, u.prototype._addDecodeChunk = function (e) {
        var t = parseInt(e[0], 16), n = this._getDecodeTrieNode(t);
        t &= 255;
        for (var i = 1; i < e.length; i++) {
            var a = e[i];
            if ("string" == typeof a) for (var o = 0; o < a.length;) {
                var r = a.charCodeAt(o++);
                if (55296 <= r && r < 56320) {
                    var s = a.charCodeAt(o++);
                    if (!(56320 <= s && s < 57344)) throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + e[0]);
                    n[t++] = 65536 + 1024 * (r - 55296) + (s - 56320)
                } else if (4080 < r && r <= 4095) {
                    for (var l = 4095 - r + 2, u = [], d = 0; d < l; d++) u.push(a.charCodeAt(o++));
                    n[t++] = -10 - this.decodeTableSeq.length, this.decodeTableSeq.push(u)
                } else n[t++] = r
            } else {
                if ("number" != typeof a) throw new Error("Incorrect type '" + typeof a + "' given in " + this.encodingName + " at chunk " + e[0]);
                var c = n[t - 1] + 1;
                for (o = 0; o < a; o++) n[t++] = c++
            }
        }
        if (t > 255) throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + e[0] + ": too long" + t)
    }, u.prototype._getEncodeBucket = function (e) {
        var t = e >> 8;
        return void 0 === this.encodeTable[t] && (this.encodeTable[t] = s.slice(0)), this.encodeTable[t]
    }, u.prototype._setEncodeChar = function (e, t) {
        var n = this._getEncodeBucket(e), i = 255 & e;
        n[i] <= -10 ? this.encodeTableSeq[-10 - n[i]][-1] = t : n[i] == a && (n[i] = t)
    }, u.prototype._setEncodeSequence = function (e, t) {
        var n, i = e[0], o = this._getEncodeBucket(i), r = 255 & i;
        o[r] <= -10 ? n = this.encodeTableSeq[-10 - o[r]] : (n = {}, o[r] !== a && (n[-1] = o[r]), o[r] = -10 - this.encodeTableSeq.length, this.encodeTableSeq.push(n));
        for (var s = 1; s < e.length - 1; s++) {
            var l = n[i];
            "object" == typeof l ? n = l : (n = n[i] = {}, void 0 !== l && (n[-1] = l))
        }
        n[i = e[e.length - 1]] = t
    }, u.prototype._fillEncodeTable = function (e, t, n) {
        for (var i = this.decodeTables[e], a = 0; a < 256; a++) {
            var o = i[a], s = t + a;
            n[s] || (o >= 0 ? this._setEncodeChar(o, s) : o <= r ? this._fillEncodeTable(r - o, s << 8, n) : o <= -10 && this._setEncodeSequence(this.decodeTableSeq[-10 - o], s))
        }
    }, d.prototype.write = function (e) {
        for (var t = new i(e.length * (this.gb18030 ? 4 : 3)), n = this.leadSurrogate, o = this.seqObj, r = -1, s = 0, l = 0; ;) {
            if (-1 === r) {
                if (s == e.length) break;
                var u = e.charCodeAt(s++)
            } else {
                u = r;
                r = -1
            }
            if (55296 <= u && u < 57344) if (u < 56320) {
                if (-1 === n) {
                    n = u;
                    continue
                }
                n = u, u = a
            } else -1 !== n ? (u = 65536 + 1024 * (n - 55296) + (u - 56320), n = -1) : u = a; else -1 !== n && (r = u, u = a, n = -1);
            var d = a;
            if (void 0 !== o && u != a) {
                var c = o[u];
                if ("object" == typeof c) {
                    o = c;
                    continue
                }
                "number" == typeof c ? d = c : void 0 == c && void 0 !== (c = o[-1]) && (d = c, r = u), o = void 0
            } else if (u >= 0) {
                var f = this.encodeTable[u >> 8];
                if (void 0 !== f && (d = f[255 & u]), d <= -10) {
                    o = this.encodeTableSeq[-10 - d];
                    continue
                }
                if (d == a && this.gb18030) {
                    var p = h(this.gb18030.uChars, u);
                    if (-1 != p) {
                        d = this.gb18030.gbChars[p] + (u - this.gb18030.uChars[p]);
                        t[l++] = 129 + Math.floor(d / 12600), d %= 12600, t[l++] = 48 + Math.floor(d / 1260), d %= 1260, t[l++] = 129 + Math.floor(d / 10), d %= 10, t[l++] = 48 + d;
                        continue
                    }
                }
            }
            d === a && (d = this.defaultCharSingleByte), d < 256 ? t[l++] = d : d < 65536 ? (t[l++] = d >> 8, t[l++] = 255 & d) : (t[l++] = d >> 16, t[l++] = d >> 8 & 255, t[l++] = 255 & d)
        }
        return this.seqObj = o, this.leadSurrogate = n, t.slice(0, l)
    }, d.prototype.end = function () {
        if (-1 !== this.leadSurrogate || void 0 !== this.seqObj) {
            var e = new i(10), t = 0;
            if (this.seqObj) {
                var n = this.seqObj[-1];
                void 0 !== n && (n < 256 ? e[t++] = n : (e[t++] = n >> 8, e[t++] = 255 & n)), this.seqObj = void 0
            }
            return -1 !== this.leadSurrogate && (e[t++] = this.defaultCharSingleByte, this.leadSurrogate = -1), e.slice(0, t)
        }
    }, d.prototype.findIdx = h, c.prototype.write = function (e) {
        var t = new i(2 * e.length), n = this.nodeIdx, s = this.prevBuf, l = this.prevBuf.length,
            u = -this.prevBuf.length;
        l > 0 && (s = i.concat([s, e.slice(0, 10)]));
        for (var d = 0, c = 0; d < e.length; d++) {
            var f, p = d >= 0 ? e[d] : s[d + l];
            if ((f = this.decodeTables[n][p]) >= 0) ; else if (f === a) d = u, f = this.defaultCharUnicode.charCodeAt(0); else if (f === o) {
                var g = u >= 0 ? e.slice(u, d + 1) : s.slice(u + l, d + 1 + l),
                    k = 12600 * (g[0] - 129) + 1260 * (g[1] - 48) + 10 * (g[2] - 129) + (g[3] - 48),
                    m = h(this.gb18030.gbChars, k);
                f = this.gb18030.uChars[m] + k - this.gb18030.gbChars[m]
            } else {
                if (f <= r) {
                    n = r - f;
                    continue
                }
                if (!(f <= -10)) throw new Error("iconv-lite internal error: invalid decoding table value " + f + " at " + n + "/" + p);
                for (var T = this.decodeTableSeq[-10 - f], v = 0; v < T.length - 1; v++) f = T[v], t[c++] = 255 & f, t[c++] = f >> 8;
                f = T[T.length - 1]
            }
            if (f > 65535) {
                f -= 65536;
                var w = 55296 + Math.floor(f / 1024);
                t[c++] = 255 & w, t[c++] = w >> 8, f = 56320 + f % 1024
            }
            t[c++] = 255 & f, t[c++] = f >> 8, n = 0, u = d + 1
        }
        return this.nodeIdx = n, this.prevBuf = u >= 0 ? e.slice(u) : s.slice(u + l), t.slice(0, c).toString("ucs2")
    }, c.prototype.end = function () {
        for (var e = ""; this.prevBuf.length > 0;) {
            e += this.defaultCharUnicode;
            var t = this.prevBuf.slice(1);
            this.prevBuf = new i(0), this.nodeIdx = 0, t.length > 0 && (e += this.write(t))
        }
        return this.nodeIdx = 0, e
    }
}, function (e, t, n) {
    "use strict";
    e.exports = {
        shiftjis: {
            type: "_dbcs", table: function () {
                return n(498)
            }, encodeAdd: {"¥": 92, "‾": 126}, encodeSkipVals: [{from: 60736, to: 63808}]
        },
        csshiftjis: "shiftjis",
        mskanji: "shiftjis",
        sjis: "shiftjis",
        windows31j: "shiftjis",
        ms31j: "shiftjis",
        xsjis: "shiftjis",
        windows932: "shiftjis",
        ms932: "shiftjis",
        932: "shiftjis",
        cp932: "shiftjis",
        eucjp: {
            type: "_dbcs", table: function () {
                return n(499)
            }, encodeAdd: {"¥": 92, "‾": 126}
        },
        gb2312: "cp936",
        gb231280: "cp936",
        gb23121980: "cp936",
        csgb2312: "cp936",
        csiso58gb231280: "cp936",
        euccn: "cp936",
        windows936: "cp936",
        ms936: "cp936",
        936: "cp936",
        cp936: {
            type: "_dbcs", table: function () {
                return n(185)
            }
        },
        gbk: {
            type: "_dbcs", table: function () {
                return n(185).concat(n(233))
            }
        },
        xgbk: "gbk",
        isoir58: "gbk",
        gb18030: {
            type: "_dbcs", table: function () {
                return n(185).concat(n(233))
            }, gb18030: function () {
                return n(500)
            }, encodeSkipVals: [128], encodeAdd: {"€": 41699}
        },
        chinese: "gb18030",
        windows949: "cp949",
        ms949: "cp949",
        949: "cp949",
        cp949: {
            type: "_dbcs", table: function () {
                return n(501)
            }
        },
        cseuckr: "cp949",
        csksc56011987: "cp949",
        euckr: "cp949",
        isoir149: "cp949",
        korean: "cp949",
        ksc56011987: "cp949",
        ksc56011989: "cp949",
        ksc5601: "cp949",
        windows950: "cp950",
        ms950: "cp950",
        950: "cp950",
        cp950: {
            type: "_dbcs", table: function () {
                return n(234)
            }
        },
        big5: "big5hkscs",
        big5hkscs: {
            type: "_dbcs", table: function () {
                return n(234).concat(n(502))
            }, encodeSkipVals: [41676]
        },
        cnbig5: "big5hkscs",
        csbig5: "big5hkscs",
        xxbig5: "big5hkscs"
    }
}, function (e) {
    e.exports = [["0", "\0", 128], ["a1", "｡", 62], ["8140", "　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈", 9, "＋－±×"], ["8180", "÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], ["81b8", "∈∋⊆⊇⊂⊃∪∩"], ["81c8", "∧∨￢⇒⇔∀∃"], ["81da", "∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], ["81f0", "Å‰♯♭♪†‡¶"], ["81fc", "◯"], ["824f", "０", 9], ["8260", "Ａ", 25], ["8281", "ａ", 25], ["829f", "ぁ", 82], ["8340", "ァ", 62], ["8380", "ム", 22], ["839f", "Α", 16, "Σ", 6], ["83bf", "α", 16, "σ", 6], ["8440", "А", 5, "ЁЖ", 25], ["8470", "а", 5, "ёж", 7], ["8480", "о", 17], ["849f", "─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], ["8740", "①", 19, "Ⅰ", 9], ["875f", "㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], ["877e", "㍻"], ["8780", "〝〟№㏍℡㊤", 4, "㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], ["889f", "亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], ["8940", "院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], ["8980", "園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], ["8a40", "魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], ["8a80", "橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], ["8b40", "機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], ["8b80", "朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], ["8c40", "掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], ["8c80", "劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], ["8d40", "后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], ["8d80", "項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], ["8e40", "察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], ["8e80", "死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], ["8f40", "宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], ["8f80", "準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], ["9040", "拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], ["9080", "逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], ["9140", "繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], ["9180", "操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], ["9240", "叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], ["9280", "逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], ["9340", "邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], ["9380", "凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], ["9440", "如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], ["9480", "楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], ["9540", "鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], ["9580", "斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], ["9640", "法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], ["9680", "摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], ["9740", "諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], ["9780", "沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], ["9840", "蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], ["989f", "弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], ["9940", "僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], ["9980", "凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], ["9a40", "咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], ["9a80", "噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], ["9b40", "奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], ["9b80", "它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], ["9c40", "廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], ["9c80", "怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], ["9d40", "戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], ["9d80", "捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], ["9e40", "曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], ["9e80", "梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], ["9f40", "檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], ["9f80", "麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], ["e040", "漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], ["e080", "烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], ["e140", "瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], ["e180", "痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], ["e240", "磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], ["e280", "窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], ["e340", "紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], ["e380", "縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], ["e440", "隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], ["e480", "艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], ["e540", "蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], ["e580", "蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], ["e640", "襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], ["e680", "諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], ["e740", "蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], ["e780", "轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], ["e840", "錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], ["e880", "閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], ["e940", "顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], ["e980", "騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], ["ea40", "鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], ["ea80", "黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], ["ed40", "纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], ["ed80", "塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], ["ee40", "犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], ["ee80", "蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], ["eeef", "ⅰ", 9, "￢￤＇＂"], ["f040", "", 62], ["f080", "", 124], ["f140", "", 62], ["f180", "", 124], ["f240", "", 62], ["f280", "", 124], ["f340", "", 62], ["f380", "", 124], ["f440", "", 62], ["f480", "", 124], ["f540", "", 62], ["f580", "", 124], ["f640", "", 62], ["f680", "", 124], ["f740", "", 62], ["f780", "", 124], ["f840", "", 62], ["f880", "", 124], ["f940", ""], ["fa40", "ⅰ", 9, "Ⅰ", 9, "￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], ["fa80", "兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], ["fb40", "涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], ["fb80", "祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], ["fc40", "髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]
}, function (e) {
    e.exports = [["0", "\0", 127], ["8ea1", "｡", 62], ["a1a1", "　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈", 9, "＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇"], ["a2a1", "◆□■△▲▽▼※〒→←↑↓〓"], ["a2ba", "∈∋⊆⊇⊂⊃∪∩"], ["a2ca", "∧∨￢⇒⇔∀∃"], ["a2dc", "∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], ["a2f2", "Å‰♯♭♪†‡¶"], ["a2fe", "◯"], ["a3b0", "０", 9], ["a3c1", "Ａ", 25], ["a3e1", "ａ", 25], ["a4a1", "ぁ", 82], ["a5a1", "ァ", 85], ["a6a1", "Α", 16, "Σ", 6], ["a6c1", "α", 16, "σ", 6], ["a7a1", "А", 5, "ЁЖ", 25], ["a7d1", "а", 5, "ёж", 25], ["a8a1", "─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], ["ada1", "①", 19, "Ⅰ", 9], ["adc0", "㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], ["addf", "㍻〝〟№㏍℡㊤", 4, "㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], ["b0a1", "亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], ["b1a1", "院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], ["b2a1", "押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], ["b3a1", "魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], ["b4a1", "粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], ["b5a1", "機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], ["b6a1", "供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], ["b7a1", "掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], ["b8a1", "検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], ["b9a1", "后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], ["baa1", "此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], ["bba1", "察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], ["bca1", "次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], ["bda1", "宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], ["bea1", "勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], ["bfa1", "拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], ["c0a1", "澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], ["c1a1", "繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], ["c2a1", "臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], ["c3a1", "叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], ["c4a1", "帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], ["c5a1", "邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], ["c6a1", "董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], ["c7a1", "如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], ["c8a1", "函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], ["c9a1", "鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], ["caa1", "福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], ["cba1", "法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], ["cca1", "漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], ["cda1", "諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], ["cea1", "痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], ["cfa1", "蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], ["d0a1", "弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], ["d1a1", "僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], ["d2a1", "辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], ["d3a1", "咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], ["d4a1", "圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], ["d5a1", "奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], ["d6a1", "屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], ["d7a1", "廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], ["d8a1", "悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], ["d9a1", "戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], ["daa1", "據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], ["dba1", "曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], ["dca1", "棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], ["dda1", "檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], ["dea1", "沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], ["dfa1", "漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], ["e0a1", "燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], ["e1a1", "瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], ["e2a1", "癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], ["e3a1", "磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], ["e4a1", "筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], ["e5a1", "紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], ["e6a1", "罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], ["e7a1", "隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], ["e8a1", "茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], ["e9a1", "蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], ["eaa1", "蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], ["eba1", "襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], ["eca1", "譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], ["eda1", "蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], ["eea1", "遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], ["efa1", "錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], ["f0a1", "陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], ["f1a1", "顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], ["f2a1", "髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], ["f3a1", "鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], ["f4a1", "堯槇遙瑤凜熙"], ["f9a1", "纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], ["faa1", "忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], ["fba1", "犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], ["fca1", "釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], ["fcf1", "ⅰ", 9, "￢￤＇＂"], ["8fa2af", "˘ˇ¸˙˝¯˛˚～΄΅"], ["8fa2c2", "¡¦¿"], ["8fa2eb", "ºª©®™¤№"], ["8fa6e1", "ΆΈΉΊΪ"], ["8fa6e7", "Ό"], ["8fa6e9", "ΎΫ"], ["8fa6ec", "Ώ"], ["8fa6f1", "άέήίϊΐόςύϋΰώ"], ["8fa7c2", "Ђ", 10, "ЎЏ"], ["8fa7f2", "ђ", 10, "ўџ"], ["8fa9a1", "ÆĐ"], ["8fa9a4", "Ħ"], ["8fa9a6", "Ĳ"], ["8fa9a8", "ŁĿ"], ["8fa9ab", "ŊØŒ"], ["8fa9af", "ŦÞ"], ["8fa9c1", "æđðħıĳĸłŀŉŋøœßŧþ"], ["8faaa1", "ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], ["8faaba", "ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], ["8faba1", "áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], ["8fabbd", "ġĥíìïîǐ"], ["8fabc5", "īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], ["8fb0a1", "丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], ["8fb1a1", "侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], ["8fb2a1", "傒傓傔傖傛傜傞", 4, "傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], ["8fb3a1", "凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], ["8fb4a1", "匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], ["8fb5a1", "咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], ["8fb6a1", "嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍", 5, "嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤", 4, "囱囫园"], ["8fb7a1", "囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭", 4, "坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], ["8fb8a1", "堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], ["8fb9a1", "奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], ["8fbaa1", "嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖", 4, "寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], ["8fbba1", "屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], ["8fbca1", "巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪", 4, "幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], ["8fbda1", "彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐", 4, "忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], ["8fbea1", "悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐", 4, "愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], ["8fbfa1", "懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], ["8fc0a1", "捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], ["8fc1a1", "擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], ["8fc2a1", "昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], ["8fc3a1", "杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮", 4, "桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], ["8fc4a1", "棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], ["8fc5a1", "樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], ["8fc6a1", "歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], ["8fc7a1", "泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], ["8fc8a1", "湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], ["8fc9a1", "濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔", 4, "炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃", 4, "焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], ["8fcaa1", "煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], ["8fcba1", "狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], ["8fcca1", "珿琀琁琄琇琊琑琚琛琤琦琨", 9, "琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], ["8fcda1", "甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹", 5, "疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], ["8fcea1", "瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢", 6, "皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], ["8fcfa1", "睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], ["8fd0a1", "碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], ["8fd1a1", "秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], ["8fd2a1", "笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙", 5], ["8fd3a1", "籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], ["8fd4a1", "綞綦綧綪綳綶綷綹緂", 4, "緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], ["8fd5a1", "罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], ["8fd6a1", "胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], ["8fd7a1", "艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], ["8fd8a1", "荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], ["8fd9a1", "蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏", 4, "蕖蕙蕜", 6, "蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], ["8fdaa1", "藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠", 4, "虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], ["8fdba1", "蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃", 6, "螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], ["8fdca1", "蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊", 4, "裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], ["8fdda1", "襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔", 4, "觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], ["8fdea1", "誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂", 4, "譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], ["8fdfa1", "貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], ["8fe0a1", "踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], ["8fe1a1", "轃轇轏轑", 4, "轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], ["8fe2a1", "郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], ["8fe3a1", "釂釃釅釓釔釗釙釚釞釤釥釩釪釬", 5, "釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵", 4, "鉻鉼鉽鉿銈銉銊銍銎銒銗"], ["8fe4a1", "銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿", 4, "鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], ["8fe5a1", "鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉", 4, "鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], ["8fe6a1", "镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], ["8fe7a1", "霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], ["8fe8a1", "頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱", 4, "餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], ["8fe9a1", "馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿", 4], ["8feaa1", "鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪", 4, "魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], ["8feba1", "鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦", 4, "鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], ["8feca1", "鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], ["8feda1", "黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃", 4, "齓齕齖齗齘齚齝齞齨齩齭", 4, "齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]
}, function (e) {
    e.exports = {
        uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536],
        gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3]
    }
}, function (e) {
    e.exports = [["0", "\0", 127], ["8141", "갂갃갅갆갋", 4, "갘갞갟갡갢갣갥", 6, "갮갲갳갴"], ["8161", "갵갶갷갺갻갽갾갿걁", 9, "걌걎", 5, "걕"], ["8181", "걖걗걙걚걛걝", 18, "걲걳걵걶걹걻", 4, "겂겇겈겍겎겏겑겒겓겕", 6, "겞겢", 5, "겫겭겮겱", 6, "겺겾겿곀곂곃곅곆곇곉곊곋곍", 7, "곖곘", 7, "곢곣곥곦곩곫곭곮곲곴곷", 4, "곾곿괁괂괃괅괇", 4, "괎괐괒괓"], ["8241", "괔괕괖괗괙괚괛괝괞괟괡", 7, "괪괫괮", 5], ["8261", "괶괷괹괺괻괽", 6, "굆굈굊", 5, "굑굒굓굕굖굗"], ["8281", "굙", 7, "굢굤", 7, "굮굯굱굲굷굸굹굺굾궀궃", 4, "궊궋궍궎궏궑", 10, "궞", 5, "궥", 17, "궸", 7, "귂귃귅귆귇귉", 6, "귒귔", 7, "귝귞귟귡귢귣귥", 18], ["8341", "귺귻귽귾긂", 5, "긊긌긎", 5, "긕", 7], ["8361", "긝", 18, "긲긳긵긶긹긻긼"], ["8381", "긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗", 4, "깞깢깣깤깦깧깪깫깭깮깯깱", 6, "깺깾", 5, "꺆", 5, "꺍", 46, "꺿껁껂껃껅", 6, "껎껒", 5, "껚껛껝", 8], ["8441", "껦껧껩껪껬껮", 5, "껵껶껷껹껺껻껽", 8], ["8461", "꼆꼉꼊꼋꼌꼎꼏꼑", 18], ["8481", "꼤", 7, "꼮꼯꼱꼳꼵", 6, "꼾꽀꽄꽅꽆꽇꽊", 5, "꽑", 10, "꽞", 5, "꽦", 18, "꽺", 5, "꾁꾂꾃꾅꾆꾇꾉", 6, "꾒꾓꾔꾖", 5, "꾝", 26, "꾺꾻꾽꾾"], ["8541", "꾿꿁", 5, "꿊꿌꿏", 4, "꿕", 6, "꿝", 4], ["8561", "꿢", 5, "꿪", 5, "꿲꿳꿵꿶꿷꿹", 6, "뀂뀃"], ["8581", "뀅", 6, "뀍뀎뀏뀑뀒뀓뀕", 6, "뀞", 9, "뀩", 26, "끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞", 29, "끾끿낁낂낃낅", 6, "낎낐낒", 5, "낛낝낞낣낤"], ["8641", "낥낦낧낪낰낲낶낷낹낺낻낽", 6, "냆냊", 5, "냒"], ["8661", "냓냕냖냗냙", 6, "냡냢냣냤냦", 10], ["8681", "냱", 22, "넊넍넎넏넑넔넕넖넗넚넞", 4, "넦넧넩넪넫넭", 6, "넶넺", 5, "녂녃녅녆녇녉", 6, "녒녓녖녗녙녚녛녝녞녟녡", 22, "녺녻녽녾녿놁놃", 4, "놊놌놎놏놐놑놕놖놗놙놚놛놝"], ["8741", "놞", 9, "놩", 15], ["8761", "놹", 18, "뇍뇎뇏뇑뇒뇓뇕"], ["8781", "뇖", 5, "뇞뇠", 7, "뇪뇫뇭뇮뇯뇱", 7, "뇺뇼뇾", 5, "눆눇눉눊눍", 6, "눖눘눚", 5, "눡", 18, "눵", 6, "눽", 26, "뉙뉚뉛뉝뉞뉟뉡", 6, "뉪", 4], ["8841", "뉯", 4, "뉶", 5, "뉽", 6, "늆늇늈늊", 4], ["8861", "늏늒늓늕늖늗늛", 4, "늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], ["8881", "늸", 15, "닊닋닍닎닏닑닓", 4, "닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉", 6, "댒댖", 5, "댝", 54, "덗덙덚덝덠덡덢덣"], ["8941", "덦덨덪덬덭덯덲덳덵덶덷덹", 6, "뎂뎆", 5, "뎍"], ["8961", "뎎뎏뎑뎒뎓뎕", 10, "뎢", 5, "뎩뎪뎫뎭"], ["8981", "뎮", 21, "돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩", 18, "돽", 18, "됑", 6, "됙됚됛됝됞됟됡", 6, "됪됬", 7, "됵", 15], ["8a41", "둅", 10, "둒둓둕둖둗둙", 6, "둢둤둦"], ["8a61", "둧", 4, "둭", 18, "뒁뒂"], ["8a81", "뒃", 4, "뒉", 19, "뒞", 5, "뒥뒦뒧뒩뒪뒫뒭", 7, "뒶뒸뒺", 5, "듁듂듃듅듆듇듉", 6, "듑듒듓듔듖", 5, "듞듟듡듢듥듧", 4, "듮듰듲", 5, "듹", 26, "딖딗딙딚딝"], ["8b41", "딞", 5, "딦딫", 4, "딲딳딵딶딷딹", 6, "땂땆"], ["8b61", "땇땈땉땊땎땏땑땒땓땕", 6, "땞땢", 8], ["8b81", "땫", 52, "떢떣떥떦떧떩떬떭떮떯떲떶", 4, "떾떿뗁뗂뗃뗅", 6, "뗎뗒", 5, "뗙", 18, "뗭", 18], ["8c41", "똀", 15, "똒똓똕똖똗똙", 4], ["8c61", "똞", 6, "똦", 5, "똭", 6, "똵", 5], ["8c81", "똻", 12, "뙉", 26, "뙥뙦뙧뙩", 50, "뚞뚟뚡뚢뚣뚥", 5, "뚭뚮뚯뚰뚲", 16], ["8d41", "뛃", 16, "뛕", 8], ["8d61", "뛞", 17, "뛱뛲뛳뛵뛶뛷뛹뛺"], ["8d81", "뛻", 4, "뜂뜃뜄뜆", 33, "뜪뜫뜭뜮뜱", 6, "뜺뜼", 7, "띅띆띇띉띊띋띍", 6, "띖", 9, "띡띢띣띥띦띧띩", 6, "띲띴띶", 5, "띾띿랁랂랃랅", 6, "랎랓랔랕랚랛랝랞"], ["8e41", "랟랡", 6, "랪랮", 5, "랶랷랹", 8], ["8e61", "럂", 4, "럈럊", 19], ["8e81", "럞", 13, "럮럯럱럲럳럵", 6, "럾렂", 4, "렊렋렍렎렏렑", 6, "렚렜렞", 5, "렦렧렩렪렫렭", 6, "렶렺", 5, "롁롂롃롅", 11, "롒롔", 7, "롞롟롡롢롣롥", 6, "롮롰롲", 5, "롹롺롻롽", 7], ["8f41", "뢅", 7, "뢎", 17], ["8f61", "뢠", 7, "뢩", 6, "뢱뢲뢳뢵뢶뢷뢹", 4], ["8f81", "뢾뢿룂룄룆", 5, "룍룎룏룑룒룓룕", 7, "룞룠룢", 5, "룪룫룭룮룯룱", 6, "룺룼룾", 5, "뤅", 18, "뤙", 6, "뤡", 26, "뤾뤿륁륂륃륅", 6, "륍륎륐륒", 5], ["9041", "륚륛륝륞륟륡", 6, "륪륬륮", 5, "륶륷륹륺륻륽"], ["9061", "륾", 5, "릆릈릋릌릏", 15], ["9081", "릟", 12, "릮릯릱릲릳릵", 6, "릾맀맂", 5, "맊맋맍맓", 4, "맚맜맟맠맢맦맧맩맪맫맭", 6, "맶맻", 4, "먂", 5, "먉", 11, "먖", 33, "먺먻먽먾먿멁멃멄멅멆"], ["9141", "멇멊멌멏멐멑멒멖멗멙멚멛멝", 6, "멦멪", 5], ["9161", "멲멳멵멶멷멹", 9, "몆몈몉몊몋몍", 5], ["9181", "몓", 20, "몪몭몮몯몱몳", 4, "몺몼몾", 5, "뫅뫆뫇뫉", 14, "뫚", 33, "뫽뫾뫿묁묂묃묅", 7, "묎묐묒", 5, "묙묚묛묝묞묟묡", 6], ["9241", "묨묪묬", 7, "묷묹묺묿", 4, "뭆뭈뭊뭋뭌뭎뭑뭒"], ["9261", "뭓뭕뭖뭗뭙", 7, "뭢뭤", 7, "뭭", 4], ["9281", "뭲", 21, "뮉뮊뮋뮍뮎뮏뮑", 18, "뮥뮦뮧뮩뮪뮫뮭", 6, "뮵뮶뮸", 7, "믁믂믃믅믆믇믉", 6, "믑믒믔", 35, "믺믻믽믾밁"], ["9341", "밃", 4, "밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], ["9361", "밶밷밹", 6, "뱂뱆뱇뱈뱊뱋뱎뱏뱑", 8], ["9381", "뱚뱛뱜뱞", 37, "벆벇벉벊벍벏", 4, "벖벘벛", 4, "벢벣벥벦벩", 6, "벲벶", 5, "벾벿볁볂볃볅", 7, "볎볒볓볔볖볗볙볚볛볝", 22, "볷볹볺볻볽"], ["9441", "볾", 5, "봆봈봊", 5, "봑봒봓봕", 8], ["9461", "봞", 5, "봥", 6, "봭", 12], ["9481", "봺", 5, "뵁", 6, "뵊뵋뵍뵎뵏뵑", 6, "뵚", 9, "뵥뵦뵧뵩", 22, "붂붃붅붆붋", 4, "붒붔붖붗붘붛붝", 6, "붥", 10, "붱", 6, "붹", 24], ["9541", "뷒뷓뷖뷗뷙뷚뷛뷝", 11, "뷪", 5, "뷱"], ["9561", "뷲뷳뷵뷶뷷뷹", 6, "븁븂븄븆", 5, "븎븏븑븒븓"], ["9581", "븕", 6, "븞븠", 35, "빆빇빉빊빋빍빏", 4, "빖빘빜빝빞빟빢빣빥빦빧빩빫", 4, "빲빶", 4, "빾빿뺁뺂뺃뺅", 6, "뺎뺒", 5, "뺚", 13, "뺩", 14], ["9641", "뺸", 23, "뻒뻓"], ["9661", "뻕뻖뻙", 6, "뻡뻢뻦", 5, "뻭", 8], ["9681", "뻶", 10, "뼂", 5, "뼊", 13, "뼚뼞", 33, "뽂뽃뽅뽆뽇뽉", 6, "뽒뽓뽔뽖", 44], ["9741", "뾃", 16, "뾕", 8], ["9761", "뾞", 17, "뾱", 7], ["9781", "뾹", 11, "뿆", 5, "뿎뿏뿑뿒뿓뿕", 6, "뿝뿞뿠뿢", 89, "쀽쀾쀿"], ["9841", "쁀", 16, "쁒", 5, "쁙쁚쁛"], ["9861", "쁝쁞쁟쁡", 6, "쁪", 15], ["9881", "쁺", 21, "삒삓삕삖삗삙", 6, "삢삤삦", 5, "삮삱삲삷", 4, "삾샂샃샄샆샇샊샋샍샎샏샑", 6, "샚샞", 5, "샦샧샩샪샫샭", 6, "샶샸샺", 5, "섁섂섃섅섆섇섉", 6, "섑섒섓섔섖", 5, "섡섢섥섨섩섪섫섮"], ["9941", "섲섳섴섵섷섺섻섽섾섿셁", 6, "셊셎", 5, "셖셗"], ["9961", "셙셚셛셝", 6, "셦셪", 5, "셱셲셳셵셶셷셹셺셻"], ["9981", "셼", 8, "솆", 5, "솏솑솒솓솕솗", 4, "솞솠솢솣솤솦솧솪솫솭솮솯솱", 11, "솾", 5, "쇅쇆쇇쇉쇊쇋쇍", 6, "쇕쇖쇙", 6, "쇡쇢쇣쇥쇦쇧쇩", 6, "쇲쇴", 7, "쇾쇿숁숂숃숅", 6, "숎숐숒", 5, "숚숛숝숞숡숢숣"], ["9a41", "숤숥숦숧숪숬숮숰숳숵", 16], ["9a61", "쉆쉇쉉", 6, "쉒쉓쉕쉖쉗쉙", 6, "쉡쉢쉣쉤쉦"], ["9a81", "쉧", 4, "쉮쉯쉱쉲쉳쉵", 6, "쉾슀슂", 5, "슊", 5, "슑", 6, "슙슚슜슞", 5, "슦슧슩슪슫슮", 5, "슶슸슺", 33, "싞싟싡싢싥", 5, "싮싰싲싳싴싵싷싺싽싾싿쌁", 6, "쌊쌋쌎쌏"], ["9b41", "쌐쌑쌒쌖쌗쌙쌚쌛쌝", 6, "쌦쌧쌪", 8], ["9b61", "쌳", 17, "썆", 7], ["9b81", "썎", 25, "썪썫썭썮썯썱썳", 4, "썺썻썾", 5, "쎅쎆쎇쎉쎊쎋쎍", 50, "쏁", 22, "쏚"], ["9c41", "쏛쏝쏞쏡쏣", 4, "쏪쏫쏬쏮", 5, "쏶쏷쏹", 5], ["9c61", "쏿", 8, "쐉", 6, "쐑", 9], ["9c81", "쐛", 8, "쐥", 6, "쐭쐮쐯쐱쐲쐳쐵", 6, "쐾", 9, "쑉", 26, "쑦쑧쑩쑪쑫쑭", 6, "쑶쑷쑸쑺", 5, "쒁", 18, "쒕", 6, "쒝", 12], ["9d41", "쒪", 13, "쒹쒺쒻쒽", 8], ["9d61", "쓆", 25], ["9d81", "쓠", 8, "쓪", 5, "쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂", 9, "씍씎씏씑씒씓씕", 6, "씝", 10, "씪씫씭씮씯씱", 6, "씺씼씾", 5, "앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩", 6, "앲앶", 5, "앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], ["9e41", "얖얙얚얛얝얞얟얡", 7, "얪", 9, "얶"], ["9e61", "얷얺얿", 4, "엋엍엏엒엓엕엖엗엙", 6, "엢엤엦엧"], ["9e81", "엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑", 6, "옚옝", 6, "옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉", 6, "왒왖", 5, "왞왟왡", 10, "왭왮왰왲", 5, "왺왻왽왾왿욁", 6, "욊욌욎", 5, "욖욗욙욚욛욝", 6, "욦"], ["9f41", "욨욪", 5, "욲욳욵욶욷욻", 4, "웂웄웆", 5, "웎"], ["9f61", "웏웑웒웓웕", 6, "웞웟웢", 5, "웪웫웭웮웯웱웲"], ["9f81", "웳", 4, "웺웻웼웾", 5, "윆윇윉윊윋윍", 6, "윖윘윚", 5, "윢윣윥윦윧윩", 6, "윲윴윶윸윹윺윻윾윿읁읂읃읅", 4, "읋읎읐읙읚읛읝읞읟읡", 6, "읩읪읬", 7, "읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛", 4, "잢잧", 4, "잮잯잱잲잳잵잶잷"], ["a041", "잸잹잺잻잾쟂", 5, "쟊쟋쟍쟏쟑", 6, "쟙쟚쟛쟜"], ["a061", "쟞", 5, "쟥쟦쟧쟩쟪쟫쟭", 13], ["a081", "쟻", 4, "젂젃젅젆젇젉젋", 4, "젒젔젗", 4, "젞젟젡젢젣젥", 6, "젮젰젲", 5, "젹젺젻젽젾젿졁", 6, "졊졋졎", 5, "졕", 26, "졲졳졵졶졷졹졻", 4, "좂좄좈좉좊좎", 5, "좕", 7, "좞좠좢좣좤"], ["a141", "좥좦좧좩", 18, "좾좿죀죁"], ["a161", "죂죃죅죆죇죉죊죋죍", 6, "죖죘죚", 5, "죢죣죥"], ["a181", "죦", 14, "죶", 5, "죾죿줁줂줃줇", 4, "줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈", 9, "±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢"], ["a241", "줐줒", 5, "줙", 18], ["a261", "줭", 6, "줵", 18], ["a281", "쥈", 7, "쥒쥓쥕쥖쥗쥙", 6, "쥢쥤", 7, "쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], ["a341", "쥱쥲쥳쥵", 6, "쥽", 10, "즊즋즍즎즏"], ["a361", "즑", 6, "즚즜즞", 16], ["a381", "즯", 16, "짂짃짅짆짉짋", 4, "짒짔짗짘짛！", 58, "￦］", 32, "￣"], ["a441", "짞짟짡짣짥짦짨짩짪짫짮짲", 5, "짺짻짽짾짿쨁쨂쨃쨄"], ["a461", "쨅쨆쨇쨊쨎", 5, "쨕쨖쨗쨙", 12], ["a481", "쨦쨧쨨쨪", 28, "ㄱ", 93], ["a541", "쩇", 4, "쩎쩏쩑쩒쩓쩕", 6, "쩞쩢", 5, "쩩쩪"], ["a561", "쩫", 17, "쩾", 5, "쪅쪆"], ["a581", "쪇", 16, "쪙", 14, "ⅰ", 9], ["a5b0", "Ⅰ", 9], ["a5c1", "Α", 16, "Σ", 6], ["a5e1", "α", 16, "σ", 6], ["a641", "쪨", 19, "쪾쪿쫁쫂쫃쫅"], ["a661", "쫆", 5, "쫎쫐쫒쫔쫕쫖쫗쫚", 5, "쫡", 6], ["a681", "쫨쫩쫪쫫쫭", 6, "쫵", 18, "쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃", 7], ["a741", "쬋", 4, "쬑쬒쬓쬕쬖쬗쬙", 6, "쬢", 7], ["a761", "쬪", 22, "쭂쭃쭄"], ["a781", "쭅쭆쭇쭊쭋쭍쭎쭏쭑", 6, "쭚쭛쭜쭞", 5, "쭥", 7, "㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙", 9, "㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰", 9, "㎀", 4, "㎺", 5, "㎐", 4, "Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], ["a841", "쭭", 10, "쭺", 14], ["a861", "쮉", 18, "쮝", 6], ["a881", "쮤", 19, "쮹", 11, "ÆÐªĦ"], ["a8a6", "Ĳ"], ["a8a8", "ĿŁØŒºÞŦŊ"], ["a8b1", "㉠", 27, "ⓐ", 25, "①", 14, "½⅓⅔¼¾⅛⅜⅝⅞"], ["a941", "쯅", 14, "쯕", 10], ["a961", "쯠쯡쯢쯣쯥쯦쯨쯪", 18], ["a981", "쯽", 14, "찎찏찑찒찓찕", 6, "찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀", 27, "⒜", 25, "⑴", 14, "¹²³⁴ⁿ₁₂₃₄"], ["aa41", "찥찦찪찫찭찯찱", 6, "찺찿", 4, "챆챇챉챊챋챍챎"], ["aa61", "챏", 4, "챖챚", 5, "챡챢챣챥챧챩", 6, "챱챲"], ["aa81", "챳챴챶", 29, "ぁ", 82], ["ab41", "첔첕첖첗첚첛첝첞첟첡", 6, "첪첮", 5, "첶첷첹"], ["ab61", "첺첻첽", 6, "쳆쳈쳊", 5, "쳑쳒쳓쳕", 5], ["ab81", "쳛", 8, "쳥", 6, "쳭쳮쳯쳱", 12, "ァ", 85], ["ac41", "쳾쳿촀촂", 5, "촊촋촍촎촏촑", 6, "촚촜촞촟촠"], ["ac61", "촡촢촣촥촦촧촩촪촫촭", 11, "촺", 4], ["ac81", "촿", 28, "쵝쵞쵟А", 5, "ЁЖ", 25], ["acd1", "а", 5, "ёж", 25], ["ad41", "쵡쵢쵣쵥", 6, "쵮쵰쵲", 5, "쵹", 7], ["ad61", "춁", 6, "춉", 10, "춖춗춙춚춛춝춞춟"], ["ad81", "춠춡춢춣춦춨춪", 5, "춱", 18, "췅"], ["ae41", "췆", 5, "췍췎췏췑", 16], ["ae61", "췢", 5, "췩췪췫췭췮췯췱", 6, "췺췼췾", 4], ["ae81", "츃츅츆츇츉츊츋츍", 6, "츕츖츗츘츚", 5, "츢츣츥츦츧츩츪츫"], ["af41", "츬츭츮츯츲츴츶", 19], ["af61", "칊", 13, "칚칛칝칞칢", 5, "칪칬"], ["af81", "칮", 5, "칶칷칹칺칻칽", 6, "캆캈캊", 5, "캒캓캕캖캗캙"], ["b041", "캚", 5, "캢캦", 5, "캮", 12], ["b061", "캻", 5, "컂", 19], ["b081", "컖", 13, "컦컧컩컪컭", 6, "컶컺", 5, "가각간갇갈갉갊감", 7, "같", 4, "갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], ["b141", "켂켃켅켆켇켉", 6, "켒켔켖", 5, "켝켞켟켡켢켣"], ["b161", "켥", 6, "켮켲", 5, "켹", 11], ["b181", "콅", 14, "콖콗콙콚콛콝", 6, "콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], ["b241", "콭콮콯콲콳콵콶콷콹", 6, "쾁쾂쾃쾄쾆", 5, "쾍"], ["b261", "쾎", 18, "쾢", 5, "쾩"], ["b281", "쾪", 5, "쾱", 18, "쿅", 6, "깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], ["b341", "쿌", 19, "쿢쿣쿥쿦쿧쿩"], ["b361", "쿪", 5, "쿲쿴쿶", 5, "쿽쿾쿿퀁퀂퀃퀅", 5], ["b381", "퀋", 5, "퀒", 5, "퀙", 19, "끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫", 4, "낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], ["b441", "퀮", 5, "퀶퀷퀹퀺퀻퀽", 6, "큆큈큊", 5], ["b461", "큑큒큓큕큖큗큙", 6, "큡", 10, "큮큯"], ["b481", "큱큲큳큵", 6, "큾큿킀킂", 18, "뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫", 4, "닳담답닷", 4, "닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], ["b541", "킕", 14, "킦킧킩킪킫킭", 5], ["b561", "킳킶킸킺", 5, "탂탃탅탆탇탊", 5, "탒탖", 4], ["b581", "탛탞탟탡탢탣탥", 6, "탮탲", 5, "탹", 11, "덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], ["b641", "턅", 7, "턎", 17], ["b661", "턠", 15, "턲턳턵턶턷턹턻턼턽턾"], ["b681", "턿텂텆", 5, "텎텏텑텒텓텕", 6, "텞텠텢", 5, "텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], ["b741", "텮", 13, "텽", 6, "톅톆톇톉톊"], ["b761", "톋", 20, "톢톣톥톦톧"], ["b781", "톩", 6, "톲톴톶톷톸톹톻톽톾톿퇁", 14, "래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], ["b841", "퇐", 7, "퇙", 17], ["b861", "퇫", 8, "퇵퇶퇷퇹", 13], ["b881", "툈툊", 5, "툑", 24, "륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많", 4, "맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], ["b941", "툪툫툮툯툱툲툳툵", 6, "툾퉀퉂", 5, "퉉퉊퉋퉌"], ["b961", "퉍", 14, "퉝", 6, "퉥퉦퉧퉨"], ["b981", "퉩", 22, "튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바", 4, "받", 4, "밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], ["ba41", "튍튎튏튒튓튔튖", 5, "튝튞튟튡튢튣튥", 6, "튭"], ["ba61", "튮튯튰튲", 5, "튺튻튽튾틁틃", 4, "틊틌", 5], ["ba81", "틒틓틕틖틗틙틚틛틝", 6, "틦", 9, "틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], ["bb41", "틻", 4, "팂팄팆", 5, "팏팑팒팓팕팗", 4, "팞팢팣"], ["bb61", "팤팦팧팪팫팭팮팯팱", 6, "팺팾", 5, "퍆퍇퍈퍉"], ["bb81", "퍊", 31, "빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], ["bc41", "퍪", 17, "퍾퍿펁펂펃펅펆펇"], ["bc61", "펈펉펊펋펎펒", 5, "펚펛펝펞펟펡", 6, "펪펬펮"], ["bc81", "펯", 4, "펵펶펷펹펺펻펽", 6, "폆폇폊", 5, "폑", 5, "샥샨샬샴샵샷샹섀섄섈섐섕서", 4, "섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], ["bd41", "폗폙", 7, "폢폤", 7, "폮폯폱폲폳폵폶폷"], ["bd61", "폸폹폺폻폾퐀퐂", 5, "퐉", 13], ["bd81", "퐗", 5, "퐞", 25, "숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], ["be41", "퐸", 7, "푁푂푃푅", 14], ["be61", "푔", 7, "푝푞푟푡푢푣푥", 7, "푮푰푱푲"], ["be81", "푳", 4, "푺푻푽푾풁풃", 4, "풊풌풎", 5, "풕", 8, "쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄", 6, "엌엎"], ["bf41", "풞", 10, "풪", 14], ["bf61", "풹", 18, "퓍퓎퓏퓑퓒퓓퓕"], ["bf81", "퓖", 5, "퓝퓞퓠", 7, "퓩퓪퓫퓭퓮퓯퓱", 6, "퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염", 5, "옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], ["c041", "퓾", 5, "픅픆픇픉픊픋픍", 6, "픖픘", 5], ["c061", "픞", 25], ["c081", "픸픹픺픻픾픿핁핂핃핅", 6, "핎핐핒", 5, "핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응", 7, "읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], ["c141", "핤핦핧핪핬핮", 5, "핶핷핹핺핻핽", 6, "햆햊햋"], ["c161", "햌햍햎햏햑", 19, "햦햧"], ["c181", "햨", 31, "점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], ["c241", "헊헋헍헎헏헑헓", 4, "헚헜헞", 5, "헦헧헩헪헫헭헮"], ["c261", "헯", 4, "헶헸헺", 5, "혂혃혅혆혇혉", 6, "혒"], ["c281", "혖", 5, "혝혞혟혡혢혣혥", 7, "혮", 9, "혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], ["c341", "혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝", 4], ["c361", "홢", 4, "홨홪", 5, "홲홳홵", 11], ["c381", "횁횂횄횆", 5, "횎횏횑횒횓횕", 7, "횞횠횢", 5, "횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], ["c441", "횫횭횮횯횱", 7, "횺횼", 7, "훆훇훉훊훋"], ["c461", "훍훎훏훐훒훓훕훖훘훚", 5, "훡훢훣훥훦훧훩", 4], ["c481", "훮훯훱훲훳훴훶", 5, "훾훿휁휂휃휅", 11, "휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], ["c541", "휕휖휗휚휛휝휞휟휡", 6, "휪휬휮", 5, "휶휷휹"], ["c561", "휺휻휽", 6, "흅흆흈흊", 5, "흒흓흕흚", 4], ["c581", "흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵", 6, "흾흿힀힂", 5, "힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], ["c641", "힍힎힏힑", 6, "힚힜힞", 5], ["c6a1", "퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], ["c7a1", "퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], ["c8a1", "혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], ["caa1", "伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], ["cba1", "匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], ["cca1", "瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], ["cda1", "棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], ["cea1", "科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], ["cfa1", "區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], ["d0a1", "鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], ["d1a1", "朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩", 5, "那樂", 4, "諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], ["d2a1", "納臘蠟衲囊娘廊", 4, "乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧", 5, "駑魯", 10, "濃籠聾膿農惱牢磊腦賂雷尿壘", 7, "嫩訥杻紐勒", 5, "能菱陵尼泥匿溺多茶"], ["d3a1", "丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], ["d4a1", "棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], ["d5a1", "蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], ["d6a1", "煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], ["d7a1", "遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], ["d8a1", "立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], ["d9a1", "蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], ["daa1", "汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], ["dba1", "發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], ["dca1", "碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], ["dda1", "孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], ["dea1", "脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], ["dfa1", "傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], ["e0a1", "胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], ["e1a1", "聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], ["e2a1", "戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], ["e3a1", "嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], ["e4a1", "沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], ["e5a1", "櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], ["e6a1", "旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], ["e7a1", "簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], ["e8a1", "烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], ["e9a1", "窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], ["eaa1", "運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], ["eba1", "濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], ["eca1", "議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], ["eda1", "立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], ["eea1", "障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], ["efa1", "煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], ["f0a1", "靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], ["f1a1", "踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], ["f2a1", "咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], ["f3a1", "鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], ["f4a1", "責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], ["f5a1", "椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], ["f6a1", "贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], ["f7a1", "鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], ["f8a1", "阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], ["f9a1", "品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], ["faa1", "行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], ["fba1", "形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], ["fca1", "禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], ["fda1", "爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]
}, function (e) {
    e.exports = [["8740", "䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], ["8767", "綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], ["87a1", "𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], ["8840", "㇀", 4, "𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], ["88a1", "ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], ["8940", "𪎩𡅅"], ["8943", "攊"], ["8946", "丽滝鵎釟"], ["894c", "𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], ["89a1", "琑糼緍楆竉刧"], ["89ab", "醌碸酞肼"], ["89b0", "贋胶𠧧"], ["89b5", "肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], ["89c1", "溚舾甙"], ["89c5", "䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], ["8a40", "𧶄唥"], ["8a43", "𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], ["8a64", "𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], ["8a76", "䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], ["8aa1", "𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], ["8aac", "䠋𠆩㿺塳𢶍"], ["8ab2", "𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], ["8abb", "䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], ["8ac9", "𪘁𠸉𢫏𢳉"], ["8ace", "𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], ["8adf", "𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], ["8af6", "𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], ["8b40", "𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], ["8b55", "𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], ["8ba1", "𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], ["8bde", "𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], ["8c40", "倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], ["8ca1", "𣏹椙橃𣱣泿"], ["8ca7", "爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], ["8cc9", "顨杫䉶圽"], ["8cce", "藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], ["8ce6", "峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], ["8d40", "𠮟"], ["8d42", "𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], ["8da1", "㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], ["8e40", "𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], ["8ea1", "繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], ["8f40", "蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], ["8fa1", "𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], ["9040", "趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], ["90a1", "𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], ["9140", "𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], ["91a1", "鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], ["9240", "𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], ["92a1", "働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], ["9340", "媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], ["93a1", "摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], ["9440", "銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], ["94a1", "㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], ["9540", "𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], ["95a1", "衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], ["9640", "桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], ["96a1", "𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], ["9740", "愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], ["97a1", "𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], ["9840", "𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], ["98a1", "咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], ["9940", "䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], ["99a1", "䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], ["9a40", "鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], ["9aa1", "黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], ["9b40", "𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], ["9b62", "𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], ["9ba1", "椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], ["9c40", "嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], ["9ca1", "㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], ["9d40", "𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], ["9da1", "辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], ["9e40", "𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], ["9ea1", "鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], ["9ead", "𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], ["9ec5", "㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], ["9ef5", "噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], ["9f40", "籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], ["9f4f", "凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], ["9fa1", "椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], ["9fae", "酙隁酜"], ["9fb2", "酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], ["9fc1", "𤤙盖鮝个𠳔莾衂"], ["9fc9", "届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], ["9fdb", "歒酼龥鮗頮颴骺麨麄煺笔"], ["9fe7", "毺蠘罸"], ["9feb", "嘠𪙊蹷齓"], ["9ff0", "跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], ["a040", "𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], ["a055", "𡠻𦸅"], ["a058", "詾𢔛"], ["a05b", "惽癧髗鵄鍮鮏蟵"], ["a063", "蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], ["a073", "坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], ["a0a1", "嵗𨯂迚𨸹"], ["a0a6", "僙𡵆礆匲阸𠼻䁥"], ["a0ae", "矾"], ["a0b0", "糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], ["a0d4", "覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], ["a0e2", "罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], ["a3c0", "␀", 31, "␡"], ["c6a1", "①", 9, "⑴", 9, "ⅰ", 9, "丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー［］✽ぁ", 23], ["c740", "す", 58, "ァアィイ"], ["c7a1", "ゥ", 81, "А", 5, "ЁЖ", 4], ["c840", "Л", 26, "ёж", 25, "⇧↸↹㇏𠃌乚𠂊刂䒑"], ["c8a1", "龰冈龱𧘇"], ["c8cd", "￢￤＇＂㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], ["c8f5", "ʃɐɛɔɵœøŋʊɪ"], ["f9fe", "￭"], ["fa40", "𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], ["faa1", "鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], ["fb40", "𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], ["fba1", "𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], ["fc40", "廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], ["fca1", "𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], ["fd40", "𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], ["fda1", "𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], ["fe40", "鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], ["fea1", "𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer, a = n(64).Transform;

    function o(e, t) {
        this.conv = e, (t = t || {}).decodeStrings = !1, a.call(this, t)
    }

    function r(e, t) {
        this.conv = e, (t = t || {}).encoding = this.encoding = "utf8", a.call(this, t)
    }

    e.exports = function (e) {
        e.encodeStream = function (t, n) {
            return new o(e.getEncoder(t, n), n)
        }, e.decodeStream = function (t, n) {
            return new r(e.getDecoder(t, n), n)
        }, e.supportsStreams = !0, e.IconvLiteEncoderStream = o, e.IconvLiteDecoderStream = r, e._collect = r.prototype.collect
    }, o.prototype = Object.create(a.prototype, {constructor: {value: o}}), o.prototype._transform = function (e, t, n) {
        if ("string" != typeof e) return n(new Error("Iconv encoding stream needs strings as its input."));
        try {
            var i = this.conv.write(e);
            i && i.length && this.push(i), n()
        } catch (e) {
            n(e)
        }
    }, o.prototype._flush = function (e) {
        try {
            var t = this.conv.end();
            t && t.length && this.push(t), e()
        } catch (t) {
            e(t)
        }
    }, o.prototype.collect = function (e) {
        var t = [];
        return this.on("error", e), this.on("data", function (e) {
            t.push(e)
        }), this.on("end", function () {
            e(null, i.concat(t))
        }), this
    }, r.prototype = Object.create(a.prototype, {constructor: {value: r}}), r.prototype._transform = function (e, t, n) {
        if (!i.isBuffer(e)) return n(new Error("Iconv decoding stream needs buffers as its input."));
        try {
            var a = this.conv.write(e);
            a && a.length && this.push(a, this.encoding), n()
        } catch (e) {
            n(e)
        }
    }, r.prototype._flush = function (e) {
        try {
            var t = this.conv.end();
            t && t.length && this.push(t, this.encoding), e()
        } catch (t) {
            e(t)
        }
    }, r.prototype.collect = function (e) {
        var t = "";
        return this.on("error", e), this.on("data", function (e) {
            t += e
        }), this.on("end", function () {
            e(null, t)
        }), this
    }
}, function (e, t, n) {
    "use strict";
    var i = n(33).Buffer;
    e.exports = function (e) {
        var t = void 0;
        e.supportsNodeEncodingsExtension = !(new i(0) instanceof Uint8Array), e.extendNodeEncodings = function () {
            if (!t) {
                if (t = {}, !e.supportsNodeEncodingsExtension) return console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"), void console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");
                var a = {
                    hex: !0,
                    utf8: !0,
                    "utf-8": !0,
                    ascii: !0,
                    binary: !0,
                    base64: !0,
                    ucs2: !0,
                    "ucs-2": !0,
                    utf16le: !0,
                    "utf-16le": !0
                };
                i.isNativeEncoding = function (e) {
                    return e && a[e.toLowerCase()]
                };
                var o = n(33).SlowBuffer;
                if (t.SlowBufferToString = o.prototype.toString, o.prototype.toString = function (n, a, o) {
                    return n = String(n || "utf8").toLowerCase(), i.isNativeEncoding(n) ? t.SlowBufferToString.call(this, n, a, o) : (void 0 === a && (a = 0), void 0 === o && (o = this.length), e.decode(this.slice(a, o), n))
                }, t.SlowBufferWrite = o.prototype.write, o.prototype.write = function (n, a, o, r) {
                    if (isFinite(a)) isFinite(o) || (r = o, o = void 0); else {
                        var s = r;
                        r = a, a = o, o = s
                    }
                    a = +a || 0;
                    var l = this.length - a;
                    if (o ? (o = +o) > l && (o = l) : o = l, r = String(r || "utf8").toLowerCase(), i.isNativeEncoding(r)) return t.SlowBufferWrite.call(this, n, a, o, r);
                    if (n.length > 0 && (o < 0 || a < 0)) throw new RangeError("attempt to write beyond buffer bounds");
                    var u = e.encode(n, r);
                    return u.length < o && (o = u.length), u.copy(this, a, 0, o), o
                }, t.BufferIsEncoding = i.isEncoding, i.isEncoding = function (t) {
                    return i.isNativeEncoding(t) || e.encodingExists(t)
                }, t.BufferByteLength = i.byteLength, i.byteLength = o.byteLength = function (n, a) {
                    return a = String(a || "utf8").toLowerCase(), i.isNativeEncoding(a) ? t.BufferByteLength.call(this, n, a) : e.encode(n, a).length
                }, t.BufferToString = i.prototype.toString, i.prototype.toString = function (n, a, o) {
                    return n = String(n || "utf8").toLowerCase(), i.isNativeEncoding(n) ? t.BufferToString.call(this, n, a, o) : (void 0 === a && (a = 0), void 0 === o && (o = this.length), e.decode(this.slice(a, o), n))
                }, t.BufferWrite = i.prototype.write, i.prototype.write = function (n, a, o, r) {
                    var s = a, l = o, u = r;
                    if (isFinite(a)) isFinite(o) || (r = o, o = void 0); else {
                        var d = r;
                        r = a, a = o, o = d
                    }
                    if (r = String(r || "utf8").toLowerCase(), i.isNativeEncoding(r)) return t.BufferWrite.call(this, n, s, l, u);
                    a = +a || 0;
                    var c = this.length - a;
                    if (o ? (o = +o) > c && (o = c) : o = c, n.length > 0 && (o < 0 || a < 0)) throw new RangeError("attempt to write beyond buffer bounds");
                    var h = e.encode(n, r);
                    return h.length < o && (o = h.length), h.copy(this, a, 0, o), o
                }, e.supportsStreams) {
                    var r = n(64).Readable;
                    t.ReadableSetEncoding = r.prototype.setEncoding, r.prototype.setEncoding = function (t, n) {
                        this._readableState.decoder = e.getDecoder(t, n), this._readableState.encoding = t
                    }, r.prototype.collect = e._collect
                }
            }
        }, e.undoExtendNodeEncodings = function () {
            if (e.supportsNodeEncodingsExtension) {
                if (!t) throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.");
                delete i.isNativeEncoding;
                var a = n(33).SlowBuffer;
                if (a.prototype.toString = t.SlowBufferToString, a.prototype.write = t.SlowBufferWrite, i.isEncoding = t.BufferIsEncoding, i.byteLength = t.BufferByteLength, i.prototype.toString = t.BufferToString, i.prototype.write = t.BufferWrite, e.supportsStreams) {
                    var o = n(64).Readable;
                    o.prototype.setEncoding = t.ReadableSetEncoding, delete o.prototype.collect
                }
                t = void 0
            }
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(111), o = n(59), r = n(110), s = n(259), l = n(5), u = n(650), d = n(508), c = n(648), h = n(220),
        f = n(221), p = n(1).default.getLogger("Thunder.VipDownload.download-manager"), g = r.DkHelperNS.getHelper(),
        k = o.UserHelperNS.getHelper(), m = s.TaskManagerNS.getTaskManager(), T = h.KuainiaoManagerNS.getManager(),
        v = f.TaskEventContainerNS.getEventContainer();

    class w {
        constructor() {
            this.mExpandTaskId = void 0
        }

        get expandTaskId() {
            return this.mExpandTaskId
        }

        init() {
            k.attachListener(o.UserEventNS.authorityChanged, e => i(this, void 0, void 0, function* () {
                yield this.onUserAuthorityChanged(e)
            })), this.attachDkEvents(), T.attachListener(h.KuainiaoEventNS.statusChanged, e => {
                this.onKuaiNiaoStatusChanged(e)
            }), this.loadTryDataBase().catch()
        }

        onTaskExpand(e) {
            return i(this, void 0, void 0, function* () {
                p.information("onTaskExpand", "taskId", e), this.mExpandTaskId = e;
                let t = yield m.createTask(e);
                t && (t.onExpand(), v.onEvent(f.TaskEventNS.taskExpand, e))
            })
        }

        onTaskUnExpand(e) {
            p.information("onTaskUnExpand", "taskId", e), e === this.mExpandTaskId && (this.mExpandTaskId = void 0)
        }

        enterAcclerate(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = yield m.createTask(e);
                n && n.getTaskExtra().enterAcclerate(t)
            })
        }

        createVipTaskInfo(e) {
            let t = null, n = m.getTask(e);
            if (n) {
                t = n.getTaskExtra().createVipTaskInfo()
            }
            return t
        }

        getVipTaskInfo(e) {
            let t = null, n = m.getTask(e);
            if (n) {
                t = n.getTaskExtra().getVipTaskInfo()
            }
            return t
        }

        attachDkEvents() {
            g.attachListener(r.DkEventNS.taskCompleted, e => {
                this.onTaskCompleted(e)
            }), g.attachListener(r.DkEventNS.taskRemoved, e => {
                this.onTaskRemoved(e)
            }), g.attachListener(r.DkEventNS.taskStatusChanged, (e, t) => i(this, void 0, void 0, function* () {
                yield this.onTaskStatusChanged(e, t)
            })), g.attachListener(r.DkEventNS.taskDetailChanged, (e, t) => {
                this.onTaskDetailChanged(e, t)
            }), g.attachListener(r.DkEventNS.taskDcdnStatusChanged, (e, t) => {
                this.onTaskDcdnStatusChanged(e, t)
            }), g.attachListener(r.DkEventNS.btSubFileDetailChanged, (e, t) => {
                this.onBtSubFileDetailChanged(e, t)
            }), g.attachListener(r.DkEventNS.btSubFileForbidden, e => {
                this.onBtSubFileForbidden(e)
            })
        }

        onUserAuthorityChanged(e) {
            return i(this, void 0, void 0, function* () {
                if (e ? yield this.loadVipDataBase() : this.unloadVipDataBase(), k.offlineAuthority ? yield this.loadOfflineDataBase() : this.unloadOfflineDataBase(), m.getTaskMap().forEach(function (t) {
                    t.onUserAuthorityChanged(e)
                }), this.mExpandTaskId) {
                    let e = m.getTask(this.mExpandTaskId);
                    e && e.onExpand()
                }
            })
        }

        loadVipDataBase() {
            return i(this, void 0, void 0, function* () {
                p.information("loadVipDataBase");
                let e = u.VipTaskDataBaseNS.getTable();
                yield e.init(k.userId);
                let t = yield e.getTaskIds();
                for (let n of t) {
                    let t = yield g.IsTaskExist(n);
                    if (t) {
                        let e = yield g.getTaskStatus(n);
                        e !== l.DownloadKernel.TaskStatus.Succeeded && e !== l.DownloadKernel.TaskStatus.Seeding || (t = !1)
                    }
                    t ? yield this.enterAcclerate(n, a.VipDownloadDefineNS.VipTaskType.Vip) : yield e.removeTask(n, -2)
                }
            })
        }

        unloadVipDataBase() {
            u.VipTaskDataBaseNS.getTable().clear()
        }

        loadOfflineDataBase() {
            return i(this, void 0, void 0, function* () {
                p.information("loadOfflineDataBase");
                let e = c.OfflineTaskDataBaseNS.getTable();
                yield e.init(k.userId);
                let t = yield e.getTaskIds();
                for (let n of t) {
                    let t = yield g.IsTaskExist(n);
                    if (t) {
                        let e = yield g.getTaskStatus(n);
                        e !== l.DownloadKernel.TaskStatus.Succeeded && e !== l.DownloadKernel.TaskStatus.Seeding || (t = !1)
                    }
                    t || (yield e.removeTask(n, -2))
                }
            })
        }

        unloadOfflineDataBase() {
            c.OfflineTaskDataBaseNS.getTable().clear()
        }

        loadTryDataBase() {
            return i(this, void 0, void 0, function* () {
                p.information("loadTryDataBase"), yield d.TryTaskDataBaseNS.getTable().init("0")
            })
        }

        onTaskCompleted(e) {
            let t = m.getTask(e);
            t && t.onTaskCompleted(), m.deleteTask(e)
        }

        onTaskRemoved(e) {
            let t = m.getTask(e);
            t && t.onTaskRemoved(), m.deleteTask(e)
        }

        onTaskStatusChanged(e, t) {
            return i(this, void 0, void 0, function* () {
                switch (t) {
                    case l.DownloadKernel.TaskStatus.DestroyPending:
                    case l.DownloadKernel.TaskStatus.Succeeded:
                        break;
                    default:
                        let n = yield m.createTask(e);
                        n && (yield n.onTaskStatusChanged(t))
                }
            })
        }

        onTaskDcdnStatusChanged(e, t) {
            let n = m.getTask(e);
            n && n.onTaskDcdnStatusChanged(-1, t)
        }

        onTaskDetailChanged(e, t) {
            let n = m.getTask(e);
            n && n.onTaskDetailChanged(t)
        }

        onBtSubFileDetailChanged(e, t) {
            let n = m.getTask(e);
            n && n.onBtSubFileDetailChanged(e, t)
        }

        onBtSubFileForbidden(e) {
            p.information("onBtSubFileForbidden", e), v.onEvent(f.TaskEventNS.btSubFileForbidden, e)
        }

        onKuaiNiaoStatusChanged(e) {
            m.getTaskMap().forEach(function (t) {
                let n = t.getTaskExtra();
                n.careKuaiNiao && n.onKuaiNiaoStatusChanged(e)
            })
        }
    }

    t.DownloadManager = w, function (e) {
        const t = new w;
        e.getDownloadManager = function () {
            return t
        }
    }(t.DownloadManagerNS || (t.DownloadManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(48), o = n(699), r = a.PluginHelperNS.getHelper(), s = n(1), l = n(700),
        u = s.default.getLogger("Thunder.VipDownload.sqlite-table"), d = "584C535343444E2E";

    class c {
        constructor() {
            this.mUserId = void 0, this.mName = "", this.mJsonify = !1, this.mEncrypt = !1, this.mEnable = !1
        }

        static execSqlite(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = void 0;
                    r.nativeCall ? r.nativeCall.CallNativeFunction("ExecSqlite", e, (e, i) => {
                        0 === e && (n = i), t(n)
                    }) : t(n)
                })
            })
        }

        static querySqlite(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    let n = null;
                    r.nativeCall ? r.nativeCall.CallNativeFunction("QuerySqlite", e, (e, i) => {
                        0 === e && (n = i), t(n)
                    }) : t(n)
                })
            })
        }

        set enable(e) {
            this.mEnable = e
        }

        get enable() {
            return this.mEnable
        }

        set userId(e) {
            this.mUserId = e
        }

        get userId() {
            return this.mUserId
        }

        set name(e) {
            this.mName = e
        }

        get name() {
            return this.mName
        }

        get tableName() {
            let e = void 0;
            return this.userId && this.name && (e = "AccelerateTaskMap" + this.userId + "_" + this.name), e
        }

        get jsonify() {
            return this.mJsonify
        }

        set jsonify(e) {
            this.mJsonify = e
        }

        get encrypt() {
            return this.mEncrypt
        }

        set encrypt(e) {
            this.mEncrypt = e
        }

        init(e) {
            return i(this, void 0, void 0, function* () {
                this.userId = e;
                let t = yield this.isTableExist();
                u.information("table exist", t), t || (yield this.createTable()), this.enable = !0
            })
        }

        clear() {
            this.userId = void 0, this.enable = !1
        }

        createTable() {
            return i(this, void 0, void 0, function* () {
                let e = -1, t = this.tableName;
                if (t) {
                    let n = `create table ${t}(LocalTaskId BIGINT, AcclerateTaskId BIGINT, LocalSubFileIndex INT, UserData NVARCHAR, primary key(LocalTaskId,LocalSubFileIndex))`;
                    u.information("command", n), e = yield c.execSqlite(n), u.information("createTable", e)
                }
                return e
            })
        }

        isTableExist() {
            return i(this, void 0, void 0, function* () {
                let e = !1, t = this.tableName;
                if (t) {
                    let n = `select count(*) from sqlite_master where type='table' and name='${t}'`;
                    u.information("command", n);
                    let i = yield c.querySqlite(n);
                    if (i && i.length > 0) {
                        let t = i[0];
                        if (t && t.length > 0) {
                            let n = t[0].value;
                            n && Number(n).valueOf() > 0 && (e = !0)
                        }
                    }
                }
                return e
            })
        }

        setUserData(e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = -1, a = this.tableName;
                if (!this.enable || !a) return i;
                let r = "null";
                n && (r = this.jsonify ? JSON.stringify(n) : l.stringify(n), this.encrypt && (r = o.AesCryptoNS.encryptString(r, d)), r = `'${r}'`);
                let s = void 0, h = yield this.isTaskExist(e, t);
                return u.information("task exist", h), s = h ? `update ${a} set UserData=${r} where LocalTaskId=${e} and LocalSubFileIndex=${t}` : `insert into ${a} values(${e}, -1, ${t}, ${r})`, u.information("command", s), i = yield c.execSqlite(s)
            })
        }

        getUserData(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = null, i = this.tableName;
                if (!this.enable || !i) return n;
                let a = `select UserData from ${i} where LocalTaskId=${e} and LocalSubFileIndex=${t}`;
                u.information("command", a);
                let r = yield c.querySqlite(a);
                if (r && r.length > 0) {
                    let e = r[0];
                    if (e && e.length > 0) {
                        let t = e[0].value;
                        if (t) if (this.encrypt && (t = o.AesCryptoNS.decryptString(t, d)), this.jsonify) try {
                            n = JSON.parse(t)
                        } catch (e) {
                            u.warning(e)
                        } else n = t
                    }
                }
                return n
            })
        }

        removeTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = -1, i = this.tableName;
                if (!this.enable || !i) return n;
                let a = void 0;
                return a = -2 === t ? `delete from ${i} where LocalTaskId=${e}` : `delete from ${i} where LocalTaskId=${e} and LocalSubFileIndex=${t}`, u.information("command", a), n = yield c.execSqlite(a), u.information("removeTask", n), n
            })
        }

        getTaskIds() {
            return i(this, void 0, void 0, function* () {
                let e = [], t = this.tableName;
                if (!this.enable || !t) return e;
                let n = `select distinct LocalTaskId from ${t}`;
                u.information("command", n);
                let i = yield c.querySqlite(n);
                return i && i.length > 0 && i.forEach(function (t) {
                    if (t && t.length > 0) {
                        let n = t[0];
                        if (n.value) {
                            let t = Number(n.value).valueOf();
                            e.push(t)
                        }
                    }
                }), e
            })
        }

        getTaskIndexs(e) {
            return i(this, void 0, void 0, function* () {
                let t = [], n = this.tableName;
                if (!this.enable || !n) return t;
                let i = `select distinct LocalSubFileIndex from ${n} where LocalTaskId=${e}`;
                u.information("command", i);
                let a = yield c.querySqlite(i);
                return a && a.length > 0 && a.forEach(function (e) {
                    if (e && e.length > 0) {
                        let n = e[0];
                        if (n.value) {
                            let e = Number(n.value).valueOf();
                            t.push(e)
                        }
                    }
                }), t
            })
        }

        isTaskExist(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1, i = this.tableName;
                if (!this.enable || !i) return n;
                let a = `select count(*) from ${i} where LocalTaskId=${e} and LocalSubFileIndex=${t}`;
                u.information("command", a);
                let o = yield c.querySqlite(a);
                if (o && o.length > 0) {
                    let e = o[0];
                    if (e && e.length > 0) {
                        let t = e[0].value;
                        t && Number(t).valueOf() > 0 && (n = !0)
                    }
                }
                return n
            })
        }
    }

    t.SqliteTable = c
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(709), a = n(508), o = n(25), r = n(48), s = a.TryTaskDataBaseNS.getTable();

    class l {
        constructor() {
            this.mTryTaskId = void 0, this.mLeftCount = 100, this.mTasks = new Map
        }

        get taskId() {
            return this.mTryTaskId
        }

        get chances() {
            return this.mLeftCount
        }

        setQueryData(e, t, n) {
            let i = this.createTask(e);
            void 0 !== n.leftCount && (this.mLeftCount = n.leftCount), 0 === n.result && (i.subId = t, i.trialKey = n.trialKey, i.createTime = r.PluginHelperNS.getHelper().currentTime, i.expireTime = n.expireTime, i.type = n.type)
        }

        setTaskId(e) {
            this.mTryTaskId = e
        }

        removeTaskId(e) {
            this.mTryTaskId === e && (this.mTryTaskId = void 0)
        }

        setCommitData(e, t) {
            let n = this.getTask(e);
            if (n) if (n.commited = !0, 0 !== t.result) n.error = t; else {
                n.error = null, n.trialVerify = t.verify, this.mLeftCount -= 1;
                let e = {tryDate: (new Date).toDateString()};
                s.setUserData(this.taskId, -1, e).catch();
                let i = r.PluginHelperNS.getHelper().currentTime;
                o.ConfigNS.setValue("VipDownload", "LastTryEnterTime", i)
            }
        }

        setTokenData(e, t) {
            let n = this.getTask(e);
            n && (0 !== t.result ? n.error = t : (n.error = null, n.token = t.token, n.tokenExpire = t.expire, n.maxTime = t.maxTime))
        }

        createTask(e) {
            let t = new i.TaskCache;
            return this.mTasks.set(e, t), t
        }

        getTask(e) {
            return this.mTasks.get(e)
        }

        removeTask(e, t) {
            t && s.removeTask(e, -2).catch(), this.mTasks.delete(e)
        }
    }

    t.TryCacheManager = l, function (e) {
        const t = new l;
        e.getCacheManager = function () {
            return t
        }
    }(t.TryTaskCacheNS || (t.TryTaskCacheNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(506);
    !function (e) {
        const t = new i.SqliteTable;
        t.name = "try", t.encrypt = !0, t.jsonify = !0, e.getTable = function () {
            return t
        }
    }(t.TryTaskDataBaseNS || (t.TryTaskDataBaseNS = {}))
}, function (e, t) {
    (function () {
        t.defaults = {
            .1: {
                explicitCharkey: !1,
                trim: !0,
                normalize: !0,
                normalizeTags: !1,
                attrkey: "@",
                charkey: "#",
                explicitArray: !1,
                ignoreAttrs: !1,
                mergeAttrs: !1,
                explicitRoot: !1,
                validator: null,
                xmlns: !1,
                explicitChildren: !1,
                childkey: "@@",
                charsAsChildren: !1,
                includeWhiteChars: !1,
                async: !1,
                strict: !0,
                attrNameProcessors: null,
                attrValueProcessors: null,
                tagNameProcessors: null,
                valueProcessors: null,
                emptyTag: ""
            },
            .2: {
                explicitCharkey: !1,
                trim: !1,
                normalize: !1,
                normalizeTags: !1,
                attrkey: "$",
                charkey: "_",
                explicitArray: !0,
                ignoreAttrs: !1,
                mergeAttrs: !1,
                explicitRoot: !0,
                validator: null,
                xmlns: !1,
                explicitChildren: !1,
                preserveChildrenOrder: !1,
                childkey: "$$",
                charsAsChildren: !1,
                includeWhiteChars: !1,
                async: !1,
                strict: !0,
                attrNameProcessors: null,
                attrValueProcessors: null,
                tagNameProcessors: null,
                valueProcessors: null,
                rootName: "root",
                xmldec: {version: "1.0", encoding: "UTF-8", standalone: !0},
                doctype: null,
                renderOpts: {pretty: !0, indent: "  ", newline: "\n"},
                headless: !1,
                chunkSize: 1e4,
                emptyTag: "",
                cdata: !1
            }
        }
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s, l, u, d, c, h, f, p, g = {}.hasOwnProperty;
        l = n(264), u = n(265), t = n(262), i = n(263), d = n(261), h = n(270), f = n(271), c = n(272), a = n(266), o = n(268), r = n(267), s = n(269), p = n(655), e.exports = function (e) {
            function n(e) {
                n.__super__.constructor.call(this, e)
            }

            return function (e, t) {
                for (var n in t) g.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, p), n.prototype.document = function (e) {
                var t, n, a, o, r;
                for (this.textispresent = !1, o = "", n = 0, a = (r = e.children).length; n < a; n++) t = r[n], o += function () {
                    switch (!1) {
                        case!(t instanceof l):
                            return this.declaration(t);
                        case!(t instanceof u):
                            return this.docType(t);
                        case!(t instanceof i):
                            return this.comment(t);
                        case!(t instanceof c):
                            return this.processingInstruction(t);
                        default:
                            return this.element(t, 0)
                    }
                }.call(this);
                return this.pretty && o.slice(-this.newline.length) === this.newline && (o = o.slice(0, -this.newline.length)), o
            }, n.prototype.attribute = function (e) {
                return " " + e.name + '="' + e.value + '"'
            }, n.prototype.cdata = function (e, t) {
                return this.space(t) + "<![CDATA[" + e.text + "]]>" + this.newline
            }, n.prototype.comment = function (e, t) {
                return this.space(t) + "\x3c!-- " + e.text + " --\x3e" + this.newline
            }, n.prototype.declaration = function (e, t) {
                var n;
                return n = this.space(t), n += '<?xml version="' + e.version + '"', null != e.encoding && (n += ' encoding="' + e.encoding + '"'), null != e.standalone && (n += ' standalone="' + e.standalone + '"'), n += this.spacebeforeslash + "?>", n += this.newline
            }, n.prototype.docType = function (e, n) {
                var l, u, d, h, f;
                if (n || (n = 0), h = this.space(n), h += "<!DOCTYPE " + e.root().name, e.pubID && e.sysID ? h += ' PUBLIC "' + e.pubID + '" "' + e.sysID + '"' : e.sysID && (h += ' SYSTEM "' + e.sysID + '"'), e.children.length > 0) {
                    for (h += " [", h += this.newline, u = 0, d = (f = e.children).length; u < d; u++) l = f[u], h += function () {
                        switch (!1) {
                            case!(l instanceof a):
                                return this.dtdAttList(l, n + 1);
                            case!(l instanceof o):
                                return this.dtdElement(l, n + 1);
                            case!(l instanceof r):
                                return this.dtdEntity(l, n + 1);
                            case!(l instanceof s):
                                return this.dtdNotation(l, n + 1);
                            case!(l instanceof t):
                                return this.cdata(l, n + 1);
                            case!(l instanceof i):
                                return this.comment(l, n + 1);
                            case!(l instanceof c):
                                return this.processingInstruction(l, n + 1);
                            default:
                                throw new Error("Unknown DTD node type: " + l.constructor.name)
                        }
                    }.call(this);
                    h += "]"
                }
                return h += this.spacebeforeslash + ">", h += this.newline
            }, n.prototype.element = function (e, n) {
                var a, o, r, s, l, u, p, k, m, T, v, w, y;
                for (p in n || (n = 0), y = !1, this.textispresent ? (this.newline = "", this.pretty = !1) : (this.newline = this.newlinedefault, this.pretty = this.prettydefault), k = "", k += (w = this.space(n)) + "<" + e.name, m = e.attributes) g.call(m, p) && (a = m[p], k += this.attribute(a));
                if (0 === e.children.length || e.children.every(function (e) {
                    return "" === e.value
                })) this.allowEmpty ? k += "></" + e.name + ">" + this.newline : k += this.spacebeforeslash + "/>" + this.newline; else if (this.pretty && 1 === e.children.length && null != e.children[0].value) k += ">", k += e.children[0].value, k += "</" + e.name + ">" + this.newline; else {
                    if (this.dontprettytextnodes) for (r = 0, l = (T = e.children).length; r < l; r++) if (null != (o = T[r]).value) {
                        this.textispresent++, y = !0;
                        break
                    }
                    for (this.textispresent && (this.newline = "", this.pretty = !1, w = this.space(n)), k += ">" + this.newline, s = 0, u = (v = e.children).length; s < u; s++) o = v[s], k += function () {
                        switch (!1) {
                            case!(o instanceof t):
                                return this.cdata(o, n + 1);
                            case!(o instanceof i):
                                return this.comment(o, n + 1);
                            case!(o instanceof d):
                                return this.element(o, n + 1);
                            case!(o instanceof h):
                                return this.raw(o, n + 1);
                            case!(o instanceof f):
                                return this.text(o, n + 1);
                            case!(o instanceof c):
                                return this.processingInstruction(o, n + 1);
                            default:
                                throw new Error("Unknown XML node type: " + o.constructor.name)
                        }
                    }.call(this);
                    y && this.textispresent--, this.textispresent || (this.newline = this.newlinedefault, this.pretty = this.prettydefault), k += w + "</" + e.name + ">" + this.newline
                }
                return k
            }, n.prototype.processingInstruction = function (e, t) {
                var n;
                return n = this.space(t) + "<?" + e.target, e.value && (n += " " + e.value), n += this.spacebeforeslash + "?>" + this.newline
            }, n.prototype.raw = function (e, t) {
                return this.space(t) + e.value + this.newline
            }, n.prototype.text = function (e, t) {
                return this.space(t) + e.value + this.newline
            }, n.prototype.dtdAttList = function (e, t) {
                var n;
                return n = this.space(t) + "<!ATTLIST " + e.elementName + " " + e.attributeName + " " + e.attributeType, "#DEFAULT" !== e.defaultValueType && (n += " " + e.defaultValueType), e.defaultValue && (n += ' "' + e.defaultValue + '"'), n += this.spacebeforeslash + ">" + this.newline
            }, n.prototype.dtdElement = function (e, t) {
                return this.space(t) + "<!ELEMENT " + e.name + " " + e.value + this.spacebeforeslash + ">" + this.newline
            }, n.prototype.dtdEntity = function (e, t) {
                var n;
                return n = this.space(t) + "<!ENTITY", e.pe && (n += " %"), n += " " + e.name, e.value ? n += ' "' + e.value + '"' : (e.pubID && e.sysID ? n += ' PUBLIC "' + e.pubID + '" "' + e.sysID + '"' : e.sysID && (n += ' SYSTEM "' + e.sysID + '"'), e.nData && (n += " NDATA " + e.nData)), n += this.spacebeforeslash + ">" + this.newline
            }, n.prototype.dtdNotation = function (e, t) {
                var n;
                return n = this.space(t) + "<!NOTATION " + e.name, e.pubID && e.sysID ? n += ' PUBLIC "' + e.pubID + '" "' + e.sysID + '"' : e.pubID ? n += ' PUBLIC "' + e.pubID + '"' : e.sysID && (n += ' SYSTEM "' + e.sysID + '"'), n += this.spacebeforeslash + ">" + this.newline
            }, n.prototype.openNode = function (e, t) {
                var n, i, a, o;
                if (t || (t = 0), e instanceof d) {
                    for (i in a = this.space(t) + "<" + e.name, o = e.attributes) g.call(o, i) && (n = o[i], a += this.attribute(n));
                    return a += (e.children ? ">" : "/>") + this.newline
                }
                return a = this.space(t) + "<!DOCTYPE " + e.rootNodeName, e.pubID && e.sysID ? a += ' PUBLIC "' + e.pubID + '" "' + e.sysID + '"' : e.sysID && (a += ' SYSTEM "' + e.sysID + '"'), a += (e.children ? " [" : ">") + this.newline
            }, n.prototype.closeNode = function (e, t) {
                switch (t || (t = 0), !1) {
                    case!(e instanceof d):
                        return this.space(t) + "</" + e.name + ">" + this.newline;
                    case!(e instanceof u):
                        return this.space(t) + "]>" + this.newline
                }
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(55), r = n(11), s = n(1), l = n(54), u = n(5), d = n(28), c = n(32), h = n(86), f = n(37),
        p = n(20), g = n(3), k = d.DownloadKernelTaskManager.getTaskManager(),
        m = c.DownloadKernelEventManager.getEventManager(), T = s.default.getLogger("SubtiteManager");
    !function (e) {
        const t = a.resolve(__profilesDir, "SubTitleDownload/"),
            n = a.resolve(__profilesDir, "SubTitleDownload/subtitledata.json");

        class s extends l.default {
            constructor() {
                super(...arguments), this.subtitleData = {}, this.taskStatusChangedEventTable = []
            }

            init() {
                return i(this, void 0, void 0, function* () {
                    T.information("Init");
                    let e = yield r.FileSystemAWNS.existsAW(n);
                    if (e) {
                        let e = yield r.FileSystemAWNS.readFileAW(n);
                        if (e) {
                            try {
                                this.subtitleData = JSON.parse(e.toString())
                            } catch (e) {
                                T.warning(e)
                            }
                            T.information("Init, subtitle data", this.subtitleData)
                        }
                    } else (e = yield r.FileSystemAWNS.mkdirsAW(t)) && (yield r.FileSystemAWNS.writeFileAW(n, "{}"));
                    g.remote.ipcMain.on(p.ThunderChannelList.channelRMGetSutitleByCid, (e, t, n) => i(this, void 0, void 0, function* () {
                        T.information("channelRMGetSutitleByCid cid and taskid ", t, n);
                        let i = yield this.querySubtitleByCid(t, n);
                        T.information("send channelMRGetSutitleByCidResult"), e.sender.send(p.ThunderChannelList.channelMRGetSutitleByCidResult, i)
                    })), g.remote.ipcMain.on(p.ThunderChannelList.channelRMGetSutitleByName, (e, t, n) => i(this, void 0, void 0, function* () {
                        T.information("channelRMGetSutitleByName name and taskid ", t, n);
                        let i = yield this.querySubtitleByName(t, n);
                        T.information("send channelMRGetSutitleByNameResult"), e.sender.send(p.ThunderChannelList.channelMRGetSutitleByNameResult, i)
                    })), g.remote.ipcMain.on(p.ThunderChannelList.channelRMDownloadSutitle, (e, t, n, a) => i(this, void 0, void 0, function* () {
                        T.information("channelRMDownloadSutitle taskid ", n), yield this.downloadSubtitle(t, n, a)
                    })), g.remote.ipcMain.on(p.ThunderChannelList.channelRMGetDisplayName, (e, t) => i(this, void 0, void 0, function* () {
                        T.information("channelRMGetDisplayName taskid ", t);
                        let n = this.getDisaplayName(t);
                        e.sender.send(p.ThunderChannelList.channelMRGetDisplayNameResult, n)
                    }))
                })
            }

            getDisaplayName(e) {
                let t = [], n = k.getTaskFromTaskId(e), i = n.getTaskBaseInfo(), a = n.getType();
                if (a === u.DownloadKernel.TaskType.P2sp || a === u.DownloadKernel.TaskType.Emule) {
                    let e = i.taskName, a = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.Cid);
                    T.information(" fileName: ", e, " cid: ", a);
                    let o = {fileName: e, cid: a};
                    o && t.push(o)
                } else if (a === u.DownloadKernel.TaskType.Bt) {
                    let e = n.getExtraObject();
                    if (0 === e.getDownloadFile().length) return null;
                    let i = e.getBtFileList();
                    for (let [e, n]of i) {
                        let i = n.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.FileName);
                        if (f.TaskUtilHelper.getTaskFileType(i) === f.TaskUtilHelper.FileExtType.Video) {
                            let a = n.getBtFileAttribute(u.DownloadKernel.BtFileAttribute.Cid);
                            T.information("btfile inde: ", e, " fileName: ", i, " cid: ", a);
                            let o = {fileName: i, cid: a};
                            o && t.push(o)
                        }
                    }
                } else if (a === u.DownloadKernel.TaskType.Group) {
                    let e = n.getExtraObject(), i = e.getSubTaskCount();
                    for (let n = 0; n < i; ++n) {
                        let i = e.getSubTaskByIndex(n), a = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName);
                        if (f.TaskUtilHelper.getTaskFileType(a) === f.TaskUtilHelper.FileExtType.Video) {
                            let e = i.getTaskAttribute(u.DownloadKernel.TaskAttribute.Cid);
                            T.information(" fileName: ", a, " cid: ", e);
                            let n = {fileName: a, cid: e};
                            n && t.push(n)
                        }
                    }
                }
                return T.information("getDisaplayName ret ", t), t
            }

            querySubtitleByCid(e, t) {
                return i(this, void 0, void 0, function* () {
                    T.information("querySubtitleByCid");
                    let n = [], i = null;
                    try {
                        i = yield o.default.get(`http://sub.xmp.sandai.net:8000/subxl/${e}.json`), T.information("response: ", i)
                    } catch (e) {
                        T.warning(e)
                    }
                    if (null !== i && void 0 !== i.status && 200 === i.status && void 0 !== i.data && null !== i.data) {
                        T.information("sublist: ", i.data.sublist);
                        let e = i.data.sublist;
                        if (e && e.length > 1) for (let i of e) {
                            let e = {scid: "", surl: "", sname: "", language: "", path: "", rate: 0, status: 0};
                            e.scid = i.scid, e.surl = i.surl, e.sname = i.sname, e.language = i.language, e.rate = i.rate, (yield this.isAlreadyDownload(e.scid, t)) ? e.status = 1 : e.status = 0, e && n.push(e)
                        }
                    }
                    return n
                })
            }

            querySubtitleByName(e, t) {
                return i(this, void 0, void 0, function* () {
                    T.information("querySubtitleByName");
                    let n = [];
                    e = encodeURI(e);
                    let i = null;
                    try {
                        i = yield o.default.get(`http://subtitle.kankan.xunlei.com:8000/search.json/mname=${e}`), T.information("querySubtitleByName response: ", i)
                    } catch (e) {
                        T.warning(e)
                    }
                    if (null !== i && void 0 !== i.status && 200 === i.status && void 0 !== i.data && null !== i.data) {
                        let e = i.data.sublist;
                        if (e && e.length >= 1) for (let i of e) if (i.scid) {
                            let e = {scid: "", surl: "", sname: "", language: "", path: "", rate: 0, status: 0};
                            e.scid = i.scid, e.surl = i.surl, e.sname = i.sname, e.language = i.language;
                            let a = parseInt(i.simility, 10), o = 0;
                            o = (a *= 100) < 15 ? 0 : a < 35 ? 1 : a < 55 ? 2 : a < 85 ? 3 : a < 92 ? 4 : 5, e.rate = o, (yield this.isAlreadyDownload(e.scid, t)) ? e.status = 1 : e.status = 0, e && n.push(e)
                        }
                    }
                    return n
                })
            }

            downloadSubtitle(e, t, n) {
                return i(this, void 0, void 0, function* () {
                    T.information("downloadSubtitle");
                    let i = e.surl, o = i.substring(i.lastIndexOf(".")),
                        r = n.substring(0, n.lastIndexOf(".")) + ".XLSUB" + o, s = this.getSaveDir(t);
                    T.information("downloadSubtitle fileName", r), T.information("downloadSubtitle filePath", s);
                    let l = a.join(s, r);
                    T.information("downloadSubtitle:", s, l);
                    let d = {taskBaseInfo: {savePath: s, taskName: r}, p2spTaskInfo: {url: i}, isBackground: !0},
                        c = yield k.createTask(u.DownloadKernel.TaskType.P2sp, d);
                    if (null !== c) {
                        let n = c.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskId);
                        this.attachTaskStatusChangedEvent(n, e, t), h.DowloadDispatchNS.startTask(n)
                    }
                })
            }

            save(e) {
                return i(this, void 0, void 0, function* () {
                    T.information("save"), T.information(e);
                    let t = JSON.stringify(e, void 0, 2);
                    T.information("save jsonStr: ", t), yield r.FileSystemAWNS.writeFileAW(n, t)
                })
            }

            attachTaskStatusChangedEvent(e, t, n) {
                T.information("Sunbtitle taskId: ", e), T.information("item: ", t), void 0 !== this.taskStatusChangedEventTable[e] && null !== this.taskStatusChangedEventTable[e] || (this.taskStatusChangedEventTable[e] = m.attachTaskEvent(u.DownloadKernel.TaskEventType.StatusChanged, (...o) => i(this, void 0, void 0, function* () {
                    let i = !1;
                    do {
                        if (!o) {
                            T.information("args is null");
                            break
                        }
                        if (o[0] !== u.DownloadKernel.TaskEventType.StatusChanged) {
                            T.information("args[0] is not StatusChanged");
                            break
                        }
                        let r = o[1];
                        if (!r) {
                            T.information("taskList is null");
                            break
                        }
                        for (let o = 0; o < r.length; ++o) {
                            let s = r[o];
                            if (!s) continue;
                            if (s.getId() !== e) continue;
                            let l = s.getTaskStatus();
                            if (T.information("get status ", l), l === u.DownloadKernel.TaskStatus.Succeeded) {
                                T.information("send: channelMRDownloadSutitleSuc"), g.ipcRenderer.send(p.ThunderChannelList.channelMRDownloadSutitleSuc);
                                let i = [];
                                T.information("subtitleData: ", this.subtitleData), T.information("befor has sutitleTaskId "), this.subtitleData[n] && (T.information("has sutitleTaskId ", e), i = this.subtitleData[n]), T.information("after has sutitleTaskId ");
                                let o = {scid: "", surl: "", sname: "", language: "", path: "", rate: 0, status: 0};
                                o.scid = t.scid, o.surl = t.surl, o.sname = s.getTaskName().replace(".XLSUB", ""), o.language = t.language, o.rate = t.rate, o.status = 1;
                                let r = this.getSaveDir(e), l = s.getTaskName();
                                o.path = a.join(r, l), i.push(o), this.subtitleData[n] = i, yield this.save(this.subtitleData), null !== this.taskStatusChangedEventTable[e] && void 0 !== this.taskStatusChangedEventTable[e] && (T.information("取消监听 ", this.taskStatusChangedEventTable[e]), m.detachTaskEvent(u.DownloadKernel.TaskEventType.StatusChanged, this.taskStatusChangedEventTable[e]), this.taskStatusChangedEventTable[e] = null)
                            } else l === u.DownloadKernel.TaskStatus.Failed && (T.information("send: channelMRDownloadSutitleFail"), g.ipcRenderer.send(p.ThunderChannelList.channelMRDownloadSutitleFail), null !== this.taskStatusChangedEventTable[e] && void 0 !== this.taskStatusChangedEventTable[e] && (T.information("取消监听 ", this.taskStatusChangedEventTable[e]), m.detachTaskEvent(u.DownloadKernel.TaskEventType.StatusChanged, this.taskStatusChangedEventTable[e]), this.taskStatusChangedEventTable[e] = null));
                            i = !0
                        }
                    } while (0);
                    return i
                })))
            }

            getSaveDir(e) {
                T.information("getSaveDir");
                let t = "", n = k.getTaskFromTaskId(e), i = n.getTaskName(), o = n.getType();
                if (n && (t = n.getSavePath()), o === u.DownloadKernel.TaskType.Bt) {
                    n.getExtraObject().getDownloadFile().length > 1 && (t = a.join(t, i))
                }
                return T.information("name and save dir: ", i, t), t
            }

            isAlreadyDownload(e, t) {
                return i(this, void 0, void 0, function* () {
                    T.information("isAlreadyDownload cid ", e);
                    let n = !1, i = this.subtitleData[t];
                    if (T.information("isAlreadyDownload subtitleList ", i), i && i.length >= 1) for (let t of i) if (t.scid === e) {
                        let e = t.path;
                        T.information("isAlreadyDownload fielPath ", e), (yield r.FileSystemAWNS.existsAW(e)) && (n = !0)
                    }
                    return T.information("isAlreadyDownload ret ", n), n
                })
            }
        }

        e.SubtitleManager = s;
        const d = new s;
        e.getSubtitleManger = function () {
            return d
        }, e.init = function () {
            return i(this, void 0, void 0, function* () {
                yield d.init()
            })
        }
    }(t.SubtitleManagerNS || (t.SubtitleManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(3), o = n(2), r = n(6), s = n(10), l = n(54), u = n(21), d = n(11), c = n(80), h = n(229), f = n(58),
        p = n(52), g = n(729), k = n(222), m = n(13), T = n(1), v = n(95), w = n(28),
        y = T.default.getLogger("command_line"), S = w.DownloadKernelTaskManager.getTaskManager(),
        b = r.default(o.join(__rootDir, "../bin/ThunderNewTask.node")),
        C = r.default(o.join(__rootDir, "../bin/ThunderHelper.node"));
    const D = new class extends l.default {
        constructor() {
            super(...arguments), this.readyToShow = !1
        }

        init() {
            a.remote.getCurrentWindow().isVisible() ? this.readyToShow = !0 : a.remote.getCurrentWindow().on("ready-to-show", () => {
                this.readyToShow = !0
            }), b.setCommandLineCallback(e => {
                if (this.readyToShow && this.needBringToTop(e) && this.bringMainWindowToTop(), void 0 !== e && "" !== e.trim()) {
                    let t = s.ThunderUtil.parseCommandLine(e);
                    t.length > 0 && this.executeCmdLine(t).catch()
                }
            })
        }

        onCommand(e, t, n) {
            return i(this, void 0, void 0, function* () {
                if (y.information(e, t), "path" === e) {
                    let e = o.extname(t);
                    ".torrent" === (e = e.toLowerCase()) ? (this.readyToShow && this.bringMainWindowToTop(), n = "command" === n ? "Torrent" : n, this.ensureDkLoaded(e => i(this, void 0, void 0, function* () {
                        if (e) {
                            let e = yield h.TaskUtilitiesAWNS.parserBtFileInfoAW(t);
                            if (null === e) c.ThunderNewTask.createBtTaskWindow({
                                type: "file",
                                seedFile: t
                            }, {source: n}); else {
                                let i = JSON.stringify(e);
                                c.ThunderNewTask.createBtTaskWindow({data: i, type: "file", seedFile: t}, {source: n})
                            }
                        }
                    }))) : ".td" !== e && ".bc!" !== e && ".part" !== e && ".xltd" !== e || (n = "command" === n ? "TD" : n, this.ensureDkLoaded(e => {
                        e && f.TaskOperatorNs.importUncompletedFromFile(t, n)
                    }))
                } else if ("task" === e) {
                    if ("newtask" === t) {
                        let e = "button=create";
                        m.XLStatNS.trackEvent("client_quick", "taskbar_rk_click", "", 0, 0, 0, 0, e), m.XLStatNS.trackEvent("core_event", "create_task_click", "", 0, 0, 0, 0, "click_source=taskbar"), y.information("trackEvent", "core_event", "create_task_click", "click_source=taskbar"), c.ThunderNewTask.createPreNewTaskWindow(null)
                    } else if ("startall" === t) {
                        let e = "button=start";
                        m.XLStatNS.trackEvent("client_quick", "taskbar_rk_click", "", 0, 0, 0, 0, e), p.DownloadKernelManager.attachListener(u.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, () => {
                            f.TaskOperatorNs.startAll()
                        })
                    } else if ("pauseall" === t) {
                        let e = "button=pause";
                        m.XLStatNS.trackEvent("client_quick", "taskbar_rk_click", "", 0, 0, 0, 0, e), f.TaskOperatorNs.pauseAll()
                    }
                } else if ("shell" === e) {
                    if ("exit" === t) {
                        let e = "button=exit";
                        m.XLStatNS.trackEvent("client_quick", "taskbar_rk_click", "", 0, 0, 0, 0, e), k.quitPromises.run()
                    }
                } else if ("speedMode" === e) ; else if ("unionfile" === e) {
                    let e = t;
                    c.ThunderNewTask.createUnionTask(e).catch()
                } else "-autotestinjectfile" === e && (yield d.FileSystemAWNS.existsAW(t)) && require(t).init(g.DownloadKernelTestNS)
            })
        }

        bringMainWindowToTop() {
            if (this.readyToShow) {
                let e = a.remote.getCurrentWindow();
                null !== e && (e.isMinimized() && e.restore(), e.show(), v.ToolsUtilitiesAWNS.setForegroundWindow(C, e))
            }
        }

        ensureDkLoaded(e) {
            S.isDkLoaded() ? e(!0) : p.DownloadKernelManager.attachListener(u.NodeEventMesssageNS.eventDownloadKernelInitEnd, t => {
                e(0 === t)
            })
        }

        needBringToTop(e) {
            let t = !1;
            do {
                if (void 0 === e || null === e) break;
                if (-1 !== e.indexOf("-window:bringtotop")) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }

        executeCmdLine(e) {
            return i(this, void 0, void 0, function* () {
                for (let t of e) {
                    if ("" === t) continue;
                    let e = "", n = "";
                    if (yield d.FileSystemAWNS.existsAW(t)) e = "path", n = t; else if (s.ThunderUtil.isSupportUrl(t)) e = "url", n = t; else {
                        let i = t.indexOf(":");
                        -1 === i ? e = t : i > 1 && (e = t.substring(1, i), i !== t.length - 1 && (n = t.substring(i + 1)))
                    }
                    this.onCommand(e, n, "command").catch(), this.fireEvent(u.NodeEventMesssageNS.eventOnCommand, e, n)
                }
            })
        }
    };
    t.default = D
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(6), s = r.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        l = r.default(a.join(__rootDir, "../bin/ThunderMsgChannel.node")), u = n(8), d = n(187),
        c = o.default.getLogger("MessageChannel");
    !function (e) {
        let t, n;
        !function (e) {
            e[e.Init = 0] = "Init", e[e.Connecting = 1] = "Connecting", e[e.Connected = 2] = "Connected", e[e.ConnectRecovering = 3] = "ConnectRecovering"
        }(t = e.LongConnectState || (e.LongConnectState = {})), function (e) {
            e[e.Init = 0] = "Init", e[e.Logining = 1] = "Logining", e[e.Login = 2] = "Login", e[e.LoginFailed = 3] = "LoginFailed", e[e.Logouting = 4] = "Logouting", e[e.Logout = 5] = "Logout", e[e.LogoutFailed = 6] = "LogoutFailed"
        }(n = e.UserState || (e.UserState = {}));
        const a = new class {
            constructor() {
                this.longConnectState = t.Init, this.userState = n.Init, this.userLoginEventId = void 0, this.userLogoutEventId = void 0, this.userCheckInTryTimes = 0, this.userCheckOutTryTimes = 0, this.maxTryTimes = 3
            }

            init() {
                let e = s.getPeerID();
                c.information("init appid:0, peerid:", e);
                let t = l.init(e, "0", this.longConnectCallback.bind(this), this.userStateCallback.bind(this));
                return c.information("init result: ", t), t && (this.userLoginEventId = u.NativeCallModule.nativeCall.AttachNativeEvent("OnUserLogin", this.onUserLogin.bind(this)), this.userLogoutEventId = u.NativeCallModule.nativeCall.AttachNativeEvent("OnUserLogout", this.onUserLogout.bind(this))), t
            }

            uninit() {
                return void 0 !== this.userLoginEventId && (u.NativeCallModule.nativeCall.DetachNativeEvent("OnUserLogin", this.userLoginEventId), this.userLoginEventId = void 0), void 0 !== this.userLogoutEventId && (u.NativeCallModule.nativeCall.DetachNativeEvent("OnUserLogout", this.userLogoutEventId), this.userLogoutEventId = void 0), l.uninit()
            }

            registerService(e) {
                return l.registerService(e, this.serviceCallback.bind(this))
            }

            unregisterService(e) {
                return l.unregisterService(e)
            }

            joinGroup(e) {
                return l.joinGroup(e, this.groupServiceCallback.bind(this))
            }

            leaveGroup(e) {
                return l.leaveGroup(e)
            }

            getLongConnectState() {
                return this.longConnectState
            }

            getUserState() {
                return this.userState
            }

            getUserID() {
                return i(this, void 0, void 0, function* () {
                    return new Promise(e => {
                        d.LoginHelperNS.loginHelper.getUserInfo("userid", function (t) {
                            c.information("getUserID:userid = ", t), e(t)
                        })
                    })
                })
            }

            getSessionID() {
                return i(this, void 0, void 0, function* () {
                    return new Promise(e => {
                        d.LoginHelperNS.loginHelper.getUserInfo("sessionid", function (t) {
                            c.information("getSessionID:sessionid = ", t), e(t)
                        })
                    })
                })
            }

            onUserLogin(e) {
                return i(this, void 0, void 0, function* () {
                    if (c.information("onUserLogin userState:", this.userState), this.longConnectState === t.Connected) {
                        let t = yield this.getSessionID();
                        c.information("onUserLogin userCheckIn uid = ", e, " token = ", t), this.userCheckInTryTimes = 0, this.userState = n.Logining, l.userCheckIn(e, t)
                    }
                })
            }

            onUserLogout() {
                c.information("onUserLogout userState:", this.userState), this.userState !== n.Logining && this.userState !== n.Login || (this.userCheckOutTryTimes = 0, this.userState = n.Logouting, l.userCheckOut())
            }

            longConnectCallback(e) {
                return i(this, void 0, void 0, function* () {
                    if (c.information("longConnectCallback state:", e), 1 === e) this.longConnectState = t.Connecting, c.information("longConnectCallback connecting:", this.longConnectState); else if (2 === e) {
                        c.information("longConnectCallback connect success."), this.longConnectState = t.Connected;
                        let e = yield this.getUserID(), i = yield this.getSessionID();
                        e && "" !== e && this.userState !== n.Logining && this.userState !== n.Login && setTimeout(() => {
                            c.information("longConnectCallback user has already logged in. userId:", e, ", sessionId:", i, ", start checking in message channel."), this.userCheckInTryTimes = 0, this.userState = n.Logining, l.userCheckIn(e, i)
                        }, 1)
                    } else 3 === e && (c.information("longConnectCallback connect recovering."), this.longConnectState = t.ConnectRecovering)
                })
            }

            userStateCallback(e) {
                return i(this, void 0, void 0, function* () {
                    if (c.information("userStateCallback state = ", e), 0 === e) c.information("userStateCallback login success, this.userState:", this.userState), this.userState = n.Login, this.userCheckInTryTimes = 0, u.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnMessageChannelUserLogin"); else if (1 === e) {
                        if (c.information("userStateCallback login failed, this.userState:", this.userState, ", userCheckInTryTimes:", this.userCheckInTryTimes), this.userState = n.LoginFailed, u.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnMessageChannelUserLoginFailed"), this.userCheckInTryTimes = this.userCheckInTryTimes + 1, this.userCheckInTryTimes < this.maxTryTimes) {
                            let e = yield this.getUserID(), t = yield this.getSessionID();
                            e && "" !== e && setTimeout(() => {
                                c.information("uid = ", e, " token = ", t), c.information("userStateCallback retry login userCheckInTryTimes:", this.userCheckInTryTimes), this.userState = n.Logining, l.userCheckIn(e, t)
                            }, 1)
                        }
                    } else 2 === e ? (this.userState = n.Logout, this.userCheckOutTryTimes = 0, c.information("userStateCallback logout success."), u.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnMessageChannelUserLogout")) : 3 === e && (c.information("userStateCallback logout failed, self.UserState:", this.userState), this.userState = n.LogoutFailed, u.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnMessageChannelUserLogoutFailed"), c.information("userStateCallback retry logout, this.userCheckOutTryTimes:", this.userCheckOutTryTimes), this.userCheckOutTryTimes = this.userCheckOutTryTimes + 1, this.userCheckOutTryTimes < this.maxTryTimes && setTimeout(() => {
                        this.userState = n.Logouting, l.userCheckOut(), c.information("userStateCallback retry logout, userCheckOutTryTimes", this.userCheckOutTryTimes)
                    }, 1))
                })
            }

            serviceCallback(e, t, n) {
                c.information("serviceCallback serviceType:", e, ", msgCount:", t, ", msgArray:", n), u.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnMessageChannelServiceCallback", e, JSON.stringify(n))
            }

            groupServiceCallback(e, t, n) {
                c.information("groupServiceCallback groupId:", e, ", msgCount:", t, ", msgArray:", n), u.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnMessageChannelGroupServiceCallback", e, t, JSON.stringify(n))
            }
        };
        e.init = function () {
            return a.init()
        }, e.uninit = function () {
            return a.uninit()
        }, e.registerService = function (e) {
            return a.registerService(e)
        }, e.unregisterService = function (e) {
            return a.unregisterService(e)
        }, e.joinGroup = function (e) {
            return a.joinGroup(e)
        }, e.leaveGroup = function (e) {
            return a.leaveGroup(e)
        }, e.getLongConnectState = function () {
            return a.getLongConnectState()
        }, e.getUserState = function () {
            return a.getUserState()
        }
    }(t.MessageChannelNS || (t.MessageChannelNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(237), a = n(25), o = n(1), r = n(34), s = o.default.getLogger("Bt-task-renderer");

    class l {
        whetherShowEntry() {
            return this.getBrowserInfos().length > 0
        }

        whetherPopUp() {
            let e = a.ConfigNS.getValue("ThunderFirstInstall", "IsFirstInstall", 1);
            return s.information("是否是重新安装迅雷:", e), 1 === e && this.getBrowserInfos().length > 0
        }

        popUpBrowserGuide() {
            if (s.information("浏览器引导页已弹出"), this.browserGuideWindow && !this.browserGuideWindow.isDestroyed()) return this.browserGuideWindow.show(), void s.information("浏览器引导页实例已经存在");
            this.browserGuideWindow = r.MessageBox.custom("BrowserConfigGuide", 0, {modal: !1})
        }

        getBrowserInfos() {
            let e = [], t = i.SettingConfigHelperNS.configBrowserHelper.getWatchBrowerByName("360安全浏览器");
            t && e.push(t);
            let n = i.SettingConfigHelperNS.configBrowserHelper.getWatchBrowerByName("搜狗浏览器");
            n && e.push(n);
            let a = i.SettingConfigHelperNS.configBrowserHelper.getWatchBrowerByName("QQ浏览器");
            return a && e.push(a), s.information("已安装的浏览器:", e), e
        }
    }

    t.default = function () {
        return l.instance || (l.instance = new l), l.instance
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(18), o = n(2), r = n(1), s = n(6), l = n(11), u = n(21), d = n(25), c = n(733),
        h = r.default.getLogger("Config"), f = s.default(o.join(__rootDir, "../bin/ThunderHelper.node"));

    class p extends d.Config {
        init(e) {
            return i(this, void 0, void 0, function* () {
                if (!this.isInit) {
                    if (this.configPath = e, yield l.FileSystemAWNS.existsAW(e)) {
                        let t = yield l.FileSystemAWNS.readFileAW(e);
                        if (t) {
                            let e = null;
                            try {
                                e = c.IniNS.parse(t.toString())
                            } catch (e) {
                                h.warning(e)
                            }
                            this.isInit = !0, this.mergeConfigData(e), this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventBHOConfigInitFinished)
                        }
                    } else {
                        let t = o.dirname(e);
                        yield l.FileSystemAWNS.mkdirsAW(t), this.isInit = !0, this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventBHOConfigInitFinished)
                    }
                }
            })
        }

        save() {
            return i(this, void 0, void 0, function* () {
                if (null !== this.configPath && void 0 !== this.configPath && "" !== this.configPath && this.isInit) {
                    let e = c.IniNS.stringify(this.configData);
                    yield l.FileSystemAWNS.writeFileAW(this.configPath, e)
                }
            })
        }

        saveSync() {
            let e = c.IniNS.stringify(this.configData);
            null !== this.configPath && void 0 !== this.configPath && "" !== this.configPath && this.isInit && a.writeFileSync(this.configPath, e)
        }

        fireValueChangedEvent(e, t, n, i) {
            this.eventContainer.fireEvent(u.NodeEventMesssageNS.eventBHOConfigValueChanged, e, t, n, i)
        }

        attachListener(e, t) {
            do {
                if (e === u.NodeEventMesssageNS.eventBHOConfigInitFinished) {
                    if (this.isInit) {
                        t(this.isInit);
                        break
                    }
                    this.eventContainer.attachOnceListener(e, t);
                    break
                }
                this.eventContainer.attachListener(e, t)
            } while (0)
        }
    }

    t.BHOConfig = p;
    const g = new p;
    !function (e) {
        e.init = function () {
            return i(this, void 0, void 0, function* () {
                let e = f.getAppDataLocalLowPath();
                if (null !== e && void 0 !== e && "" !== e) {
                    let t = o.join(e, "Thunder Network\\Thunder\\BHO\\config.ini");
                    yield g.init(t)
                }
            })
        }, e.save = function () {
            return i(this, void 0, void 0, function* () {
                yield g.save()
            })
        }, e.saveSync = function () {
            g.saveSync()
        }, e.getValue = function (e, t, n) {
            return g.getValue(e, t, n)
        }, e.setValue = function (e, t, n) {
            g.setValue(e, t, n)
        }, e.attachListener = function (e, t) {
            g.attachListener(e, t)
        }, e.detachListener = function (e, t) {
            g.detachListener(e, t)
        }
    }(t.BHOConfigNS || (t.BHOConfigNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(739);
    !function (e) {
        class t {
            constructor() {
            }

            static getInstance() {
                return null === t.instance ? new t : t.instance
            }

            getQueue(e) {
                return null === t.queueMap && (t.queueMap = new Map), t.queueMap.has(e) || t.queueMap.set(e, new i.MsgQueueNS.Queue), t.queueMap.get(e)
            }
        }

        t.queueMap = null, t.instance = null, e.MsgQueue = t
    }(t.MsgQueueManagerNS || (t.MsgQueueManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(36);
    !function (e) {
        let t;
        !function (e) {
            e.Unknow = "Unknow", e.OnJoinTeam = "OnJoinTeam", e.OnExitTeam = "OnExitTeam", e.OnReceiveGcid = "OnReceiveGcid", e.OnTaskSpeedChange = "OnTaskSpeedChange", e.OnTaskStatusChange = "OnTaskStatusChange", e.OnTeamInfoUpdated = "OnTeamInfoUpdated", e.InsertToCategoryView = "InsertToCategoryView", e.RemoveFromCategoryView = "RemoveFromCategoryView", e.RequestTaskTeamInfoSuccess = "RequestTaskTeamInfoSuccess", e.RequestTaskTeamInfofailed = "RequestTaskTeamInfofailed"
        }(t = e.GroupAccelerateEventType || (e.GroupAccelerateEventType = {}));
        const n = new i.EventEmitter;
        e.getEventManager = function () {
            return n
        }
    }(t.GroupAccelerateEventManagerNS || (t.GroupAccelerateEventManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(7), r = n(8), s = n(96), l = n(517), u = n(275), d = n(82), c = n(17), h = n(25), f = n(13),
        p = n(274), g = u.GroupAccelerateManagerNS.getManager(), k = l.GroupAccelerateEventManagerNS.getEventManager(),
        m = d.TabEventManagerNS.getEventEmitter(), T = a.default.getLogger("GroupAccelerate.WebManager");
    !function (e) {
        class t {
            constructor() {
                this.entryPage = "", this.pendingShowTeamInfoArray = new Array, this.taskSpeedListenerMap = new Map, this.taskStatusListenerMap = new Map, this.nextListenerCookie = 0, T.information("constructor")
            }

            init(e) {
                T.information("init", " entryPage: ", e), e && (this.entryPage = e), k.on(l.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskStatusChange, (e, t, n) => {
                    T.information("init OnTaskStatusChange", " taskId: ", e, " taskStatus: ", t, " taskUniqueId: ", n), this.fireTaskStatusChangeEvent(e, t, n)
                }), k.on(l.GroupAccelerateEventManagerNS.GroupAccelerateEventType.OnTaskSpeedChange, (e, t, n, i, a) => {
                    T.information("init OnTaskSpeedChange", " taskId: ", e, " taskSpeed: ", t, " increaseSpeed: ", n, " extraStr: ", i, " taskUniqueId: ", a), this.fireTaskSpeedChangeEvent(e, t, n, i, a)
                }), m.on(d.TabEventManagerNS.EventType.RemoveTab, e => {
                    if ("组队加速" === e.tabInfo.title && "groupAccelerate" === e.tabInfo.tab.name) {
                        for (let [t, n]of this.taskSpeedListenerMap) if (n.tab === e.tabInfo.tab) {
                            this.taskSpeedListenerMap.delete(t);
                            break
                        }
                        for (let [t, n]of this.taskStatusListenerMap) if (n.tab === e.tabInfo.tab) {
                            this.taskStatusListenerMap.delete(t);
                            break
                        }
                    }
                }), this.registerNativeFunction()
            }

            openGroupAccelerateTabByTaskId(e, t, n, a) {
                return i(this, void 0, void 0, function* () {
                    T.information("openGroupAccelerateTabByTaskId", " taskId: ", e, " entry: ", t, " panel: ", n, " queryString: ", a);
                    let i = g.getTaskUniqueIdByTaskId(e);
                    T.information("openGroupAccelerateTabByTaskId", " taskUniqueId: ", i), i && "" !== i && this.openGroupAccelerateTabByTaskUniqueId(i, t, n, a).then(e => {
                        T.information("openGroupAccelerateTabByTaskId success")
                    }).catch(() => {
                        T.information("openGroupAccelerateTabByTaskId failed")
                    })
                })
            }

            openGroupAccelerateTabByTaskUniqueId(e, t, n, a) {
                return i(this, void 0, void 0, function* () {
                    if (T.information("openGroupAccelerateTabByTaskUniqueId", " taskUniqueId: ", e, " entry: ", t, " panel: ", n, " queryString: ", a), !e) return void T.information("openGroupAccelerateTabByTaskUniqueId bad taskUniqueId");
                    o.isNullOrUndefined(t) && (t = ""), o.isNullOrUndefined(n) && (n = ""), o.isNullOrUndefined(a) && (a = "");
                    let i = yield s.default(!1, !0);
                    if (T.information("openGroupAccelerateTabByTaskUniqueId", " userId: ", i), i && "0" !== i) {
                        let o = Number(i);
                        if (!isNaN(o) && 0 !== o) {
                            let i = JSON.stringify({
                                title: "组队加速",
                                url: this.entryPage,
                                name: "groupAccelerate",
                                showUrl: !1
                            });
                            r.NativeCallModule.nativeCall.CallNativeFunction("GetTabIndexByTitleAndName", i, (o, s) => {
                                if (T.information("GetTabIndexByTitleAndName", i, o, s), o === c.NativeFunctionErrorCode.Success && s > -1) T.information("groupAccelerate tab exists", s), r.NativeCallModule.nativeCall.CallNativeFunction("SelectTab", s), r.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnShowTeam", e, t, n, a); else {
                                    let o = {};
                                    o.taskUniqueId = e, o.entry = t, o.panel = n, o.queryString = a, this.pendingShowTeamInfoArray.push(o), T.information("openGroupAccelerateTabByTaskUniqueId do opentab"), r.NativeCallModule.nativeCall.CallNativeFunction("OpenNewTab", this.entryPage, i)
                                }
                            }), h.ConfigNS.setValue("GroupAccelerate", "unusecount", 0);
                            let o = (new Date).getTime();
                            h.ConfigNS.setValue("GroupAccelerate", "lastusetime", o), this.sendPageShowStat(e, t, n)
                        }
                    }
                })
            }

            fireTaskStatusChangeEvent(e, t, n) {
                this.taskStatusListenerMap.forEach((i, a) => {
                    i && i.tab && "nativeCallId" in i && i.callBackId && i.gcid === n && i.tab.callNativeFunctionCallback(i.nativeCallId, i.callBackId, e, t, n)
                })
            }

            fireTaskSpeedChangeEvent(e, t, n, i, a) {
                this.taskSpeedListenerMap.forEach((o, r) => {
                    o && o.tab && "nativeCallId" in o && o.callBackId && o.gcid === a && o.tab.callNativeFunctionCallback(o.nativeCallId, o.callBackId, e, t, n, i, a)
                })
            }

            registerNativeFunction() {
                let e = [{
                    functionName: "OpenGroupAccelerateTab",
                    nativeFunc: this.externalOpenGroupAccelerateTab.bind(this)
                }, {
                    functionName: "GetGroupTaskInfo",
                    nativeFunc: this.externalGetTaskInfo.bind(this)
                }, {functionName: "JoinTeam", nativeFunc: this.externalJoinTeam.bind(this)}, {
                    functionName: "ExitTeam",
                    nativeFunc: this.externalExitTeam.bind(this)
                }, {
                    functionName: "TeamPageReady",
                    nativeFunc: this.externalTeamPageReady.bind(this)
                }, {
                    functionName: "SubscribeTaskSpeed",
                    nativeFunc: this.externalSubscribeTaskSpeed.bind(this)
                }, {
                    functionName: "UnsubscribeTaskSpeed",
                    nativeFunc: this.externalUnsubscribeTaskSpeed.bind(this)
                }, {
                    functionName: "SubscribeTaskStatus",
                    nativeFunc: this.externalSubscribeTaskStatus.bind(this)
                }, {functionName: "UnsubscribeTaskStatus", nativeFunc: this.externalUnsubscribeTaskStatus.bind(this)}];
                d.setDefaultNativeFunctionMap(e)
            }

            externalOpenGroupAccelerateTab(e, t, n, i) {
                do {
                    if (T.information("externalOpenGroupAccelerateTab enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalOpenGroupAccelerateTab bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1]) || o.isNullOrUndefined(i[2]) || o.isNullOrUndefined(i[3])) {
                        T.information("externalOpenGroupAccelerateTab bad args"), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], s = i[2], l = i[3];
                    this.openGroupAccelerateTabByTaskId(a, r, s, l).then(e => {
                        T.information("externalOpenGroupAccelerateTab success")
                    }).catch(() => {
                        T.information("externalOpenGroupAccelerateTab failed")
                    }), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success)
                } while (0)
            }

            externalGetTaskInfo(e, t, n, i) {
                do {
                    if (T.information("externalGetTaskInfo enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalGetTaskInfo bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[1])) {
                        T.information("externalGetTaskInfo bad args"), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1];
                    T.information("externalGetTaskInfo", " taskId: ", a, " taskUniqueId: ", r);
                    let s = g.getTaskInfoJson(a, r);
                    T.information("externalGetTaskInfo", " taskInfoJson: ", s), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success, s)
                } while (0)
            }

            externalJoinTeam(e, t, n, i) {
                do {
                    if (T.information("externalJoinTeam enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalGetTaskInfo bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[3])) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], s = i[2], l = i[3], u = null;
                    try {
                        u = JSON.parse(s)
                    } catch (e) {
                        T.warning(e)
                    }
                    if (null === u) break;
                    let d = u.member_count;
                    d || (d = 0);
                    let h = u.group_name;
                    if (o.isNullOrUndefined(h) && (h = ""), T.information("externalJoinTeam", " taskId: ", a, " groupId: ", r, " opts: ", s, " taskUniqueId: ", l, " memberCount: ", d, " groupName: ", h), !r || !l) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    g.joinTeam(a, "" + r, h, d, l).catch();
                    let k = !1;
                    if ("1" !== p.DownloadModeNS.getCurrentDownloadMode()) {
                        p.DownloadModeNS.setFullDownloadMode(), k = !0;
                        let e = 0,
                            t = "taskid=" + (e = l && "" !== l ? g.getTaskIdByTaskUniqueId(l) : a) + ",gcid=" + l;
                        f.XLStatNS.trackEvent("download_pannel", "groupspeedup_fullspeed_change", "", 0, 0, 0, 0, t)
                    }
                    let m = JSON.stringify({hasChangeMode: k});
                    e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success, m)
                } while (0)
            }

            externalExitTeam(e, t, n, i) {
                do {
                    if (T.information("externalExitTeam enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) break;
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1]) || o.isNullOrUndefined(i[2])) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], s = i[2];
                    g.exitTeam(a, r, s), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success)
                } while (0)
            }

            externalTeamPageReady(e, t, n, i) {
                do {
                    if (T.information("externalTeamPageReady enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalGetTaskInfo bad external args");
                        break
                    }
                    for (let e of this.pendingShowTeamInfoArray) e && (T.information("externalTeamPageReady fire event", " taskUniqueId: ", e.taskUniqueId, " entry: ", e.entry, " panel: ", e.panel, " queryString: ", e.queryString), r.NativeCallModule.nativeCall.CallNativeFunction("FireEventFunction", "OnShowTeam", e.taskUniqueId, e.entry, e.panel, e.queryString));
                    this.pendingShowTeamInfoArray = [], e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success)
                } while (0)
            }

            externalSubscribeTaskSpeed(e, t, n, i) {
                do {
                    if (T.information("externalSubscribeTaskSpeed enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalSubscribeTaskSpeed bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], s = {};
                    s.tab = e, s.nativeCallId = t, s.callBackId = r, s.gcid = a;
                    let l = this.nextListenerCookie;
                    this.taskSpeedListenerMap.set("" + l, s), this.nextListenerCookie += 1, e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success, l)
                } while (0)
            }

            externalUnsubscribeTaskSpeed(e, t, n, i) {
                do {
                    if (T.information("externalUnsubscribeTaskSpeed enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalUnsubscribeTaskSpeed bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    this.taskSpeedListenerMap.delete("" + a), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success)
                } while (0)
            }

            externalSubscribeTaskStatus(e, t, n, i) {
                do {
                    if (T.information("externalSubscribeTaskStatus enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalSubscribeTaskStatus bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], s = {};
                    s.tab = e, s.nativeCallId = t, s.callBackId = r, s.gcid = a;
                    let l = this.nextListenerCookie;
                    this.taskStatusListenerMap.set("" + l, s), this.nextListenerCookie += 1, e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success, l)
                } while (0)
            }

            externalUnsubscribeTaskStatus(e, t, n, i) {
                do {
                    if (T.information("externalUnsubscribeTaskStatus enter"), o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) {
                        T.information("externalUnsubscribeTaskStatus bad external args");
                        break
                    }
                    if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    this.taskSpeedListenerMap.delete("" + a), e.callNativeFunctionCallback(t, n, c.NativeFunctionErrorCode.Success)
                } while (0)
            }

            sendPageShowStat(e, t, n) {
                do {
                    if (!e) break;
                    if (!t || !n) break;
                    let i = "entry=" + t + ",pannel=" + n + ",gcid=" + e;
                    f.XLStatNS.trackEvent("download_pannel", "groupspeedupdetail_show", "", 0, 0, 0, 0, i)
                } while (0)
            }
        }

        e.Manager = t;
        const n = new t;
        e.getManager = function () {
            return n
        }
    }(t.GroupAccelerateWebManagerNS || (t.GroupAccelerateWebManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(109), o = n(520), r = n(1).default.getLogger("Thunder.QueryTaskInfo");
    const s = new class extends a.HttpSession {
        constructor() {
            super(), this.lastActiveTaskId = -1, this.curBatchQueryId = void 0, this.timerId = null
        }

        postRequestP2spTaskInfoByUrl(e) {
            return new Promise(t => {
                this.host = "hub5idx.shub.sandai.net", this.port = 80, this.retries = 1, this.timeout = 15e3, this.body = o.QueryTaskInfoPackageNS.createQueryP2spTaskInfoBuffer(e), this.post(e => {
                    let n = null;
                    200 === e.statusCode && e.body && e.body.length > 12 && (n = o.QueryTaskInfoPackageNS.praseP2spTaskInfoBuffer(e.body)), r.information("postRequestP2spTaskInfoByUrl", n), t(n)
                }, e => {
                    r.error("postRequestP2spTaskInfoByUrl", e), t(null)
                })
            })
        }

        delay(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    setTimeout(t, e)
                })
            })
        }

        asyncBatchQueryP2spTaskInfoByUrl(e, t, n) {
            return i(this, void 0, void 0, function* () {
                if (!e || 0 === e.length) return 0;
                void 0 === this.curBatchQueryId ? this.curBatchQueryId = 1 : this.curBatchQueryId += 1;
                let i = 0;
                for (; i < e.length; ++i) {
                    let n = yield this.postRequestP2spTaskInfoByUrl(e[i]);
                    n && t(e[i], n, i), yield this.delay(200)
                }
                return i >= e.length && n && "function" == typeof n && n(this.curBatchQueryId), this.curBatchQueryId
            })
        }

        postRequestEd2kTaskInfoByEd2kLink(e) {
            return new Promise(t => {
                this.host = "hub5idx.shub.sandai.net", this.port = 80, this.retries = 1, this.timeout = 15e3, this.body = o.QueryTaskInfoPackageNS.createQueryEd2kTaskInfoBuffer(e), this.post(e => {
                    let n = null;
                    200 === e.statusCode && e.body && e.body.length > 12 && (n = o.QueryTaskInfoPackageNS.praseEd2kTaskInfoBuffer(e.body)), r.information("postRequestEd2kTaskInfoByEd2kLink", n), t(n)
                }, e => {
                    r.error("postRequestEd2kTaskInfoByEd2kLink", e), t(null)
                })
            })
        }
    };
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(6), o = n(231), r = n(232), s = n(1).default.getLogger("Thunder.QueryTaskInfoPackage"),
        l = a.default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        let t = 0;

        function n() {
            let e = 0, t = i.join(__rootDir, "../../Thunder.exe"), n = l.getFileVersion(t).split(".");
            if (n && 4 === n.length) {
                e = 26 * Number(n[0]).valueOf() + 18 * Number(n[1]).valueOf() + Number(n[3]).valueOf()
            }
            return e
        }

        function a() {
            return l.getPeerID()
        }

        e.createQueryP2spTaskInfoBuffer = function (e) {
            let i = 0, l = Buffer.alloc(10240);
            return s.information("createQueryP2spTaskInfoBuffer protocolVersion", 61, i), i = l.writeUInt32LE(61, i), s.information("createQueryP2spTaskInfoBuffer sequence", t, i), i = l.writeUInt32LE(++t, i), s.information("createQueryP2spTaskInfoBuffer command length", "0", i), i = l.writeUInt32LE(0, i), s.information("createQueryP2spTaskInfoBuffer thunder ver", n(), i), i = l.writeUInt32LE(n(), i), s.information("createQueryP2spTaskInfoBuffer compress flag", "0", i), i = l.writeUInt16LE(0, i), s.information("createQueryP2spTaskInfoBuffer reserved", "0", i), i = r.BufferUtilitiesNS.writeString(l, "", i, "utf-8"), s.information("createQueryP2spTaskInfoBuffer command", "2021", i), i = l.writeUInt16LE(2021, i), s.information("createQueryP2spTaskInfoBuffer by what", "2", i), i = l.writeUInt8(2, i), s.information("createQueryP2spTaskInfoBuffer body length", "0", i), i = l.writeUInt32LE(0, i), s.information("createQueryP2spTaskInfoBuffer url", e, i), i = r.BufferUtilitiesNS.writeString(l, e, i, "utf-8"), s.information("createQueryP2spTaskInfoBuffer code", "-1", i), i = l.writeInt32LE(-1, i), s.information("createQueryP2spTaskInfoBuffer", "origin url", i), i = r.BufferUtilitiesNS.writeString(l, "", i, "utf-8"), s.information("createQueryP2spTaskInfoBuffer code", "-1", i), i = l.writeInt32LE(-1, i), s.information("createQueryP2spTaskInfoBuffer", "refurl", i), i = r.BufferUtilitiesNS.writeString(l, "", i, "utf-8"), s.information("createQueryP2spTaskInfoBuffer code", "-1", i), i = l.writeInt32LE(-1, i), s.information("createQueryP2spTaskInfoBuffer", a(), i), i = r.BufferUtilitiesNS.writeString(l, a(), i, "utf-8"), s.information("createQueryP2spTaskInfoBuffer", "ip", i), i = l.writeInt32LE(0, i), i = l.writeInt32LE(0, i), i = l.writeInt32LE(-1, i), i = l.writeInt32LE(-1, i), s.information("createQueryP2spTaskInfoBuffer", "length", i), l = l.slice(0, i), s.information("createQueryP2spTaskInfoBuffer", l), l = o.ShubCryptoNS.encryptHttpBuffer(l)
        }, e.praseP2spTaskInfoBuffer = function (e) {
            let t = {result: 0, gcid: "", fileSize: 0, errCode: 0};
            try {
                e = o.ShubCryptoNS.decryptHttpBuffer(e);
                let n = 0, i = e.readUInt32LE(n);
                s.information("protocolVersion:", i), n += 4;
                let a = e.readUInt32LE(n);
                s.information("sequence:", a), n += 4;
                let l = e.readUInt32LE(n);
                s.information("commandLegth:", l), n += 4;
                let u = e.readUInt32LE(n);
                s.information("thunderVersion:", u), n += 4;
                let d = e.readUInt16LE(n);
                s.information("compressFlag:", d), n += 2, n = r.BufferUtilitiesNS.readString(e, n, "utf-8")[0];
                let c = e.readUInt16LE(n);
                if (s.information("commandType:", c), n += 2, t.result = e.readUInt8(n), n += 1, 1 === t.result) {
                    n = r.BufferUtilitiesNS.readString(e, n, "hex")[0];
                    let i = r.BufferUtilitiesNS.readUInt64LE(e, n);
                    n = i[0], t.fileSize = i[1];
                    let a = r.BufferUtilitiesNS.readString(e, n, "hex");
                    n = a[0], t.gcid = a[1].toUpperCase(), s.information("gcid", a[1])
                } else t.errCode = e.readUInt32LE(n);
                s.information("praseTaskInfoBuffer", t)
            } catch (e) {
                s.error("decryptHttpBuffer", e)
            }
            return t
        }, e.createQueryEd2kTaskInfoBuffer = function (e) {
            let i = 0, u = Buffer.alloc(4096);
            s.information("createQueryEd2kTaskInfoBuffer protocolVersion", 60, i), i = u.writeUInt32LE(60, i), s.information("createQueryEd2kTaskInfoBuffer sequence", t, i), i = u.writeUInt32LE(++t, i), s.information("createQueryEd2kTaskInfoBuffer command length", "0", i), i = u.writeUInt32LE(0, i), s.information("createQueryEd2kTaskInfoBuffer thunder ver", n(), i), i = u.writeUInt32LE(n(), i), s.information("createQueryEd2kTaskInfoBuffer compress flag", "0", i), i = u.writeUInt16LE(0, i), s.information("createQueryEd2kTaskInfoBuffer reserved", "0", i), i = r.BufferUtilitiesNS.writeString(u, "", i, "utf-8"), s.information("createQueryEd2kTaskInfoBuffer command", "5001", i), i = u.writeUInt16LE(5001, i), s.information("createQueryEd2kTaskInfoBuffer", a(), i), i = r.BufferUtilitiesNS.writeString(u, a(), i, "utf-8");
            let d = l.parseEd2kUrl(e), c = d.fileHash;
            i = u.writeInt32LE(c.length / 2, i);
            let h = 0, f = 0;
            for (let e = 0; e < c.length; e += 2) h = parseInt(c.charAt(e), 16), f = parseInt(c.charAt(e + 1), 16), i = u.writeUInt8(h << 4 | f, i);
            return i = r.BufferUtilitiesNS.writeUInt64LE(u, d.fileSize, i), i = u.writeInt32LE(0, i), i = r.BufferUtilitiesNS.writeString(u, "", i, "utf-8"), i = u.writeInt32LE(0, i), i = r.BufferUtilitiesNS.writeString(u, e, i, "utf-8"), u = u.slice(0, i), s.information("createQueryEd2kTaskInfoBuffer before encrypt", u, i), u = o.ShubCryptoNS.encryptHttpBuffer(u)
        }, e.praseEd2kTaskInfoBuffer = function (e) {
            let t = {result: 0, hasRecord: 0, gcid: ""};
            try {
                e = o.ShubCryptoNS.decryptHttpBuffer(e), s.information("praseEd2kTaskInfoBuffer buffer", e);
                let n = 0, i = e.readUInt32LE(n);
                s.information("protocolVersion:", i), n += 4;
                let a = e.readUInt32LE(n);
                s.information("sequence:", a), n += 4;
                let l = e.readUInt32LE(n);
                s.information("commandLegth:", l), n += 4;
                let u = e.readUInt32LE(n);
                s.information("thunderVersion:", u), n += 4;
                let d = e.readUInt16LE(n);
                s.information("compressFlag:", d), n += 2, n = r.BufferUtilitiesNS.readString(e, n, "utf-8")[0];
                let c = e.readUInt16LE(n);
                if (s.information("commandType:", c), n += 2, t.result = e.readUInt8(n), n += 1, 1 === t.result && (t.hasRecord = e.readInt32LE(n), n += 4, 1 === t.hasRecord)) {
                    n = r.BufferUtilitiesNS.readString(e, n, "utf-8")[0], n = r.BufferUtilitiesNS.readString(e, n, "utf-8")[0], n = r.BufferUtilitiesNS.readString(e, n, "hex")[0];
                    let i = r.BufferUtilitiesNS.readString(e, n, "hex");
                    n = i[0], t.gcid = i[1].toUpperCase()
                }
                s.information("praseTaskInfoBuffer", t)
            } catch (e) {
                s.error("decryptHttpBuffer", e)
            }
            return s.information("praseEd2kTaskInfoBuffer response", t), t
        }
    }(t.QueryTaskInfoPackageNS || (t.QueryTaskInfoPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(204), a = n(125);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(563);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, "69ad46c4", null);
    s.options.__file = "src\\common\\generator-view\\generator-view.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(210), a = n(127);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-checkbox.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(947);
    n.n(i).a
}, function (e, t, n) {
    e.exports = {default: n(525), __esModule: !0}
}, function (e, t, n) {
    n(526), e.exports = n(98).Object.assign
}, function (e, t, n) {
    var i = n(192);
    i(i.S + i.F, "Object", {assign: n(529)})
}, function (e, t, n) {
    var i = n(528);
    e.exports = function (e, t, n) {
        if (i(e), void 0 === t) return e;
        switch (n) {
            case 1:
                return function (n) {
                    return e.call(t, n)
                };
            case 2:
                return function (n, i) {
                    return e.call(t, n, i)
                };
            case 3:
                return function (n, i, a) {
                    return e.call(t, n, i, a)
                }
        }
        return function () {
            return e.apply(t, arguments)
        }
    }
}, function (e, t) {
    e.exports = function (e) {
        if ("function" != typeof e) throw TypeError(e + " is not a function!");
        return e
    }
}, function (e, t, n) {
    "use strict";
    var i = n(120), a = n(199), o = n(123), r = n(245), s = n(243), l = Object.assign;
    e.exports = !l || n(100)(function () {
        var e = {}, t = {}, n = Symbol(), i = "abcdefghijklmnopqrst";
        return e[n] = 7, i.split("").forEach(function (e) {
            t[e] = e
        }), 7 != l({}, e)[n] || Object.keys(l({}, t)).join("") != i
    }) ? function (e, t) {
        for (var n = r(e), l = arguments.length, u = 1, d = a.f, c = o.f; l > u;) for (var h, f = s(arguments[u++]), p = d ? i(f).concat(d(f)) : i(f), g = p.length, k = 0; g > k;) c.call(f, h = p[k++]) && (n[h] = f[h]);
        return n
    } : l
}, function (e, t, n) {
    var i = n(77), a = n(531), o = n(532);
    e.exports = function (e) {
        return function (t, n, r) {
            var s, l = i(t), u = a(l.length), d = o(r, u);
            if (e && n != n) {
                for (; u > d;) if ((s = l[d++]) != s) return !0
            } else for (; u > d; d++) if ((e || d in l) && l[d] === n) return e || d || 0;
            return !e && -1
        }
    }
}, function (e, t, n) {
    var i = n(195), a = Math.min;
    e.exports = function (e) {
        return e > 0 ? a(i(e), 9007199254740991) : 0
    }
}, function (e, t, n) {
    var i = n(195), a = Math.max, o = Math.min;
    e.exports = function (e, t) {
        return (e = i(e)) < 0 ? a(e + t, 0) : o(e, t)
    }
}, function (e, t, n) {
    e.exports = {default: n(534), __esModule: !0}
}, function (e, t, n) {
    n(535), n(541), e.exports = n(202).f("iterator")
}, function (e, t, n) {
    "use strict";
    var i = n(536)(!0);
    n(246)(String, "String", function (e) {
        this._t = String(e), this._i = 0
    }, function () {
        var e, t = this._t, n = this._i;
        return n >= t.length ? {value: void 0, done: !0} : (e = i(t, n), this._i += e.length, {value: e, done: !1})
    })
}, function (e, t, n) {
    var i = n(195), a = n(194);
    e.exports = function (e) {
        return function (t, n) {
            var o, r, s = String(a(t)), l = i(n), u = s.length;
            return l < 0 || l >= u ? e ? "" : void 0 : (o = s.charCodeAt(l)) < 55296 || o > 56319 || l + 1 === u || (r = s.charCodeAt(l + 1)) < 56320 || r > 57343 ? e ? s.charAt(l) : o : e ? s.slice(l, l + 2) : r - 56320 + (o - 55296 << 10) + 65536
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = n(248), a = n(119), o = n(201), r = {};
    n(74)(r, n(78)("iterator"), function () {
        return this
    }), e.exports = function (e, t, n) {
        e.prototype = i(r, {next: a(1, n)}), o(e, t + " Iterator")
    }
}, function (e, t, n) {
    var i = n(75), a = n(118), o = n(120);
    e.exports = n(76) ? Object.defineProperties : function (e, t) {
        a(e);
        for (var n, r = o(t), s = r.length, l = 0; s > l;) i.f(e, n = r[l++], t[n]);
        return e
    }
}, function (e, t, n) {
    var i = n(51).document;
    e.exports = i && i.documentElement
}, function (e, t, n) {
    var i = n(60), a = n(245), o = n(196)("IE_PROTO"), r = Object.prototype;
    e.exports = Object.getPrototypeOf || function (e) {
        return e = a(e), i(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? r : null
    }
}, function (e, t, n) {
    n(542);
    for (var i = n(51), a = n(74), o = n(200), r = n(78)("toStringTag"), s = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), l = 0; l < s.length; l++) {
        var u = s[l], d = i[u], c = d && d.prototype;
        c && !c[r] && a(c, r, u), o[u] = o.Array
    }
}, function (e, t, n) {
    "use strict";
    var i = n(543), a = n(544), o = n(200), r = n(77);
    e.exports = n(246)(Array, "Array", function (e, t) {
        this._t = r(e), this._i = 0, this._k = t
    }, function () {
        var e = this._t, t = this._k, n = this._i++;
        return !e || n >= e.length ? (this._t = void 0, a(1)) : a(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]])
    }, "values"), o.Arguments = o.Array, i("keys"), i("values"), i("entries")
}, function (e, t) {
    e.exports = function () {
    }
}, function (e, t) {
    e.exports = function (e, t) {
        return {value: t, done: !!e}
    }
}, function (e, t, n) {
    e.exports = {default: n(546), __esModule: !0}
}, function (e, t, n) {
    n(547), n(553), n(554), n(555), e.exports = n(98).Symbol
}, function (e, t, n) {
    "use strict";
    var i = n(51), a = n(60), o = n(76), r = n(192), s = n(247), l = n(548).KEY, u = n(100), d = n(197), c = n(201),
        h = n(122), f = n(78), p = n(202), g = n(203), k = n(549), m = n(550), T = n(118), v = n(99), w = n(77),
        y = n(193), S = n(119), b = n(248), C = n(551), D = n(552), N = n(75), I = n(120), _ = D.f, x = N.f, E = C.f,
        A = i.Symbol, P = i.JSON, M = P && P.stringify, F = f("_hidden"), O = f("toPrimitive"),
        B = {}.propertyIsEnumerable, U = d("symbol-registry"), L = d("symbols"), K = d("op-symbols"),
        V = Object.prototype, R = "function" == typeof A, W = i.QObject,
        j = !W || !W.prototype || !W.prototype.findChild, H = o && u(function () {
            return 7 != b(x({}, "a", {
                get: function () {
                    return x(this, "a", {value: 7}).a
                }
            })).a
        }) ? function (e, t, n) {
            var i = _(V, t);
            i && delete V[t], x(e, t, n), i && e !== V && x(V, t, i)
        } : x, G = function (e) {
            var t = L[e] = b(A.prototype);
            return t._k = e, t
        }, z = R && "symbol" == typeof A.iterator ? function (e) {
            return "symbol" == typeof e
        } : function (e) {
            return e instanceof A
        }, q = function (e, t, n) {
            return e === V && q(K, t, n), T(e), t = y(t, !0), T(n), a(L, t) ? (n.enumerable ? (a(e, F) && e[F][t] && (e[F][t] = !1), n = b(n, {enumerable: S(0, !1)})) : (a(e, F) || x(e, F, S(1, {})), e[F][t] = !0), H(e, t, n)) : x(e, t, n)
        }, X = function (e, t) {
            T(e);
            for (var n, i = k(t = w(t)), a = 0, o = i.length; o > a;) q(e, n = i[a++], t[n]);
            return e
        }, Y = function (e) {
            var t = B.call(this, e = y(e, !0));
            return !(this === V && a(L, e) && !a(K, e)) && (!(t || !a(this, e) || !a(L, e) || a(this, F) && this[F][e]) || t)
        }, J = function (e, t) {
            if (e = w(e), t = y(t, !0), e !== V || !a(L, t) || a(K, t)) {
                var n = _(e, t);
                return !n || !a(L, t) || a(e, F) && e[F][t] || (n.enumerable = !0), n
            }
        }, $ = function (e) {
            for (var t, n = E(w(e)), i = [], o = 0; n.length > o;) a(L, t = n[o++]) || t == F || t == l || i.push(t);
            return i
        }, Q = function (e) {
            for (var t, n = e === V, i = E(n ? K : w(e)), o = [], r = 0; i.length > r;) !a(L, t = i[r++]) || n && !a(V, t) || o.push(L[t]);
            return o
        };
    R || (s((A = function () {
        if (this instanceof A) throw TypeError("Symbol is not a constructor!");
        var e = h(arguments.length > 0 ? arguments[0] : void 0), t = function (n) {
            this === V && t.call(K, n), a(this, F) && a(this[F], e) && (this[F][e] = !1), H(this, e, S(1, n))
        };
        return o && j && H(V, e, {configurable: !0, set: t}), G(e)
    }).prototype, "toString", function () {
        return this._k
    }), D.f = J, N.f = q, n(249).f = C.f = $, n(123).f = Y, n(199).f = Q, o && !n(121) && s(V, "propertyIsEnumerable", Y, !0), p.f = function (e) {
        return G(f(e))
    }), r(r.G + r.W + r.F * !R, {Symbol: A});
    for (var Z = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), ee = 0; Z.length > ee;) f(Z[ee++]);
    for (var te = I(f.store), ne = 0; te.length > ne;) g(te[ne++]);
    r(r.S + r.F * !R, "Symbol", {
        for: function (e) {
            return a(U, e += "") ? U[e] : U[e] = A(e)
        }, keyFor: function (e) {
            if (!z(e)) throw TypeError(e + " is not a symbol!");
            for (var t in U) if (U[t] === e) return t
        }, useSetter: function () {
            j = !0
        }, useSimple: function () {
            j = !1
        }
    }), r(r.S + r.F * !R, "Object", {
        create: function (e, t) {
            return void 0 === t ? b(e) : X(b(e), t)
        },
        defineProperty: q,
        defineProperties: X,
        getOwnPropertyDescriptor: J,
        getOwnPropertyNames: $,
        getOwnPropertySymbols: Q
    }), P && r(r.S + r.F * (!R || u(function () {
        var e = A();
        return "[null]" != M([e]) || "{}" != M({a: e}) || "{}" != M(Object(e))
    })), "JSON", {
        stringify: function (e) {
            for (var t, n, i = [e], a = 1; arguments.length > a;) i.push(arguments[a++]);
            if (n = t = i[1], (v(t) || void 0 !== e) && !z(e)) return m(t) || (t = function (e, t) {
                if ("function" == typeof n && (t = n.call(this, e, t)), !z(t)) return t
            }), i[1] = t, M.apply(P, i)
        }
    }), A.prototype[O] || n(74)(A.prototype, O, A.prototype.valueOf), c(A, "Symbol"), c(Math, "Math", !0), c(i.JSON, "JSON", !0)
}, function (e, t, n) {
    var i = n(122)("meta"), a = n(99), o = n(60), r = n(75).f, s = 0, l = Object.isExtensible || function () {
        return !0
    }, u = !n(100)(function () {
        return l(Object.preventExtensions({}))
    }), d = function (e) {
        r(e, i, {value: {i: "O" + ++s, w: {}}})
    }, c = e.exports = {
        KEY: i, NEED: !1, fastKey: function (e, t) {
            if (!a(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e;
            if (!o(e, i)) {
                if (!l(e)) return "F";
                if (!t) return "E";
                d(e)
            }
            return e[i].i
        }, getWeak: function (e, t) {
            if (!o(e, i)) {
                if (!l(e)) return !0;
                if (!t) return !1;
                d(e)
            }
            return e[i].w
        }, onFreeze: function (e) {
            return u && c.NEED && l(e) && !o(e, i) && d(e), e
        }
    }
}, function (e, t, n) {
    var i = n(120), a = n(199), o = n(123);
    e.exports = function (e) {
        var t = i(e), n = a.f;
        if (n) for (var r, s = n(e), l = o.f, u = 0; s.length > u;) l.call(e, r = s[u++]) && t.push(r);
        return t
    }
}, function (e, t, n) {
    var i = n(244);
    e.exports = Array.isArray || function (e) {
        return "Array" == i(e)
    }
}, function (e, t, n) {
    var i = n(77), a = n(249).f, o = {}.toString,
        r = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
    e.exports.f = function (e) {
        return r && "[object Window]" == o.call(e) ? function (e) {
            try {
                return a(e)
            } catch (e) {
                return r.slice()
            }
        }(e) : a(i(e))
    }
}, function (e, t, n) {
    var i = n(123), a = n(119), o = n(77), r = n(193), s = n(60), l = n(240), u = Object.getOwnPropertyDescriptor;
    t.f = n(76) ? u : function (e, t) {
        if (e = o(e), t = r(t, !0), l) try {
            return u(e, t)
        } catch (e) {
        }
        if (s(e, t)) return a(!i.f.call(e, t), e[t])
    }
}, function (e, t) {
}, function (e, t, n) {
    n(203)("asyncIterator")
}, function (e, t, n) {
    n(203)("observable")
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(215), a = n(137);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-speed.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(216), a = n(139);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-speed-time.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(213), a = n(143);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-radio.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(214), a = n(145);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-checkinput.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(205), a = n(147);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-checkselect.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(206), a = n(149);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-textarea.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(207), a = n(151);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\common\\generator-view\\conf-component\\conf-speed-text.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(949);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(961);
    n.n(i).a
}, , , , , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-client-nav"}, [n("td-browser-tab", {
            attrs: {
                tabs: e.tabs,
                current: e.current,
                background: e.background
            }, on: {add: e.handleAdd, remove: e.handleRemove, change: e.handleChange}, nativeOn: {
                click: function (t) {
                    return e.handleClick(t)
                }
            }, scopedSlots: e._u([{
                key: "default", fn: function (t) {
                    var i = t.index, a = t.tab;
                    return n("span", {}, [e._v("\n      " + e._s(0 === i && -1 !== e.currentCategoryId ? "私人空间" : a.title) + "\n      "), "community" === a.tab.name && e.unread ? n("i", {staticClass: "td-browser-tab__number"}, [e._v("\n         " + e._s(e._f("unread")(e.unread)) + "\n      ")]) : 0 === i && 0 === e.current ? n("i", {
                        staticClass: "td-icon-arrow-drop",
                        on: {click: e.showChangeCategoryMenu}
                    }) : e._e()])
                }
            }])
        })], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , , , , , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement;
        return (this._self._c || e)("div", {staticClass: "xlx-media"})
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("header", {staticClass: "xlx-client__header"}, [n("div", {
            staticClass: "xlx-client-header",
            class: {dragable: e.dragable}
        }, [n("login-area", {
            staticClass: "none-dragable", on: {
                "tooltip-show": function (t) {
                    e.dragable = !1
                }, "tooltip-hide": function (t) {
                    e.dragable = !0
                }
            }
        }), e._v(" "), n("address-bar-container", {staticClass: "none-dragable"}), e._v(" "), n("system-buttons-container", {staticClass: "none-dragable"}), e._v(" "), n("message-tips")], 1), e._v(" "), n("TabsContainer"), e._v(" "), n("book-marks")], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , , , , , , , , , , , , , , , , , , , , , , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {
            staticClass: "xlx-client", attrs: {id: "app"}, on: {
                dragstart: function (e) {
                    e.preventDefault()
                }
            }
        }, [t("main-background"), this._v(" "), t("main-top"), this._v(" "), t("main-bottom")], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-personal"}, [n("div", {
            staticClass: "xlx-personal-concise",
            class: e.strIsOffline
        }, [n("a", {
            ref: "userAvatar",
            staticClass: "xlx-personal-concise__avatar",
            attrs: {href: "javascript:;"},
            on: {
                click: function (t) {
                    e.clickUserHeader("head")
                }, mouseenter: function (t) {
                    e.enter("head")
                }
            }
        }, [n("img", {
            attrs: {
                src: e.curLoginHeaderUrl,
                alt: "头像",
                draggable: "false"
            }
        })]), e._v(" "), !1 === e.isLogin && "unlogin" === e.curLoginStatus ? n("a", {
            staticClass: "xlx-personal-concise__button",
            attrs: {href: "#"},
            on: {click: e.clickUserHeader}
        }, [e._v("登录")]) : n("a", {
            staticClass: "xlx-personal-concise__name",
            class: e.strNickCss,
            attrs: {href: "javascript:;"},
            on: {
                click: function (t) {
                    e.clickUserHeader("name")
                }, mouseenter: function (t) {
                    e.enter("name")
                }
            }
        }, [e._v(e._s(e.userNick))]), e._v(" "), e.vipData ? n("vip-icon", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.isLogin,
                expression: "isLogin"
            }],
            ref: "userVip",
            staticStyle: {cursor: "pointer"},
            attrs: {vipData: e.vipData, size: "normal", disabled: 0 === e.isVip},
            nativeOn: {
                click: function (t) {
                    e.onClick("vip")
                }, mouseenter: function (t) {
                    e.enter("vip")
                }
            }
        }) : e._e(), e._v(" "), n("td-tooltip", {
            attrs: {
                trigger: "hover",
                visible: e.isShowYearTip,
                offset: {x: -5},
                placement: "bottom"
            }, on: {
                show: function (t) {
                    e.onToolYearTip(!0)
                }, hide: function (t) {
                    e.onToolYearTip(!1)
                }
            }
        }, [n("template", {slot: "content"}, [e._v(e._s(e.yearTipsText)), n("a", {
            attrs: {href: "javascript:;"},
            on: {
                click: function (t) {
                    e.onClick("nian_tip")
                }
            }
        }, [e._v(e._s(e.strOpenVip))])]), e._v(" "), n("div", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.isLogin,
                expression: "isLogin"
            }], staticClass: "xlx-personal-concise__nian"
        }, [n("a", {
            class: e.userYearIcon, attrs: {href: "javascript:;"}, on: {
                click: function (t) {
                    e.onClick("nian")
                }
            }
        })])], 2)], 1)])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "xlx-client__body"}, [t("home-tab-view", {
            directives: [{
                name: "opacity",
                rawName: "v-opacity",
                value: this.downloadShow,
                expression: "downloadShow"
            }], staticStyle: {position: "absolute"}
        }), this._v(" "), t("browser-view-container", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: this.webviewShow,
                expression: "webviewShow"
            }]
        }), this._v(" "), this.settingViewShow ? t("setting-view-container") : this._e()], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("td-input-group", {staticClass: "xlx-search"}, [n("td-input-group-button", {
            attrs: {
                slot: "prepend",
                title: "后退",
                disabled: !e.canGoBack
            }, nativeOn: {
                click: function (t) {
                    return e.goBack(t)
                }
            }, slot: "prepend"
        }, [n("td-icon", {attrs: {type: "arrow-left"}})], 1), e._v(" "), n("td-input-group-button", {
            attrs: {
                slot: "prepend",
                title: "前进",
                disabled: !e.canGoForward
            }, nativeOn: {
                click: function (t) {
                    return e.goForward(t)
                }
            }, slot: "prepend"
        }, [n("td-icon", {attrs: {type: "arrow-right"}})], 1), e._v(" "), e.isHttps ? n("td-icon", {
            attrs: {
                slot: "prepend",
                type: "security"
            }, slot: "prepend"
        }) : e._e(), e._v(" "), n("td-input", {
            ref: "input",
            attrs: {value: e.textData, placeholder: e.placeholder},
            on: {
                focus: e.onInputFocus, blur: e.onInputBlur, input: e.handle, keydown: [function (t) {
                    return "button" in t || !e._k(t.keyCode, "enter", 13, t.key, "Enter") ? e.navigate(t) : null
                }, function (t) {
                    return ("button" in t || 65 === t.keyCode) && t.ctrlKey ? void e.$refs.input.select() : null
                }]
            },
            nativeOn: {
                contextmenu: function (t) {
                    return e.handlePopInputMenu(t)
                }
            }
        }), e._v(" "), n("a", {
            staticClass: "td-input__button",
            attrs: {href: "javascript:;", title: "收藏"}
        }, [n("i", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: !e.hideCollectIcon,
                expression: "!hideCollectIcon"
            }],
            staticClass: "xlx-icon-fav",
            class: {"is-active": void 0 !== e.bookMarks[e.curUrl]},
            on: {
                click: function (t) {
                    return t.stopPropagation(), e.handleCollect(t)
                }
            }
        })]), e._v(" "), n("td-input-group-button", {
            attrs: {slot: "append", title: "刷新", disabled: !e.canRefresh},
            nativeOn: {
                click: function (t) {
                    return e.goRefresh(t)
                }
            },
            slot: "append"
        }, [n("td-icon", {attrs: {type: "refresh"}})], 1)], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.isShowBookMarkBar,
                expression: "isShowBookMarkBar"
            }], staticClass: "xlx-bookmarks-bar"
        }, [n("div", {
            staticClass: "xlx-bookmarks-bar__content", on: {
                contextmenu: function (t) {
                    t.stopPropagation(), e.showAddBookMarkMenu()
                }
            }
        }, e._l(e.showMarksList, function (t) {
            return n("a", {
                key: t.url,
                staticClass: "xlx-bookmarks-bar__item",
                attrs: {href: "javascript:;", title: t.name + "\n" + t.url},
                on: {
                    click: function (n) {
                        return "button" in n || !e._k(n.keyCode, "left", 37, n.key, ["Left", "ArrowLeft"]) ? "button" in n && 0 !== n.button ? null : (n.stopPropagation(), void e.openNewTab(t.url, t.name)) : null
                    }, contextmenu: function (n) {
                        n.stopPropagation(), e.showBookMarkMenu(t.url, t.name)
                    }
                }
            }, [n("span", {staticClass: "xlx-bookmarks__icon"}, ["" === t.iconUrl ? n("i", {staticClass: "xlx-icon-net"}) : n("img", {attrs: {src: t.iconUrl}})]), e._v(" "), n("span", {staticClass: "xlx-bookmarks-bar__text"}, [e._v(e._s(t.name))])])
        })), e._v(" "), e.hideBookMarksList.length ? n("a", {
            staticClass: "xlx-bookmarks-bar__more",
            attrs: {href: "javascript:;"},
            on: {click: e.showMenu}
        }, [n("i", {staticClass: "xlx-icon-unfold"})]) : e._e()])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {
            staticClass: "xlx-client-operate", on: {
                mouseenter: function (t) {
                    e.disableHover = !1
                }
            }
        }, [n("message-button-container"), e._v(" "), n("a", {
            attrs: {href: "javascript:;"},
            on: {click: e.showMenu}
        }, [n("i", {
            staticClass: "xlx-icon-menu",
            attrs: {title: "主菜单"}
        }), e._v(" "), e.showNewIcon ? n("i", {staticClass: "xlx-tag-new"}) : e._e()]), e._v(" "), n("a", {
            ref: "minize",
            class: {"disable-hover": e.disableHover},
            attrs: {href: "javascript:;"},
            on: {click: e.minizeMainWindow}
        }, [n("i", {staticClass: "xlx-icon-minimize"})]), e._v(" "), n("a", {
            ref: "maximize",
            class: {"disable-hover": e.disableHover},
            attrs: {href: "javascript:;"},
            on: {click: e.toggleMaximizeMainWindow}
        }, [n("i", {
            staticClass: "xlx-icon-maximize",
            class: {"is-active": e.maximized}
        })]), e._v(" "), n("a", {
            ref: "close",
            class: {"disable-hover": e.disableHover},
            attrs: {href: "javascript:;"},
            on: {click: e.closeMainWindow}
        }, [n("i", {staticClass: "xlx-icon-close"})])], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "xlx-client-content xlx-client-content--default"}, [t("download-panel"), this._v(" "), t("home-page")], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement;
        return (this._self._c || e)("span", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: !1,
                expression: "false"
            }]
        })
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-client-content"}, [n("div", {staticClass: "error-page"}, [e._m(0), e._v(" "), n("div", {staticClass: "error-button"}, [n("td-button", {
            attrs: {
                secondary: "",
                disabled: !e.canGoBack
            }, on: {click: e.goBack}
        }, [e._v("返回")]), e._v(" "), n("td-button", {on: {click: e.refresh}}, [e._v("刷新")])], 1)])])
    }, a = [function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "error-main"}, [t("div", {staticClass: "pic-error"}), this._v(" "), t("h1", [this._v("您访问的网站飞到了外太空")]), this._v(" "), t("p")])
    }];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-client-content"}, [n("div", {
            ref: "settinContain",
            staticClass: "xlx-setting",
            on: {scroll: e.handleScroll}
        }, [n("ul", {staticClass: "xlx-setting-nav"}, e._l(e.confSchema, function (t, i) {
            return n("li", {
                key: i,
                staticClass: "xlx-setting-nav__item",
                class: {"is-active": e.currenIndex === i},
                on: {
                    click: function (t) {
                        e.clickTab(i)
                    }
                }
            }, [n("a", {attrs: {href: "#"}}, [e._v(e._s(t.name))])])
        })), e._v(" "), n("div", {staticClass: "xlx-setting-wrapper"}, e._l(e.confSchema, function (t, i) {
            return n("div", {
                key: i,
                staticClass: "xlx-setting-content contain-tab",
                staticStyle: {display: "block"}
            }, [n("ul", e._l(t.children, function (t, i) {
                return n("li", {
                    key: i,
                    staticClass: "xlx-setting-content__item"
                }, [n("span", {staticClass: "xlx-setting-content__label"}, [e._v(e._s(t.name))]), e._v(" "), n("div", {staticClass: "xlx-setting-content__box"}, [n("ul", {class: t.classes}, e._l(t.children, function (t, i) {
                    return n("li", {key: i, class: t.liClasses || ""}, [n("generator-view", {
                        attrs: {
                            item: t,
                            formData: e.formData
                        }, on: {input: e.handleConfChange}
                    })], 1)
                }))])])
            }))])
        }))])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("a", {
            staticClass: "xlx-client-operate__message",
            style: e.style,
            attrs: {href: "javascript:;"},
            on: {click: e.clickHadler}
        }, [n("i", {
            staticClass: "xlx-icon-message",
            attrs: {title: "社区"}
        }, [e.showBadge ? n("span", [e._v(e._s(e._f("unread")(e.unreadCount)))]) : e._e()])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {
            staticClass: "xlx-client-side",
            class: {"is-secret": e.isShowPrivateSpace}
        }, [n("tool-bar-container"), e._v(" "), e.isSearch ? n("download-search-container", {on: {"close:keysearch": e.closeSearchUI}}) : e._e(), e._v(" "), e.showPrivateSpaceOpenPage ? n("private-space-open-page-container") : n("download-list-container", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: !e.isSearch,
                expression: "!isSearch"
            }], ref: "downloadlist", nativeOn: {
                keydown: function (t) {
                    return ("button" in t || 70 === t.keyCode) && t.ctrlKey ? e.keyOpenSearchUI(t) : null
                }
            }
        }), e._v(" "), e.showUpgradeTask ? n("upgrade-task-container") : e._e(), e._v(" "), n("toast-notify"), e._v(" "), n("status-bar")], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "xlx-client-index"}, [t("webview", {
            ref: "webview",
            staticClass: "iframe-home",
            attrs: {nodeintegration: "", src: this.homePageUrl, preload: this.preloadPath}
        })], 1)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {class: e.statusStyle}, [n("div", {staticClass: "xlx-status-control"}, [n("a", {
            staticClass: "xlx-icon-time",
            attrs: {href: "javascript:;", title: "下载计划"},
            on: {
                click: function (t) {
                    return t.stopPropagation(), e.handleClick(t)
                }
            }
        })]), e._v(" "), n("div", {staticClass: "xlx-status-speed"}, [e.canShowVipSpeed ? n("div", {staticClass: "xlx-status-speed__text"}, [n("p", {
            on: {
                mouseover: e.showPop,
                mouseleave: e.hidePop
            }
        }, [n("span", [e._v("限速下载中")]), e._v(e._s(e.curSpeed)), n("em", [e._v("+" + e._s(e.curVipSpeed))])])]) : n("div", {staticClass: "xlx-status-speed__text"}, [n("p", {
            on: {
                mouseover: e.showPop,
                mouseleave: e.hidePop
            }
        }, [n("span", [e._v("限速下载中")]), e._v(e._s(e.curSpeed)), n("em")]), n("a", {
            staticClass: "xlx-status-speed__link",
            attrs: {href: "javascript:;"},
            on: {
                click: function (t) {
                    return t.stopPropagation(), e.handClickleVipText(t)
                }
            }
        }, [e._v(e._s(e.vipText))])]), e._v(" "), n("div", {
            staticClass: "xlx-status-speed-pop",
            style: {display: e.bDisplay}
        }, [n("div", {staticClass: "xlx-status-speed-list"}, [n("div", {staticClass: "xlx-status-speed-list__item"}, [n("i", {staticClass: "xlx-icon xlx-icon-tips-download"}), n("p", [e._v("当前下载速度："), n("em", [e._v(e._s(e.curHoverSpeed))])])]), e._v(" "), n("div", {staticClass: "xlx-status-speed-list__item"}, [n("i", {staticClass: "xlx-icon xlx-icon-tips-upload"}), n("p", [e._v("当前上传速度："), n("em", [e._v(e._s(e.curUpSpeed))])])])]), e._v(" "), n("div", {staticClass: "xlx-status-speed-list"}, [n("div", {staticClass: "xlx-status-speed-list__item"}, [n("p", [e._v("今日下载流量："), n("em", [e._v(e._s(e.downSize))])])]), e._v(" "), n("div", {staticClass: "xlx-status-speed-list__item"}, [n("p", [e._v("今日上传流量："), n("em", [e._v(e._s(e.upSize))])])])])])])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, , , function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {
            directives: [{name: "show", rawName: "v-show", value: e.show, expression: "show"}],
            staticClass: "xlx-bar",
            class: "xlx-bar--" + e.type,
            staticStyle: {bottom: "40px"},
            on: {mousemove: e.handleMouseMove, mouseout: e.handleMouseOut}
        }, [n("p", ["fail" === e.type ? n("i", {staticClass: "td-icon-warning"}) : e._e(), e._v(e._s(e.message))]), e._v(" "), n("div", {staticClass: "xlx-bar__option"}, [e.cancel ? n("a", {
            staticClass: "xlx-bar__button",
            attrs: {href: "javascript:;"},
            on: {click: e.handleCancel}
        }, [e._v("取消")]) : e._e(), e._v(" "), n("a", {
            staticClass: "xlx-bar__close",
            attrs: {href: "javascript:;", title: "关闭"},
            on: {click: e.handleClose}
        }, [n("i", {staticClass: "td-icon-close"})])])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "xlx-side-update"}, [t("div", {staticClass: "xlx-side-update__progress"}, [this._v(this._s(this.progress) + "%")]), this._v(" "), this._m(0)])
    }, a = [function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("p", [this._v("正在升级下载引擎"), t("span", [t("i", [this._v("...")])])])
    }];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "td-collapse xlx-side"}, [t("div", {staticClass: "xlx-side__empty"}, [t("span", {staticClass: "xlx-icon-empty-secret"}), this._v(" "), t("h3", [this._v("私人空间")]), this._v(" "), t("p", {staticClass: "xlx-side__empty-text"}, [this._v("只有自己可以查看的下载任务")]), this._v(" "), t("a", {
            staticClass: "td-button",
            attrs: {href: "javascript:;"},
            on: {click: this.openPrivateSpace}
        }, [this._v("开启私人空间")])])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-side-search"}, [n("div", {staticClass: "xlx-search-record"}, [n("label", {staticClass: "td-input"}, [n("td-input", {
            ref: "input",
            attrs: {placeholder: e.holderTextTip},
            on: {
                focus: e.onInputFocus, blur: e.onInputBlur, input: e.startSearch, keydown: function (t) {
                    return ("button" in t || 65 === t.keyCode) && t.ctrlKey ? void e.$refs.input.select() : null
                }
            },
            nativeOn: {
                contextmenu: function (t) {
                    return e.handlePopInputMenu(t)
                }, keydown: function (t) {
                    return ("button" in t || 70 === t.keyCode) && t.ctrlKey ? e.keyCloseSearch(t) : null
                }
            },
            model: {
                value: e.curSearchKey, callback: function (t) {
                    e.curSearchKey = t
                }, expression: "curSearchKey"
            }
        })], 1), e._v(" "), this.inputFlag && this.curSearchKey.trim().length > 0 ? n("p", {staticClass: "xlx-search-record__result"}, [n("span", [e._v(e._s(e.resultCount))]), e._v("个结果")]) : e._e(), e._v(" "), n("a", {
            staticClass: "xlx-search-record__clear is-danger",
            attrs: {href: "#", title: ""},
            on: {click: e.clickCloseSearch}
        }, [n("i", {staticClass: "td-icon-close"})])]), e._v(" "), n("div", {staticClass: "xlx-search-list"}, [n("td-collapse", {
            staticClass: "xlx-search-list",
            attrs: {value: e.searchListPanel, tabindex: "0"},
            nativeOn: {
                keydown: function (t) {
                    return ("button" in t || 70 === t.keyCode) && t.ctrlKey ? e.keyCloseSearch(t) : null
                }
            }
        }, [e.downloadingSearchList.length > 0 ? n("td-collapse-item", {
            staticClass: "xlx-side-downloading",
            attrs: {title: e.downloadingCategoryTitle, value: e.categoryLastSelectList[0].category, tabindex: "0"},
            nativeOn: {
                keydown: function (t) {
                    return ("button" in t || 70 === t.keyCode) && t.ctrlKey ? e.keyCloseSearch(t) : null
                }
            }
        }, [n("download-category", {
            ref: "downloading",
            staticStyle: {outline: "none"},
            attrs: {
                componentName: "DownloadingItemContainer",
                sortable: !1,
                tasklist: e.downloadingSearchList,
                selectedTaskIds: e.currentSelSearchTaskIds,
                COMMIT_UPDATE_TASKLIST: e.UPDATE_DOWNLOADING_TASKLIST,
                COMMIT_SELECT: e.onDownloadTaskSelect,
                currentCategoryId: e.currentCategoryId,
                currentCategoryViewId: e.currentCategoryViewId,
                itemType: e.searchType,
                sharedKeyWords: e.curSearchKey,
                pulseForRename: e.pulseEventFlag
            },
            on: {dblclick: e.downloadingItemDbClick, contextmenu: e.handleDownloadingItemMenu},
            nativeOn: {
                contextmenu: function (e) {
                    e.stopPropagation()
                }, keydown: function (t) {
                    if (!("button" in t) && e._k(t.keyCode, "delete", [8, 46], t.key, ["Backspace", "Delete"])) return null;
                    e.handleDelete(!1)
                }
            }
        })], 1) : e._e(), e._v(" "), e.completeSearchList.length > 0 ? n("td-collapse-item", {
            staticClass: "xlx-side-completed",
            attrs: {title: e.completedCategoryTitle, value: e.categoryLastSelectList[1].category, tabindex: "0"},
            nativeOn: {
                keydown: function (t) {
                    return ("button" in t || 70 === t.keyCode) && t.ctrlKey ? e.keyCloseSearch(t) : null
                }
            }
        }, [n("download-category", {
            ref: "completed",
            staticStyle: {outline: "none"},
            attrs: {
                componentName: "CompletedItemContainer",
                sortable: !1,
                tasklist: e.completeSearchList,
                selectedTaskIds: e.currentSelSearchTaskIds,
                COMMIT_UPDATE_TASKLIST: e.UPDATE_COMPLETED_TASKLIST,
                COMMIT_SELECT: e.onDownloadTaskSelect,
                currentCategoryId: e.currentCategoryId,
                currentCategoryViewId: e.currentCategoryViewId,
                itemType: e.searchType,
                sharedKeyWords: e.curSearchKey,
                pulseForRename: e.pulseEventFlag
            },
            on: {contextmenu: e.handleCompletedItemMenu},
            nativeOn: {
                contextmenu: function (e) {
                    e.stopPropagation()
                }, keydown: function (t) {
                    if (!("button" in t) && e._k(t.keyCode, "delete", [8, 46], t.key, ["Backspace", "Delete"])) return null;
                    e.handleDelete(!1)
                }
            }
        })], 1) : e._e(), e._v(" "), e.recycleSearchList.length > 0 ? n("td-collapse-item", {
            staticClass: "xlx-side-deleted",
            attrs: {title: e.recycleCategoryTitle, value: e.categoryLastSelectList[2].category, tabindex: "0"},
            nativeOn: {
                keydown: function (t) {
                    return ("button" in t || 70 === t.keyCode) && t.ctrlKey ? e.keyCloseSearch(t) : null
                }
            }
        }, [n("download-category", {
            ref: "dustbin",
            staticStyle: {outline: "none"},
            attrs: {
                componentName: "RecycleItemContainer",
                sortable: !1,
                tasklist: e.recycleSearchList,
                selectedTaskIds: e.currentSelSearchTaskIds,
                currentCategoryId: e.currentCategoryId,
                currentCategoryViewId: e.currentCategoryViewId,
                itemType: e.searchType,
                sharedKeyWords: e.curSearchKey,
                pulseForRename: e.pulseEventFlag,
                COMMIT_UPDATE_TASKLIST: e.UPDATE_RECYCLE_TASKLIST,
                COMMIT_SELECT: e.onDownloadTaskSelect
            },
            on: {dblclick: e.recycleItemDbClick, contextmenu: e.handleRecycleItemMenu},
            nativeOn: {
                contextmenu: function (e) {
                    e.stopPropagation()
                }, keydown: function (t) {
                    if (!("button" in t) && e._k(t.keyCode, "delete", [8, 46], t.key, ["Backspace", "Delete"])) return null;
                    e.handleDelete(!0)
                }
            }
        })], 1) : e._e(), e._v(" "), this.inputFlag && e.resultCount < 1 && this.curSearchKey.trim().length > 0 ? n("div", {staticClass: "xlx-side__empty"}, [n("p", [e._v("没有搜索到相关内容")])]) : e._e()], 1)], 1)])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("td-collapse", {
            staticClass: "xlx-side",
            class: {"is-hover": e.isHoverClass},
            attrs: {value: e.currentCategoryViewId},
            on: {change: e.handleCollapseChange}
        }, [n("td-collapse-item", {
            staticClass: "xlx-side-downloading",
            attrs: {title: e.downloadingCategoryTitle, value: e.categoryLastSelectList[0].category, tabindex: "0"},
            nativeOn: {
                contextmenu: function (t) {
                    return e.handleDownloadingCategoryMenu(t)
                }, keydown: function (t) {
                    return ("button" in t || 65 === t.keyCode) && t.ctrlKey ? e.selectAll(t) : null
                }
            }
        }, [0 === e.downloadingTaskList.length ? n("div", {
            staticClass: "xlx-side__empty",
            staticStyle: {height: "100%"},
            on: {
                contextmenu: function (t) {
                    return t.stopPropagation(), e.handleDownloadingBlankMenu(t)
                }
            }
        }, [n("span", {staticClass: "xlx-icon-empty-down"}), e._v(" "), n("p", [e._v("没有正在下载任务")])]) : n("download-category", {
            ref: "downloading",
            staticStyle: {outline: "none"},
            attrs: {
                componentName: "DownloadingItemContainer",
                tasklist: e.downloadingTaskList,
                selectedTaskIds: e.downloadingSelectedIndexs,
                COMMIT_SELECT: e.UPDATE_DOWNLOADING_SELECTED_TASKS,
                COMMIT_UPDATE_TASKLIST: e.UPDATE_DOWNLOADING_TASKLIST,
                currentCategoryId: e.currentCategoryId,
                currentCategoryViewId: e.currentCategoryViewId
            },
            on: {dblclick: e.downloadingItemDbClick, contextmenu: e.handleDownloadingItemMenu},
            nativeOn: {
                contextmenu: function (t) {
                    return t.stopPropagation(), e.handleDownloadingBlankMenu(t)
                }, keydown: function (t) {
                    if (!("button" in t) && e._k(t.keyCode, "delete", [8, 46], t.key, ["Backspace", "Delete"])) return null;
                    e.handleDelete(!1)
                }
            }
        })], 1), e._v(" "), n("td-collapse-item", {
            staticClass: "xlx-side-completed",
            attrs: {title: e.completedCategoryTitle, value: e.categoryLastSelectList[1].category, tabindex: "0"},
            nativeOn: {
                contextmenu: function (t) {
                    return e.handleCompletedCategoryMenu(t)
                }, keydown: function (t) {
                    return ("button" in t || 65 === t.keyCode) && t.ctrlKey ? e.selectAll(t) : null
                }
            }
        }, [0 === e.completedTaskList.length ? n("div", {
            staticClass: "xlx-side__empty",
            staticStyle: {height: "100%"},
            on: {
                contextmenu: function (e) {
                    e.stopPropagation()
                }
            }
        }, [n("span", {staticClass: "xlx-icon-empty-finish"}), e._v(" "), n("p", [e._v("没有已完成任务")])]) : n("download-category", {
            ref: "completed",
            staticStyle: {outline: "none"},
            attrs: {
                componentName: "CompletedItemContainer",
                tasklist: e.completedTaskList,
                selectedTaskIds: e.completedSelectedTaskIndexs,
                COMMIT_SELECT: e.UPDATE_COMPLETED_SELECTED_TASKS,
                COMMIT_UPDATE_TASKLIST: e.UPDATE_COMPLETED_TASKLIST,
                currentCategoryId: e.currentCategoryId,
                currentCategoryViewId: e.currentCategoryViewId
            },
            on: {contextmenu: e.handleCompletedItemMenu},
            nativeOn: {
                contextmenu: function (e) {
                    e.stopPropagation()
                }, keydown: function (t) {
                    if (!("button" in t) && e._k(t.keyCode, "delete", [8, 46], t.key, ["Backspace", "Delete"])) return null;
                    e.handleDelete(!1)
                }
            }
        })], 1), e._v(" "), -1 === e.currentCategoryId ? n("td-collapse-item", {
            staticClass: "xlx-side-deleted",
            attrs: {title: e.recycleCategoryTitle, value: e.categoryLastSelectList[2].category, tabindex: "0"},
            nativeOn: {
                contextmenu: function (t) {
                    return e.handleRecycleCategoryMenu(t)
                }, keydown: function (t) {
                    return ("button" in t || 65 === t.keyCode) && t.ctrlKey ? e.selectAll(t) : null
                }
            }
        }, [0 === e.recycleTaskList.length ? n("div", {
            staticClass: "xlx-side__empty",
            staticStyle: {height: "100%"},
            on: {
                contextmenu: function (t) {
                    return t.stopPropagation(), e.handleRecycleBlankMenu(t)
                }
            }
        }, [n("span", {staticClass: "xlx-icon-empty-dustbin"}), e._v(" "), n("p", [e._v("没有垃圾箱任务")])]) : n("download-category", {
            ref: "dustbin",
            staticStyle: {outline: "none"},
            attrs: {
                componentName: "RecycleItemContainer",
                tasklist: e.recycleTaskList,
                selectedTaskIds: e.recycleSelectedTaskIndexs,
                currentCategoryId: e.currentCategoryId,
                currentCategoryViewId: e.currentCategoryViewId,
                COMMIT_SELECT: e.UPDATE_RECYCLE_SELECTED_TASKS,
                COMMIT_UPDATE_TASKLIST: e.UPDATE_RECYCLE_TASKLIST
            },
            on: {contextmenu: e.handleRecycleItemMenu},
            nativeOn: {
                contextmenu: function (t) {
                    return t.stopPropagation(), e.handleRecycleBlankMenu(t)
                }, keydown: function (t) {
                    if (!("button" in t) && e._k(t.keyCode, "delete", [8, 46], t.key, ["Backspace", "Delete"])) return null;
                    e.handleDelete(!0)
                }
            }
        })], 1) : e._e(), e._v(" "), e._t("default")], 2)
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("div", {staticClass: "xlx-nav"}, this._l(this.toolbarButtons, function (e) {
            return t("tool-bar-button-container", {
                key: e.id,
                attrs: {id: e.id, title: e.title, buttonClassFilter: e.filterClass, click: e.onClick}
            })
        }))
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("td-list", {
            staticStyle: {height: "100%"},
            attrs: {
                list: e.loadedListWithKey,
                multiple: "",
                drop: "",
                sortable: e.sortable,
                "drag-selectable": "",
                "chosen-keys": e.selectedTaskIds,
                "load-more": e.loadMore,
                "scroll-speed": 6
            },
            on: {"update:chosenKeys": e.handleSelectChange, "update:list": e.handleListChange},
            scopedSlots: e._u([{
                key: "default", fn: function (t) {
                    var i = t.item, a = t.index, o = t.chosen, r = t.active;
                    return [n(e.componentName, {
                        tag: "component",
                        attrs: {
                            taskId: i.key,
                            itemType: e.itemType,
                            sharedKeyWords: e.sharedKeyWords,
                            pulseForRename: e.pulseForRename,
                            currentCategoryId: e.currentCategoryId,
                            currentCategoryViewId: e.currentCategoryViewId,
                            deleted: e.deleted[i.key],
                            opened: e.opened[i.key],
                            chosen: o,
                            active: r,
                            index: a
                        },
                        on: {
                            "update:deleted": function (t) {
                                e.$set(e.deleted, i.key, t)
                            }, "update:opened": function (t) {
                                e.$set(e.opened, i.key, t)
                            }, dblclick: e.handleItemDbClick, "active-change": function (t) {
                                return e.handleActiveChange(t, a)
                            }, "active-nearby": e.handleActiveNearby
                        },
                        nativeOn: {
                            contextmenu: function (t) {
                                return t.stopPropagation(), e.handleContextMenu(t)
                            }
                        }
                    })]
                }
            }])
        })
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this.$createElement, t = this._self._c || e;
        return t("a", {
            staticClass: "xlx-nav-operate",
            class: this.filterClass,
            attrs: {href: "javascript:;", title: this.title},
            on: {click: this.handleClick}
        }, [t("i", {class: this.id})])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-side-item"}, [n("div", {staticClass: "xlx-side-wrapper"}, [n("a", {
            staticClass: "xlx-side-completed__mark",
            attrs: {href: "javascript:;", title: e.markTitle},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleMark(t)
                }
            }
        }), e._v(" "), n("td-media", {
            nativeOn: {
                dblclick: function (t) {
                    return e.handleDbClick(t)
                }
            }
        }, [n("i", {
            class: e.fileTypeClass,
            style: e.isInstallFileIcon ? {
                background: "url(" + e.installFileIcon + ")",
                "background-size": "100% 100%"
            } : {},
            attrs: {slot: "media"},
            slot: "media"
        }), e._v(" "), n("p", {
            staticClass: "xlx-file-name",
            style: e.fileNameDefaultCursor,
            attrs: {title: e.titleOverFlow},
            domProps: {innerHTML: e._s(e.taskName)},
            on: {mouseover: e.handleTaskNameMouseOver}
        }), e._v(" "), n("div", {staticClass: "xlx-side-operate"}, [e.canPlay ? n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "播放"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handlePlayTask(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-play"})]) : e._e(), e._v(" "), e.deleted ? n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "删除任务记录"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleDestroyTask(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-clear"})]) : n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "打开文件夹"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleOpenFile(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-file"})])]), e._v(" "), n("div", {staticClass: "xlx-file-info"}, [n("p", {staticClass: "xlx-file-size"}, [n("span", {staticClass: "xlx-file-size__total"}, [e._v(e._s(e.fileSizeFormat))])]), e._v(" "), n("p", {staticClass: "xlx-file-time"}, [e._v(e._s(e.completeTime))]), e._v(" "), e.bTaskCountShow ? n("a", {
            staticClass: "xlx-file-num",
            attrs: {href: "javascript:;"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, dblclick: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleFileCountClick(t)
                }
            }
        }, [e._v(e._s(e.subTaskCount))]) : e._e()])])], 1)])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-side-item"}, [n("div", {staticClass: "xlx-side-wrapper"}, [n("td-media", {
            nativeOn: {
                dblclick: function (t) {
                    return e.handleDbClick(t)
                }
            }
        }, [n("i", {
            staticClass: "xlx-icon-type",
            class: e.fileTypeClass,
            attrs: {slot: "media"},
            slot: "media"
        }), e._v(" "), n("p", {
            staticClass: "xlx-file-name",
            style: e.fileNameDefaultCursor,
            attrs: {title: e.titleOverFlow},
            domProps: {innerHTML: e._s(e.taskName)},
            on: {mouseover: e.handleTaskNameMouseOver}
        }), e._v(" "), n("div", {staticClass: "xlx-side-operate"}, [n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "还原"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleRestore(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-restore"})]), e._v(" "), n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "彻底删除"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleClear(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-clear"})])]), e._v(" "), n("div", {staticClass: "xlx-file-info"}, [n("p", {staticClass: "xlx-file-size"}, [n("span", {staticClass: "xlx-file-size__total"}, [e._v(e._s(e.fileSizeFormat))])]), e._v(" "), n("p", {staticClass: "xlx-file-time"}, [e._v(e._s(e.creationTime))])])])], 1)])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-side-item"}, [n("div", {staticClass: "xlx-side-wrapper"}, [n("td-media", {
            nativeOn: {
                dblclick: function (t) {
                    return t.stopPropagation(), e.handleDbClick(t)
                }, mouseover: function (t) {
                    return e.handleItemMouseHover(t)
                }, mouseout: function (t) {
                    return e.handleItemMouseOut(t)
                }
            }
        }, [n("i", {
            staticClass: "xlx-icon-type",
            class: e.fileTypeClass,
            attrs: {slot: "media"},
            slot: "media"
        }), e._v(" "), n("p", {
            staticClass: "xlx-file-name",
            style: e.fileNameDefaultCursor,
            attrs: {title: e.titleOverFlow},
            domProps: {innerHTML: e._s(e.taskName)},
            on: {mouseover: e.handleTaskNameMouseOver}
        }), e._v(" "), n("div", {staticClass: "xlx-side-operate"}, [e.isForbidden ? [n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "彻底删除"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleDestroyTask(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-clear"})])] : [e.canPlay ? n("a", {
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "边下边播"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handlePlayTask(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-download-play"})]) : e._e(), e._v(" "), n("a", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: !e.canPause,
                expression: "!canPause"
            }],
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "下载"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleStartTask(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-download"})]), e._v(" "), n("a", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.canPause,
                expression: "canPause"
            }],
            staticClass: "xlx-side-operate__button",
            attrs: {href: "javascript:;", title: "暂停"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handlePauseTask(t)
                }
            }
        }, [n("i", {staticClass: "xlx-icon-pause"})])]], 2), e._v(" "), n("td-progress", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: !e.taskError,
                expression: "!taskError"
            }], class: {"is-super": e.isSuperVip}, attrs: {value: e.progress}
        }), e._v(" "), n("div", {staticClass: "xlx-file-info"}, [e.taskError ? [n("p", {staticClass: "xlx-file-error"}, [e._v(e._s(e.errInfo))])] : e.showStartTemplate ? [n("p", {staticClass: "xlx-file-size"}, [n("td-tooltip", {
            attrs: {
                content: "正在获取全部文件大小",
                offset: {x: -5},
                visible: e.isQuerying,
                placement: "bottom"
            }
        }, [n("span", {
            staticClass: "xlx-file-size__total", on: {
                mouseover: function (t) {
                    e.onShowQueryTip(!0)
                }, mouseout: function (t) {
                    e.onShowQueryTip(!1)
                }
            }
        }, [e._v(e._s(e.fileSizeFormat))])])], 1), e._v(" "), e.bTaskCountShow ? n("a", {
            staticClass: "xlx-file-num",
            attrs: {href: "javascript:;"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleFileCountClick(t)
                }, dblclick: function (e) {
                    e.stopPropagation()
                }
            }
        }, [e._v(e._s(e.subTaskCountDesc))]) : e._e(), e._v(" "), n("p", {staticClass: "xlx-file-time"}, [e._v(e._s(e.remain))]), e._v(" "), n("p", {staticClass: "xlx-file-speed"}, [n("span", {staticClass: "xlx-file-speed__total"}, [e._v(e._s(e.taskStatusSpeedInfo))]), e._v(" "), n("span", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.isShowVipSpeed,
                expression: "isShowVipSpeed"
            }], staticClass: "xlx-file-speed__vip", class: {"is-super": e.isSuperVip}
        }, [e._v(e._s(e.vipSpeed))])])] : [n("p", {staticClass: "xlx-file-size"}, [n("span", {staticClass: "xlx-file-size__finish"}, [e._v(e._s(e.downloadSizeFormat))]), e._v(" "), n("span", {staticClass: "xlx-file-size__separator"}, [e._v("/")]), e._v(" "), n("td-tooltip", {
            attrs: {
                content: "正在获取全部文件大小",
                offset: {x: -5},
                visible: e.isQuerying,
                placement: "bottom"
            }
        }, [n("span", {
            staticClass: "xlx-file-size__total", on: {
                mouseover: function (t) {
                    e.onShowQueryTip(!0)
                }, mouseout: function (t) {
                    e.onShowQueryTip(!1)
                }
            }
        }, [e._v(e._s(e.fileSizeFormat))])])], 1), e._v(" "), e.bTaskCountShow ? n("a", {
            staticClass: "xlx-file-num",
            attrs: {href: "javascript:;"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, dblclick: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.handleFileCountClick(t)
                }
            }
        }, [e._v(e._s(e.subTaskCountDesc))]) : e._e(), e._v(" "), n("p", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.percentVisible,
                expression: "percentVisible"
            }], staticClass: "xlx-file-percent"
        }, [e._v(e._s(e.progressPercent))]), e._v(" "), n("p", {staticClass: "xlx-file-status"}, [e._v(e._s(e.taskStatusSpeedInfo))])]], 2)], 1), e._v(" "), n("div", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.isShowExpand,
                expression: "isShowExpand"
            }], staticClass: "xlx-side-ad"
        }, [n("div", {staticClass: "xlx-side-ad__image"}, [n("div", {
            directives: [{
                name: "show",
                rawName: "v-show",
                value: e.isShowGroupAccelerate,
                expression: "isShowGroupAccelerate"
            }], staticClass: "xlx-ad-group"
        }, [n("div", {
            staticClass: "xlx-ad-group__image",
            class: {"is-accelerated": e.isAccelerated},
            attrs: {title: e.groupAccelerateIconTitle},
            on: {click: e.handleGroupAccelerateClick}
        })])]), e._v(" "), n("ItemVipExpand", {attrs: {taskId: e.taskId}})], 1)], 1)])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return e.isTry ? n("ItemTryStatus", {
            attrs: {
                taskId: e.taskId,
                taskUIStatus: e.taskUIStatus,
                isVip: e.isVip,
                taskInfo: e.taskInfo
            }
        }) : n("ItemVipStatus", {
            attrs: {
                taskId: e.taskId,
                taskUIStatus: e.taskUIStatus,
                isVip: e.isVip,
                authority: e.authority,
                taskInfo: e.taskInfo,
                btErrorType: e.btErrorType
            }
        })
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {staticClass: "xlx-plugin-vip xlx-plugin-vip--ordinary is-normal"}, [n("div", {staticClass: "xlx-plugin-vip__inner"}, [e.isErrorScene ? n("a", {
            staticClass: "xlx-plugin-vip__text is-error",
            attrs: {href: "#"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.clickErrorScenceText(t)
                }
            }
        }, [e._v(e._s(e.errorSceneText))]) : e.isDefaultScene ? n("p", {staticClass: "xlx-plugin-vip__text is-default"}, [e._v(e._s(e.defaultSceneText))]) : n("a", {
            staticClass: "xlx-plugin-vip__text",
            attrs: {href: " javascript:; "},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.clickScenceText(t)
                }
            }
        }, [e._v(e._s(e.sceneText))]), e._v(" "), e.showNoAuthorityInit ? n() : e.showInit ? n("a", {
            staticClass: "xlx-plugin-vip__button ",
            attrs: {href: " javascript:; "},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.clickVipButton(t)
                }
            }
        }, [n("span", {staticClass: "xlx-plugin-vip__logo-vip "}, [e._v("VIP")]), e._v(" "), n("span", {staticClass: "xlx-plugin-vip__button-text "}, [e._v("会员加速")])]) : e.showFailed ? n("p", {staticClass: "xlx-plugin-vip__text is-error "}, [e._v("文件无法加速")]) : n("p", {
            staticClass: "xlx-plugin-vip__status ",
            class: {"is-super": e.isSuperStarted}
        }, [e._v(e._s(e.taskStatusText))])])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    var i = function () {
        var e = this, t = e.$createElement, n = e._self._c || t;
        return n("div", {
            staticClass: "xlx-plugin-vip",
            class: [e.pluginVipClass, {"is-trying": e.showTrying}]
        }, [n("div", {
            directives: [{name: "show", rawName: "v-show", value: e.showTrying, expression: "showTrying"}],
            staticClass: "td-progress-bar"
        }, [n("div", {staticClass: "td-progress-bar__outer"}, [n("div", {
            staticClass: "td-progress-bar__inner",
            style: {width: e.progressPercent}
        })])]), e._v(" "), n("div", {staticClass: "xlx-plugin-vip__inner"}, [n("p", {staticClass: "xlx-plugin-vip__text"}, [e._v(e._s(e.taskStatusText))]), e._v(" "), n("a", {
            staticClass: "xlx-plugin-vip__button",
            attrs: {href: "javascript:;"},
            on: {
                mousedown: function (e) {
                    e.stopPropagation()
                }, click: function (t) {
                    return t.stopPropagation(), e.clickVipButton(t)
                }
            }
        }, [e.isSuper ? n("i", {staticClass: "vip-icon-svip0"}) : n("span", {staticClass: "xlx-plugin-vip__logo-vip"}, [e._v("VIP")]), e._v(" "), n("span", {staticClass: "xlx-plugin-vip__button-text"}, [e._v(e._s(e.buttonText))])])])])
    }, a = [];
    i._withStripped = !0, n.d(t, "a", function () {
        return i
    }), n.d(t, "b", function () {
        return a
    })
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(5), o = n(32), r = i.default.getLogger("DownloadKernel.CategoryView"),
        s = o.DownloadKernelEventManager.getEventManager();
    t.CategoryView = class {
        constructor(e, t) {
            this.categoryId = e, this.categoryViewId = t, this.tasks = new Map
        }

        getCategoryViewId() {
            return this.categoryViewId
        }

        getTasks() {
            return this.tasks
        }

        getTaskCount() {
            return this.tasks.size
        }

        insertTask(e, t = a.DownloadKernel.TaskInsertReason.Unknown) {
            if (null !== e) {
                let n = [];
                for (let t = 0; t < e.length; ++t) {
                    let i = e[t];
                    if (!i) continue;
                    i.setCategoryViewId(this.categoryViewId);
                    let o = i.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId);
                    0 !== o && (this.tasks.set(o, i), n.push(i)), r.information("insertTask categoryId:", this.categoryId, ", catygoryViewId:", this.categoryViewId, "taskId:", o)
                }
                s.fireTaskEvent(a.DownloadKernel.TaskEventType.InsertToCategoryView, this.categoryId, this.categoryViewId, n, t)
            }
        }

        removeTask(e) {
            if (null !== e) {
                let t = [];
                for (let n = 0; n < e.length; ++n) {
                    let i = e[n];
                    if (!i) continue;
                    let o = i.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId);
                    this.tasks.has(o) && (this.tasks.delete(o), t.push(i)), r.information("removeTask catygoryView:", this.categoryViewId, "taskId:", o)
                }
                s.fireTaskEvent(a.DownloadKernel.TaskEventType.RemoveFromCategoryView, this.categoryId, this.categoryViewId, t)
            }
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5), a = n(85).DownloadKernelCategoryViewManager.getCategoryViewManager();
    !function (e) {
        function t() {
            let e = -1, t = 0, n = 0, o = a.getCategoryViewFromId(i.DownloadKernel.CategroyViewID.Downloading);
            if (o) {
                let a = o.getTasks(), r = void 0, s = void 0;
                for (let [, e]of a) null !== e && ((r = e.getTaskStatus()) !== i.DownloadKernel.TaskStatus.PreDownloading && r !== i.DownloadKernel.TaskStatus.StartWaiting && r !== i.DownloadKernel.TaskStatus.StartPending && r !== i.DownloadKernel.TaskStatus.Started || (t += (s = e.getTaskBaseInfo()).fileSize, n += s.downloadSize));
                t > 0 && (e = n / t)
            }
            return e >= 1 && (e = 1), e
        }

        e.getDownloadProgress = t, e.getDownloadProgressPercent = function () {
            let e = t(), n = "0.01%";
            return n = (100 * (e = e < 0 ? 0 : e)).toFixed(2) + "%"
        }
    }(t.DownloadProgressNS || (t.DownloadProgressNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(686), o = n(11), r = n(2), s = n(1).default.getLogger("Thunder.base.unzip-utilities");
    !function (e) {
        function t(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1, a = yield function (e) {
                    return i(this, void 0, void 0, function* () {
                        let t = null;
                        if (null !== e) try {
                            t = yield e.async("nodebuffer")
                        } catch (e) {
                            s.warning(e)
                        }
                        return t
                    })
                }(t);
                return null !== a && (n = yield o.FileSystemAWNS.writeFileAW(e, a)), n
            })
        }

        function n(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !0;
                if (null !== t) {
                    (yield o.FileSystemAWNS.existsAW(e)) || (n = yield o.FileSystemAWNS.mkdirAW(e))
                }
                return n
            })
        }

        e.uncompressZipFile = function (e, l) {
            return i(this, void 0, void 0, function* () {
                let u = !1;
                if (void 0 !== e && void 0 !== l) {
                    let d = new a, c = yield o.FileSystemAWNS.readFileAW(l);
                    if (null !== c && c.length > 0 && null !== d) {
                        let a = yield function (e, t) {
                            return i(this, void 0, void 0, function* () {
                                let n = null;
                                try {
                                    n = yield e.loadAsync(t)
                                } catch (e) {
                                    s.warning(e)
                                }
                                return n
                            })
                        }(d, c);
                        null !== a && null !== a.files && (u = yield function (e, a, l) {
                            return i(this, arguments, void 0, function* () {
                                s.information("extractFiles", arguments);
                                let i = !1, u = yield o.FileSystemAWNS.existsAW(l), d = u;
                                if (s.information("exsitStatus", u), s.information("mkStatus", d), u || (d = yield o.FileSystemAWNS.mkdirAW(l)), d) {
                                    let u = Object.keys(a), d = !0;
                                    for (let i = 0; i < u.length; i++) {
                                        let a = u[i], c = `${l}` + a, h = e.file(a);
                                        if (s.information(r.dirname(r.join(l, a))), yield o.FileSystemAWNS.mkdirsAW(r.dirname(r.join(l, a))), null !== h) {
                                            if (!(d = yield t(c, h))) {
                                                s.warning("write file failure");
                                                break
                                            }
                                        } else if (!(d = yield n(c, e.folder(a)))) {
                                            s.warning("write folder failure");
                                            break
                                        }
                                    }
                                    d && (i = !0)
                                }
                                return i
                            })
                        }(d, a.files, e))
                    }
                }
                return u
            })
        }
    }(t.UnzipUtilitiesAWNS || (t.UnzipUtilitiesAWNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(11), s = n(5), l = n(158), u = n(28), d = n(688),
        c = o.default.getLogger("NativeFunction.TaskInfo"), h = u.DownloadKernelTaskManager.getTaskManager();

    class f {
        constructor() {
            d.HistoryTaskSpeedInfoNS.init().catch()
        }

        getHistoryTaskInfoString(e) {
            return i(this, void 0, void 0, function* () {
                let t = "", n = yield this.getTaskInfo(e);
                if (n) {
                    let i = h.getTaskFromTaskId(e);
                    if (i) {
                        let a = this.getFileList(i);
                        n.fileList = a;
                        let o = n.progress, r = yield this.getHistorySpeedInfo(e, o);
                        r && (r.maxSpeed && (n.maxSpeed = r.maxSpeed), r.historySpeedMap && (n.historySpeed = r.historySpeedMap), r.historyIncreaseSpeedMap && (n.historyIncreaseSpeed = r.historyIncreaseSpeedMap), t = JSON.stringify(n), c.information("taskInfo: ", t))
                    } else c.warning("task is null")
                } else c.warning("taskInfo is null");
                return t
            })
        }

        getTaskInfoString(e) {
            return i(this, void 0, void 0, function* () {
                let t = "", n = yield this.getTaskInfo(e);
                return n ? (t = JSON.stringify(n), c.information("taskInfo: ", t)) : c.warning("taskInfo is null"), t
            })
        }

        getBtSubFileListString(e, t) {
            let n = [];
            do {
                let i = h.getTaskFromTaskId(e);
                if (!i) break;
                if (i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskType) !== s.DownloadKernel.TaskType.Bt) break;
                let a = i.getExtraObject();
                if (!a) break;
                for (let e = 0; e < t.length; ++e) {
                    let i = {}, o = t[e], r = a.getBtFileByRealIndex(o.realIndex);
                    i.index = o.realIndex, i.filePath = o.relativePath, i.fileName = r.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FileName), i.isNeedDownload = r ? r.getIsDownload() : 1, i.fileSize = o.fileSize, i.cid = o.cid, i.gcid = o.gcid, i.status = o.fileStatus, i.downloadSize = o.downloadSize, i.errCode = o.errorCode, i.status === s.DownloadKernel.BtFileStatus.Forbidden ? i.errMessage = l.TaskStatusHelper.getTaskErrorInfoByCode(i.errCode) : i.errMessage = "", n.push(i)
                }
            } while (0);
            return JSON.stringify(n)
        }

        getGroupTaskSubFileListString(e) {
            let t = [];
            for (let n = 0; n < e.length; ++n) {
                let i = e[n];
                if (i) {
                    let e = {filePath: ""};
                    e.index = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileIndex), e.taskId = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskId), e.fileName = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName), e.url = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskUrl), e.isNeedDownload = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSubTask), e.fileSize = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize), e.downloadSize = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize), e.cid = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.Cid), e.gcid = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.Gcid), e.status = i.getTaskStatus(), e.errCode = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.ErrorCode), e.status === s.DownloadKernel.TaskStatus.Failed ? e.errMessage = l.TaskStatusHelper.getTaskErrorInfoByCode(e.errCode) : e.errMessage = "";
                    let n = i.getTaskChannelInfo();
                    e.dcdnStatus = n.dcdnStatus, t.push(e)
                }
            }
            return JSON.stringify(t)
        }

        getTaskInfo(e) {
            return i(this, void 0, void 0, function* () {
                let t = {}, n = h.getTaskFromTaskId(e);
                if (n) {
                    let i = n.getTaskStatus(), o = 0;
                    i !== s.DownloadKernel.TaskStatus.Succeeded && i !== s.DownloadKernel.TaskStatus.Seeding || (o = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.CompletionTime)), n.getTaskAttribute(s.DownloadKernel.TaskAttribute.RecycleTime) > 0 && (i = 20);
                    let r = "", u = "", d = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskType),
                        c = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName);
                    d !== s.DownloadKernel.TaskType.P2sp && d !== s.DownloadKernel.TaskType.Emule || ((r = a.extname(c)) && (r = r.substring(1)), u = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskUrl));
                    let h = "";
                    if (d === s.DownloadKernel.TaskType.Bt) {
                        h = n.getExtraObject().getInfoId()
                    }
                    let f = "", p = n.getTaskChannelInfo(),
                        g = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize),
                        k = p.offlineSize + p.originSize + p.p2pSize + p.p2sSize;
                    k < g && (p.p2pSize > 0 ? p.p2pSize = p.p2pSize + g - k : p.offlineSize > 0 ? p.offlineSize = p.offlineSize + g - k : p.originSize > 0 ? p.originSize = p.originSize + g - k : p.p2sSize > 0 && (p.p2sSize = p.p2sSize + g - k));
                    let m = "";
                    d !== s.DownloadKernel.TaskType.P2sp && d !== s.DownloadKernel.TaskType.Emule || (m = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.Gcid));
                    let T = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize),
                        v = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.SrcTotal),
                        w = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.SrcUsing),
                        y = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadingPeriod),
                        S = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.CreateTime),
                        b = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.SavePath),
                        C = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.Description),
                        D = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.ErrorCode), N = yield this.getActions(n),
                        I = this.getProgress(n), _ = this.getSpeedInfo(n);
                    t.status = i, t.taskID = e, t.type = d, t.name = c, t.gcid = m, t.suffix = r, t.url = u, t.size = T, t.progress = I, t.allResourceCount = v, t.resourceCount = w, t.errCode = D, t.status === s.DownloadKernel.TaskStatus.Failed ? t.errMessage = l.TaskStatusHelper.getTaskErrorInfoByCode(t.errCode) : t.errMessage = "", n.getStopReason() === s.DownloadKernel.TaskStopReason.SelectDownloadLists ? t.stopReason = "downloadSelected" : t.stopReason = "", t.actions = N, t.averageSpeed = _.averageSpeed, t.speed = _.speed, t.increaseSpeed = _.increaseSpeed, t.channelInfo = p, t.savePath = b, t.infoId = h, t.duration = y, t.createTime = S, t.completeTime = o, t.md5 = f, t.note = C
                }
                return t
            })
        }

        isForbidden(e) {
            let t = !1;
            do {
                if (e.getTaskStatus() === s.DownloadKernel.TaskStatus.Failed) {
                    let n = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.ErrorCode);
                    if (7 === n) {
                        t = !0;
                        break
                    }
                    if (n >= 700 && n <= 799) {
                        t = !0;
                        break
                    }
                }
            } while (0);
            return t
        }

        getActions(e) {
            return i(this, void 0, void 0, function* () {
                let t = [];
                do {
                    if (e.getTaskAttribute(s.DownloadKernel.TaskAttribute.RecycleTime) > 0) {
                        t.push("restore"), t.push("delete");
                        break
                    }
                    if (this.isForbidden(e)) {
                        t.push("delete");
                        break
                    }
                    let n = e.getTaskStatus();
                    if (n === s.DownloadKernel.TaskStatus.Succeeded || n === s.DownloadKernel.TaskStatus.Seeding) {
                        if (e.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskType) === s.DownloadKernel.TaskType.Group) {
                            let n = e.getExtraObject();
                            if (n) {
                                let e = n.getSubTaskByIndex(0).getTaskAttribute(s.DownloadKernel.TaskAttribute.SavePath);
                                if (!(yield r.FileSystemAWNS.existsAW(e))) {
                                    t.push("delete");
                                    break
                                }
                            }
                        } else {
                            let n = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName),
                                i = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.SavePath), o = a.join(i, n);
                            if (!(yield r.FileSystemAWNS.existsAW(o))) {
                                t.push("delete");
                                break
                            }
                        }
                        e.isSupportPlay() && (t.push("play"), t.push("subtitleDownload")), t.push("openFolder");
                        break
                    }
                    if (1 === e.getTaskAttribute(s.DownloadKernel.TaskAttribute.Forbidden)) {
                        t.push("delete");
                        break
                    }
                    e.isSupportPlay() && n !== s.DownloadKernel.TaskStatus.Failed && t.push("downAndPlay"), n === s.DownloadKernel.TaskStatus.Stopped || n === s.DownloadKernel.TaskStatus.Failed || n === s.DownloadKernel.TaskStatus.Unkown ? t.push("continue") : t.push("pause"), e.isSupportPlay() && t.push("subtitleDownload")
                } while (0);
                return t
            })
        }

        getProgress(e) {
            let t = 0, n = e.getTaskStatus(), i = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize),
                a = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize);
            return 0 !== i && 0 !== a && (n === s.DownloadKernel.TaskStatus.Succeeded || n === s.DownloadKernel.TaskStatus.Seeding || a >= i ? t = 100 : (t = a / i * 100, t = parseInt(t.toString(), 10))), t
        }

        getFileList(e) {
            let t = [], n = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskType);
            if (n === s.DownloadKernel.TaskType.Bt) {
                let n = e.getExtraObject().getBtFileList();
                for (let [, e]of n) {
                    let n = {};
                    n.index = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.RealIndex), n.filePath = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FilePath), n.fileName = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FileName), n.isNeedDownload = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.Download), n.fileSize = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FileSize), n.cid = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.Cid), n.gcid = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.Gcid), n.status = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FileStatus), n.downloadSize = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.DownloadSize), n.errCode = e.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.ErrorCode), n.status === s.DownloadKernel.BtFileStatus.Forbidden ? n.errMessage = l.TaskStatusHelper.getTaskErrorInfoByCode(n.errCode) : n.errMessage = "", t.push(n)
                }
            } else if (n === s.DownloadKernel.TaskType.Group) {
                let n = e.getExtraObject(), i = n.getSubTaskCount();
                for (let e = 0; e < i; ++e) {
                    let i = n.getSubTaskByIndex(e);
                    if (i) {
                        let n = {filePath: ""};
                        n.index = e, n.taskId = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskId), n.fileName = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName), n.url = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskUrl), n.isNeedDownload = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSubTask), n.fileSize = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize), n.downloadSize = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize), n.cid = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.Cid), n.gcid = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.Gcid), n.status = i.getTaskStatus(), n.errCode = i.getTaskAttribute(s.DownloadKernel.TaskAttribute.ErrorCode), n.status === s.DownloadKernel.TaskStatus.Failed ? n.errMessage = l.TaskStatusHelper.getTaskErrorInfoByCode(n.errCode) : n.errMessage = "";
                        let a = i.getTaskChannelInfo();
                        n.dcdnStatus = a.dcdnStatus, t.push(n)
                    }
                }
            }
            return t
        }

        getSpeedInfo(e) {
            let t = e.getDownloadSpeed(), n = 0, i = e.getVipSpeed(),
                a = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize),
                o = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadingPeriod);
            o < 1 && (o = 1), n = a / o, n = parseInt(n.toString(), 10);
            let r = {};
            return r.averageSpeed = n, r.speed = t, r.increaseSpeed = i, r
        }

        getHistorySpeedInfo(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = {maxSpeed: 0, historySpeedMap: {}, historyIncreaseSpeedMap: {}},
                    i = yield d.HistoryTaskSpeedInfoNS.getTaskSpeedInfo(e);
                do {
                    if (!i) break;
                    if (!i.maxSpeed || i.maxSpeed < 0) break;
                    n.maxSpeed = i.maxSpeed;
                    let e = i.speedInfoMap;
                    if (!e) break;
                    void 0 === t && (t = 0), (!(t = parseInt(t.toString(), 10)) || t < 0) && (t = 0), t > 100 && (t = 100);
                    let a = {}, o = {};
                    for (let n in e) if (void 0 !== e[n]) {
                        let i = parseInt(n, 10);
                        if (i <= t) {
                            let t = e[n];
                            a[i] = t.downloadSpeed, o[i] = t.addSpeed
                        }
                    }
                    n.historySpeedMap = a, n.historyIncreaseSpeedMap = o
                } while (0);
                return n
            })
        }
    }

    t.TaskInfoManager = f, function (e) {
        const t = new f;
        e.getTaskInfoManager = function () {
            return t
        }
    }(t.TaskInfoManagerNS || (t.TaskInfoManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(506);
    !function (e) {
        const t = new i.SqliteTable;
        t.name = "offline", t.encrypt = !0, t.jsonify = !0, e.getTable = function () {
            return t
        }
    }(t.OfflineTaskDataBaseNS || (t.OfflineTaskDataBaseNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(111), a = n(236), o = n(5);
    t.VipTaskBase = class {
        constructor(e) {
            this.mTaskId = e.getTaskId(), this.mTask = e
        }

        get taskId() {
            return this.mTaskId
        }

        get task() {
            return this.mTask
        }

        get vipTaskStatus() {
            return this.mVipTaskStatus
        }

        set vipTaskStatus(e) {
            if (this.mVipTaskStatus !== e) {
                let t = !1;
                if (e === i.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped) {
                    if (this.mVipTaskStatus === i.VipDownloadDefineNS.VipTaskStatus.CommitFailed || this.mVipTaskStatus === i.VipDownloadDefineNS.VipTaskStatus.AcclerateFailed) return;
                    t = !0
                } else e === i.VipDownloadDefineNS.VipTaskStatus.Init || e === i.VipDownloadDefineNS.VipTaskStatus.Unkown || this.mVipTaskStatus === i.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped ? t = !0 : e > this.mVipTaskStatus && (t = !0);
                t && (this.mVipTaskStatus = e, this.task.getTaskExtra().setVipTaskStatus(this.vipTaskType, e))
            }
        }

        get showSpeed() {
            let e = !1;
            switch (this.mVipTaskStatus) {
                case i.VipDownloadDefineNS.VipTaskStatus.CommitWait:
                case i.VipDownloadDefineNS.VipTaskStatus.Commiting:
                case i.VipDownloadDefineNS.VipTaskStatus.AcclerateWait:
                case i.VipDownloadDefineNS.VipTaskStatus.Acclerating:
                    e = !0
            }
            return e
        }

        createDcdnError(e) {
            let t = void 0;
            switch (e) {
                case o.DownloadKernel.DcdnStatusCode.ResourceNotFound:
                    t = "正在查找资源";
                    break;
                case o.DownloadKernel.DcdnStatusCode.AuthorizingFailed:
                    t = "登录异常，请重新登录";
                    break;
                case o.DownloadKernel.DcdnStatusCode.ForbidByCopyright:
                case o.DownloadKernel.DcdnStatusCode.ForbidByPorNoGraphy:
                case o.DownloadKernel.DcdnStatusCode.ForbidByReactionary:
                case o.DownloadKernel.DcdnStatusCode.ForbidByOtherFilter:
                    t = "资源被屏蔽"
            }
            return {errorStep: a.HttpDefineNS.ErrorStep.Acclerate, result: e, message: t}
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(506);
    !function (e) {
        const t = new i.SqliteTable;
        t.name = "superspeed", t.encrypt = !0, t.jsonify = !0, e.getTable = function () {
            return t
        }
    }(t.VipTaskDataBaseNS || (t.VipTaskDataBaseNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(235), o = n(109), r = n(708), s = n(59), l = n(236), u = n(48),
        d = n(1).default.getLogger("Thunder.VipDownload"), c = s.UserHelperNS.getHelper();

    class h extends o.HttpSession {
        query(e) {
            return i(this, void 0, void 0, function* () {
                let t = ++h.sequence, n = c.userId, i = yield c.getSessionId(),
                    o = u.PluginHelperNS.getHelper().currentTime, s = a.HttpJsonCryptoNS.getUriParam(t, o);
                return this.host = "try.speed.cdn.vip.xunlei.com", this.retries = 2, this.timeout = 2e4, this.path = "/speed_trial/query?" + s, this.auth = a.HttpJsonCryptoNS.getAuthorization(n, i), this.accept = a.HttpJsonCryptoNS.getAccept(), e.userId = n, e.random = o, this.body = yield r.TryTaskHttpPackageNS.createQueryBuffer(e), new Promise(t => {
                    this.post(i => {
                        let a = null;
                        if (c.userId === e.userId) {
                            let e = i.headers["random-num"];
                            if (d.information("random", e), 200 === i.statusCode && i.body && e) {
                                let t = Number(e).valueOf();
                                a = r.TryTaskHttpPackageNS.praseQueryBuffer(n, t, i.body)
                            }
                        }
                        t(a)
                    }, e => {
                        d.information("error", e), t(null)
                    })
                })
            })
        }

        commit(e) {
            return i(this, void 0, void 0, function* () {
                let t = ++h.sequence, n = c.userId, i = yield c.getSessionId(),
                    o = u.PluginHelperNS.getHelper().currentTime, s = a.HttpJsonCryptoNS.getUriParam(t, o);
                return this.host = "try.speed.cdn.vip.xunlei.com", this.retries = 2, this.timeout = 2e4, this.path = "/speed_trial/commit?" + s, this.auth = a.HttpJsonCryptoNS.getAuthorization(n, i), this.accept = a.HttpJsonCryptoNS.getAccept(), e.userId = n, e.random = o, this.body = yield r.TryTaskHttpPackageNS.createCommitBuffer(e), new Promise(t => {
                    this.post(i => {
                        let a = null;
                        if (c.userId === e.userId) {
                            let e = i.headers["random-num"];
                            if (d.information("random", e), 200 === i.statusCode) if (i.body && e) {
                                let t = Number(e).valueOf();
                                (a = r.TryTaskHttpPackageNS.praseCommitBuffer(n, t, i.body)) || (a = this.createCommitResponse(l.HttpErrorNS.errorPrase))
                            } else a = this.createCommitResponse(l.HttpErrorNS.errorData); else a = this.createCommitResponse(l.HttpErrorNS.errorStatusCode);
                            t(a)
                        }
                    }, e => {
                        d.information("error", e);
                        let n = this.createCommitResponse(l.HttpErrorNS.errorConnect);
                        t(n)
                    })
                })
            })
        }

        queyToken(e) {
            return i(this, void 0, void 0, function* () {
                let t = ++h.sequence, n = c.userId, i = e.verify, o = u.PluginHelperNS.getHelper().currentTime,
                    s = a.HttpJsonCryptoNS.getUriParam(t, o, 1);
                return this.host = "speed.auth.vip.xunlei.com", this.retries = 2, this.timeout = 2e4, this.path = "/speed/speedup?" + s, this.auth = a.HttpJsonCryptoNS.getAuthorization(n, i), this.accept = a.HttpJsonCryptoNS.getAccept(), e.userId = n, e.random = o, this.body = yield r.TryTaskHttpPackageNS.createTokenBuffer(e), new Promise(t => {
                    this.post(i => {
                        let a = null;
                        if (c.userId === e.userId) {
                            let e = i.headers["random-num"];
                            if (d.information("random", e), 200 === i.statusCode) if (i.body && e) {
                                let t = Number(e).valueOf();
                                (a = r.TryTaskHttpPackageNS.praseTokenBuffer(n, t, i.body)) || (a = this.createTokenResponse(l.HttpErrorNS.errorPrase))
                            } else a = this.createTokenResponse(l.HttpErrorNS.errorData); else a = this.createTokenResponse(l.HttpErrorNS.errorStatusCode);
                            t(a)
                        }
                    }, e => {
                        d.information("error", e);
                        let n = this.createTokenResponse(l.HttpErrorNS.errorConnect);
                        t(n)
                    })
                })
            })
        }

        createCommitResponse(e) {
            return {result: e, message: l.HttpErrorNS.getMessage(e)}
        }

        createTokenResponse(e) {
            return {result: e, message: l.HttpErrorNS.getMessage(e)}
        }
    }

    h.sequence = 0, t.TryTaskHttpSession = h
}, function (e, t, n) {
    (function () {
        "use strict";
        var e, i, a, o, r = {}.hasOwnProperty;
        i = n(509), e = n(718), a = n(723), o = n(656), t.defaults = i.defaults, t.processors = o, t.ValidationError = function (e) {
            function t(e) {
                this.message = e
            }

            return function (e, t) {
                for (var n in t) r.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(t, Error), t
        }(), t.Builder = e.Builder, t.Parser = a.Parser, t.parseString = a.parseString
    }).call(this)
}, function (e, t) {
    (function () {
        e.exports = function () {
            function e(e, t, n) {
                if (this.options = e.options, this.stringify = e.stringify, null == t) throw new Error("Missing attribute name of element " + e.name);
                if (null == n) throw new Error("Missing attribute value for attribute " + t + " of element " + e.name);
                this.name = this.stringify.attName(t), this.value = this.stringify.attValue(n)
            }

            return e.prototype.clone = function () {
                return Object.create(this)
            }, e.prototype.toString = function (e) {
                return this.options.writer.set(e).attribute(this)
            }, e
        }()
    }).call(this)
}, function (e, t) {
    (function () {
        var t = function (e, t) {
            return function () {
                return e.apply(t, arguments)
            }
        }, n = {}.hasOwnProperty;
        e.exports = function () {
            function e(e) {
                var i, a, o;
                for (i in this.assertLegalChar = t(this.assertLegalChar, this), e || (e = {}), this.noDoubleEncoding = e.noDoubleEncoding, a = e.stringify || {}) n.call(a, i) && (o = a[i], this[i] = o)
            }

            return e.prototype.eleName = function (e) {
                return e = "" + e || "", this.assertLegalChar(e)
            }, e.prototype.eleText = function (e) {
                return e = "" + e || "", this.assertLegalChar(this.elEscape(e))
            }, e.prototype.cdata = function (e) {
                return e = (e = "" + e || "").replace("]]>", "]]]]><![CDATA[>"), this.assertLegalChar(e)
            }, e.prototype.comment = function (e) {
                if ((e = "" + e || "").match(/--/)) throw new Error("Comment text cannot contain double-hypen: " + e);
                return this.assertLegalChar(e)
            }, e.prototype.raw = function (e) {
                return "" + e || ""
            }, e.prototype.attName = function (e) {
                return "" + e || ""
            }, e.prototype.attValue = function (e) {
                return e = "" + e || "", this.attEscape(e)
            }, e.prototype.insTarget = function (e) {
                return "" + e || ""
            }, e.prototype.insValue = function (e) {
                if ((e = "" + e || "").match(/\?>/)) throw new Error("Invalid processing instruction value: " + e);
                return e
            }, e.prototype.xmlVersion = function (e) {
                if (!(e = "" + e || "").match(/1\.[0-9]+/)) throw new Error("Invalid version number: " + e);
                return e
            }, e.prototype.xmlEncoding = function (e) {
                if (!(e = "" + e || "").match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) throw new Error("Invalid encoding: " + e);
                return e
            }, e.prototype.xmlStandalone = function (e) {
                return e ? "yes" : "no"
            }, e.prototype.dtdPubID = function (e) {
                return "" + e || ""
            }, e.prototype.dtdSysID = function (e) {
                return "" + e || ""
            }, e.prototype.dtdElementValue = function (e) {
                return "" + e || ""
            }, e.prototype.dtdAttType = function (e) {
                return "" + e || ""
            }, e.prototype.dtdAttDefault = function (e) {
                return null != e ? "" + e || "" : e
            }, e.prototype.dtdEntityValue = function (e) {
                return "" + e || ""
            }, e.prototype.dtdNData = function (e) {
                return "" + e || ""
            }, e.prototype.convertAttKey = "@", e.prototype.convertPIKey = "?", e.prototype.convertTextKey = "#text", e.prototype.convertCDataKey = "#cdata", e.prototype.convertCommentKey = "#comment", e.prototype.convertRawKey = "#raw", e.prototype.assertLegalChar = function (e) {
                var t;
                if (t = e.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/)) throw new Error("Invalid character in string: " + e + " at index " + t.index);
                return e
            }, e.prototype.elEscape = function (e) {
                var t;
                return t = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g, e.replace(t, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\r/g, "&#xD;")
            }, e.prototype.attEscape = function (e) {
                var t;
                return t = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g, e.replace(t, "&amp;").replace(/</g, "&lt;").replace(/"/g, "&quot;").replace(/\t/g, "&#x9;").replace(/\n/g, "&#xA;").replace(/\r/g, "&#xD;")
            }, e
        }()
    }).call(this)
}, function (e, t) {
    (function () {
        var t = {}.hasOwnProperty;
        e.exports = function () {
            function e(e) {
                var n, i, a, o, r, s, l, u, d;
                for (n in e || (e = {}), this.pretty = e.pretty || !1, this.allowEmpty = null != (i = e.allowEmpty) && i, this.pretty ? (this.indent = null != (a = e.indent) ? a : "  ", this.newline = null != (o = e.newline) ? o : "\n", this.offset = null != (r = e.offset) ? r : 0, this.dontprettytextnodes = null != (s = e.dontprettytextnodes) ? s : 0) : (this.indent = "", this.newline = "", this.offset = 0, this.dontprettytextnodes = 0), this.spacebeforeslash = null != (l = e.spacebeforeslash) ? l : "", !0 === this.spacebeforeslash && (this.spacebeforeslash = " "), this.newlinedefault = this.newline, this.prettydefault = this.pretty, u = e.writer || {}) t.call(u, n) && (d = u[n], this[n] = d)
            }

            return e.prototype.set = function (e) {
                var n, i, a;
                for (n in e || (e = {}), "pretty" in e && (this.pretty = e.pretty), "allowEmpty" in e && (this.allowEmpty = e.allowEmpty), this.pretty ? (this.indent = "indent" in e ? e.indent : "  ", this.newline = "newline" in e ? e.newline : "\n", this.offset = "offset" in e ? e.offset : 0, this.dontprettytextnodes = "dontprettytextnodes" in e ? e.dontprettytextnodes : 0) : (this.indent = "", this.newline = "", this.offset = 0, this.dontprettytextnodes = 0), this.spacebeforeslash = "spacebeforeslash" in e ? e.spacebeforeslash : "", !0 === this.spacebeforeslash && (this.spacebeforeslash = " "), this.newlinedefault = this.newline, this.prettydefault = this.pretty, i = e.writer || {}) t.call(i, n) && (a = i[n], this[n] = a);
                return this
            }, e.prototype.space = function (e) {
                var t;
                return this.pretty && (t = (e || 0) + this.offset + 1) > 0 ? new Array(t).join(this.indent) : ""
            }, e
        }()
    }).call(this)
}, function (e, t) {
    (function () {
        "use strict";
        var e;
        e = new RegExp(/(?!xmlns)^.*:/), t.normalize = function (e) {
            return e.toLowerCase()
        }, t.firstCharLowerCase = function (e) {
            return e.charAt(0).toLowerCase() + e.slice(1)
        }, t.stripPrefix = function (t) {
            return t.replace(e, "")
        }, t.parseNumbers = function (e) {
            return isNaN(e) || (e = e % 1 == 0 ? parseInt(e, 10) : parseFloat(e)), e
        }, t.parseBooleans = function (e) {
            return /^(?:true|false)$/i.test(e) && (e = "true" === e.toLowerCase()), e
        }
    }).call(this)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(48), a = n(1).default.getLogger("Thunder.VipDownload.stat-utilities");
    !function (e) {
        const t = i.PluginHelperNS.getHelper();
        e.trackEvent = function (e, n) {
            if (t.nativeCall) {
                let i = (n = n || {}).attribute1 || "", o = n.attribute2 || "", r = n.extData || new Map;
                r.set("plugin_version", t.pluginVersion);
                let s = function (e) {
                    let t = "";
                    return e.forEach((e, n) => {
                        "" !== t && (t += ","), t = t + n + "=" + e
                    }), t
                }(r);
                a.information("key", e), a.information("attribute1", i), a.information("attribute2", o), a.information("extData", s), t.nativeCall.CallNativeFunction("TrackEvent", e, i, o, 0, 0, 0, 0, s, (e, t) => {
                    a.information("trackEvent", "errorCode", e, "returnValue", t)
                })
            }
        }
    }(t.StatUtilitiesNS || (t.StatUtilitiesNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(3), a = n(516), o = n(1), r = a.MsgQueueManagerNS.MsgQueue.getInstance().getQueue("notification"),
        s = o.default.getLogger("notification");
    !function (e) {
        e.notify = function (e) {
            let t = "development" === process.env.RUN_ENV ? "http://localhost:9080/notification-renderer/" : `file:///${__dirname}/../notification-renderer/index.html`,
                n = i.screen.getPrimaryDisplay().workAreaSize, a = new i.remote.BrowserWindow({
                    width: e.width || 440,
                    height: e.height || 245,
                    x: n.width - (e.width || 440),
                    y: n.height - (e.height || 245),
                    frame: !1,
                    resizable: !1,
                    show: !1,
                    transparent: !0,
                    alwaysOnTop: !0,
                    skipTaskbar: !0
                });
            i.remote.ipcMain.once("notification-init", t => {
                s.information("notification-init"), t.sender.send("notification-init-reply", e)
            }), a.loadURL(t), s.information("notification...", e), a.on("ready-to-show", () => {
                s.information("ready-to-show..."), a.show(), a.setAlwaysOnTop(!1), setTimeout(a.close, e.duration || 1e4)
            }), a.on("closed", () => {
                a = null, r.deQueue()
            })
        }
    }(t.Notification || (t.Notification = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(6).default(a.join(__rootDir, "../bin/ThunderHelper.node")), r = 1;
    let s = new Map;

    function l(e, t, n, i, a) {
        o.createRegKey(e, t), o.writeRegValue(e, t, n, i, a)
    }

    function u(e) {
        do {
            if (!e || "" === e) break;
            let t = s.get(e);
            if (!t) break;
            let n = "Xunlei." + t[0] + ".6", i = a.join(__rootDir, "../../" + t[2]),
                o = a.join(__rootDir, "../../Thunder.exe"), u = "Software\\Classes\\." + e;
            l("HKEY_CURRENT_USER", u, "", n, r), l("HKEY_CURRENT_USER", u = "Software\\Classes\\" + n, "", t[1], r), l("HKEY_CURRENT_USER", u = "Software\\Classes\\" + n + "\\DefaultIcon", "", i, r), l("HKEY_CURRENT_USER", u = "Software\\Classes\\" + n + "\\Shell\\Open", "", t[3], r), l("HKEY_CURRENT_USER", u = "Software\\Classes\\" + n + "\\Shell\\Open\\command", "", '"' + o + '" "%1"', r)
        } while (0)
    }

    function d(e) {
        do {
            if (!e || "" === e) break;
            let t = s.get(e);
            if (!t) break;
            let n = "Software\\Classes\\." + e;
            o.deleteRegKey("HKEY_CURRENT_USER", n), n = "Software\\Classes\\" + t[0], o.deleteRegKey("HKEY_CURRENT_USER", n), n = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\." + e + "\\OpenWithList", o.deleteRegKey("HKEY_CURRENT_USER", n), n = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\." + e + "\\OpenWithProgids", o.deleteRegKey("HKEY_CURRENT_USER", n), n = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\." + e + "\\UserChoice", o.deleteRegKey("HKEY_CURRENT_USER", n), n = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\." + e, o.deleteRegKey("HKEY_CURRENT_USER", n), u(e), o.refreshIcon()
        } while (0)
    }

    s.set("td", ["TDFile", "迅雷临时数据文件", "XLTempFile.ico", "使用迅雷下载未完成文件"]), s.set("xltd", ["TDFile", "迅雷临时数据文件", "XLTempFile.ico", "使用迅雷下载未完成文件"]), s.set("downlist", ["LSTFile", "迅雷专有下载文件", "XLDownloadList.ico", "使用迅雷下载该任务列表文件"]), s.set("torrent", ["Bittorrent", "BT种子文件", "TorrentFile.ico", "使用迅雷下载该BT文件"]), s.set("thunderskin", ["ThunderSkin", "迅雷9皮肤文件", "thunderskin.ico", "为迅雷9应用该皮肤"]), s.set("xlb", ["XLB", "迅雷下载合集文件", "DownloadCollection.ico", "使用迅雷查看该下载合集文件"]), function (e) {
        function t(e) {
            do {
                if (!e || "" === e) break;
                let t = s.get(e);
                if (!t) break;
                let n = "Xunlei." + t[0] + ".6";
                if (o.readRegString("HKEY_CURRENT_USER", "Software\\Classes\\." + e, "") === n) break;
                o.deleteRegKey("HKEY_CURRENT_USER", "Software\\Classes\\." + e), o.deleteRegKey("HKEY_CURRENT_USER", "Software\\Classes\\" + t[0]), o.deleteRegKey("HKEY_CURRENT_USER", "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\." + e), u(e), o.refreshIcon()
            } while (0)
        }

        function n(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1;
                do {
                    let n = '"' + a.join(__rootDir, "../../Thunder.exe") + '" "%1"';
                    if (o.queryRegValue("HKEY_CURRENT_USER", "Software\\classes\\" + e + "\\Shell\\Open\\command", "") === n) break;
                    o.deleteRegKey("HKEY_CURRENT_USER", "Software\\classes\\" + e), l("HKEY_CURRENT_USER", "Software\\classes\\" + e, "URL Protocol", "", r), l("HKEY_CURRENT_USER", "Software\\classes\\" + e + "\\Shell\\Open\\command", "", n, r), t = !0
                } while (0);
                return t
            })
        }

        e.checkAndRegisterFileType = t, e.checkAndRegisterTorrentFile = function () {
            do {
                let e = a.join(__rootDir, "../../Thunder.exe"), n = "torrent",
                    i = o.readRegString("HKEY_CURRENT_USER", "Software\\Classes\\Xunlei.Bittorrent.6\\Shell\\Open\\command", "");
                if (i && "" !== i) if (i.includes(e)) {
                    let e = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\." + n + "\\OpenWithList",
                        t = o.readRegString("HKEY_CURRENT_USER", e, "MRUList");
                    if (null === t || void 0 === t || "" === t) break;
                    let i = t.substring(0, 1);
                    null !== (t = o.readRegString("HKEY_CURRENT_USER", e, i)) && void 0 !== t && "" !== t && "Thunder.exe" !== t && d(n)
                } else t(n); else t(n)
            } while (0)
        }, e.doAsynCheckAndRegisterProtocal = n, e.asynCheckAndAssociate = function () {
            return i(this, void 0, void 0, function* () {
                t("td"), t("downlist"), yield n("ed2k"), yield n("magnet"), yield n("thunder"), yield n("thunderx"), yield n("xlb")
            })
        }
    }(t.FileAssociationNS || (t.FileAssociationNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(17), a = n(107), o = n(256), r = n(2), s = n(1), l = n(6), u = n(7), d = n(747), c = n(10), h = n(80),
        f = s.default.getLogger("Thunder.MainRenderer.stroe.Tabs"),
        p = l.default(r.join(__rootDir, "../bin/ThunderHelper.node")), g = n(82);
    let k = g.createXDASTab({pinned: !0});
    u.isNullOrUndefined(k) && f.error(k), t.onJsCallNativeFunction = function (e, t, n, i) {
        k.onJsCallNativeFunction(e, t, n, i)
    }, t.onJsCheckNativeFunction = function (e, t, n) {
        k.onJsCheckNativeFunction(e, t, n)
    };
    const m = {tabs: [{title: k.getTitle(), tab: k, pinned: k.getPinned()}], current: 0, curBrowserWndHandle: 0}, T = {
        CREATE_NEW_TAB(e, t) {
            do {
                if (t.tabType === a.TabType.Chromium) {
                    let e = o.getBrowserWindowRect();
                    t.tabParam.rect = e
                }
                let n = g.createNewTab(t.tabType, t.tabParam);
                if (d.registerContextMenu(n), u.isNullOrUndefined(n)) {
                    f.error(n);
                    break
                }
                t.tabType === a.TabType.Chromium && n.getBrowser().queryWindowHandle();
                let r = -1;
                if (t.tabType === a.TabType.XDAS && (p.isWindowHandle(e.curBrowserWndHandle) && p.showWindow(e.curBrowserWndHandle, i.showCmd.SW_HIDE), e.curBrowserWndHandle = 0), t.tabParam.name && (r = e.tabs.findIndex(e => e.tab.name === t.tabParam.name)), -1 !== r) e.current = r; else {
                    let i = "index" in t.tabParam ? t.tabParam.index : e.tabs.length;
                    e.tabs.splice(i, 0, {title: n.getTitle(), tab: n, pinned: n.getPinned()}), e.current = i
                }
            } while (0)
        }, SELECT_TAB(e, t) {
            f.information("SELECT_TAB index: " + t);
            do {
                if (u.isNullOrUndefined(t)) break;
                if (t < 0) break;
                if (t >= e.tabs.length) break;
                let n = e.tabs[t];
                if (u.isNullOrUndefined(n)) break;
                let r = {tabInfo: n, index: t}, s = r.tabInfo.tab;
                if (u.isNullOrUndefined(s)) break;
                if (s.getTabType() === a.TabType.Chromium) {
                    let t = s.getBrowser();
                    if (u.isNullOrUndefined(t)) {
                        f.error(t);
                        break
                    }
                    let n = t.getWindowHandle();
                    if (!1 === p.isWindowHandle(n)) {
                        f.error(n), t.queryWindowHandle();
                        break
                    }
                    if (f.information("SELECT_TAB hwnd: " + n + " curBrowserWndHandle: " + e.curBrowserWndHandle), n === e.curBrowserWndHandle) break;
                    o.resizeBrowserWindow(n), p.isWindowHandle(n) && (s.isErrorPage ? p.showWindow(n, i.showCmd.SW_HIDE) : p.showWindow(n, i.showCmd.SW_SHOW)), p.isWindowHandle(e.curBrowserWndHandle) && p.showWindow(e.curBrowserWndHandle, i.showCmd.SW_HIDE), e.curBrowserWndHandle = n
                } else s.getTabType() === a.TabType.IE ? f.information("ie") : s.getTabType() === a.TabType.XDAS && (p.isWindowHandle(e.curBrowserWndHandle) && p.showWindow(e.curBrowserWndHandle, i.showCmd.SW_HIDE), e.curBrowserWndHandle = 0);
                e.current = r.index
            } while (0)
        }, ON_BIND_WND_HANDLE(e, t) {
            f.information("ON_BIND_WND_HANDLE");
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.hwnd)) {
                    f.error(t);
                    break
                }
                if (!1 === p.isWindowHandle(t.hwnd)) {
                    f.error(t.hwnd);
                    break
                }
                if (e.curBrowserWndHandle === t.hwnd) break;
                if (!0 === e.tabs[e.current].tab.isErrorPage) {
                    p.showWindow(e.curBrowserWndHandle, i.showCmd.SW_HIDE), e.curBrowserWndHandle = t.hwnd;
                    break
                }
                o.resizeBrowserWindow(t.hwnd), p.showWindow(t.hwnd, i.showCmd.SW_SHOW), p.showWindow(e.curBrowserWndHandle, i.showCmd.SW_HIDE), e.curBrowserWndHandle = t.hwnd
            } while (0)
        }, ON_NEW_BROWSER_POPUP(e, t) {
            f.information("ON_NEW_BROWSER_POPUP");
            do {
                if (u.isNullOrUndefined(t)) {
                    f.error(t);
                    break
                }
                if (c.ThunderUtil.isCustomProtocol(t.url)) {
                    h.ThunderNewTask.createTaskByUrl(t.url);
                    break
                }
                let n = {isFromPopup: !0, url: t.url}, i = a.TabType.Chromium, o = g.createNewTab(i, n);
                if (d.registerContextMenu(o), u.isNullOrUndefined(o)) {
                    f.error(o);
                    break
                }
                o.getBrowser().queryWindowHandle(), e.tabs.push({
                    title: o.getTitle(),
                    tab: o,
                    pinned: o.getPinned()
                }), e.current = e.tabs.length - 1
            } while (0)
        }, ON_NEW_BROWSER_POPUP_COMPLETED(e, t) {
            f.information("ON_NEW_BROWSER_POPUP_COMPLETED");
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(e) && e === t.browser) {
                        e.queryWindowHandle();
                        break
                    }
                }
            } while (0)
        }, ON_TITLE_CHANGE(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser) || u.isNullOrUndefined(t.title)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(e) && e === t.browser) {
                        n.title = t.title, n.tab.setTitle(t.title);
                        break
                    }
                }
            } while (0)
        }, ON_ORIGINAL_URL_CHANGE(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser) || u.isNullOrUndefined(t.originalUrl)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(e) && e === t.browser) {
                        n.tab.originalUrl = t.originalUrl;
                        break
                    }
                }
            } while (0)
        }, ON_LOAD_START(e, t) {
            f.information("ON_LOAD_START");
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let a = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(a) && (a === t.browser && !0 === t.isMainFrame && (n.tab.isErrorPage = !1, n.tab === e.tabs[e.current].tab))) {
                        let t = a.getWindowHandle();
                        p.isWindowHandle(t) && (p.showWindow(t, i.showCmd.SW_SHOW), e.curBrowserWndHandle = t)
                    }
                }
            } while (0)
        }, ON_LOAD_STATUS_CHANGE(e, t) {
            f.information("ON_LOAD_STATUS_CHANGE");
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    u.isNullOrUndefined(e) || e === t.browser && (n.tab.canGoBack = t.canGoBack, n.tab.canGoForward = t.canGoForward, t.isLoading && (n.tab.isErrorPage = !1))
                }
            } while (0)
        }, ON_ADDRESS_CHANGE(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    u.isNullOrUndefined(e) || e === t.browser && !0 === t.isMainFrame && (n.tab.url = t.url)
                }
            } while (0)
        }, ON_LOAD_ERROR(e, t) {
            f.error("ON_LOAD_ERROR ", t.errorCode);
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(e) && (e === t.browser && !0 === t.isMainFrame && (-105 === t.errorCode || -21 === t.errorCode || -106 === t.errorCode || -118 === t.errorCode || -7 === t.errorCode || -101 === t.errorCode))) {
                        let a = e.getWindowHandle();
                        if (0 === a) {
                            n.tab.url = t.failedUrl, n.tab.isErrorPage = !0, e.queryWindowHandle();
                            break
                        }
                        f.error("ON_LOAD_ERROR HIDE hwnd: ", a), n.tab.url = t.failedUrl, n.tab.isErrorPage = !0, p.isWindowHandle(a) && p.showWindow(a, i.showCmd.SW_HIDE)
                    }
                }
            } while (0)
        }, ON_APP_QUIT(e) {
            f.information(e);
            for (let t of e.tabs) u.isNullOrUndefined(t) || u.isNullOrUndefined(t.tab) || t.tab.getTabType() === a.TabType.Chromium && t.tab.destroyBrowser(!0);
            void 0 !== o.browserSupport.browserComponent && o.browserSupport.browserComponent.uninit()
        }, REGISTER_NATIVE_FUNCTION(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(e.tabs[0]) || u.isNullOrUndefined(e.tabs[0].tab)) break;
                let n = e.tabs[0].tab.registerNativeFunction(t.functionName, t.nativeFunc);
                !1 === n && f.error(n)
            } while (0)
        }, UN_REGISTER_NATIVE_FUNCTION(e, t) {
            do {
                if (u.isNullOrUndefined(e.tabs) || u.isNullOrUndefined(e.tabs[0].tab)) break
            } while (0);
            e.tabs[0].tab.unRegisterNativeFunction(t)
        }, CLOSE_TAB(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.index) || u.isNullOrUndefined(t.tabInfo) || u.isNullOrUndefined(t.tabInfo.tab)) {
                    f.error(t);
                    break
                }
                let n = t.tabInfo.tab;
                n.getTabType() === a.TabType.Chromium && n.destroyBrowser(!1), e.tabs.splice(t.index, 1), e.current === t.index && t.index > 0 ? e.current = t.index - 1 : e.current > t.index && (e.current = e.current - 1);
                let r = e.tabs[e.current];
                (u.isNullOrUndefined(r) || u.isNullOrUndefined(r.tab)) && f.error(r);
                let s = r.tab.getBrowser();
                if (u.isNullOrUndefined(s)) break;
                let l = s.getWindowHandle();
                if (!1 === p.isWindowHandle(l)) {
                    f.error(l);
                    break
                }
                o.resizeBrowserWindow(l), f.information("CLOSE_TAB isErrorPage:", e.tabs[e.current].tab.isErrorPage), !0 === e.tabs[e.current].tab.isErrorPage && p.showWindow(l, i.showCmd.SW_HIDE), 0 !== e.curBrowserWndHandle && e.curBrowserWndHandle !== l && p.showWindow(e.curBrowserWndHandle, i.showCmd.SW_HIDE), e.curBrowserWndHandle = l
            } while (0)
        }, ON_CHROMIUM_CALL_NATIVE_FUNCTION(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.functionName) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(e) && e === t.browser) {
                        !1 === n.tab.onJsCallNativeFunction(0, t.functionName, t.callBackId, t.args) && f.error(t)
                    }
                }
            } while (0)
        }, ON_CHROMIUM_CHECK_NATIVE_FUNCTION(e, t) {
            do {
                if (u.isNullOrUndefined(t) || u.isNullOrUndefined(t.functionName) || u.isNullOrUndefined(t.browser)) {
                    f.error(t);
                    break
                }
                for (let n of e.tabs) {
                    if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) continue;
                    let e = n.tab.getBrowser();
                    if (!u.isNullOrUndefined(e) && e === t.browser) {
                        !1 === n.tab.onJsCheckNativeFunction(0, t.functionName, t.callBackId) && f.error(t)
                    }
                }
            } while (0)
        }
    }, v = {
        selectTab({commit: e}, t) {
            e("SELECT_TAB", t)
        }, closeTab({commit: e}, t) {
            e("CLOSE_TAB", t)
        }, onChromiumCallNativeFunction({commit: e}, t) {
            e("ON_CHROMIUM_CALL_NATIVE_FUNCTION", t)
        }, onChromiumCheckNativeFunction({commit: e}, t) {
            e("ON_CHROMIUM_CHECK_NATIVE_FUNCTION", t)
        }
    }, w = {
        currentTab: e => {
            let t = null;
            do {
                if (u.isNullOrUndefined(e) || u.isNullOrUndefined(e.current) || u.isNullOrUndefined(e.tabs)) {
                    f.error(e);
                    break
                }
                let n = e.tabs[e.current];
                if (u.isNullOrUndefined(n) || u.isNullOrUndefined(n.tab)) break;
                t = n
            } while (0);
            return t
        }
    };
    t.default = {state: m, mutations: T, actions: v, getters: w}
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(55), o = n(1), r = n(53), s = o.default.getLogger("FetchRes"), l = {
        mock: "http://easy-mock.com/mock/59f0652c1bd72e7a888988ab/sl",
        test: "http://api-xl9-ssl.xunlei.com/sl_dev",
        pre: "http://api-xl9-ssl.xunlei.com/sl_pre",
        prod: "http://api-xl9-ssl.xunlei.com/sl"
    };

    function u({url: e, data: t, method: n = "get"}) {
        return i(this, arguments, void 0, function* () {
            s.information("fetchFromApiProxy", arguments);
            try {
                const i = yield Promise.all([r.default("GetUserID"), r.default("GetSessionID"), r.default("GetPeerID")]), [o, l, u] = i;
                s.information(i);
                let d = {
                    _sessid: l,
                    _uid: o,
                    _m: n,
                    _h: [`Peer-Id:${u}`, `User-Id:${o}`, `Session-Id:${l}`, "App-Type:pc_xunlei", ...t && t._h || []]
                }, c = Object.assign({}, d, "get" === n && t);
                return s.information("fetchFromApiProxy data", c), a.default.request({
                    method: n,
                    url: e,
                    params: c,
                    data: t
                }).then(e => (s.information("fetchFromApiProxy success", e), e))
            } catch (e) {
                return {error: e}
            }
        })
    }

    t.fetchFromApiProxy = u, t.fetchSlRes = function ({url: e, data: t, method: n = "get"}) {
        return u({url: `${l.prod}${e}`, data: t, method: n})
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.unread = function (e) {
        return e > 99 ? "..." : e ? String(e) : ""
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(222), a = n(58), o = n(80), r = n(13), s = n(1).default.getLogger("MenuContextHelper");
    const l = new class {
        constructor() {
            s.information("constructor MenuContextHelper object")
        }

        exitThunderX(e) {
            i.quitPromises.run()
        }

        showNewTaskPanel(e) {
            s.information("trackEvent", "core_event", "create_task_click", "click_source=other"), r.XLStatNS.trackEvent("core_event", "create_task_click", "", 0, 0, 0, 0, "click_source=other"), o.ThunderNewTask.createPreNewTaskWindow(null)
        }

        importUncompleted(e) {
            a.TaskOperatorNs.importUncompleted()
        }

        initAccelerator() {
            window.addEventListener("keyup", e => {
                "n" !== e.key && "N" !== e.key || !e.ctrlKey || this.showNewTaskPanel("system-menu")
            }, !0)
        }
    };
    t.default = l
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(6), s = n(5), l = n(81), u = n(786), d = n(52), c = n(21), h = n(85), f = n(54),
        p = n(106), g = n(11), k = o.default.getLogger("DownloadKernel.Upgrade"),
        m = r.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        T = l.DownloadKernelCategoryManager.getCategoryManager(), v = u.PrivateSpaceUpgradeNS.getUpgrade(),
        w = h.DownloadKernelCategoryViewManager.getCategoryViewManager();

    class y extends f.default {
        constructor() {
            super(...arguments), this.eventUpgradeProgress = "OnUpgradeProgress", this.totalTaskCount = 0, this.upgradeTaskCount = 0
        }

        upgradeP2sp(e) {
            let t = e.getSavePath(), n = e.getTaskName();
            return k.information("upgradeP2sp savePath:", t, ", taskName:", n), new Promise(e => {
                m.asyncUpgradeP2spTask(t, n, t => {
                    e(t)
                })
            })
        }

        upgradeBt(e) {
            let t = e.getExtraObject(), n = t.getFileCount(), o = t.getSeedFilePath(), r = a.parse(o), s = r.dir,
                l = r.name + r.ext, u = e.getSavePath(), d = t.getDisplayName(), c = "";
            if (1 !== n) u = a.join(u, d); else {
                let e = t.getBtFileInfoList();
                c = e[0].fileName
            }
            return k.information("upgradeBt savePath:", u, ", taskName:", d, ", fileCount:", n, ", seedFilePath:", o, ", seedFileName:", l), new Promise(e => {
                m.asyncUpgradeBtTask(u, l, s, t => i(this, void 0, void 0, function* () {
                    if (t && 1 === n) {
                        let e = a.join(u, d);
                        (yield g.FileSystemAWNS.existsAW(e)) || (yield g.FileSystemAWNS.mkdirAW(e));
                        let t = a.join(u, c), n = a.join(e, c);
                        t += ".bt.xltd", n += ".bt.xltd", (yield g.FileSystemAWNS.existsAW(n)) || (yield g.FileSystemAWNS.renameAW(t, n));
                        let i = a.join(u, l), o = a.join(e, l);
                        (yield g.FileSystemAWNS.existsAW(o)) || (yield g.FileSystemAWNS.renameAW(i, o))
                    }
                    e(t)
                }))
            })
        }

        upgradeEmule(e) {
            let t = e.getSavePath(), n = e.getTaskName(),
                i = e.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskUrl);
            return p.Common.isThunderPrivateUrl(i) && (i = p.Common.parseThunderPrivateUrl(i)), k.information("upgradeEmule url:", i, ", savePath:", t, ", taskName:", n), new Promise(e => {
                m.asyncUpgradeEmuleTask(i, t, n, t => {
                    e(t)
                })
            })
        }

        upgradeGroup(e) {
            return new Promise(t => {
                let n = e.getExtraObject(), i = n.getSubTaskCount();
                if (i > 0) for (let e = 0; e < i; e++) {
                    let i = n.getSubTaskByIndex(e);
                    i.getType() !== s.DownloadKernel.TaskType.Group && this.upgradeCategoryViewTask(i).then(e => {
                        t(e)
                    }).catch()
                } else t(!0)
            })
        }

        upgradeCategoryViewTask(e) {
            return i(this, void 0, void 0, function* () {
                let t = e.getType();
                return t === s.DownloadKernel.TaskType.P2sp ? this.upgradeP2sp(e) : t === s.DownloadKernel.TaskType.Bt ? this.upgradeBt(e) : t === s.DownloadKernel.TaskType.Emule && this.upgradeEmule(e)
            })
        }

        upgradeCategoryView(e) {
            let t = e.getTasks();
            if (t.size <= 0) return !1;
            this.totalTaskCount += t.size, this.fireEvent(this.eventUpgradeProgress, this.totalTaskCount, this.upgradeTaskCount);
            for (let [, e]of t) {
                e.getType() === s.DownloadKernel.TaskType.Group ? this.upgradeGroup(e).then(t => {
                    this.upgradeTaskCount += 1, k.information("upgradeGroup return. this.upgradeTaskCount:", this.upgradeTaskCount, ", result:", t, ", taskName:", e.getTaskName()), this.fireEvent(this.eventUpgradeProgress, this.totalTaskCount, this.upgradeTaskCount)
                }).catch() : this.upgradeCategoryViewTask(e).then(t => {
                    this.upgradeTaskCount += 1, k.information("upgradeCategoryViewTask return. this.upgradeTaskCount:", this.upgradeTaskCount, ", result:", t, ", taskName:", e.getTaskName()), this.fireEvent(this.eventUpgradeProgress, this.totalTaskCount, this.upgradeTaskCount)
                }).catch()
            }
            return !0
        }

        init() {
            let e = a.join(__rootDir, "../bin/SDK/");
            return m.initUpgrade(e)
        }

        upgradePrivateSpace(e) {
            return v.upgradePrivateSpace(e)
        }

        startUpgrade() {
            this.totalTaskCount = 0, this.upgradeTaskCount = 0, d.DownloadKernelManager.attachOnceListener(c.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, () => {
                let e = w.getCategoryViews();
                for (let t = 0; t < e.length; t++) {
                    let n = e[t], i = n.getCategoryViewId();
                    i !== s.DownloadKernel.CategroyViewID.Downloading && i !== s.DownloadKernel.CategroyViewID.Recycle || this.upgradeCategoryView(n)
                }
                let t = T.getCategorys();
                for (let [, e]of t) {
                    let t = e.getCategoryViews();
                    for (let e = 0; e < t.length; e++) {
                        let n = t[e], i = n.getCategoryViewId();
                        i !== s.DownloadKernel.CategroyViewID.Downloading && i !== s.DownloadKernel.CategroyViewID.Recycle || this.upgradeCategoryView(n)
                    }
                }
            })
        }
    }

    t.DownloadKernelUpgrade = y, function (e) {
        const t = new y;
        e.getUpgrade = function () {
            return t
        }
    }(t.DownloadKernelUpgradeNS || (t.DownloadKernelUpgradeNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(636), a = n(337);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(799);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\download-category.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5), a = n(43), o = n(21), r = n(519), s = n(28), l = n(106),
        u = s.DownloadKernelTaskManager.getTaskManager();
    !function (e) {
        let t = null, n = -1, s = null;
        e.init = function () {
            a.default.attachListener(o.NodeEventMesssageNS.eventDownloadItemActive, (e, a, o, d, c) => {
                a && e === i.DownloadKernel.CategroyViewID.Downloading ? (-1 !== n && null !== t && (clearTimeout(t), t = null), n = o, t = setTimeout(() => {
                    if (-1 !== n) {
                        let e = u.getTaskFromTaskId(n);
                        if (e) {
                            let t = e.getTaskBaseInfo();
                            if (t.gcid && "" !== t.gcid) return;
                            if (t.taskType === i.DownloadKernel.TaskType.P2sp) {
                                let n = e.getExtraObject().getDisplayUrl();
                                "" === n && (n = t.url), l.Common.isThunderPrivateUrl(n) && (n = l.Common.parseThunderPrivateUrl(n)), r.default.postRequestP2spTaskInfoByUrl(n).then(t => {
                                    t && t.gcid && "" !== t.gcid && (e.setTaskInfo(i.DownloadKernel.TaskAttribute.FileSize, t.fileSize), e.setTaskInfo(i.DownloadKernel.TaskAttribute.Gcid, t.gcid), e.fireTaskEvent(i.DownloadKernel.TaskEventType.DetailChanged))
                                }).catch()
                            } else if (t.taskType === i.DownloadKernel.TaskType.Emule) {
                                let n = t.url;
                                l.Common.isThunderPrivateUrl(n) && (n = l.Common.parseThunderPrivateUrl(n)), r.default.postRequestEd2kTaskInfoByEd2kLink(n).then(t => {
                                    t && t.gcid && "" !== t.gcid && (e.setTaskInfo(i.DownloadKernel.TaskAttribute.Gcid, t.gcid), e.fireTaskEvent(i.DownloadKernel.TaskEventType.DetailChanged))
                                }).catch()
                            }
                            if (t.taskType === i.DownloadKernel.TaskType.Group) {
                                let e = [], n = "", a = u.getTaskFromTaskId(t.taskId).getExtraObject(),
                                    o = a.getSubTaskCount(), d = new Map;
                                for (let t = 0; t < o; ++t) {
                                    let o = a.getSubTaskByIndex(t);
                                    if (o.getType() === i.DownloadKernel.TaskType.P2sp) {
                                        let i = o.getTaskBaseInfo();
                                        if (i.fileSize && i.fileSize > 0) continue;
                                        i.url && i.url.length > 0 && (n = i.url, l.Common.isThunderPrivateUrl(n) && (n = l.Common.parseThunderPrivateUrl(n)), e.push(n), d.set(n, t))
                                    }
                                }
                                e.length > 0 && !s && (s = t.taskId, r.default.asyncBatchQueryP2spTaskInfoByUrl(e, (e, t, n) => {
                                    a.setSubTaskFileSize(d.get(e), t.fileSize)
                                }, () => {
                                    s = null
                                }).catch())
                            }
                        }
                    }
                }, 100)) : n === o && (null !== t && (clearTimeout(t), t = null), n = -1)
            })
        }, e.getQueryTaskId = function () {
            return s
        }
    }(t.QueryTaskInfoNS || (t.QueryTaskInfoNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(11), s = o.default.getLogger("plugin-updater");

    class l {
        constructor(e) {
            this.dir = "", this.versionsDir = "", s.verbose("constructor", "dir", e), this.dir = e, this.versionsDir = a.join(e, "versions")
        }

        static getPluginUpdater(e) {
            return new l(e)
        }

        install(e, t) {
            return i(this, void 0, void 0, function* () {
                s.information("install", "version", e, "src", t);
                try {
                    if ((yield this.getCurVersion()) === e) return;
                    yield this.save(e, t), yield this.setCurVersion(e)
                } catch (e) {
                    s.warning(e)
                }
            })
        }

        active() {
            return i(this, void 0, void 0, function* () {
                s.information("active");
                try {
                    const e = yield this.getCurVersion();
                    yield this.clear(this.versionsDir, e)
                } catch (e) {
                    s.warning(e)
                }
            })
        }

        getCurFilePath() {
            return i(this, void 0, void 0, function* () {
                s.information("getCurFilePath");
                const e = yield this.getCurVersion();
                return e ? a.join(this.versionsDir, e) : ""
            })
        }

        clear(e, t) {
            return i(this, void 0, void 0, function* () {
                return s.information("clear", "src", e, "exclude", t), (yield r.FileSystemAWNS.readdirAW(e)).filter(e => e !== t).map(e => r.FileSystemAWNS.rmdirsAW(a.join(this.versionsDir, e)))
            })
        }

        save(e, t) {
            return i(this, void 0, void 0, function* () {
                yield r.FileSystemAWNS.mkdirsAW(this.dir), yield r.FileSystemAWNS.mkdirsAW(this.versionsDir);
                const n = a.join(this.versionsDir, e);
                return r.FileSystemAWNS.copyDirsAW(t, n)
            })
        }

        getCurVersion() {
            return i(this, void 0, void 0, function* () {
                return (yield r.FileSystemAWNS.readFileAW(`${this.dir}/VERION.txt`)).toString()
            })
        }

        setCurVersion(e) {
            return i(this, void 0, void 0, function* () {
                return r.FileSystemAWNS.writeFileAW(`${this.dir}/VERION.txt`, e)
            })
        }
    }

    t.default = l
}, , function (e, t, n) {
    n(40), e.exports = n(670)
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(23), o = n(24);
    o.CommonIPCRenderer.rendererCommunicator.initialize(a.CommonIPCBase.mainRendererContext), o.CommonIPCRenderer.rendererCommunicator.connect();
    const r = n(41), s = n(8), l = n(3), u = n(2), d = n(36), c = n(30), h = n(1);
    n(671);
    const f = n(80), p = n(52), g = n(685), k = n(21), m = n(687), T = n(108), v = n(734), w = n(735), y = n(736),
        S = n(737), b = n(257), C = n(20), D = n(58), N = n(738), I = n(86), _ = n(187), x = n(43), E = n(25),
        A = n(515), P = n(740), M = n(237), F = n(512), O = n(222), B = n(486), U = n(741), L = n(13), K = n(10),
        V = n(822), R = n(663), W = n(823), j = n(659), H = n(254), G = n(513), z = n(824), q = n(34), X = n(157),
        Y = n(112), J = n(275), $ = n(518), Q = n(667), Z = n(511),
        ee = n(6).default(u.join(__rootDir, "../bin/ThunderHelper.node")), te = n(666), ne = n(514),
        ie = J.GroupAccelerateManagerNS.getManager(), ae = $.GroupAccelerateWebManagerNS.getManager(),
        oe = X.ToastNotifyManagerNS.getToastNotifyManger();
    r.PerformanceMonitorStatNS.init("main-renderer"), l.ipcRenderer.send(C.ThunderChannelList.channelRMProcessSend, process.pid);
    const re = h.default.getLogger("Thunder.Main");
    "production" !== l.remote.process.env.NODE_ENV && K.ThunderUtil.enableDevTools();
    let se = "";
    for (let e = 0; e < l.remote.process.argv.length; e++) {
        let t = l.remote.process.argv[e];
        if ("-StartType:Install" === t && (se = "Install"), 0 === t.indexOf("thunderx://", 0)) {
            let e = `newthunder=${encodeURIComponent(t)}`;
            L.XLStatNS.trackEvent("core_operate", "newthunder_startup", "", 0, 0, 0, 0, e)
        }
    }
    L.XLStatNS.trackEvent("core_event", "startup"), O.quitPromises.add(function () {
        return new Promise(e => {
            W.default.saveMainWndData(), ee.stopListenLocalNet(), e(!0)
        })
    }), O.quitPromises.add(function () {
        return new Promise(e => {
            f.ThunderNewTask.uninit(), e(!0)
        })
    }), O.quitPromises.add(function () {
        return i(this, void 0, void 0, function* () {
            return yield E.ConfigNS.save(), yield A.BHOConfigNS.save(), !0
        })
    }), O.quitPromises.add(function () {
        return new Promise(e => {
            e(!0)
        })
    }), O.quitPromises.add(function () {
        return i(this, void 0, void 0, function* () {
            return G.MessageChannelNS.uninit(), !0
        })
    }), l.remote.getCurrentWindow().on("ready-to-show", () => i(this, void 0, void 0, function* () {
        const {VipDownloadPlugin: e} = yield Promise.resolve().then(() => n(38));
        H.default.init().catch(e => {
            re.warning(e)
        }), R.default.initAccelerator(), p.DownloadKernelManager.init().catch(e => {
            re.warning(e)
        }), f.ThunderNewTask.readyToShow(), G.MessageChannelNS.init(), x.default.trackWin7NewTrait(), K.ThunderUtil.enableDragOpenFile(!0), P.ConfigHandlerNS.init(), M.SettingConfigHelperNS.configBrowserHelper.init().catch(), N.TaskHelperNS.init(), I.DowloadDispatchNS.init(), b.TaskDetailNS.init(), j.FileAssociationNS.asynCheckAndAssociate().catch(), B.default.init().then().catch(), ee.checkInternet(), setInterval(() => {
            ee.checkInternet()
        }, 2e3), _.LoginHelperNS.loginSDKHelper.init().then(() => {
            g.PluginLoaderNS.pluginLoader.loadPlugin("ThunderXLogin").catch(), _.LoginHelperNS.loginHelper.isAutologin(function (e) {
                re.information("isAutologin:", e, se), e || "Install" !== se || setTimeout(() => {
                    _.LoginHelperNS.loginHelper.showLoginDlg("Install", !0)
                }, 1e3)
            })
        }).catch(), ie.init(), ae.init("http://misc-xl9-ssl.xunlei.com/acc_xdas/dist/#/"), V.ClipBoardNS.init(), te.QueryTaskInfoNS.init(), Z.SubtitleManagerNS.init().catch(e => {
            re.warning(e)
        }), ee.startListenLocalNet(function (e) {
            if (re.information("startListenLocalNet, result = ", e), "OnInternetConnectSuc" === e || "OnInternetFallLine" === e) {
                let t = 1, n = 1;
                "OnInternetConnectSuc" === e ? (n = 1, t = 2) : (n = 2, t = 1), re.information("返回值：0 初始化状态，1 在线状态， 2 断网状态 onInternetConnectChange:", t, n), T.NativeCallHostModule.nativeCallHost.fireNativeEvent("onInternetConnectChange", t, n)
            } else re.information("返回数据错误！")
        }), setTimeout(() => {
            ee.startAutoUpdateWithUI()
        }, 12e4);
        let t = new d.EventEmitter;
        e.init(), setTimeout(() => {
            try {
                let e = ee.getPeerID(), n = ee.getOSVersion(), i = u.join(__rootDir, "../../Thunder.exe"),
                    a = ee.getFileVersion(i), o = ee.getChannelID();
                g.PluginLoaderNS.pluginLoader.startDownloadPlugins(e, n, "21", a, o, t)
            } catch (e) {
            }
        }, 1e4), t.on(k.NodeEventMesssageNS.eventPluginLoderPluginReady, e => i(this, void 0, void 0, function* () {
            let t = yield g.PluginLoaderNS.pluginLoader.loadPlugin(e);
            "addTest4" === e && t.add("plugin loader")
        })), setTimeout(() => {
            if (ne.default().whetherPopUp()) {
                let e = E.ConfigNS.getValue("ThunderFirstInstall", "IsFirstInstall", 0), t = e + 1;
                E.ConfigNS.setValue("ThunderFirstInstall", "IsFirstInstall", t), re.information("迅雷第一次启动标志值:", t, e), ne.default().popUpBrowserGuide()
            }
        }, 1e4)
    })), ee.allowSetForegroundWindow(), global.AsyncGetNativeCallModuleObj = function (e) {
        e(s.NativeCallModule)
    }, global.xlNativeCallModule = s.NativeCallModule, m.NaviteFunctionNS.registerNativeFunction(), F.default.init(), f.ThunderNewTask.init(), c.default.config.ignoredElements = ["webview"], new c.default({
        components: {App: U.default},
        render: e => e("app")
    }).$mount("#app"), E.ConfigNS.init(u.join(__profilesDir, "config.json")).catch(e => {
        re.warning(e)
    }), A.BHOConfigNS.init().catch(e => {
        re.warning(e)
    }), W.default.initMainRendererHelper(), w.DKNaviteFunctionNS.registerNativeFunction(), y.ConfigNaviteFunctionNS.registerNativeFunction(), S.DownloadAndPlayNaviteFunctionNS.registerNativeFunction(), z.MessageChannelNaviteFunctionNS.registerNativeFunction(), v.LoginNaviteFunctionNS.registerNativeFunction(), l.ipcRenderer.on(C.ThunderChannelList.channelMRGetConfigValue, (e, ...t) => {
        do {
            if (!t || !t[0] || !t[1]) {
                l.ipcRenderer.send(C.ThunderChannelList.channelRMGetConfigValueReject);
                break
            }
            let e = t[0], n = t[1], i = t[2], a = E.ConfigNS.getValue(e, n, i);
            l.ipcRenderer.send(C.ThunderChannelList.channelRMGetConfigValueResolve, a)
        } while (0)
    }), l.ipcRenderer.on(C.ThunderChannelList.channelMRSetConfigValue, (e, ...t) => {
        do {
            if (!t || !t[0] || !t[1]) {
                l.ipcRenderer.send(C.ThunderChannelList.channelRMGetConfigValueReject);
                break
            }
            let e = t[0], n = t[1], i = t[2];
            E.ConfigNS.setValue(e, n, i), E.ConfigNS.save().catch()
        } while (0)
    }), l.ipcRenderer.on(C.ThunderChannelList.channelMRTrayMenuClick, (e, t, n) => {
        re.verbose(e), "-task:newtask" === t ? (n = void 0 === n ? "other" : n, L.XLStatNS.trackEvent("core_event", "create_task_click", "", 0, 0, 0, 0, "click_source=" + n), re.information("trackEvent", "core_event", "create_task_click", "click_source=" + n), f.ThunderNewTask.createPreNewTaskWindow(null)) : "-task:startall" === t ? D.TaskOperatorNs.startAll() : "-task:pauseall" === t ? D.TaskOperatorNs.pauseAll() : "-task:quitprocess" === t && O.quitPromises.run()
    }), l.ipcRenderer.on(C.ThunderChannelList.channelMRFileCopyResult, (e, t, n) => {
        re.information("channelMRFileCopyResult", t, n), t && oe.showNotify(X.ToastNotifyManagerNS.notifyIdTaskOperatorMoveTask, Y.ToastNotifyItemType.GreenNotify, "复制成功", 3e3)
    }), l.remote.ipcMain.on("onShowMessageBox", (e, t) => {
        re.verbose(e), "retryLogin" === t && q.MessageBox.confirm({
            title: "登录失败，请检查网络是否正常",
            type: q.MessageBox.ConfirmType.Warning,
            content: "如果通过代理访问网络，请确认代理已正确设置。<br>如果是办公网络，请确认网络是否限制迅雷登录。",
            okText: "我知道了",
            cancelVisible: !1
        }).catch(() => {
        })
    }), window.getPluginUpdater = Q.default.getPluginUpdater
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(672), a = n(673), o = n(30);
    n(42);
    const r = n(50);
    n(674), n(915);
    const s = n(227), l = n(483);
    o.default.directive("visibility", i.default), o.default.directive("opacity", a.default), o.default.use(r.default), o.default.use(s), o.default.use(l.default)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = {
        bind(e, {value: t}, n) {
            e.__vOriginalVisibility = e.style.visiblity, e.style.visibility = t ? "visible" : "hidden"
        }, update(e, {value: t, oldValue: n}, i) {
            t !== n && (e.style.visibility = t ? "visible" : "hidden")
        }, unbind(e, t, n, i, a) {
            a || (e.style.visiblity = e.__vOriginalVisibility)
        }
    };
    t.default = i
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = {
        bind(e, {value: t}, n) {
            e.__vOriginalOpacity = e.style.opacity, e.__vOriginalPointerEvents = e.style.pointerEvents, e.style.opacity = t ? "1" : "0", e.style.pointerEvents = t ? "auto" : "none"
        }, update(e, {value: t, oldValue: n}, i) {
            t !== n && (e.style.opacity = t ? "1" : "0", e.style.pointerEvents = t ? "auto" : "none")
        }, unbind(e, t, n, i, a) {
            a || (e.style.opacity = e.__vOriginalOpacity, e.style.pointerEvents = e.__vOriginalPointerEvents)
        }
    };
    t.default = i
}, function (e, t) {
    !function (e) {
        var t,
            n = '<svg><symbol id="td-icon-svg-file" viewBox="0 0 1204 1024"><path d="M180.705882 1024c-102.4 0-180.705882-78.305882-180.705882-180.705882V180.705882c0-102.4 78.305882-180.705882 180.705882-180.705882h240.941177c102.4 0 180.705882 78.305882 180.705882 180.705882h421.647059c102.4 0 180.705882 78.305882 180.705882 180.705883v481.882353c0 102.4-78.305882 180.705882-180.705882 180.705882H180.705882z" fill="#FFC25A" ></path><path d="M301.176471 361.411765h602.352941c66.258824 0 120.470588 54.211765 120.470588 120.470588v361.411765c0 66.258824-54.211765 120.470588-120.470588 120.470588H301.176471c-66.258824 0-120.470588-54.211765-120.470589-120.470588V481.882353c0-66.258824 54.211765-120.470588 120.470589-120.470588z" fill="#FFFFFF" ></path><path d="M180.705882 542.117647h843.294118c102.4 0 180.705882 78.305882 180.705882 180.705882v120.470589c0 102.4-78.305882 180.705882-180.705882 180.705882H180.705882c-102.4 0-180.705882-78.305882-180.705882-180.705882v-120.470589c0-102.4 78.305882-180.705882 180.705882-180.705882z" fill="#FFD68F" ></path></symbol></svg>',
            i = function (e, t) {
                t.firstChild ? function (e, t) {
                    t.parentNode.insertBefore(e, t)
                }(e, t.firstChild) : t.appendChild(e)
            };
        if ((t = document.getElementsByTagName("script"))[t.length - 1].getAttribute("data-injectcss") && !e.__iconfont__svg__cssinject__) {
            e.__iconfont__svg__cssinject__ = !0;
            try {
                document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")
            } catch (e) {
                console && console.log(e)
            }
        }
        !function (t) {
            if (document.addEventListener) if (~["complete", "loaded", "interactive"].indexOf(document.readyState)) setTimeout(t, 0); else {
                var n = function () {
                    document.removeEventListener("DOMContentLoaded", n, !1), t()
                };
                document.addEventListener("DOMContentLoaded", n, !1)
            } else document.attachEvent && function (e, t) {
                var n = e.document, i = !1, a = function () {
                    i || (i = !0, t())
                }, o = function () {
                    try {
                        n.documentElement.doScroll("left")
                    } catch (e) {
                        return void setTimeout(o, 50)
                    }
                    a()
                };
                o(), n.onreadystatechange = function () {
                    "complete" == n.readyState && (n.onreadystatechange = null, a())
                }
            }(e, t)
        }(function () {
            var e, t;
            (e = document.createElement("div")).innerHTML = n, n = null, (t = e.getElementsByTagName("svg")[0]) && (t.setAttribute("aria-hidden", "true"), t.style.position = "absolute", t.style.width = 0, t.style.height = 0, t.style.overflow = "hidden", i(t, document.body))
        })
    }(window)
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(11), s = n(5), l = n(63), u = n(676), d = n(678), c = n(680), h = n(681),
        f = n(228), p = n(32), g = n(106), k = n(81), m = o.default.getLogger("DownloadKernel.Task"),
        T = p.DownloadKernelEventManager.getEventManager(), v = k.DownloadKernelCategoryManager.getCategoryManager(),
        w = [".asf", ".mpg", ".rmvb", ".rm", ".wmv", ".avi", ".mp4", ".mpeg", ".mkv", ".mov", ".ts", ".flv", ".3gp"];
    var y;
    !function (e) {
        e[e.None = 0] = "None", e[e.Create = 1] = "Create", e[e.StartPending = 2] = "StartPending", e[e.Downloading = 3] = "Downloading", e[e.StopPending = 4] = "StopPending", e[e.Pause = 5] = "Pause", e[e.CompletePending = 6] = "CompletePending", e[e.Complete = 7] = "Complete", e[e.Error = 8] = "Error", e[e.ErrorStopPending = 9] = "ErrorStopPending"
    }(y || (y = {}));
    t.Task = class {
        constructor() {
            this.taskId = 0, this.virtualTaskId = 0, this.isBackground = !1, this.taskType = s.DownloadKernel.TaskType.Unkown, this.preStatus = s.DownloadKernel.TaskStatus.Stopped, this.taskStatus = s.DownloadKernel.TaskStatus.Stopped, this.taskExtra = null, this.speed = 0, this.vipSpeed = 0, this.downloadSizeList = [], this.vipSizeList = [], this.channelChangedTime = 0, this.startTime = 0, this.downloadingPeriod = 0, this.dispatchStrategy = void 0, this.originOnlyStrategy = void 0, this.originThreadCount = void 0, this.vipCert = void 0, this.taskStatusChangedReason = s.DownloadKernel.TaskStopReason.Unknown, this.attribute = new Map;
            for (let e = s.DownloadKernel.TaskAttribute.NumberStrart; e < s.DownloadKernel.TaskAttribute.NumberEnd; ++e) this.attribute.set(e, 0);
            for (let e = s.DownloadKernel.TaskAttribute.BooleanStart; e < s.DownloadKernel.TaskAttribute.BooleanEnd; ++e) this.attribute.set(e, !1);
            for (let e = s.DownloadKernel.TaskAttribute.StringStart; e < s.DownloadKernel.TaskAttribute.StringEnd; ++e) this.attribute.set(e, "");
            for (let e = s.DownloadKernel.TaskAttribute.ObjectStart; e < s.DownloadKernel.TaskAttribute.ObjectEnd; ++e) this.attribute.set(e, null);
            this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, -1), this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryViewId, s.DownloadKernel.CategroyViewID.Unkown), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, s.DownloadKernel.TaskType.Unkown), this.attribute.set(s.DownloadKernel.TaskAttribute.ErrorCode, s.DownloadKernel.TaskError.Unkown), this.attribute.set(s.DownloadKernel.TaskAttribute.NameType, 1), this.attribute.set(s.DownloadKernel.TaskAttribute.CreateTime, (new Date).getTime()), this.channelInfo = {
                originSize: 0,
                p2pSize: 0,
                p2sSize: 0,
                offlineSize: 0,
                dcdnSize: 0,
                dcdnStatus: s.DownloadKernel.DcdnStatusCode.Unkown
            }, this.historyChannelInfo = {originSize: 0, p2pSize: 0, p2sSize: 0, offlineSize: 0, dcdnSize: 0}
        }

        getId() {
            return this.taskId
        }

        getType() {
            return this.taskType
        }

        reName(e) {
            return i(this, void 0, void 0, function* () {
                do {
                    if (!e || "" === e) break;
                    if (this.taskStatus !== s.DownloadKernel.TaskStatus.Succeeded && this.taskStatus !== s.DownloadKernel.TaskStatus.Seeding) break;
                    let t = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName);
                    if (t === e) break;
                    if (this.taskType !== s.DownloadKernel.TaskType.Group) {
                        let n = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath), i = a.join(n, t),
                            o = a.join(n, e), l = yield r.FileSystemAWNS.existsAW(i);
                        l && (o = g.Common.getMaxFilePath(o), yield r.FileSystemAWNS.renameAW(i, o), (l = yield r.FileSystemAWNS.existsAW(o)) && (e = a.basename(o)))
                    }
                    this.setTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName, e), this.fireTaskEvent(s.DownloadKernel.TaskEventType.TaskRenamed)
                } while (0)
            })
        }

        setUserRead(e) {
            0 !== e && (e = 1), e !== this.attribute.get(s.DownloadKernel.TaskAttribute.UserRead) && (this.attribute.set(s.DownloadKernel.TaskAttribute.UserRead, e), this.saveTaskInfo(this.taskId, f.StatementType.SetTaskUserRead, f.ValueType.ValueInt, e), this.fireTaskEvent(s.DownloadKernel.TaskEventType.TaskUserRead))
        }

        setDescription(e) {
            let t = this.attribute.get(s.DownloadKernel.TaskAttribute.Description);
            e && t !== e && (this.attribute.set(s.DownloadKernel.TaskAttribute.Description, e), this.saveTaskInfo(this.taskId, f.StatementType.SetTaskDescription, f.ValueType.ValueString, e), this.fireTaskEvent(s.DownloadKernel.TaskEventType.TaskDescriptionChanged))
        }

        setOriginThreadCount(e) {
            this.taskType === s.DownloadKernel.TaskType.P2sp && this.getExtraObject().setOriginThreadCount(e)
        }

        setOriginOnlyStrategy(e) {
            if (this.taskType === s.DownloadKernel.TaskType.P2sp) {
                let t = this.getExtraObject();
                e ? (t.setUseOriginOnly(1), this.originOnlyStrategy = 1) : (t.setUseOriginOnly(0), this.originOnlyStrategy = 0)
            }
        }

        getOriginOnlyStrategy() {
            let e = !1;
            return this.taskType === s.DownloadKernel.TaskType.P2sp && 1 === this.getExtraObject().getUseOriginOnly() && (e = !0), e
        }

        setDispatchStrategy(e) {
            this.dispatchStrategy = e
        }

        setDownloadStrategy(e) {
            l.ThunderKernel.setDownloadStrategy(this.virtualTaskId, e)
        }

        setOpenOnComplete(e) {
            this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, e), this.saveTaskInfo(this.taskId, f.StatementType.SetTaskOpenOnCompelete, f.ValueType.ValueInt, e)
        }

        getExtraObject() {
            return this.taskExtra
        }

        getTaskStatus() {
            return this.taskStatus
        }

        getTaskPreStatus() {
            return this.preStatus
        }

        getDownloadSpeed() {
            return this.speed
        }

        getVipSpeed() {
            let e = this.vipSpeed;
            return this.vipSpeed > this.speed && (e = this.speed), e
        }

        getTaskAttribute(e) {
            return this.attribute.get(e)
        }

        getTaskChannelInfo() {
            let e = {};
            return e.originSize = this.historyChannelInfo.originSize + this.channelInfo.originSize, e.p2pSize = this.historyChannelInfo.p2pSize + this.channelInfo.p2pSize, e.p2sSize = this.historyChannelInfo.p2sSize + this.channelInfo.p2sSize, e.offlineSize = this.historyChannelInfo.offlineSize + this.channelInfo.offlineSize, e.dcdnSize = this.historyChannelInfo.dcdnSize + this.channelInfo.dcdnSize, e.dcdnStatus = this.channelInfo.dcdnStatus, e.dcdnResult = this.channelInfo.dcdnResult, e.enableDcdn = this.channelInfo.enableDcdn, e
        }

        getTaskBaseInfo() {
            let e = {};
            return e.taskId = this.taskId, e.taskType = this.taskType, e.downloadSpeed = this.speed, this.vipSpeed > this.speed ? e.vipSpeed = this.speed : e.vipSpeed = this.vipSpeed, e.taskStatus = this.getTaskStatus(), e.savePath = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath), e.createTime = this.attribute.get(s.DownloadKernel.TaskAttribute.CreateTime), e.url = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskUrl), e.refUrl = this.attribute.get(s.DownloadKernel.TaskAttribute.RefUrl), e.cid = this.attribute.get(s.DownloadKernel.TaskAttribute.Cid), e.gcid = this.attribute.get(s.DownloadKernel.TaskAttribute.Gcid), e.taskName = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName), e.description = this.attribute.get(s.DownloadKernel.TaskAttribute.Description), e.nameType = this.attribute.get(s.DownloadKernel.TaskAttribute.NameType), e.categoryId = this.attribute.get(s.DownloadKernel.TaskAttribute.CategoryId), e.userRead = this.attribute.get(s.DownloadKernel.TaskAttribute.UserRead), e.openOnComplete = this.attribute.get(s.DownloadKernel.TaskAttribute.OpenOnComplete), e.ownerProduct = this.attribute.get(s.DownloadKernel.TaskAttribute.OwnerProduct), e.downloadingPeriod = this.attribute.get(s.DownloadKernel.TaskAttribute.DownloadingPeriod), e.errorCode = this.attribute.get(s.DownloadKernel.TaskAttribute.ErrorCode), e.groupTaskId = this.attribute.get(s.DownloadKernel.TaskAttribute.GroupTaskId), e.downloadSubTask = this.attribute.get(s.DownloadKernel.TaskAttribute.DownloadSubTask), e.productInfo = this.attribute.get(s.DownloadKernel.TaskAttribute.ProductInfo), e.origin = this.attribute.get(s.DownloadKernel.TaskAttribute.Origin), e.fileCreated = this.attribute.get(s.DownloadKernel.TaskAttribute.FileCreated), e.recycleTime = this.attribute.get(s.DownloadKernel.TaskAttribute.RecycleTime), e.forbidden = this.attribute.get(s.DownloadKernel.TaskAttribute.Forbidden), e.fileSize = this.attribute.get(s.DownloadKernel.TaskAttribute.FileSize), e.receiveSize = this.attribute.get(s.DownloadKernel.TaskAttribute.ReceivedSize), e.downloadSize = this.attribute.get(s.DownloadKernel.TaskAttribute.DownloadSize), e.srcTotal = this.attribute.get(s.DownloadKernel.TaskAttribute.SrcTotal), e.srcUsing = this.attribute.get(s.DownloadKernel.TaskAttribute.SrcUsing), e.completionTime = this.attribute.get(s.DownloadKernel.TaskAttribute.CompletionTime), e.channelInfo = this.getTaskChannelInfo(), e
        }

        isSupportPlay() {
            let e = !1;
            if (this.taskStatus === s.DownloadKernel.TaskStatus.Failed) {
                let t = this.attribute.get(s.DownloadKernel.TaskAttribute.ErrorCode);
                e = !(t && t > 700) && this.isVideoFile()
            } else e = this.isVideoFile();
            return e
        }

        getPlayUrl(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    this.virtualTaskId && this.virtualTaskId > 0 ? l.ThunderKernel.queryPlayInfo(this.virtualTaskId, e, (n, i) => {
                        e === n && t(i)
                    }) : t(void 0)
                })
            })
        }

        enableDcdnWithVipCert(e) {
            if (this.vipCert = e, this.taskType === s.DownloadKernel.TaskType.Group) {
                let t = this.getExtraObject(), n = t.getSubTaskCount();
                for (let i = 0; i < n; ++i) {
                    let n = t.getSubTaskByIndex(i);
                    n && n.enableDcdnWithVipCert(e)
                }
            } else this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.enableDcdnWithVipCert(this.virtualTaskId, -1, e)
        }

        updateDcdnWithVipCert(e) {
            if (this.vipCert = e, this.taskType === s.DownloadKernel.TaskType.Group) {
                let t = this.getExtraObject(), n = t.getSubTaskCount();
                for (let i = 0; i < n; ++i) {
                    let n = t.getSubTaskByIndex(i);
                    n && n.updateDcdnWithVipCert(e)
                }
            } else this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.updateDcdnWithVipCert(this.virtualTaskId, -1, e)
        }

        disableDcdnWithVipCert() {
            if (this.vipCert = void 0, this.taskType === s.DownloadKernel.TaskType.Group) {
                let e = this.getExtraObject(), t = e.getSubTaskCount();
                for (let n = 0; n < t; ++n) {
                    let t = e.getSubTaskByIndex(n);
                    t && t.disableDcdnWithVipCert()
                }
            } else this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.disableDcdnWithVipCert(this.virtualTaskId, -1)
        }

        start() {
            m.information("start this.taskStatus:", this.taskStatus, ", this.taskType:", this.taskType);
            let e = !1;
            if (this.taskStatus === s.DownloadKernel.TaskStatus.Stopped || this.taskStatus === s.DownloadKernel.TaskStatus.StartWaiting || this.taskStatus === s.DownloadKernel.TaskStatus.Failed || this.taskStatus === s.DownloadKernel.TaskStatus.Unkown) if (this.taskType === s.DownloadKernel.TaskType.Group) (e = this.getExtraObject().start()) && (e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.StartPending)); else if (this.createDownloadSdkTask(), this.virtualTaskId && this.virtualTaskId > 0) {
                if (e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.StartPending), this.taskType === s.DownloadKernel.TaskType.P2sp) {
                    let e = this.getExtraObject(), t = e.getThreadCount();
                    void 0 !== this.originOnlyStrategy && e.setUseOriginOnly(this.originOnlyStrategy), 1 === this.originOnlyStrategy ? l.ThunderKernel.setTaskStrategy(this.virtualTaskId, 1) : void 0 !== this.dispatchStrategy && l.ThunderKernel.setTaskStrategy(this.virtualTaskId, this.dispatchStrategy), void 0 !== this.originThreadCount ? l.ThunderKernel.setTaskThreadCount(this.virtualTaskId, this.originThreadCount) : l.ThunderKernel.setTaskThreadCount(this.virtualTaskId, t)
                } else void 0 !== this.dispatchStrategy && l.ThunderKernel.setTaskStrategy(this.virtualTaskId, this.dispatchStrategy);
                void 0 !== this.vipCert && l.ThunderKernel.enableDcdnWithVipCert(this.virtualTaskId, -1, this.vipCert), this.taskExtra && this.taskExtra.setTaskPriorityLevel(-1), l.ThunderKernel.startTask(this.virtualTaskId)
            } else m.error("createDownloadSdkTask failed! virtualTaskId:", this.virtualTaskId);
            return e
        }

        startWaiting() {
            m.information("startWaiting this.taskStatus:", this.taskStatus);
            let e = !1;
            return this.taskStatus !== s.DownloadKernel.TaskStatus.Stopped && this.taskStatus !== s.DownloadKernel.TaskStatus.Failed && this.taskStatus !== s.DownloadKernel.TaskStatus.Unkown || (e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.StartWaiting)), e
        }

        stop() {
            m.information("stop");
            let e = !1;
            if (this.taskStatus === s.DownloadKernel.TaskStatus.StartWaiting) e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.Stopped); else if (this.taskType === s.DownloadKernel.TaskType.Group) {
                let t = this.getExtraObject();
                if (e = t.stop()) {
                    let n = t.getTaskStatus();
                    n !== s.DownloadKernel.TaskStatus.Succeeded && n !== s.DownloadKernel.TaskStatus.Seeding && n !== s.DownloadKernel.TaskStatus.Stopped && (e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.StopPending))
                }
            } else this.taskStatus !== s.DownloadKernel.TaskStatus.Succeeded && this.taskStatus !== s.DownloadKernel.TaskStatus.Seeding && this.taskStatus !== s.DownloadKernel.TaskStatus.Stopped && this.taskStatus !== s.DownloadKernel.TaskStatus.Failed && (this.virtualTaskId && this.virtualTaskId > 0 ? (e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.StopPending), l.ThunderKernel.stopTask(this.virtualTaskId)) : e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.Stopped));
            return e
        }

        delete(e) {
            return i(this, void 0, void 0, function* () {
                m.information("delete");
                let t = !1;
                return this.taskType === s.DownloadKernel.TaskType.Group ? (t = yield this.getExtraObject().delete(e), this.deleteStorageTask()) : (t = !0, this.deleteStorageTask(), e && (t = yield this.destroy())), t
            })
        }

        commit() {
        }

        updateTaskStatus(e) {
            let t = !1;
            return this.taskStatus !== e && (this.taskStatus === s.DownloadKernel.TaskStatus.StartPending ? e === s.DownloadKernel.TaskStatus.Stopped || (this.preStatus = this.taskStatus, this.taskStatus = e, t = !0) : this.taskStatus === s.DownloadKernel.TaskStatus.StopPending ? e === s.DownloadKernel.TaskStatus.Started || (this.preStatus = this.taskStatus, this.taskStatus = e, t = !0) : (this.taskStatus === s.DownloadKernel.TaskStatus.Succeeded || this.taskStatus === s.DownloadKernel.TaskStatus.Seeding) && e !== s.DownloadKernel.TaskStatus.Stopped && e !== s.DownloadKernel.TaskStatus.DestroyPending || (this.preStatus = this.taskStatus, this.taskStatus = e, t = !0)), e !== s.DownloadKernel.TaskStatus.Started && (this.speed = 0, this.vipSpeed = 0, this.downloadSizeList = [], this.vipSizeList = []), t && (this.startTime = 0, this.downloadingPeriod = this.attribute.get(s.DownloadKernel.TaskAttribute.DownloadingPeriod), this.taskStatus !== s.DownloadKernel.TaskStatus.DestroyPending && this.saveTaskInfo(this.taskId, f.StatementType.SetTaskStatus, f.ValueType.ValueInt, this.taskStatus)), t
        }

        createP2spTask(e, t, n, i) {
            if (this.taskId = l.ThunderKernel.createTaskId(), this.taskType = s.DownloadKernel.TaskType.P2sp, this.attribute.set(s.DownloadKernel.TaskAttribute.TaskId, this.taskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, this.taskType), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskUrl, n.url), this.attribute.set(s.DownloadKernel.TaskAttribute.RefUrl, n.refUrl), this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, n.origin), this.attribute.set(s.DownloadKernel.TaskAttribute.Cookie, n.cookie), this.attribute.set(s.DownloadKernel.TaskAttribute.SavePath, t.savePath), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskName, t.taskName), this.attribute.set(s.DownloadKernel.TaskAttribute.Description, t.description), this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, t.openOnComplete), t.productInfo && this.attribute.set(s.DownloadKernel.TaskAttribute.ProductInfo, t.productInfo), t.origin && this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, t.origin), t.groupTaskId && this.attribute.set(s.DownloadKernel.TaskAttribute.GroupTaskId, t.groupTaskId), 1 === n.downloadSubTask && this.attribute.set(s.DownloadKernel.TaskAttribute.DownloadSubTask, 1), i) {
                let e = v.getCurrentPrivateCategory();
                e && this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, e.getId())
            }
            return t.fileSize && this.attribute.set(s.DownloadKernel.TaskAttribute.FileSize, t.fileSize), t.gcid && this.attribute.set(s.DownloadKernel.TaskAttribute.Gcid, t.gcid), t.cid && this.attribute.set(s.DownloadKernel.TaskAttribute.Cid, t.cid), e ? (this.isBackground = e, this.attribute.set(s.DownloadKernel.TaskAttribute.Background, e)) : this.insertStorageTaskBase(), this.taskExtra = new u.P2spTask(this, !e, n.useOriginResourceOnly, n.originResourceThreadCount), this.taskId
        }

        createBtTask(e, t, n, o) {
            return i(this, void 0, void 0, function* () {
                if (this.taskId = l.ThunderKernel.createTaskId(), this.taskType = s.DownloadKernel.TaskType.Bt, t.taskName || (t.taskName = n.displayName), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskId, this.taskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, this.taskType), this.attribute.set(s.DownloadKernel.TaskAttribute.SavePath, t.savePath), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskName, t.taskName), this.attribute.set(s.DownloadKernel.TaskAttribute.Description, t.description), this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, t.openOnComplete), t.productInfo && this.attribute.set(s.DownloadKernel.TaskAttribute.ProductInfo, t.productInfo), t.origin && this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, t.origin), o) {
                    let e = v.getCurrentPrivateCategory();
                    e && this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, e.getId())
                }
                let i = a.join(__profilesDir, "Torrents"), u = yield r.FileSystemAWNS.existsAW(i);
                u || (yield r.FileSystemAWNS.mkdirsAW(i));
                let c = n.infoId + ".torrent", h = a.join(i, c);
                yield r.FileSystemAWNS.copyFileAW(n.seedFile, h), (u = yield r.FileSystemAWNS.existsAW(h)) && (n.seedFile = h), e ? (this.isBackground = e, this.attribute.set(s.DownloadKernel.TaskAttribute.Background, e)) : this.insertStorageTaskBase(), this.taskExtra = new d.BtTask(this, !e, n);
                let f = this.getExtraObject().getFileSize();
                this.attribute.set(s.DownloadKernel.TaskAttribute.FileSize, f), this.saveAttribute(s.DownloadKernel.TaskAttribute.FileSize, f)
            })
        }

        createEmuleTask(e, t, n, i) {
            if (this.taskId = l.ThunderKernel.createTaskId(), this.taskType = s.DownloadKernel.TaskType.Emule, this.attribute.set(s.DownloadKernel.TaskAttribute.TaskId, this.taskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, this.taskType), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskUrl, n.url), this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, n.origin), this.attribute.set(s.DownloadKernel.TaskAttribute.SavePath, t.savePath), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskName, t.taskName), this.attribute.set(s.DownloadKernel.TaskAttribute.Description, t.description), this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, t.openOnComplete), t.productInfo && this.attribute.set(s.DownloadKernel.TaskAttribute.ProductInfo, t.productInfo), t.origin && this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, t.origin), t.groupTaskId && this.attribute.set(s.DownloadKernel.TaskAttribute.GroupTaskId, t.groupTaskId), 1 === n.downloadSubTask && this.attribute.set(s.DownloadKernel.TaskAttribute.DownloadSubTask, 1), i) {
                let e = v.getCurrentPrivateCategory();
                e && this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, e.getId())
            }
            if (t.fileSize) this.attribute.set(s.DownloadKernel.TaskAttribute.FileSize, t.fileSize); else {
                let e = g.Common.parseEd2kUrl(n.url);
                e && e.fileSize && this.attribute.set(s.DownloadKernel.TaskAttribute.FileSize, e.fileSize)
            }
            return t.gcid && this.attribute.set(s.DownloadKernel.TaskAttribute.Gcid, t.gcid), t.cid && this.attribute.set(s.DownloadKernel.TaskAttribute.Cid, t.cid), e ? (this.isBackground = e, this.attribute.set(s.DownloadKernel.TaskAttribute.Background, e)) : this.insertStorageTaskBase(), this.taskExtra = new c.EmuleTask(this, !e), this.taskId
        }

        createGroupTask(e, t, n, i) {
            if (this.taskId = l.ThunderKernel.createTaskId(), this.taskType = s.DownloadKernel.TaskType.Group, this.attribute.set(s.DownloadKernel.TaskAttribute.TaskId, this.taskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, this.taskType), this.attribute.set(s.DownloadKernel.TaskAttribute.SavePath, t.savePath), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskName, t.taskName), this.attribute.set(s.DownloadKernel.TaskAttribute.Description, t.description), this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, t.openOnComplete), t.productInfo && this.attribute.set(s.DownloadKernel.TaskAttribute.ProductInfo, t.productInfo), t.origin && this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, t.origin), i) {
                let e = v.getCurrentPrivateCategory();
                e && this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, e.getId())
            }
            let a = 0;
            for (let e = 0; e < n.subTaskList.length; ++e) {
                let t = n.subTaskList[e].taskBaseInfo.fileSize;
                t && (a += t)
            }
            return a && this.attribute.set(s.DownloadKernel.TaskAttribute.FileSize, a), e ? (this.isBackground = e, this.attribute.set(s.DownloadKernel.TaskAttribute.Background, e)) : this.insertStorageTaskBase(), this.taskExtra = new h.GroupTask(this, !e), this.taskId
        }

        createMagnetTask(e, t, n, i) {
            if (this.taskId = l.ThunderKernel.createTaskId(), this.taskType = s.DownloadKernel.TaskType.Magnet, this.attribute.set(s.DownloadKernel.TaskAttribute.TaskId, this.taskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, this.taskType), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskUrl, n.url), this.attribute.set(s.DownloadKernel.TaskAttribute.SavePath, n.torrentFilePath), this.attribute.set(s.DownloadKernel.TaskAttribute.Description, t.description), this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, t.openOnComplete), t.productInfo && this.attribute.set(s.DownloadKernel.TaskAttribute.ProductInfo, t.productInfo), t.origin && this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, t.origin), i) {
                let e = v.getCurrentPrivateCategory();
                e && this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, e.getId())
            }
            return e ? (this.isBackground = e, this.attribute.set(s.DownloadKernel.TaskAttribute.Background, e)) : this.insertStorageTaskBase(), this.taskId
        }

        loadStorageP2spTask(e) {
            this.setTaskBaseInfo(e), this.taskExtra = new u.P2spTask(this, !1, 0, 5)
        }

        loadStorageBtTaskAW(e) {
            return new Promise(t => i(this, void 0, void 0, function* () {
                this.setTaskBaseInfo(e), this.taskExtra = new d.BtTask(this, !1, null), this.getExtraObject().loadBtTask(e => {
                    if (e) {
                        let t = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName);
                        void 0 !== t && "" !== t || void 0 !== e.displayName && this.attribute.set(s.DownloadKernel.TaskAttribute.TaskName, e.displayName)
                    }
                    t()
                })
            }))
        }

        loadStorageEmuleTask(e) {
            this.setTaskBaseInfo(e), this.taskExtra = new c.EmuleTask(this, !1)
        }

        loadStorageGroupTask(e) {
            this.setTaskBaseInfo(e), this.taskExtra = new h.GroupTask(this, !1)
        }

        updateTaskSavePath(e) {
            this.setTaskAttribute(s.DownloadKernel.TaskAttribute.SavePath, e)
        }

        updateTaskName(e) {
            this.setTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName, e)
        }

        updateDownloadSubTask(e) {
            if (this.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSubTask) !== e) {
                this.setTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSubTask, e);
                let t = this.getTaskAttribute(s.DownloadKernel.TaskAttribute.GroupTaskId);
                t > 0 && T.fireTaskEvent(s.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged, t, [this])
            }
        }

        queryTaskInfo(e, t) {
            switch (this.taskType) {
                case s.DownloadKernel.TaskType.P2sp:
                    this.queryP2spTaskInfo(e, t);
                    break;
                case s.DownloadKernel.TaskType.Bt:
                    this.queryBtTaskInfo(e, t);
                    break;
                case s.DownloadKernel.TaskType.Emule:
                    this.queryEmuleTaskInfo(e, t);
                    break;
                case s.DownloadKernel.TaskType.Group:
                    this.queryGroupTaskInfo(e, t);
                    break;
                case s.DownloadKernel.TaskType.Magnet:
                    this.queryMagnetTaskInfo(e, t)
            }
        }

        updateTaskInfo(e) {
            let t = 0, n = !1;
            if (void 0 !== e.finalName && "" !== e.finalName && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName, e.finalName) && (n = !0), this.updateDownloadSpeed(e.downloadSize) && (n = !0), e.downloadSize) {
                let t = this.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize);
                this.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize) === e.fileSize && t > e.downloadSize || this.setTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize, e.downloadSize) && (n = !0)
            }
            e.receivedSize && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.ReceivedSize, e.receivedSize) && (n = !0), e.fileSize && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize, e.fileSize) && (n = !0), this.setTaskAttribute(s.DownloadKernel.TaskAttribute.ErrorCode, e.taskError) && (n = !0), e.cid && "" !== e.cid && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.Cid, e.cid) && (n = !0), e.gcid && "" !== e.gcid && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.Gcid, e.gcid) && (n = !0), e.srcTotal && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.SrcTotal, e.srcTotal) && (n = !0), e.srcUsing && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.SrcUsing, e.srcUsing) && (n = !0), e.taskStatus !== y.Error || e.taskError !== s.DownloadKernel.TaskError.FileCreate ? this.setTaskAttribute(s.DownloadKernel.TaskAttribute.FileCreated, 1) : this.setTaskAttribute(s.DownloadKernel.TaskAttribute.FileCreated, 0);
            let i = this.changeToDownloadKernelTaskStatus(e.taskStatus);
            this.updateTaskStatus(i) && (t += 1);
            let a = e.channelInfo;
            return a && this.updateChannelInfo(a) && (n = !0), 0 === e.fileSize && (n = !1), n && (t += 2), t
        }

        onFinish() {
            let e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.Succeeded);
            return this.setTaskAttribute(s.DownloadKernel.TaskAttribute.CompletionTime, (new Date).getTime()), this.virtualTaskId > 0 && (l.ThunderKernel.deleteTask(this.virtualTaskId), this.virtualTaskId = 0, this.attribute.set(s.DownloadKernel.TaskAttribute.VirtualId, this.virtualTaskId)), e
        }

        onStop() {
            let e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.Stopped);
            return this.virtualTaskId > 0 && (l.ThunderKernel.deleteTask(this.virtualTaskId), this.virtualTaskId = 0, this.attribute.set(s.DownloadKernel.TaskAttribute.VirtualId, this.virtualTaskId)), e
        }

        onFail() {
            let e = this.updateTaskStatus(s.DownloadKernel.TaskStatus.Failed);
            return this.virtualTaskId > 0 && (l.ThunderKernel.deleteTask(this.virtualTaskId), this.virtualTaskId = 0, this.attribute.set(s.DownloadKernel.TaskAttribute.VirtualId, this.virtualTaskId)), e
        }

        setTaskInfo(e, t, n) {
            let i = this.setTaskAttribute(e, t);
            if (i && n) {
                let e = this.getTaskAttribute(s.DownloadKernel.TaskAttribute.GroupTaskId);
                e > 0 ? T.fireTaskEvent(s.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged, e, [this]) : this.fireTaskEvent(s.DownloadKernel.TaskEventType.DetailChanged)
            }
            return i
        }

        setTaskInfos(e, t) {
            let n = !1;
            for (let t = 0; t < e.length; ++t) n = this.setTaskAttribute(e[t].attrType, e[t].attr) || n;
            if (n && t) {
                let e = this.getTaskAttribute(s.DownloadKernel.TaskAttribute.GroupTaskId);
                e > 0 ? T.fireTaskEvent(s.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged, e, [this]) : this.fireTaskEvent(s.DownloadKernel.TaskEventType.DetailChanged)
            }
            return n
        }

        setTaskChannelInfo(e) {
            this.channelInfo = e, l.ThunderKernel.saveTaskChannelInfo(this.taskId, e.originSize, e.p2pSize, e.p2sSize, e.offlineSize, e.dcdnSize)
        }

        moveToRecycle() {
            let e = (new Date).getTime();
            return this.setTaskAttribute(s.DownloadKernel.TaskAttribute.RecycleTime, e)
        }

        recover() {
            return this.setTaskAttribute(s.DownloadKernel.TaskAttribute.RecycleTime, 0)
        }

        destroy() {
            return i(this, void 0, void 0, function* () {
                let e = !1;
                switch (this.taskType) {
                    case s.DownloadKernel.TaskType.P2sp:
                        e = yield this.deleteP2spTaskFile();
                        break;
                    case s.DownloadKernel.TaskType.Bt:
                        e = yield this.deleteBtTaskFile();
                        break;
                    case s.DownloadKernel.TaskType.Emule:
                        e = yield this.deleteEmuleTaskFile();
                        break;
                    case s.DownloadKernel.TaskType.Group:
                        e = yield this.deleteGroupTaskFile()
                }
                return e
            })
        }

        setSavePath(e) {
            this.taskStatus !== s.DownloadKernel.TaskStatus.StartPending && this.taskStatus !== s.DownloadKernel.TaskStatus.Started && this.setTaskAttribute(s.DownloadKernel.TaskAttribute.SavePath, e)
        }

        setCategoryViewId(e) {
            this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryViewId, e)
        }

        getIsPrivate() {
            let e = this.attribute.get(s.DownloadKernel.TaskAttribute.CategoryId);
            return void 0 !== e && e > -1
        }

        getUserName() {
            let e = this.attribute.get(s.DownloadKernel.TaskAttribute.CategoryId);
            if (void 0 !== e && e > -1) {
                let t = v.getCategoryFromId(e);
                if (t) return t.getUserName()
            }
            return ""
        }

        setCategoryId(e) {
            this.isBackground || (this.setTaskAttribute(s.DownloadKernel.TaskAttribute.CategoryId, e), l.ThunderKernel.setCategoryId(e, this.taskId))
        }

        setTaskStatus(e) {
            return e !== this.taskStatus && (this.taskStatus = e, this.saveTaskInfo(this.taskId, f.StatementType.SetTaskStatus, f.ValueType.ValueInt, this.taskStatus), this.fireTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged), !0)
        }

        getTaskName() {
            return this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName)
        }

        getSavePath() {
            return this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath)
        }

        setTaskSpeed(e, t) {
            let n = !1;
            if (e = Math.round(e), t = Math.round(t), this.speed !== e && (n = !0, this.speed = e), this.vipSpeed !== t && (n = !0, this.vipSpeed = t), n) {
                let e = this.attribute.get(s.DownloadKernel.TaskAttribute.GroupTaskId);
                e > 0 ? T.fireTaskEvent(s.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged, e, [this]) : this.fireTaskEvent(s.DownloadKernel.TaskEventType.DetailChanged)
            }
        }

        getVirtualTaskId() {
            return this.virtualTaskId
        }

        setStopReason(e) {
            this.taskStatusChangedReason = e
        }

        getStopReason() {
            return this.taskStatusChangedReason
        }

        createDownloadSdkTask() {
            switch (this.taskType) {
                case s.DownloadKernel.TaskType.P2sp: {
                    let e = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskUrl),
                        t = this.attribute.get(s.DownloadKernel.TaskAttribute.RefUrl),
                        n = this.attribute.get(s.DownloadKernel.TaskAttribute.Cookie),
                        i = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath),
                        a = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName);
                    this.virtualTaskId = l.ThunderKernel.createP2spTask(e, t, n, i, a), m.information("createP2spTask virtualTaskId:", this.virtualTaskId, ", url:", e, ", refUrl: ", t, ", cookie:", n, ", savePath:", i, ", fileName:", a)
                }
                    break;
                case s.DownloadKernel.TaskType.Bt: {
                    let e = this.getExtraObject(), t = e.getSeedFilePath(), n = e.getDownloadFile(),
                        i = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath),
                        o = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName), r = a.join(i, o);
                    this.virtualTaskId = l.ThunderKernel.createBtTask(t, r, n), m.information("createBtTask virtualTaskId:", this.virtualTaskId, ", torrentFilePath:", t, ", filePath: ", r, ", downloadIndexs:", n)
                }
                    break;
                case s.DownloadKernel.TaskType.Emule: {
                    let e = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskUrl),
                        t = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath),
                        n = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName);
                    this.virtualTaskId = l.ThunderKernel.createEmuleTask(e, t, n), m.information("createEmuleTask virtualTaskId:", this.virtualTaskId, ", url:", e, ", savePath: ", t, ", fileName:", n)
                }
                    break;
                case s.DownloadKernel.TaskType.Magnet: {
                    let e = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskUrl),
                        t = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath);
                    this.virtualTaskId = l.ThunderKernel.createMagnetTask(e, t), m.information("createMagnetTask virtualTaskId:", this.virtualTaskId, ", url:", e, ", savePath: ", t)
                }
            }
            return m.information("createDownloadSdkTask virtualTaskId:", this.virtualTaskId), this.attribute.set(s.DownloadKernel.TaskAttribute.VirtualId, this.virtualTaskId), this.virtualTaskId
        }

        queryP2spTaskInfo(e, t) {
            this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.queryTaskInfo(this.virtualTaskId, n => {
                if (null !== n) {
                    let i = this.updateTaskInfo(n);
                    1 === i ? e(this) : 2 === i ? t(this) : 3 === i && (e(this), t(this))
                }
            })
        }

        queryBtTaskInfo(e, t) {
            this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.queryBtTaskInfo(this.virtualTaskId, n => {
                if (null !== n) {
                    let i = this.updateTaskInfo(n);
                    1 === i ? e(this) : 2 === i ? t(this) : 3 === i && (e(this), t(this))
                }
                this.getExtraObject().updateSubFileInfo(n.fileLists)
            })
        }

        queryEmuleTaskInfo(e, t) {
            this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.queryTaskInfo(this.virtualTaskId, n => {
                if (null !== n) {
                    let i = this.updateTaskInfo(n);
                    1 === i ? e(this) : 2 === i ? t(this) : 3 === i && (e(this), t(this))
                }
            })
        }

        queryGroupTaskInfo(e, t) {
            this.taskExtra && this.getExtraObject().querySubTaskInfo(e, t)
        }

        queryMagnetTaskInfo(e, t) {
            this.virtualTaskId && this.virtualTaskId > 0 && l.ThunderKernel.queryTaskInfo(this.virtualTaskId, n => {
                if (null !== n) {
                    let i = this.updateTaskInfo(n);
                    1 === i ? e(this) : 2 === i ? t(this) : 3 === i && (e(this), t(this))
                }
            })
        }

        setTaskBaseInfo(e) {
            e && (this.taskId = e.taskId, this.taskType = e.taskType, this.taskStatus = e.taskStatus, this.attribute.set(s.DownloadKernel.TaskAttribute.TaskId, e.taskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskType, e.taskType), this.attribute.set(s.DownloadKernel.TaskAttribute.FileCreated, e.fileCreated), this.attribute.set(s.DownloadKernel.TaskAttribute.RecycleTime, e.recycleTime), this.attribute.set(s.DownloadKernel.TaskAttribute.Forbidden, e.forbidden), this.attribute.set(s.DownloadKernel.TaskAttribute.FileSize, e.fileSize), this.attribute.set(s.DownloadKernel.TaskAttribute.ReceivedSize, e.receiveSize), this.attribute.set(s.DownloadKernel.TaskAttribute.DownloadSize, e.downloadSize), this.attribute.set(s.DownloadKernel.TaskAttribute.CreateTime, e.createTime), this.attribute.set(s.DownloadKernel.TaskAttribute.CompletionTime, e.completionTime), this.attribute.set(s.DownloadKernel.TaskAttribute.DownloadingPeriod, e.downloadingPeriod), this.attribute.set(s.DownloadKernel.TaskAttribute.ErrorCode, e.errorCode), this.attribute.set(s.DownloadKernel.TaskAttribute.NameType, e.nameType), this.attribute.set(s.DownloadKernel.TaskAttribute.CategoryId, e.categoryId), this.attribute.set(s.DownloadKernel.TaskAttribute.UserRead, e.userRead), this.attribute.set(s.DownloadKernel.TaskAttribute.OpenOnComplete, e.openOnComplete), this.attribute.set(s.DownloadKernel.TaskAttribute.OwnerProduct, e.ownerProduct), this.attribute.set(s.DownloadKernel.TaskAttribute.DownloadSubTask, e.downloadSubTask), this.attribute.set(s.DownloadKernel.TaskAttribute.GroupTaskId, e.groupTaskId), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskName, e.taskName), this.attribute.set(s.DownloadKernel.TaskAttribute.SavePath, e.savePath), this.attribute.set(s.DownloadKernel.TaskAttribute.TaskUrl, e.url), this.attribute.set(s.DownloadKernel.TaskAttribute.RefUrl, e.refUrl), this.attribute.set(s.DownloadKernel.TaskAttribute.Cid, e.cid), this.attribute.set(s.DownloadKernel.TaskAttribute.Gcid, e.gcid), this.attribute.set(s.DownloadKernel.TaskAttribute.Description, e.description), this.attribute.set(s.DownloadKernel.TaskAttribute.ProductInfo, e.productInfo), this.attribute.set(s.DownloadKernel.TaskAttribute.Origin, e.origin), this.attribute.set(s.DownloadKernel.TaskAttribute.UserData, e.userData), e.channelInfo && (this.historyChannelInfo = e.channelInfo))
        }

        setTaskAttribute(e, t) {
            let n = !1;
            return this.getTaskAttribute(e) !== t && void 0 !== t && (this.attribute.set(e, t), n = !0, this.saveAttribute(e, t)), n
        }

        updateDownloadSpeed(e) {
            let t = !1;
            if (e) {
                let n = e - this.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize);
                (0 === e || n < 0) && (n = 0);
                let i = this.calculateDownloadSpeed(n);
                (i = Math.round(i)) !== this.speed && (this.speed = i, t = !0)
            }
            if (this.taskStatus === s.DownloadKernel.TaskStatus.Started) if (0 === this.startTime) this.startTime = (new Date).getTime(); else {
                let e = ((new Date).getTime() - this.startTime) / 1e3, n = this.downloadingPeriod + Math.round(e);
                this.saveAttribute(s.DownloadKernel.TaskAttribute.DownloadingPeriod, n), this.attribute.set(s.DownloadKernel.TaskAttribute.DownloadingPeriod, n), this.attribute.get(s.DownloadKernel.TaskAttribute.GroupTaskId) < 1 && (t = !0)
            }
            return t
        }

        saveAttribute(e, t) {
            switch (e) {
                case s.DownloadKernel.TaskAttribute.TaskName:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskName, f.ValueType.ValueString, t);
                    break;
                case s.DownloadKernel.TaskAttribute.SavePath:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskSavePath, f.ValueType.ValueString, t);
                    break;
                case s.DownloadKernel.TaskAttribute.ReceivedSize:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskReceiveSize, f.ValueType.ValueBigint, t);
                    break;
                case s.DownloadKernel.TaskAttribute.DownloadSize:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskDownloadSize, f.ValueType.ValueBigint, t);
                    break;
                case s.DownloadKernel.TaskAttribute.FileSize:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskFileSize, f.ValueType.ValueBigint, t);
                    break;
                case s.DownloadKernel.TaskAttribute.RecycleTime:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskRemovingToRecycleTime, f.ValueType.ValueBigint, t);
                    break;
                case s.DownloadKernel.TaskAttribute.FileCreated:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskFileCreated, f.ValueType.ValueInt, t);
                    break;
                case s.DownloadKernel.TaskAttribute.CompletionTime:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskCompletionTime, f.ValueType.ValueBigint, t);
                    break;
                case s.DownloadKernel.TaskAttribute.DownloadingPeriod:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskDownloadingPeriod, f.ValueType.ValueBigint, t);
                    break;
                case s.DownloadKernel.TaskAttribute.ErrorCode:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskFailureErrorCode, f.ValueType.ValueInt, t);
                    break;
                case s.DownloadKernel.TaskAttribute.Cid:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskCid, f.ValueType.ValueBlob, t);
                    break;
                case s.DownloadKernel.TaskAttribute.Gcid:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskGcid, f.ValueType.ValueBlob, t);
                    break;
                case s.DownloadKernel.TaskAttribute.DownloadSubTask:
                    this.saveTaskInfo(this.taskId, f.StatementType.SetTaskDownload, f.ValueType.ValueInt, t)
            }
        }

        insertStorageTaskBase() {
            let e = this.getTaskBaseInfo();
            l.ThunderKernel.insertTaskBase(e)
        }

        deleteStorageTask() {
            l.ThunderKernel.deleteStorageTask(this.taskId, f.StatementType.DestroyTaskBase);
            let e = f.StatementType.StatementBengin;
            switch (this.taskType) {
                case s.DownloadKernel.TaskType.P2sp:
                    e = f.StatementType.DestroyP2spTask;
                    break;
                case s.DownloadKernel.TaskType.Bt:
                    e = f.StatementType.DestroyBtTask, this.getExtraObject().deleteStorageBtFile();
                    break;
                case s.DownloadKernel.TaskType.Emule:
                    e = f.StatementType.DestroyEmuleTask;
                    break;
                case s.DownloadKernel.TaskType.Group:
                    e = f.StatementType.DestroyGroupTask;
                    break;
                case s.DownloadKernel.TaskType.Magnet:
                    e = f.StatementType.DestroyMagnetTask
            }
            e !== f.StatementType.StatementBengin && l.ThunderKernel.deleteStorageTask(this.taskId, e)
        }

        saveTaskInfo(e, t, n, i) {
            this.isBackground || l.ThunderKernel.saveTaskBaseInfo(e, t, n, i)
        }

        updateChannelInfo(e) {
            let t = !1;
            if (this.channelInfo.originSize !== e.originSize || this.channelInfo.p2sSize !== e.p2sSize || this.channelInfo.p2pSize !== e.p2pSize || this.channelInfo.offlineSize !== e.offlineSize || this.channelInfo.dcdnSize !== e.dcdnSize || this.channelInfo.dcdnStatus !== e.dcdnStatus) {
                t = !0;
                let n = (new Date).getTime();
                if (0 === this.channelChangedTime && (this.channelChangedTime = n), n - this.channelChangedTime >= 100) {
                    let i = e.offlineSize - this.channelInfo.offlineSize + (e.dcdnSize - this.channelInfo.dcdnSize);
                    i < 0 && (i = 0);
                    let a = this.calculateVipSpeed(i);
                    a = Math.round(a), this.vipSpeed !== a && (t = !0, this.vipSpeed = a), this.channelChangedTime = n
                }
            }
            let n = !1, i = e.dcdnStatus;
            if (this.channelInfo.dcdnStatus !== i && (n = !0), this.taskStatus === s.DownloadKernel.TaskStatus.Stopped || this.taskStatus === s.DownloadKernel.TaskStatus.Succeeded || this.taskStatus === s.DownloadKernel.TaskStatus.Seeding) {
                this.channelInfo = {originSize: 0, p2pSize: 0, p2sSize: 0, offlineSize: 0, dcdnSize: 0};
                let t = this.historyChannelInfo.originSize + e.originSize,
                    n = this.historyChannelInfo.p2pSize + e.p2pSize, i = this.historyChannelInfo.p2sSize + e.p2sSize,
                    a = this.historyChannelInfo.offlineSize + e.offlineSize,
                    o = this.historyChannelInfo.dcdnSize + e.dcdnSize;
                this.historyChannelInfo = {originSize: t, p2pSize: n, p2sSize: i, offlineSize: a, dcdnSize: o}
            } else this.channelInfo = e;
            return t && this.saveChannelInfo(), n && this.fireTaskEvent(s.DownloadKernel.TaskEventType.DcdnStatusChanged), t
        }

        saveChannelInfo() {
            let e = this.getTaskChannelInfo();
            l.ThunderKernel.saveTaskChannelInfo(this.taskId, e.originSize, e.p2pSize, e.p2sSize, e.offlineSize, e.dcdnSize)
        }

        deleteP2spTaskFile() {
            return i(this, void 0, void 0, function* () {
                let e = !0, t = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath),
                    n = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName), i = a.join(t, n);
                if (this.taskStatus === s.DownloadKernel.TaskStatus.Succeeded || this.taskStatus === s.DownloadKernel.TaskStatus.Seeding || this.taskStatus === s.DownloadKernel.TaskStatus.DestroyPending && this.preStatus === s.DownloadKernel.TaskStatus.Succeeded || this.preStatus === s.DownloadKernel.TaskStatus.Seeding) (yield r.FileSystemAWNS.existsAW(i)) && (e = yield r.FileSystemAWNS.unlinkAW(i)); else {
                    let t = i + ".xltd", n = i + ".xltd.cfg";
                    (yield r.FileSystemAWNS.existsAW(t)) && (e = yield r.FileSystemAWNS.unlinkAW(t)), (yield r.FileSystemAWNS.existsAW(n)) && (e = (yield r.FileSystemAWNS.unlinkAW(n)) && e)
                }
                return e
            })
        }

        deleteBtTaskFile() {
            return i(this, void 0, void 0, function* () {
                let e = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath),
                    t = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName),
                    n = a.join(__profilesDir, "Torrents"), i = this.getExtraObject().getInfoId(), o = i + ".xlbt.cfg",
                    l = i + ".xlbt.dat", u = a.join(e, t), d = a.join(n, o), c = a.join(n, l), h = !0;
                return (yield r.FileSystemAWNS.existsAW(u)) && (h = yield r.FileSystemAWNS.rmdirsAW(u)), yield r.FileSystemAWNS.unlinkAW(d), yield r.FileSystemAWNS.unlinkAW(c), h
            })
        }

        deleteEmuleTaskFile() {
            return i(this, void 0, void 0, function* () {
                let e = !0, t = this.attribute.get(s.DownloadKernel.TaskAttribute.SavePath),
                    n = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName), i = a.join(t, n);
                if (this.taskStatus === s.DownloadKernel.TaskStatus.Succeeded || this.taskStatus === s.DownloadKernel.TaskStatus.Seeding || this.taskStatus === s.DownloadKernel.TaskStatus.DestroyPending && this.preStatus === s.DownloadKernel.TaskStatus.Succeeded || this.preStatus === s.DownloadKernel.TaskStatus.Seeding) (yield r.FileSystemAWNS.existsAW(i)) && (e = yield r.FileSystemAWNS.unlinkAW(i)); else {
                    let t = i + ".emule.xltd", n = i + ".xlemule.cfg";
                    (yield r.FileSystemAWNS.existsAW(t)) && (e = yield r.FileSystemAWNS.unlinkAW(t)), (yield r.FileSystemAWNS.existsAW(n)) && (e = (yield r.FileSystemAWNS.unlinkAW(n)) && e)
                }
                return e
            })
        }

        deleteGroupTaskFile() {
            return i(this, void 0, void 0, function* () {
                return yield this.getExtraObject().destroy()
            })
        }

        fireTaskEvent(e) {
            T.fireTaskEvent(e, [this])
        }

        isVideoFileExt(e) {
            let t = !1;
            do {
                if (null === e || void 0 === e || "" === e) break;
                let n = a.extname(e);
                for (let e = 0; e < w.length; ++e) if (n.toLowerCase() === w[e]) {
                    t = !0;
                    break
                }
            } while (0);
            return t
        }

        isVideoFile() {
            let e = !1;
            do {
                let t = "";
                if (this.taskType === s.DownloadKernel.TaskType.P2sp || this.taskType === s.DownloadKernel.TaskType.Emule) t = this.attribute.get(s.DownloadKernel.TaskAttribute.TaskName), e = this.isVideoFileExt(t); else if (this.taskType === s.DownloadKernel.TaskType.Bt) {
                    let t = this.getExtraObject();
                    if (t.getDownloadFile().length <= 0) break;
                    let n = t.getBtFileList();
                    for (let [, t]of n) {
                        let n = t.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.Download),
                            i = t.getBtFileAttribute(s.DownloadKernel.BtFileAttribute.FileName);
                        if (1 === n && (e = this.isVideoFileExt(i))) break
                    }
                } else if (this.taskType === s.DownloadKernel.TaskType.Group) {
                    let t = this.getExtraObject();
                    if (null !== t && void 0 !== t) {
                        let n = t.getSubTaskCount();
                        for (let i = 0; i < n; ++i) {
                            let n = t.getSubTaskByIndex(i),
                                a = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskName);
                            if (1 === n.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSubTask) && (e = this.isVideoFileExt(a))) break
                        }
                    }
                }
            } while (0);
            return e
        }

        calculateDownloadSpeed(e) {
            this.downloadSizeList.length > 5 && this.downloadSizeList.splice(0, 1), this.downloadSizeList.push(e);
            let t = 0;
            for (let e = 0; e < this.downloadSizeList.length; ++e) t += this.downloadSizeList[e];
            let n = t / this.downloadSizeList.length;
            return this.taskStatus !== s.DownloadKernel.TaskStatus.Started && (n = 0, this.downloadSizeList = []), n
        }

        calculateVipSpeed(e) {
            this.vipSizeList.length > 5 && this.vipSizeList.splice(0, 1), this.vipSizeList.push(e);
            let t = 0;
            for (let e = 0; e < this.vipSizeList.length; ++e) t += this.vipSizeList[e];
            let n = t / this.vipSizeList.length;
            return this.taskStatus !== s.DownloadKernel.TaskStatus.Started && (n = 0, this.vipSizeList = []), n
        }

        changeToDownloadKernelTaskStatus(e) {
            let t = this.taskStatus;
            switch (e) {
                case y.None:
                case y.Create:
                case y.StartPending:
                    break;
                case y.Downloading:
                case y.StopPending:
                case y.CompletePending:
                case y.ErrorStopPending:
                    t = s.DownloadKernel.TaskStatus.Started;
                    break;
                case y.Pause:
                    t = s.DownloadKernel.TaskStatus.Stopped;
                    break;
                case y.Complete:
                    t = s.DownloadKernel.TaskStatus.Succeeded;
                    break;
                case y.Error:
                    t = s.DownloadKernel.TaskStatus.Failed;
                    break;
                default:
                    t = s.DownloadKernel.TaskStatus.Unkown
            }
            return t
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5), a = n(63), o = n(228), r = n(253), s = n(7);
    t.P2spTask = class {
        constructor(e, t, n, s) {
            this.task = e, this.downloadSpeedLimit = 0, this.threadCount = s || 5, this.useOriginOnly = n || 0, this.taskId = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskId), this.cookie = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.Cookie), this.displayUrl = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskUrl), t ? a.ThunderKernel.insertP2spTask(this.taskId, this.downloadSpeedLimit, this.useOriginOnly, this.threadCount, void 0 === this.cookie ? "" : this.cookie, this.displayUrl) : a.ThunderKernel.loadStorageTask(this.taskId, o.StatementType.LoadP2spTask, e => {
                this.useOriginOnly = e.originOnly, this.threadCount = e.threadCount, this.downloadSpeedLimit = e.speedLimit, this.displayUrl = e.displayUrl, this.cookie = e.cookie
            });
            let l = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.UserData);
            this.userData = new r.TaskUserData(e, l)
        }

        getTask() {
            return this.task
        }

        setTaskPriorityLevel(e, t) {
            s.isNullOrUndefined(t) ? t = this.priority : this.priority = t;
            let n = this.task.getVirtualTaskId();
            n && n > 0 && !s.isNullOrUndefined(t) && a.ThunderKernel.setTaskPriorityLevel(n, e, t)
        }

        setUserData(e, t, n) {
            return this.userData.setUserData(e, t, n)
        }

        getUserData(e, t) {
            return this.userData.getUserData(e, t)
        }

        setAllUserData(e) {
            return this.userData.setAllUserData(e)
        }

        getAllUserData() {
            return this.userData.getAllUserData()
        }

        setUseOriginOnly(e) {
            e !== this.useOriginOnly && (this.useOriginOnly = e, a.ThunderKernel.setP2spTaskOriginOnly(this.taskId, e))
        }

        setOriginThreadCount(e) {
            e !== this.threadCount && (this.threadCount = e, a.ThunderKernel.setP2spTaskThreadCount(this.taskId, e))
        }

        getUseOriginOnly() {
            return this.useOriginOnly
        }

        getThreadCount() {
            return this.threadCount
        }

        getSpeedLimit() {
            return this.downloadSpeedLimit
        }

        getDisplayUrl() {
            return this.displayUrl
        }

        getCookie() {
            return this.cookie
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(7);
    !function (e) {
        let t;
        !function (e) {
            e[e.LowerBound = -1] = "LowerBound", e[e.Integer = 0] = "Integer", e[e.String = 1] = "String", e[e.List = 2] = "List", e[e.Map = 3] = "Map", e[e.UpperBound = 4] = "UpperBound"
        }(t = e.BencodeDataType || (e.BencodeDataType = {}));

        class n {
            constructor(e) {
                this.type = t.LowerBound, this.type = e
            }

            getType() {
                return this.type
            }
        }

        e.BencodeObject = n;

        class a extends n {
            constructor() {
                super(t.Integer), this.value = 0
            }

            getValue() {
                return this.value
            }

            setValue(e) {
                return this.value !== e && (this.value = e, !0)
            }

            decode(e) {
                if (e.length < 2 || "i" !== e[0]) return -1;
                this.value = 0;
                let t = 1;
                for ("-" === e[1] && t++; t < e.length; t++) {
                    if (!(e[t] >= "0" && e[t] <= "9")) return "e" === e[t] ? ("-" === e[1] && (this.value = -this.value), t + 1) : -1;
                    this.value = 10 * this.value + parseInt(e[t], 10)
                }
                return -1
            }

            encode(e) {
                return e += "i", e += this.value, e += "e"
            }
        }

        e.BencodeInteger = a;

        class o extends n {
            constructor() {
                super(t.String), this.value = ""
            }

            getValue() {
                return this.value
            }

            setValue(e) {
                return this.value !== e && (this.value = e, !0)
            }

            decode(e) {
                let t = 0, n = 0;
                for (; n < e.length; n++) {
                    if (!(e[n] >= "0" && e[n] <= "9")) {
                        if (":" !== e[n]) return -1;
                        break
                    }
                    t = 10 * t + parseInt(e[n], 10)
                }
                return t + n + 1 > e.length ? -1 : (this.value = e.substr(n + 1, t), t + n + 1)
            }

            encode(e) {
                return e += this.value.length, e += ":", e += this.value
            }
        }

        e.BencodeString = o;

        class r extends n {
            constructor() {
                super(t.List), this.value = []
            }

            getItemList() {
                return this.value
            }

            decode(e) {
                return 0
            }

            encode(e) {
                return e
            }
        }

        e.BencodeList = r;

        class s extends n {
            constructor() {
                super(t.Map), this.value = new Map
            }

            getValue() {
                return this.value
            }

            getItem(e) {
                return this.value.get(e)
            }

            addMapItem(e) {
                let n = null, i = this.value.get(e);
                return i && i.getType() === t.Map ? n = i : (n = new s, this.value.set(e, n)), n
            }

            addItem(e, n) {
                if (i.isNumber(n)) {
                    let i = null, o = this.value.get(e);
                    o && o.getType() === t.Integer ? i = o : (i = new a, this.value.set(e, i)), i.setValue(n)
                } else if (i.isString(n)) {
                    let i = null, a = this.value.get(e);
                    a && a.getType() === t.String ? i = a : (i = new o, this.value.set(e, i)), i.setValue(n)
                }
                return !0
            }

            removeItem(e) {
                let n = this.value.get(e);
                if (n) {
                    let i = !0;
                    if (n.getType() === t.Map) {
                        0 === n.getValue().size && (i = !0)
                    }
                    return this.value.delete(e), i
                }
                return !1
            }

            decode(e) {
                if (!e) return -1;
                let t = e.length;
                if (t < 2 || "d" !== e[0]) return -1;
                let n = 1, i = new o, r = null, l = -1, u = -1;
                for (; n < t && "e" !== e[n];) {
                    if (!((l = i.decode(e.substr(n))) >= 0)) return -1;
                    if ("i" === e[n += l]) {
                        let t = new a;
                        u = t.decode(e.substr(n)), r = t
                    } else if ("d" === e[n]) {
                        let t = new s;
                        u = t.decode(e.substr(n)), r = t
                    } else {
                        let t = new o;
                        u = t.decode(e.substr(n)), r = t
                    }
                    if (!(u >= 0)) return -1;
                    n += u, this.value.set(i.getValue(), r)
                }
                return n < t && "e" === e[n] ? n + 1 : -1
            }

            encode(e) {
                e += "d";
                let t = new o;
                return this.value.forEach(function (n, i) {
                    t.setValue(i), e = t.encode(e), e = n.encode(e)
                }), e += "e"
            }
        }

        e.BencodeMap = s;
        e.Bencode = class {
            constructor() {
                this.objectList = []
            }

            getItemList() {
                return this.objectList
            }

            encode(e) {
                for (let t = 0; t < this.objectList.length; t++) e = this.objectList[t].encode(e);
                return e
            }

            decode(e) {
                let t = null, n = -1, i = 0, l = e.length;
                for (; i < l; i++) (n = (t = "i" === e[i] ? new a : "l" === e[i] ? new r : "d" === e[i] ? new s : new o).decode(e.substr(i))) >= 0 && (i += n, this.objectList.push(t));
                return e
            }
        }
    }(t.BencodeMap || (t.BencodeMap = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5), a = n(63), o = n(228), r = n(679), s = n(32), l = n(253), u = n(7),
        d = s.DownloadKernelEventManager.getEventManager();
    t.BtTask = class {
        constructor(e, t, n) {
            this.subError = !1, this.fileLists = new Map, this.priorityMap = new Map, this.downloadIndexLists = [], this.task = e;
            let o = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskId);
            if (n) {
                this.infoId = n.infoId, this.tracker = n.tracker, this.seedFile = n.seedFile, this.displayName = n.displayName, this.downloadIndexLists = n.fileRealIndexLists, t && a.ThunderKernel.insertBtTask(o, this.infoId, this.tracker, this.seedFile, this.displayName);
                let e = n.fileLists;
                a.ThunderKernel.beginTransaction();
                for (let n = 0; n < e.length; ++n) {
                    let i = e[n], a = i.realIndex, o = 0;
                    this.downloadIndexLists.indexOf(a) > -1 && (o = 1);
                    let s = new r.BtFile(this);
                    s.saveBtFileInfo(t, o, i), this.fileLists.set(a, s)
                }
                a.ThunderKernel.commitTransaction()
            }
            let s = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.UserData);
            this.userData = new l.TaskUserData(e, s)
        }

        getTask() {
            return this.task
        }

        setTaskPriorityLevel(e, t) {
            u.isNullOrUndefined(t) ? t = this.priorityMap.get(e) : this.priorityMap.set(e, t);
            let n = this.task.getVirtualTaskId();
            if (n && n > 0 && !u.isNullOrUndefined(t)) if (-1 === e) for (let e = 0; e < this.downloadIndexLists.length; ++e) a.ThunderKernel.setTaskPriorityLevel(n, this.downloadIndexLists[e], t); else a.ThunderKernel.setTaskPriorityLevel(n, e, t)
        }

        setUserData(e, t, n) {
            return this.userData.setUserData(e, t, n)
        }

        getUserData(e, t) {
            return this.userData.getUserData(e, t)
        }

        getFileCount() {
            return this.fileLists.size
        }

        setAllUserData(e) {
            return this.userData.setAllUserData(e)
        }

        getAllUserData() {
            return this.userData.getAllUserData()
        }

        getBtFileByRealIndex(e) {
            return this.fileLists.get(e)
        }

        getInfoId() {
            return this.infoId
        }

        getDisplayName() {
            return this.displayName
        }

        getTrackerUrls() {
            return this.tracker
        }

        getSeedFilePath() {
            return this.seedFile
        }

        getDownloadFile() {
            return this.downloadIndexLists
        }

        getFileSize() {
            let e = 0;
            for (let t of this.fileLists) {
                let n = t[1];
                if (1 === n.getIsDownload()) {
                    let t = n.getBtFileAttribute(i.DownloadKernel.BtFileAttribute.FileSize);
                    t && (e += t)
                }
            }
            return e
        }

        setDownloadFile(e) {
            for (let t of this.fileLists) {
                let n = t[1], i = n.getFileIndex();
                e.indexOf(i) > -1 ? n.setIsDownload(1) : n.setIsDownload(0)
            }
            this.downloadIndexLists = e
        }

        getBtFileList() {
            return this.fileLists
        }

        getBtFileInfoList() {
            let e = [];
            for (let t of this.fileLists) {
                let n = t[1].getBtFileInfo();
                e.push(n)
            }
            return e
        }

        updateSubFileInfo(e) {
            if (e && e.length > 0) {
                let t = !1, n = !1, a = [];
                for (let t = 0; t < e.length; ++t) {
                    let n = e[t], o = n.realIndex, r = this.getFileStatus(n.fileStatus), s = n.errorCode;
                    0 !== s && (r = s > 700 ? i.DownloadKernel.BtFileStatus.Forbidden : i.DownloadKernel.BtFileStatus.Error, a.push(o)), n.fileStatus = r;
                    let l = this.fileLists.get(o);
                    l && l.updateFileInfo(n)
                }
                if (a.length > 0) {
                    let e = this.getDownloadFile();
                    for (let o = 0; o < a.length; ++o) for (let r = 0; r < e.length; ++r) if (e[r] === a[o]) {
                        e.splice(r, 1), this.subError || (this.subError = !0, n = !0);
                        let s = a[o], l = this.fileLists.get(s);
                        l && l.getBtFileAttribute(i.DownloadKernel.BtFileAttribute.ErrorCode) > 700 && (t = !0);
                        break
                    }
                    this.setDownloadFile(e)
                }
                let o = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskId);
                if (d.fireTaskEvent(i.DownloadKernel.TaskEventType.BtSubFileDetailChanged, o, e), n) {
                    let e = "Error";
                    t && (e = "Forbidden"), d.fireTaskEvent(i.DownloadKernel.TaskEventType.BtSubFileForbidden, o, e)
                }
            }
        }

        deleteStorageBtFile() {
            let e = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskId);
            a.ThunderKernel.deleteStorageTask(e, o.StatementType.DestroyBtFile)
        }

        loadBtTask(e) {
            let t = this.task.getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskId);
            a.ThunderKernel.loadStorageTask(t, o.StatementType.LoadBtTask, n => {
                n ? (this.infoId = n.infoId, this.tracker = n.tracker, this.seedFile = n.seedFile, this.displayName = n.displayName, a.ThunderKernel.loadStorageTask(t, o.StatementType.LoadBtFile, t => {
                    if (t) for (let e = 0; e < t.length; ++e) {
                        let n = t[e], i = new r.BtFile(this);
                        i.setFileData(n), this.fileLists.set(n.realIndex, i), 1 === n.download && this.downloadIndexLists.push(n.realIndex)
                    }
                    e(n, t)
                })) : e(null, null)
            })
        }

        getFileStatus(e) {
            let t = i.DownloadKernel.BtFileStatus.Stopped;
            switch (e) {
                case 0:
                    break;
                case 1:
                    t = i.DownloadKernel.BtFileStatus.Stopped;
                    break;
                case 2:
                    t = i.DownloadKernel.BtFileStatus.Started;
                    break;
                case 3:
                    t = i.DownloadKernel.BtFileStatus.Complete
            }
            return t
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(5), a = n(63);
    t.BtFile = class {
        constructor(e) {
            this.attribute = new Map;
            for (let e = i.DownloadKernel.BtFileAttribute.NumberStrart; e < i.DownloadKernel.BtFileAttribute.NumberEnd; ++e) this.attribute.set(e, 0);
            for (let e = i.DownloadKernel.BtFileAttribute.StringStart; e < i.DownloadKernel.BtFileAttribute.StringEnd; ++e) this.attribute.set(e, "");
            let t = e.getTask().getTaskAttribute(i.DownloadKernel.TaskAttribute.TaskId);
            this.taskId = t, this.attribute.set(i.DownloadKernel.BtFileAttribute.TaskId, t)
        }

        getBtFileAttribute(e) {
            return this.attribute.get(e)
        }

        updateFileInfo(e) {
            this.realIndex = e.realIndex, this.attribute.set(i.DownloadKernel.BtFileAttribute.FileSize, e.fileSize), this.attribute.set(i.DownloadKernel.BtFileAttribute.RealIndex, e.realIndex), this.attribute.set(i.DownloadKernel.BtFileAttribute.EnableDcdn, e.enableDcdn), this.setAttribute(i.DownloadKernel.BtFileAttribute.ErrorCode, e.errorCode) && a.ThunderKernel.setBtFileFailureErrorCode(this.realIndex, this.taskId, this.attribute.get(i.DownloadKernel.BtFileAttribute.ErrorCode)), this.attribute.set(i.DownloadKernel.BtFileAttribute.DcdnStatus, e.dcdnStatus), e.relativePath && this.attribute.set(i.DownloadKernel.BtFileAttribute.RelativePath, e.relativePath), e.finalName && "" !== e.finalName && (this.attribute.set(i.DownloadKernel.BtFileAttribute.FinalName, e.finalName), this.attribute.set(i.DownloadKernel.BtFileAttribute.FileName, e.finalName));
            let t = this.setAttribute(i.DownloadKernel.BtFileAttribute.FileStatus, e.fileStatus),
                n = this.setAttribute(i.DownloadKernel.BtFileAttribute.DownloadSize, e.downloadSize);
            (t || n) && a.ThunderKernel.saveBtFileInfo(this.taskId, this.realIndex, this.attribute.get(i.DownloadKernel.BtFileAttribute.FileStatus), this.download, this.attribute.get(i.DownloadKernel.BtFileAttribute.DownloadSize));
            let o = this.setAttribute(i.DownloadKernel.BtFileAttribute.Cid, e.cid),
                r = this.setAttribute(i.DownloadKernel.BtFileAttribute.Gcid, e.gcid);
            (o || r) && a.ThunderKernel.saveBtFileCid(this.taskId, this.realIndex, this.attribute.get(i.DownloadKernel.BtFileAttribute.Cid), this.attribute.get(i.DownloadKernel.BtFileAttribute.Gcid))
        }

        saveBtFileInfo(e, t, n) {
            if (this.download = t, this.realIndex = n.realIndex, this.attribute.set(i.DownloadKernel.BtFileAttribute.Download, t), this.attribute.set(i.DownloadKernel.BtFileAttribute.FileSize, n.fileSize), this.attribute.set(i.DownloadKernel.BtFileAttribute.RealIndex, n.realIndex), this.attribute.set(i.DownloadKernel.BtFileAttribute.RealIndex, n.realIndex), this.attribute.set(i.DownloadKernel.BtFileAttribute.FileOffset, n.fileOffset), n.fileName && this.attribute.set(i.DownloadKernel.BtFileAttribute.FileName, n.fileName), n.filePath && this.attribute.set(i.DownloadKernel.BtFileAttribute.FilePath, n.filePath), e) {
                let e = {
                    taskId: this.taskId,
                    status: 0,
                    realIndex: n.realIndex,
                    visible: 1,
                    download: t,
                    fileSize: n.fileSize,
                    fileOffset: n.fileOffset,
                    filePath: void 0 === n.filePath ? "" : n.filePath,
                    fileName: void 0 === n.fileName ? "" : n.fileName
                };
                a.ThunderKernel.insertBtFile(this.taskId, e)
            }
        }

        getBtFileInfo() {
            let e = {};
            return e.fileSize = this.attribute.get(i.DownloadKernel.BtFileAttribute.FileSize), e.realIndex = this.attribute.get(i.DownloadKernel.BtFileAttribute.RealIndex), e.fileOffset = this.attribute.get(i.DownloadKernel.BtFileAttribute.FileOffset), e.fileName = this.attribute.get(i.DownloadKernel.BtFileAttribute.FileName), e.filePath = this.attribute.get(i.DownloadKernel.BtFileAttribute.FilePath), e
        }

        getBtDownloadFileInfo() {
            return {
                realIndex: this.attribute.get(i.DownloadKernel.BtFileAttribute.RealIndex),
                fileStatus: this.attribute.get(i.DownloadKernel.BtFileAttribute.FileStatus),
                downloadSize: this.attribute.get(i.DownloadKernel.BtFileAttribute.DownloadSize),
                fileSize: this.attribute.get(i.DownloadKernel.BtFileAttribute.FileSize),
                enableDcdn: this.attribute.get(i.DownloadKernel.BtFileAttribute.EnableDcdn),
                errorCode: this.attribute.get(i.DownloadKernel.BtFileAttribute.ErrorCode),
                dcdnStatus: this.attribute.get(i.DownloadKernel.BtFileAttribute.DcdnStatus),
                relativePath: this.attribute.get(i.DownloadKernel.BtFileAttribute.RelativePath),
                finalName: this.attribute.get(i.DownloadKernel.BtFileAttribute.FinalName),
                cid: this.attribute.get(i.DownloadKernel.BtFileAttribute.Cid),
                gcid: this.attribute.get(i.DownloadKernel.BtFileAttribute.Gcid)
            }
        }

        getIsDownload() {
            return this.download
        }

        setIsDownload(e) {
            this.download = e, this.attribute.set(i.DownloadKernel.BtFileAttribute.Download, e), a.ThunderKernel.saveBtFileInfo(this.taskId, this.realIndex, this.attribute.get(i.DownloadKernel.BtFileAttribute.FileStatus), this.download, this.attribute.get(i.DownloadKernel.BtFileAttribute.DownloadSize))
        }

        getFileIndex() {
            return this.realIndex
        }

        setFileData(e) {
            this.download = e.download, this.taskId = e.taskId, this.realIndex = e.realIndex, this.attribute.set(i.DownloadKernel.BtFileAttribute.TaskId, e.taskId), this.attribute.set(i.DownloadKernel.BtFileAttribute.FileSize, e.fileSize), this.attribute.set(i.DownloadKernel.BtFileAttribute.FileOffset, e.fileOffset), this.attribute.set(i.DownloadKernel.BtFileAttribute.DownloadSize, e.receivedSize), this.attribute.set(i.DownloadKernel.BtFileAttribute.RealIndex, e.realIndex), this.attribute.set(i.DownloadKernel.BtFileAttribute.FileStatus, e.status), this.attribute.set(i.DownloadKernel.BtFileAttribute.Visible, e.visible), this.attribute.set(i.DownloadKernel.BtFileAttribute.Download, e.download), e.filePath && this.attribute.set(i.DownloadKernel.BtFileAttribute.FilePath, e.filePath), e.fileName && this.attribute.set(i.DownloadKernel.BtFileAttribute.FileName, e.fileName), e.cid && this.attribute.set(i.DownloadKernel.BtFileAttribute.Cid, e.cid), e.gcid && this.attribute.set(i.DownloadKernel.BtFileAttribute.Gcid, e.gcid), this.attribute.set(i.DownloadKernel.BtFileAttribute.ErrorCode, e.failureErrorCode)
        }

        setAttribute(e, t) {
            let n = !1;
            return this.attribute.get(e) !== t && void 0 !== t && (this.attribute.set(e, t), n = !0), n
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(106), a = n(5), o = n(63), r = n(228), s = n(253), l = n(7), u = n(2);
    t.EmuleTask = class {
        constructor(e, t) {
            if (this.task = e, this.configPath = u.join(__profilesDir, "Emule"), this.taskId = e.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId), t) {
                let e = this.task.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId),
                    t = this.task.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskUrl);
                i.Common.isThunderPrivateUrl(t) && (t = i.Common.parseThunderPrivateUrl(t)), this.fileHash = o.ThunderKernel.getFileHashByUrl(t), o.ThunderKernel.insertEmuleTask(e, this.fileHash, this.configPath)
            } else o.ThunderKernel.loadStorageTask(this.taskId, r.StatementType.LoadEmuleTask, e => {
                this.fileHash = e.fileHash, this.configPath = e.configPath
            });
            let n = this.task.getTaskAttribute(a.DownloadKernel.TaskAttribute.UserData);
            this.userData = new s.TaskUserData(e, n)
        }

        getTask() {
            return this.task
        }

        setTaskPriorityLevel(e, t) {
            l.isNullOrUndefined(t) ? t = this.priority : this.priority = t;
            let n = this.task.getVirtualTaskId();
            n && n > 0 && !l.isNullOrUndefined(t) && o.ThunderKernel.setTaskPriorityLevel(n, e, t)
        }

        setUserData(e, t, n) {
            return this.userData.setUserData(e, t, n)
        }

        getUserData(e, t) {
            return this.userData.getUserData(e, t)
        }

        setAllUserData(e) {
            return this.userData.setAllUserData(e)
        }

        getAllUserData() {
            return this.userData.getAllUserData()
        }

        getFileHash() {
            return this.fileHash
        }

        getConfigPath() {
            return this.configPath
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(11), o = n(5), r = n(63), s = n(228), l = n(32), u = n(253),
        d = l.DownloadKernelEventManager.getEventManager();
    t.GroupTask = class {
        constructor(e, t) {
            this.startTime = 0, this.downloadingPeriod = 0, this.startTaskCount = 5, this.task = e, this.subTasks = [], this.moveTimeout = 120, this.downloadingSubCount = 5, this.subTaskOrder = "", this.taskId = this.task.getTaskAttribute(o.DownloadKernel.TaskAttribute.TaskId), t ? r.ThunderKernel.insertGroupTask(this.taskId, this.moveTimeout, this.downloadingSubCount, this.subTaskOrder) : (this.downloadingPeriod = e.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadingPeriod), r.ThunderKernel.loadStorageTask(this.taskId, s.StatementType.LoadGroupTask, e => {
                this.moveTimeout = e.moveTimeout, this.downloadingSubCount = e.downloadingSubCount
            }));
            let n = this.task.getTaskAttribute(o.DownloadKernel.TaskAttribute.UserData);
            this.userData = new u.TaskUserData(e, n)
        }

        getTask() {
            return this.task
        }

        setTaskPriorityLevel(e, t) {
            if (-1 === e) for (let e = 0; e < this.subTasks.length; ++e) {
                let n = this.subTasks[e].getExtraObject();
                n && n.setTaskPriorityLevel(-1, t)
            } else {
                let n = this.getSubTaskByIndex(e);
                if (n) {
                    let e = n.getExtraObject();
                    e && e.setTaskPriorityLevel(-1, t)
                }
            }
        }

        setSubTaskFileSize(e, t) {
            let n = !1, i = this.subTasks[e];
            if (i && (n = i.setTaskInfo(o.DownloadKernel.TaskAttribute.FileSize, t, !0))) {
                let e = 0;
                for (let t = 0; t < this.subTasks.length; ++t) {
                    let n = this.subTasks[t];
                    if (n) {
                        if (0 === n.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask)) continue;
                        let t = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.FileSize);
                        t && (e += t)
                    }
                }
                this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.FileSize, e), d.fireTaskEvent(o.DownloadKernel.TaskEventType.DetailChanged, [this.task])
            }
            return n
        }

        setUserData(e, t, n) {
            return this.userData.setUserData(e, t, n)
        }

        getUserData(e, t) {
            return this.userData.getUserData(e, t)
        }

        setAllUserData(e) {
            return this.userData.setAllUserData(e)
        }

        getAllUserData() {
            return this.userData.getAllUserData()
        }

        getSubTaskCount() {
            return this.subTasks.length
        }

        getDownloadTaskCount() {
            let e = 0;
            for (let t = 0; t < this.subTasks.length; ++t) {
                let n = this.subTasks[t];
                n && 1 === n.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask) && e++
            }
            return e
        }

        getSubTaskByIndex(e) {
            return this.subTasks[e]
        }

        addSubTask(e) {
            e && (this.subTasks.push(e), e.setTaskInfo(o.DownloadKernel.TaskAttribute.FileIndex, this.subTasks.length - 1))
        }

        start() {
            let e = !1, t = 0, n = 0;
            for (let i = 0; i < this.subTasks.length; ++i) {
                let a = this.subTasks[i];
                if (!a) continue;
                if (0 === a.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask)) {
                    n++;
                    continue
                }
                let r = a.getTaskStatus();
                if (r !== o.DownloadKernel.TaskStatus.Succeeded && r !== o.DownloadKernel.TaskStatus.Seeding) if (r !== o.DownloadKernel.TaskStatus.Failed) {
                    if (a.start() && (e = !0, ++t >= this.startTaskCount)) break
                } else a.start() && (e = !0); else n++
            }
            return n === this.subTasks.length && (e = !0), e
        }

        stop() {
            let e = !1;
            for (let t = 0; t < this.subTasks.length; ++t) {
                let n = this.subTasks[t];
                if (!n) continue;
                let i = n.getTaskStatus();
                i !== o.DownloadKernel.TaskStatus.Succeeded && i !== o.DownloadKernel.TaskStatus.Seeding && n.stop() && (e = !0)
            }
            return e
        }

        delete(e) {
            return i(this, void 0, void 0, function* () {
                let t = !0;
                for (let n = 0; n < this.subTasks.length; ++n) {
                    let i = this.subTasks[n];
                    i && (t = (yield i.delete(e)) && t)
                }
                if (e) {
                    let e = this.subTasks[0];
                    if (e) {
                        let n = e.getTaskAttribute(o.DownloadKernel.TaskAttribute.SavePath);
                        (yield a.FileSystemAWNS.existsAW(n)) && 0 === (yield a.FileSystemAWNS.readdirAW(n)).length && (t = (yield a.FileSystemAWNS.rmdirsAW(n)) && t)
                    }
                }
                return t
            })
        }

        destroy() {
            return i(this, void 0, void 0, function* () {
                let e = !0;
                for (let t = 0; t < this.subTasks.length; ++t) {
                    let n = this.subTasks[t];
                    if (n) {
                        let t = yield n.destroy();
                        e && !t && (e = !1)
                    }
                }
                return e
            })
        }

        querySubTaskInfo(e, t) {
            let n = 0, i = 0, a = !1, s = [];
            for (let l = 0; l < this.subTasks.length; ++l) {
                let u = this.subTasks[l];
                if (!u) continue;
                let c = u.getTaskStatus();
                if (c === o.DownloadKernel.TaskStatus.Stopped || c === o.DownloadKernel.TaskStatus.Succeeded || c === o.DownloadKernel.TaskStatus.Seeding || c === o.DownloadKernel.TaskStatus.Failed) continue;
                let h = u.getTaskAttribute(o.DownloadKernel.TaskAttribute.VirtualId);
                h < 1 || (n++, r.ThunderKernel.queryTaskInfo(h, r => {
                    if (i++, null !== r) {
                        let n = u.updateTaskInfo(r);
                        1 === n ? (e(u), a = !0) : 2 === n ? t(u) : 3 === n && (e(u), t(u), a = !0), n > 0 && s.push(u)
                    }
                    n === i && (this.updateTaskDetail(), a && this.checkSubTaskStatus(), this.updateTaskStatus() && e(this.task), d.fireTaskEvent(o.DownloadKernel.TaskEventType.GroupTaskSubFileDetailChanged, this.taskId, s))
                }))
            }
            0 === n && (this.subTasks.length > 0 && e(this.subTasks[0]), this.updateTaskDetail(), this.updateTaskStatus())
        }

        getTaskStatus() {
            let e = 0, t = 0, n = 0, i = 0, a = 0, r = 0, s = 0, l = this.task.getTaskStatus();
            if (l === o.DownloadKernel.TaskStatus.StartWaiting || l === o.DownloadKernel.TaskStatus.DestroyPending) return l;
            let u = 0;
            for (let l = 0; l < this.subTasks.length; ++l) {
                let d = this.subTasks[l], c = !1;
                if (d) {
                    if (0 === d.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask)) {
                        u++;
                        continue
                    }
                    switch (d.getTaskStatus()) {
                        case o.DownloadKernel.TaskStatus.Unkown:
                            e++;
                            break;
                        case o.DownloadKernel.TaskStatus.Started:
                            n++, c = !0;
                            break;
                        case o.DownloadKernel.TaskStatus.StartPending:
                            i++;
                            break;
                        case o.DownloadKernel.TaskStatus.Stopped:
                            t++;
                            break;
                        case o.DownloadKernel.TaskStatus.StopPending:
                            a++;
                            break;
                        case o.DownloadKernel.TaskStatus.Succeeded:
                            r++;
                            break;
                        case o.DownloadKernel.TaskStatus.Failed:
                            s++;
                            break;
                        case o.DownloadKernel.TaskStatus.Seeding:
                            r++
                    }
                }
                if (c) break
            }
            let d = !1;
            l !== o.DownloadKernel.TaskStatus.StopPending && (n > 0 ? (l = o.DownloadKernel.TaskStatus.Started, d = !0) : i > 0 && (l = o.DownloadKernel.TaskStatus.StartPending, d = !0));
            let c = this.subTasks.length - u;
            return d || (a > 0 ? l = o.DownloadKernel.TaskStatus.StopPending : e === c ? l = o.DownloadKernel.TaskStatus.Unkown : r === c ? l = o.DownloadKernel.TaskStatus.Succeeded : s === c ? l = o.DownloadKernel.TaskStatus.Failed : s + r === c ? l = o.DownloadKernel.TaskStatus.Failed : t > 0 && (l = o.DownloadKernel.TaskStatus.Stopped)), l
        }

        setDownloadTask(e) {
            for (let t = 0; t < this.subTasks.length; ++t) {
                let n = this.subTasks[t], i = !1;
                for (let a = 0; a < e.length; ++a) if (t === e[a]) {
                    n.updateDownloadSubTask(1), i = !0;
                    break
                }
                i || n.updateDownloadSubTask(0)
            }
        }

        getTaskSizeInfo() {
            let e = {
                downloadSpeed: 0,
                vipSpeed: 0,
                fileSize: 0,
                downloadSize: 0,
                receivedSize: 0,
                usingResCount: 0,
                totalResCount: 0,
                channelInfo: {originSize: 0, p2pSize: 0, p2sSize: 0, offlineSize: 0, dcdnSize: 0}
            };
            for (let t = 0; t < this.subTasks.length; ++t) {
                let n = this.subTasks[t];
                if (n) {
                    if (0 === n.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask)) continue;
                    let t = n.getDownloadSpeed(), i = n.getVipSpeed(),
                        a = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.FileSize),
                        r = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSize),
                        s = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.ReceivedSize),
                        l = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.SrcUsing),
                        u = n.getTaskAttribute(o.DownloadKernel.TaskAttribute.SrcTotal), d = n.getTaskChannelInfo();
                    d && (e.channelInfo.p2pSize += d.p2pSize, e.channelInfo.p2sSize += d.p2sSize, e.channelInfo.offlineSize += d.offlineSize, e.channelInfo.originSize += d.originSize, e.channelInfo.dcdnSize += d.dcdnSize), t && (e.downloadSpeed += t), i && (e.vipSpeed += i), a && (e.fileSize += a), r && (e.downloadSize += r), s && (e.receivedSize += s), l && (e.usingResCount += l), u && (e.totalResCount += u)
                }
            }
            return e
        }

        updateTaskStatus() {
            let e = this.getTaskStatus();
            return this.task.updateTaskStatus(e)
        }

        checkSubTaskStatus() {
            let e = this.task.getTaskStatus();
            e !== o.DownloadKernel.TaskStatus.Stopped && e !== o.DownloadKernel.TaskStatus.StopPending && this.startWaittingTasks()
        }

        startWaittingTasks() {
            let e = 0, t = 0;
            for (let n = 0; n < this.subTasks.length; ++n) {
                let i = this.subTasks[n];
                if (!i) continue;
                if (0 === i.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask)) continue;
                let a = i.getTaskStatus();
                a !== o.DownloadKernel.TaskStatus.Started && a !== o.DownloadKernel.TaskStatus.StartPending || (e++, t = n)
            }
            if (e < this.startTaskCount && t < this.subTasks.length) for (let n = t + 1; n < this.subTasks.length; ++n) {
                let t = this.subTasks[n];
                if (!t) continue;
                if (0 === t.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadSubTask)) continue;
                let i = t.getTaskStatus();
                if (i !== o.DownloadKernel.TaskStatus.Succeeded && i !== o.DownloadKernel.TaskStatus.Seeding && i !== o.DownloadKernel.TaskStatus.Failed && t.start() && ++e >= this.startTaskCount) break
            }
        }

        updateTaskDetail() {
            let e = this.getTaskSizeInfo();
            if (e.downloadSpeed > 0) if (0 === this.startTime) this.startTime = (new Date).getTime(), this.downloadingPeriod = this.task.getTaskAttribute(o.DownloadKernel.TaskAttribute.DownloadingPeriod); else {
                let e = ((new Date).getTime() - this.startTime) / 1e3, t = this.downloadingPeriod + Math.round(e);
                this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.DownloadingPeriod, t)
            } else this.startTime = 0;
            this.task.setTaskSpeed(e.downloadSpeed, e.vipSpeed), this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.FileSize, e.fileSize), this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.DownloadSize, e.downloadSize), this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.ReceivedSize, e.receivedSize), this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.SrcUsing, e.usingResCount), this.task.setTaskInfo(o.DownloadKernel.TaskAttribute.SrcTotal, e.totalResCount), this.task.setTaskChannelInfo(e.channelInfo), d.fireTaskEvent(o.DownloadKernel.TaskEventType.DetailChanged, [this.task])
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(5), o = n(644), r = n(683), s = i.default.getLogger("DownloadKernel.PrivateCategory");

    class l extends r.Category {
        constructor(e) {
            super(e);
            let t = new o.CategoryView(e, a.DownloadKernel.CategroyViewID.Downloading),
                n = new o.CategoryView(e, a.DownloadKernel.CategroyViewID.Completed);
            this.categoryViews.push(t), this.categoryViews.push(n)
        }

        static createCategoryFromData(e) {
            let t = e.categoryId;
            if (void 0 === t || t < 0) return null;
            s.information("createCategoryFromData ", e);
            let n = new l(t);
            return n.setParentId(e.parentId), n.setNextId(e.nextId), n.setStatus(e.status), n.setDescription(e.description), n.setDefaultPath(e.defaultPath), n.setUserName(e.userName), n.setPassword(e.password, e.passwordV2), n.setAccountPassword(e.accountPassword), n
        }
    }

    t.PrivateCategory = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(63), a = n(29);
    t.Category = class {
        constructor(e) {
            this.categoryViews = [], this.id = e, this.parentId = -1, this.nextId = -1, this.status = 0
        }

        getCategoryViews() {
            return this.categoryViews
        }

        getCategoryViewCount() {
            return this.categoryViews.length
        }

        getCategoryViewFromId(e) {
            let t = null;
            for (let n = 0; n < this.categoryViews.length; ++n) {
                let i = this.categoryViews[n];
                if (i && e === i.getCategoryViewId()) {
                    t = i;
                    break
                }
            }
            return t
        }

        getId() {
            return this.id
        }

        setParentId(e) {
            e && (this.parentId = e)
        }

        getParentId() {
            return this.parentId
        }

        setNextId(e) {
            e && (this.nextId = e)
        }

        getNextId() {
            return this.nextId
        }

        setStatus(e) {
            e && (this.status = e)
        }

        getStatus() {
            return this.status
        }

        setName(e) {
            this.name = e
        }

        getName() {
            return this.name
        }

        setDescription(e) {
            this.description = e
        }

        getDescription() {
            return this.description
        }

        setDefaultPath(e) {
            this.defaultPath = e
        }

        getDefaultPath() {
            return this.defaultPath
        }

        setUserName(e) {
            this.userName = e
        }

        getUserName() {
            return this.userName
        }

        setPassword(e, t = "", n = !1, o = null) {
            if (this.password = e, "" !== this.password && "" === t) {
                let e = a.createHash("md5");
                e.update(this.password), t = e.digest("hex")
            }
            this.passwordV2 = t, n && i.ThunderKernel.setCategoryPassword(this.id, this.password, this.passwordV2, o)
        }

        getPassword() {
            return this.password
        }

        getPasswordV2() {
            return this.passwordV2
        }

        setAccountPassword(e) {
            this.accountPassword !== e && (this.accountPassword = e)
        }

        getAccountPassword() {
            return this.accountPassword
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(5), r = n(28), s = n(32), l = a.default.getLogger("magnet-listener"),
        u = r.DownloadKernelTaskManager.getTaskManager(), d = s.DownloadKernelEventManager.getEventManager();
    const c = new class {
        constructor() {
            this.listenerMap = {}
        }

        addRef(e, t) {
            this.listenerMap.hasOwnProperty(e) ? l.information("listener addRef") : (l.information("listener addRef not in map to attachTaskStatus"), this.attachTaskStatus(e));
            let n = this.listenerMap[e];
            n.callbacks.push(t), n.counter++
        }

        release(e) {
            do {
                if (!this.listenerMap.hasOwnProperty(e)) break;
                let t = this.listenerMap[e];
                t.counter--, 0 === t.counter ? (l.information("release listener to remove"), this.detachTaskStatus(t.cookie), t.cookie = -1, u.stopTask(e), u.deleteTask(e, !1).catch(), delete this.listenerMap[e]) : l.information("release listener remain", t.counter)
            } while (0)
        }

        fireAll(e, t) {
            do {
                if (!this.listenerMap.hasOwnProperty(e)) {
                    l.information("fire callback but maybe already release");
                    break
                }
                let n = this.listenerMap[e];
                if (0 === n.counter) break;
                for (let i of n.callbacks) i(e, t).catch(), this.release(e)
            } while (0)
        }

        attachTaskStatus(e) {
            let t = d.attachTaskEvent(o.DownloadKernel.TaskEventType.StatusChanged, (...t) => i(this, void 0, void 0, function* () {
                do {
                    if (!t) break;
                    if (t[0] !== o.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!t[1]) break;
                    let n = t[1];
                    for (let t = 0; t < n.length; ++t) {
                        let i = n[t];
                        if (!i) continue;
                        let a = i.getTaskStatus(), r = i.getTaskAttribute(o.DownloadKernel.TaskAttribute.TaskType),
                            s = i.getTaskAttribute(o.DownloadKernel.TaskAttribute.TaskId);
                        l.information("magnet channelRMNewTaskDownloadTorrent taskStatus", a, s, e), r === o.DownloadKernel.TaskType.Magnet && s === e && (a === o.DownloadKernel.TaskStatus.Succeeded || a === o.DownloadKernel.TaskStatus.Seeding ? this.fireAll(s, !0) : a === o.DownloadKernel.TaskStatus.Failed && this.fireAll(s, !1))
                    }
                } while (0)
            }));
            l.information("attachTaskEvent StatusChanged", t);
            let n = {cookie: t, counter: 0, callbacks: []};
            this.listenerMap[e] = n
        }

        detachTaskStatus(e) {
            l.information("detachTaskEvent StatusChanged", e), d.detachTaskEvent(o.DownloadKernel.TaskEventType.StatusChanged, e)
        }
    };
    !function (e) {
        e.addRef = function (e, t) {
            return c.addRef(e, t)
        }, e.release = function (e) {
            return c.release(e)
        }
    }(t.MagnetListenerNS || (t.MagnetListenerNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(55), o = n(11), r = n(95), s = n(21), l = n(1).default.getLogger("Thunder.plugin-loader");
    !function (e) {
        e.pluginLoader = new class {
            constructor() {
                this.plugins = null, this.map = null, this.currentDir = `${__rootDir}/plugins/`, this.configName = `${this.currentDir}plugin-loader-config.json`, this.downloadTryTimes = 3, this.emitter = null, this.map = new Map
            }

            startDownloadPlugins(e, t, r, s, u, d) {
                return i(this, void 0, void 0, function* () {
                    if (l.information("startDownloadPlugins enter"), void 0 !== e && void 0 !== t && void 0 !== r && void 0 !== s && void 0 !== u && null !== d) {
                        this.emitter = d;
                        let i = null;
                        try {
                            a.default.defaults.adapter = n(71), i = yield a.default.get(`http://upgrade.xl9.xunlei.com/plugin?peerid=${e}&os=${t}&pid=${r}&v=${s}&cid=${u}&lng=0804&tag=`)
                        } catch (e) {
                            l.warning(e)
                        }
                        if (null !== i && void 0 !== i.status && 200 === i.status && void 0 !== i.data && null !== i.data) yield this.loadConfig(i.data, !0); else {
                            let e = yield o.FileSystemAWNS.readFileAW(`${this.configName}`);
                            if (null !== e) {
                                let t = null;
                                try {
                                    t = JSON.parse(e.toString())
                                } catch (e) {
                                    l.warning(e)
                                }
                                null !== t && (yield this.loadConfig(t, !1))
                            }
                        }
                    }
                })
            }

            loadPlugin(e) {
                return i(this, void 0, void 0, function* () {
                    l.information("loadPlugin enter");
                    let t = null;
                    const n = `${this.currentDir}${e}/index`;
                    return (yield o.FileSystemAWNS.existsAW(`${n}.js`)) && (t = require(n)), t
                })
            }

            loadConfig(e, t) {
                return i(this, void 0, void 0, function* () {
                    if (l.information("loadConfig enter"), this.plugins = e, t) {
                        let t = void 0;
                        try {
                            t = JSON.stringify(e)
                        } catch (e) {
                            l.warning(e)
                        }
                        void 0 !== t && (l.information(t), yield o.FileSystemAWNS.writeFileAW(`${this.configName}`, t))
                    }
                    yield this.downloadPlugins()
                })
            }

            checkFile(e) {
                return i(this, void 0, void 0, function* () {
                    l.information("checkFile enter");
                    const t = `${this.currentDir}${e.name}.zip`;
                    let n = yield o.FileSystemAWNS.existsAW(t);
                    return n && (n = yield r.ToolsUtilitiesAWNS.matchFileMd5(t, e.md5)), n
                })
            }

            checkLoadPlugin(e) {
                return i(this, void 0, void 0, function* () {
                    l.information("checkLoadPlugin enter"), void 0 !== e.loadtype && (1 === e.loadtype && void 0 !== e.time && e.time > 0 ? setTimeout(() => {
                        this.loadPlugin(e.name)
                    }, 1e3 * e.time) : 2 === e.loadtype && null !== this.emitter && this.emitter.emit(s.NodeEventMesssageNS.eventPluginLoderPluginReady, e.name))
                })
            }

            checkDownloadPlugin(e) {
                return i(this, void 0, void 0, function* () {
                    const {UnzipUtilitiesAWNS: t} = yield Promise.resolve().then(() => n(646));
                    l.information("checkDownloadPlugin enter");
                    const i = `${this.currentDir}${e.name}.zip`, a = `${this.currentDir}${e.name}/`;
                    let r = !1, s = !1;
                    if (yield this.checkFile(e)) {
                        let e = yield o.FileSystemAWNS.existsAW(a);
                        r = !e, s = e
                    } else r = yield this.downloadPlugin(e);
                    r && (s = yield t.uncompressZipFile(a, i)), s && (yield this.checkLoadPlugin(e))
                })
            }

            downloadPlugin(e) {
                return i(this, void 0, void 0, function* () {
                    l.information("downloadPlugin enter");
                    let t = !1;
                    const i = `${this.currentDir}${e.name}.zip`;
                    for (; !t && void 0 !== e.url;) {
                        let r = null;
                        try {
                            a.default.defaults.adapter = n(71), r = yield a.default.get(e.url, {responseType: "arraybuffer"})
                        } catch (e) {
                            break
                        }
                        if (null === r || void 0 === r.status || 200 !== r.status || null === r.data) break;
                        if (!(yield o.FileSystemAWNS.writeFileAW(i, r.data))) break;
                        {
                            t = yield this.checkFile(e);
                            let n = this.map.get(e.name);
                            if (l.information(n), n < 1) break;
                            let i = n - 1;
                            this.map.set(e.name, i)
                        }
                    }
                    return t
                })
            }

            downloadPlugins() {
                return i(this, void 0, void 0, function* () {
                    if (l.information("downloadPlugins enter"), null !== this.plugins && null !== this.plugins.data && void 0 !== this.plugins.data) for (let e = 0; e < this.plugins.data.length; ++e) {
                        let t = this.plugins.data[e];
                        null !== t && void 0 !== t.name && void 0 !== t.status && t.status && (this.map.set(t.name, this.downloadTryTimes), yield this.checkDownloadPlugin(t))
                    }
                })
            }
        }
    }(t.PluginLoaderNS || (t.PluginLoaderNS = {}))
}, function (e, t, n) {
    e.exports = n(9)(67)
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(3), r = n(2), s = n(95), l = n(82), u = n(17), d = n(257), c = n(647), h = n(689), f = n(13),
        p = n(5), g = n(43), k = n(21), m = n(7), T = n(512), v = n(80), w = n(223), y = n(19), S = n(108), b = n(274),
        C = n(158), D = n(6), N = n(514), I = D.default(r.join(__rootDir, "../bin/ThunderHelper.node")),
        _ = w.CommunityNaviteFunctionNS.CommunityNaviteFunction.getNativeModule(),
        x = a.default.getLogger("NativeFunction.NativeFunction"), E = c.TaskInfoManagerNS.getTaskInfoManager();
    !function (e) {
        const t = new class {
            constructor() {
                this.isRegister = !1
            }

            registerNativeFunction() {
                if (!this.isRegister) {
                    this.isRegister = !0;
                    let e = [{functionName: "PageReady", nativeFunc: this.pageReady}, {
                        functionName: "GetTaskInfo",
                        nativeFunc: this.getTaskInfo
                    }, {functionName: "OperateTask", nativeFunc: this.operateTask}, {
                        functionName: "ShellOpen",
                        nativeFunc: this.shellOpen
                    }, {
                        functionName: "OpenFolderWithSelectFile",
                        nativeFunc: this.openFolderWithSelectFile
                    }, {functionName: "GetFileMd5", nativeFunc: this.getFileMd5}, {
                        functionName: "GetPeerID",
                        nativeFunc: this.getPeerID
                    }, {functionName: "GetDeviceID", nativeFunc: this.getDeviceID}, {
                        functionName: "GetThunderVersion",
                        nativeFunc: this.getThunderVersion
                    }, {functionName: "TrackEvent", nativeFunc: this.trackEvent}, {
                        functionName: "GetCurrentCategoryId",
                        nativeFunc: this.getCurrentCategoryId
                    }, {
                        functionName: "SelectCategoryView",
                        nativeFunc: this.switchCategoryView
                    }, {
                        functionName: "GetCurInternetState",
                        nativeFunc: this.getCurInternetState
                    }, {functionName: "DropOpenFile", nativeFunc: this.dragOpenFile}, {
                        functionName: "DropOpenUrl",
                        nativeFunc: this.dragOpenUrl
                    }, {
                        functionName: "GetCurPlatform",
                        nativeFunc: this.getCurPlatform
                    }, {
                        functionName: "CreateNewTask",
                        nativeFunc: this.createNewTask
                    }, {
                        functionName: "FireEventFunction",
                        nativeFunc: this.fireEventFunction
                    }, {
                        functionName: "ShowCustomDownloadModeDlg",
                        nativeFunc: this.showCustomDownloadModeDlg
                    }, {
                        functionName: "GetTaskStartStatusPrompt",
                        nativeFunc: this.getTaskStartStatusPrompt
                    }, {functionName: "ShowBrowserGuideDlg", nativeFunc: this.showBrowserGuideDlg}];
                    l.setDefaultNativeFunctionMap(e)
                }
            }

            pageReady(e, t, n, i) {
                do {
                    if (!e || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    "taskDetail" === a ? (d.TaskDetailNS.pageReady(), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)) : "community" === a ? (_.emit("community.pageReady"), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)) : e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            getTaskInfo(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0] || !i[2]) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    "taskDetail" === i[2] ? E.getHistoryTaskInfoString(a).then(i => {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, i)
                    }).catch() : e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            operateTask(e, t, n, a) {
                return i(this, void 0, void 0, function* () {
                    do {
                        if (!e || !t || !n) break;
                        if (!a || !a[0] || !a[1]) {
                            e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                            break
                        }
                        let i = a[0], o = a[1], r = a[2];
                        yield h.TaskOperate.operateTaskActions(i, o, r), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)
                    } while (0)
                })
            }

            shellOpen(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    o.remote.shell.openItem(a), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)
                } while (0)
            }

            openFolderWithSelectFile(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    o.remote.shell.showItemInFolder(a), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)
                } while (0)
            }

            getFileMd5(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    s.ToolsUtilitiesAWNS.calculateFileMd5(a).then(i => {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, i)
                    }).catch()
                } while (0)
            }

            getPeerID(e, t, n, i) {
                x.information(i);
                let a = I.getPeerID();
                e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, a)
            }

            getDeviceID(e, t, n, i) {
                x.information(i);
                let a = I.getPeerID();
                e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, a)
            }

            getThunderVersion(e, t, n, i) {
                x.information(i);
                let a = r.join(__rootDir, "../../Thunder.exe"), o = I.getFileVersion(a);
                e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, o)
            }

            trackEvent(e, t, n, i) {
                x.information(i);
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = void 0 === i[1] ? "" : i[1], r = void 0 === i[2] ? "" : i[2],
                        s = void 0 === i[3] ? 0 : i[3], l = void 0 === i[4] ? 0 : i[4], d = void 0 === i[5] ? 0 : i[5],
                        c = void 0 === i[6] ? 0 : i[6], h = void 0 === i[7] ? "" : i[7], p = void 0 === i[8] ? 0 : i[8],
                        g = f.XLStatNS.trackEvent(a, o, r, s, l, d, c, h, p);
                    e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, g)
                } while (0)
            }

            getCurrentCategoryId(e, t, n, i) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    let i = g.default.getCurrentCategoryId();
                    e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, i)
                } while (0)
            }

            switchCategoryView(e, t, n, i) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    if (m.isNullOrUndefined(i) || m.isNullOrUndefined(i[0]) || m.isNullOrUndefined(i[1])) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = i[1], r = void 0;
                    void 0 !== i[2] && (r = i[2]), g.default.fireEvent(k.NodeEventMesssageNS.eventDownloadSwitchCategory, a, o, r)
                } while (0)
            }

            dragOpenFile(e, t, n, i) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    if (m.isNullOrUndefined(i) || m.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    if (void 0 === a || null === a || "" === a) break;
                    T.default.onCommand("path", a, "file_drag").catch()
                } while (0)
            }

            dragOpenUrl(e, t, n, i) {
                do {
                    if (void 0 === e || null === e) break;
                    if (void 0 === t || null === t) break;
                    if (void 0 === n || null === n) break;
                    let a = i[0];
                    if (void 0 === a || null === a || "" === a) break;
                    let o = y.ThunderHelper.getTaskTypeFromUrl(a);
                    o === p.DownloadKernel.TaskType.P2sp || o === p.DownloadKernel.TaskType.Emule ? v.ThunderNewTask.createPreNewTaskWindow([a], "url_drag") : o !== p.DownloadKernel.TaskType.Bt && o !== p.DownloadKernel.TaskType.Magnet || v.ThunderNewTask.createBtTaskWindow({
                        url: a,
                        type: "url"
                    }, {source: "url_drag"})
                } while (0)
            }

            getCurInternetState(e, t, n, i) {
                do {
                    if (x.information(i), m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    let a = I.getCurInternetState();
                    e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, a)
                } while (0)
            }

            getCurPlatform(e, t, n, i) {
                do {
                    if (x.information(i), m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    let a = "pc-xdas";
                    e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, a)
                } while (0)
            }

            createNewTask(e, t, n, i) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    let a = i[0], o = null;
                    try {
                        o = JSON.parse(a)
                    } catch (e) {
                        x.warning(e)
                    }
                    if (m.isNullOrUndefined(o)) break;
                    for (let e in o) {
                        let t = o[e];
                        if ("com" === t.type) {
                            let e = void 0;
                            for (let t in o) void 0 === e && (e = []), e.push({
                                url: o[t].url,
                                referer: o[t].refer,
                                fileName: o[t].name,
                                statClick: "outline",
                                browser: "xlbrowser.exe"
                            });
                            v.ThunderNewTask.createPreNewTaskWindow(e);
                            break
                        }
                        if ("bt" === t.type) {
                            let e = t.url;
                            v.ThunderNewTask.createBtTaskWindow({url: e, type: "url"}, {
                                source: "outline",
                                browser: "xlbrowser.exe"
                            });
                            break
                        }
                    }
                } while (0)
            }

            fireEventFunction(e, t, n, i) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    if (m.isNullOrUndefined(i) || m.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    S.NativeCallHostModule.nativeCallHost.fireNativeEvent("onWebEvent", ...i), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)
                } while (0)
            }

            showCustomDownloadModeDlg(e, t, n) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    b.DownloadModeNS.showCustomDownloadModeDlg().catch(), e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success)
                } while (0)
            }

            showBrowserGuideDlg(e, t, n) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    N.default().popUpBrowserGuide()
                } while (0)
            }

            getTaskStartStatusPrompt(e, t, n, i) {
                do {
                    if (m.isNullOrUndefined(e) || m.isNullOrUndefined(t) || m.isNullOrUndefined(n)) break;
                    if (m.isNullOrUndefined(i) || m.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    try {
                        let a = JSON.parse(i[0]), o = C.TaskStatusHelper.getTaskStartStatusPrompt(a);
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.Success, o)
                    } catch (i) {
                        e.callNativeFunctionCallback(t, n, u.NativeFunctionErrorCode.ParamError)
                    }
                } while (0)
            }
        };
        e.registerNativeFunction = function () {
            t.registerNativeFunction()
        }
    }(t.NaviteFunctionNS || (t.NaviteFunctionNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(1), r = n(11), s = n(5), l = n(32), u = o.default.getLogger("NativeFunction.TaskInfoHistory"),
        d = l.DownloadKernelEventManager.getEventManager();
    !function (e) {
        const t = new class {
            constructor() {
                this.isInit = !1
            }

            init() {
                return i(this, void 0, void 0, function* () {
                    this.isInit || (this.isInit = !0, this.taskSpeedMap = new Map, this.dataPath = a.join(__profilesDir, "TaskSpeedInfo"), (yield r.FileSystemAWNS.existsAW(this.dataPath)) || (yield r.FileSystemAWNS.mkdirsAW(this.dataPath)), d.attachTaskEvent(s.DownloadKernel.TaskEventType.DetailChanged, (...e) => {
                        this.onTaskDetailChanged(...e)
                    }), d.attachTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                        this.onTaskStatusChanged(...e)
                    }))
                })
            }

            getTaskSpeedInfo(e) {
                return i(this, void 0, void 0, function* () {
                    let t = this.taskSpeedMap.get(e);
                    return t || (yield this.loadTaskSpeedInfo(e), t = this.taskSpeedMap.get(e)), t
                })
            }

            onTaskDetailChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== s.DownloadKernel.TaskEventType.DetailChanged) break;
                    let t = e[1];
                    if (!t) break;
                    for (let e = 0; e < t.length; ++e) {
                        let n = t[e];
                        if (!n) continue;
                        let i = 0, a = 0, o = n.getDownloadSpeed(), r = n.getVipSpeed(),
                            l = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskId),
                            d = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadSize),
                            c = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.DownloadingPeriod);
                        c < 1 && (c = 1), i = Math.round(d / c);
                        let h = n.getTaskStatus();
                        if (h === s.DownloadKernel.TaskStatus.Succeeded || h === s.DownloadKernel.TaskStatus.Seeding) a = 100; else {
                            let e = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.FileSize);
                            0 !== e && (a = d / e * 100, (a = parseInt(a.toString(), 10)) > 100 ? a = 100 : a < 0 && (a = 0))
                        }
                        this.updateProgress(l, i, a, o, r).catch(e => {
                            u.warning(e)
                        })
                    }
                } while (0)
            }

            onTaskStatusChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== s.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!e[1]) break;
                    let t = e[1];
                    for (let e = 0; e < t.length; ++e) {
                        let n = t[e];
                        if (!n) continue;
                        let i = n.getTaskStatus(), a = n.getTaskPreStatus();
                        if ((i === s.DownloadKernel.TaskStatus.StartWaiting || i === s.DownloadKernel.TaskStatus.StartPending) && a === s.DownloadKernel.TaskStatus.StandBy) {
                            let e = n.getTaskAttribute(s.DownloadKernel.TaskAttribute.TaskId),
                                t = this.taskSpeedMap.get(e);
                            t && (t.speedInfoMap = {}, this.taskSpeedMap.set(e, t), this.saveTaskSpeedInfo(e).catch(e => {
                                u.warning(e)
                            }))
                        }
                    }
                } while (0)
            }

            updateProgress(e, t, n, a, o) {
                return i(this, void 0, void 0, function* () {
                    let i = this.taskSpeedMap.get(e);
                    i || (i = this.newTaskSpeedInfo(e)), i.aveSpeed = t, a > i.maxSpeed && (i.maxSpeed = a), i.progress = n;
                    let r = {};
                    r.progress = n, r.downloadSpeed = a, r.addSpeed = o;
                    let s = Math.floor(n);
                    100 === s && i.speedInfoMap[s] || (i.speedInfoMap[s] = r, this.taskSpeedMap.set(e, i), yield this.saveTaskSpeedInfo(e))
                })
            }

            newTaskSpeedInfo(e) {
                let t = {};
                return t.taskId = e, t.aveSpeed = 0, t.maxSpeed = 0, t.progress = 0, t.speedInfoMap = {}, t
            }

            loadTaskSpeedInfo(e) {
                return i(this, void 0, void 0, function* () {
                    let t = !1, n = "TaskInfoEx_" + e.toString() + ".txt", i = a.join(this.dataPath, n);
                    if (yield r.FileSystemAWNS.existsAW(i)) {
                        let n = yield r.FileSystemAWNS.readFileAW(i);
                        if (n) {
                            let i = null;
                            try {
                                i = JSON.parse(n.toString())
                            } catch (e) {
                                u.warning(e)
                            }
                            null !== i && (this.taskSpeedMap.set(e, i), t = !0)
                        }
                    }
                    return t
                })
            }

            saveTaskSpeedInfo(e) {
                return i(this, void 0, void 0, function* () {
                    let t = !1, n = this.taskSpeedMap.get(e);
                    if (n) {
                        let i = JSON.stringify(n), o = "TaskInfoEx_" + e.toString() + ".txt",
                            s = a.join(this.dataPath, o);
                        t = yield r.FileSystemAWNS.writeFileAW(s, i)
                    }
                    return t
                })
            }
        };
        e.init = function () {
            return i(this, void 0, void 0, function* () {
                yield t.init()
            })
        }, e.getTaskSpeedInfo = function (e) {
            return i(this, void 0, void 0, function* () {
                return yield t.getTaskSpeedInfo(e)
            })
        }
    }(t.HistoryTaskSpeedInfoNS || (t.HistoryTaskSpeedInfoNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(21), o = n(5), r = n(28), s = n(58), l = n(34), u = n(43), d = n(86), c = n(511), h = n(2),
        f = r.DownloadKernelTaskManager.getTaskManager(), p = c.SubtitleManagerNS.getSubtitleManger();
    t.TaskOperate = class {
        static operateTaskActions(e, t, n) {
            return i(this, void 0, void 0, function* () {
                switch (t) {
                    case"play":
                        this.playTask(e, n);
                        break;
                    case"downAndPlay":
                        this.downloadAndPlayTask(e, n);
                        break;
                    case"openFolder":
                        this.openFolder(e);
                        break;
                    case"open":
                        this.open(e, n);
                        break;
                    case"continue":
                        this.startTask(e);
                        break;
                    case"pause":
                        this.stopTask(e);
                        break;
                    case"restore":
                        this.restoreTask(e);
                        break;
                    case"delete":
                        this.deleteTask(e);
                        break;
                    case"note":
                        this.noteTask(e, n);
                        break;
                    case"downloadSelectFiles":
                        yield this.downloadSelectFiles(e, n);
                        break;
                    case"showHomePage":
                        this.showHomePage(e);
                        break;
                    case"install":
                        this.installFile(e, n);
                        break;
                    case"subtitleDownload":
                        this.openSubtitleDlg(e)
                }
            })
        }

        static playTask(e, t) {
            let n = f.getTaskFromTaskId(e);
            n && (null !== t && void 0 !== t && "object" == typeof t ? s.TaskOperatorNs.downloadAndPlay(e, void 0, void 0, t.panel, t.categoryId).catch() : s.TaskOperatorNs.downloadAndPlay(e).catch(), n.setUserRead(1))
        }

        static downloadAndPlayTask(e, t) {
            f.getTaskFromTaskId(e) && (null !== t && void 0 !== t && "object" == typeof t ? s.TaskOperatorNs.downloadAndPlay(e, void 0, void 0, t.panel, t.categoryId).catch() : s.TaskOperatorNs.downloadAndPlay(e).catch())
        }

        static openFolder(e) {
            let t = f.getTaskFromTaskId(e);
            if (t) {
                let e = t.getTaskBaseInfo();
                s.TaskOperatorNs.markReadStatus([e], 1), s.TaskOperatorNs.openTaskFolder(e, !0).catch()
            }
        }

        static open(e, t) {
            let n = f.getTaskFromTaskId(e);
            if (n) {
                let e = n.getTaskBaseInfo(), i = -1;
                i = null === t || void 0 === t || "" === t ? -1 : Number(t), s.TaskOperatorNs.openTaskItem(e, i).catch(), n.setUserRead(1)
            }
        }

        static startTask(e) {
            d.DowloadDispatchNS.startTask(e)
        }

        static stopTask(e) {
            f.stopTask(e, o.DownloadKernel.TaskStopReason.TaskDetail)
        }

        static restoreTask(e) {
            f.recoverFromRecycle(e)
        }

        static deleteTask(e) {
            let t = f.getTaskFromTaskId(e);
            t && (t.getTaskAttribute(o.DownloadKernel.TaskAttribute.RecycleTime) > 0 ? l.MessageBox.confirm({
                title: "您确定要删除此任务吗？",
                type: l.MessageBox.ConfirmType.Warning,
                checkboxEnabled: !0,
                checkboxChecked: !0,
                checkboxLabel: "同时删除文件"
            }).then(t => {
                f.deleteTask(e, t).catch()
            }, () => {
            }) : f.deleteTask(e, !1).catch())
        }

        static noteTask(e, t) {
            if (t) {
                let n = f.getTaskFromTaskId(e);
                n && n.setDescription(t)
            }
        }

        static downloadSelectFiles(e, t) {
            return i(this, void 0, void 0, function* () {
                (yield f.downloadTaskSelectFiles(e, t)) && d.DowloadDispatchNS.startTask(e)
            })
        }

        static showHomePage(e) {
            u.default.fireEvent(a.NodeEventMesssageNS.eventShowHomePage, e)
        }

        static installFile(e, t) {
            if (null !== t && void 0 !== t && "" !== t) try {
                let n = JSON.parse(t), i = n.path, a = "";
                null !== n.runParams && void 0 !== n.runParams && "" !== n.runParams && (a = n.runParams);
                let o = f.getTaskFromTaskId(e);
                s.TaskOperatorNs.executeInstallFile(o, i, a).catch()
            } catch (e) {
            }
        }

        static openSubtitleDlg(e) {
            let t = f.getTaskFromTaskId(e);
            if (t) {
                let n = t.getTaskName(), i = t.getType(), a = "";
                t && (a = t.getSavePath()), i === o.DownloadKernel.TaskType.Bt && t.getExtraObject().getDownloadFile().length > 1 && (a = h.join(a, n));
                let r = p.getDisaplayName(e), s = 0;
                (s = r.length) > 1 ? l.MessageBox.customAW("SubtitleTaskFilelist", {
                    size: "large",
                    taskId: e,
                    taskName: n,
                    taskType: i,
                    fileList: r,
                    saveDir: a
                }).catch() : l.MessageBox.customAW("SubtitleSearch", {
                    size: "large",
                    taskId: e,
                    taskName: n,
                    cid: r[0].cid,
                    saveDir: a,
                    from: "taskList"
                }).catch()
            }
        }
    }
}, function (e, t) {
    e.exports = require("child_process")
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(109), o = n(692), r = n(1).default.getLogger("Thunder.VipDownload");
    t.UserHttpSession = class extends a.HttpSession {
        queryFlux(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    this.host = "service.cdn.vip.xunlei.com", this.retries = 2, this.timeout = 15e3, this.body = o.UserHttpPackageNS.createUserFluxBuffer(e), this.post(e => {
                        let n = null;
                        200 === e.statusCode && e.body && e.body.length > 12 && (n = o.UserHttpPackageNS.praseUserFluxBuffer(e.body)), t(n)
                    }, e => {
                        r.information("error", e), t(null)
                    })
                })
            })
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(231), a = n(232), o = n(48), r = n(1).default.getLogger("Thunder.VipDownload");
    !function (e) {
        e.createUserFluxBuffer = function (e) {
            r.information("--\x3ecreateUserFluxBuffer");
            let t = 0, n = Buffer.alloc(1024);
            t = n.writeUInt32LE(0, t), r.information("protocolVersion:", 0), t = n.writeUInt32LE(1, t), r.information("sequence:", 1), t = n.writeUInt32LE(0, t), r.information("commandLegth:", 0);
            let s = o.PluginHelperNS.getHelper().thunderVersionNumber;
            t = n.writeUInt32LE(s, t), r.information("thunderVersion:", s), t = n.writeUInt16LE(0, t), r.information("compressFlag:", 0), t = n.writeUInt16LE(12, t), r.information("commandType:", 12);
            let l = Number(e.userId).valueOf();
            t = a.BufferUtilitiesNS.writeUInt64LE(n, l, t), r.information("userId:", l);
            let u = e.jumpKey;
            t = a.BufferUtilitiesNS.writeString(n, u, t, "gbk"), r.information("jumpKey:", u);
            let d = e.peerId;
            return t = a.BufferUtilitiesNS.writeString(n, d, t, "gbk"), r.information("peerId:", d), t = n.writeUInt32LE(0, t), r.information("taskCount:", 0), t = n.writeUInt32LE(0, t), r.information("businessFlag:", 0), n = n.slice(0, t), n = i.ShubCryptoNS.encryptHttpBuffer(n), r.information("<--createUserFluxBuffer"), n
        }, e.praseUserFluxBuffer = function (e) {
            r.information("--\x3epraseUserFluxBuffer");
            let t = 0, n = (e = i.ShubCryptoNS.decryptHttpBuffer(e)).readUInt32LE(t);
            r.information("protocolVersion:", n), t += 4;
            let o = e.readUInt32LE(t);
            r.information("sequence:", o), t += 4;
            let s = e.readUInt32LE(t);
            r.information("commandLegth:", s), t += 4;
            let l = e.readUInt32LE(t);
            r.information("thunderVersion:", l), t += 4;
            let u = e.readUInt16LE(t);
            r.information("compressFlag:", u), t += 2;
            let d = e.readUInt16LE(t);
            r.information("commandType:", d), t += 2;
            let c = e.readUInt32LE(t);
            r.information("result:", c), t += 4;
            let h = a.BufferUtilitiesNS.readString(e, t, "gbk"), f = h[1];
            r.information("message:", f), t = h[0];
            let p = a.BufferUtilitiesNS.readUInt64LE(e, t), g = p[1];
            r.information("capacity:", g), t = p[0];
            let k = (p = a.BufferUtilitiesNS.readUInt64LE(e, t))[1];
            r.information("remain:", k), t = p[0];
            let m = (p = a.BufferUtilitiesNS.readUInt64LE(e, t))[1];
            r.information("need:", m), t = p[0];
            let T = {result: c, capacity: g};
            return r.information("<--praseUserFluxBuffer"), T
        }
    }(t.UserHttpPackageNS || (t.UserHttpPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(694), o = n(5), r = n(110), s = n(1).default.getLogger("Thunder.VipDownload"),
        l = r.DkHelperNS.getHelper();
    t.Task = class {
        constructor(e, t) {
            this.mTaskBase = null, this.mTaskStatus = void 0, this.mDcdnStatus = void 0, this.mIsGcidOk = !1, this.mIsSubGcidOk = new Map, this.mTaskDetail = null, this.mTaskExtra = null, this.mTaskId = e, this.mTaskExtra = new a.TaskExtra(this), this.init(t).catch()
        }

        getTaskId() {
            return this.mTaskId
        }

        getTaskBase() {
            return this.mTaskBase
        }

        getTaskStatus() {
            return this.mTaskStatus
        }

        getDcdnStatus() {
            return this.mDcdnStatus
        }

        setDcdnStatus(e) {
            let t = this.getDcdnStatusPriority(this.mDcdnStatus);
            this.getDcdnStatusPriority(e) > t && (this.mDcdnStatus = e)
        }

        getTaskDetail() {
            return this.mTaskDetail
        }

        getTaskExtra() {
            return this.mTaskExtra
        }

        getFilesWithFilter(e, t) {
            let n = [];
            if (!this.mTaskBase) return n;
            let i = void 0, a = void 0;
            switch (t && (i = t.get("downloading"), a = t.get("select")), this.mTaskBase.taskType) {
                case o.DownloadKernel.TaskType.P2sp:
                case o.DownloadKernel.TaskType.Emule:
                    if (i && this.mTaskStatus !== o.DownloadKernel.TaskStatus.Started) break;
                    let r = this.getP2pFile();
                    n.push(r);
                    break;
                case o.DownloadKernel.TaskType.Bt:
                case o.DownloadKernel.TaskType.Group:
                    if (!this.mTaskDetail) break;
                    if (e) {
                        for (let t of e) {
                            let e = this.mTaskDetail.files.get(t);
                            e && (i && !this.isSubTaskDownloading(t) || a && 1 !== e.isNeedDownload || n.push(e))
                        }
                        break
                    }
                    this.mTaskDetail.files.forEach(e => {
                        i && !this.isSubTaskDownloading(e.subId) || a && 1 !== e.isNeedDownload || n.push(e)
                    })
            }
            return n
        }

        getAllFiles() {
            return this.getFilesWithFilter()
        }

        getSelectFiles(e) {
            let t = new Map;
            return t.set("select", !0), this.getFilesWithFilter(e, t)
        }

        getDownloadingFiles(e) {
            let t = new Map;
            return t.set("downloading", !0), this.getFilesWithFilter(e, t)
        }

        getFile(e) {
            let t = null;
            if (!this.mTaskBase) return t;
            switch (this.mTaskBase.taskType) {
                case o.DownloadKernel.TaskType.P2sp:
                case o.DownloadKernel.TaskType.Emule:
                    t = this.getP2pFile();
                    break;
                case o.DownloadKernel.TaskType.Bt:
                case o.DownloadKernel.TaskType.Group:
                    this.mTaskDetail && (t = this.mTaskDetail.files.get(e))
            }
            return t
        }

        remove() {
            s.information("remove"), this.mTaskExtra.remove()
        }

        select() {
            return i(this, void 0, void 0, function* () {
                let e = yield l.getCurrentCategoryId();
                e && l.selectCategoryView(e, o.DownloadKernel.CategroyViewID.Downloading, this.mTaskId)
            })
        }

        onExpand() {
            this.mTaskExtra.onExpand()
        }

        onUserAuthorityChanged(e) {
            this.mTaskExtra.onUserAuthorityChanged(e).catch()
        }

        onTaskStatusChanged(e) {
            return i(this, void 0, void 0, function* () {
                switch (s.information("onTaskStatusChanged", "taskId", this.mTaskId, "taskStatus", e), this.mTaskStatus = e, e) {
                    case o.DownloadKernel.TaskStatus.Started:
                        yield this.initTaskDetail();
                        break;
                    case o.DownloadKernel.TaskStatus.Stopped:
                        this.mDcdnStatus = void 0
                }
                yield this.mTaskExtra.onTaskStatusChanged(e)
            })
        }

        onTaskDetailChanged(e) {
            this.setTaskBase(e), this.mTaskBase && this.mTaskBase.taskType === o.DownloadKernel.TaskType.Group && l.getTaskDetail(this.mTaskId).then(e => {
                e && e.files && e.files.forEach(e => {
                    this.setFile(e.subId, e)
                })
            }).catch()
        }

        onTaskDcdnStatusChanged(e, t) {
            e < 0 && this.mTaskBase && this.mTaskBase.taskType === o.DownloadKernel.TaskType.Group || (s.information("onTaskDcdnStatusChanged", "taskId", this.mTaskId, "subId", e, "dcdnStatus", t), this.setDcdnStatus(t), this.mTaskExtra.onTaskDcdnStatusChanged(e, t))
        }

        onBtSubFileDetailChanged(e, t) {
            if (this.mTaskDetail) for (let e of t) {
                let t = e.realIndex, n = l.createBtFileUrl(t, this.mTaskDetail.infoId), i = {
                    subId: t,
                    taskStatus: e.fileStatus,
                    filePath: "",
                    fileName: e.finalName,
                    gcid: e.gcid,
                    cid: e.cid,
                    url: n,
                    refUrl: "",
                    fileSize: e.fileSize,
                    downloadSize: e.downloadSize,
                    errCode: e.errorCode
                };
                this.setFile(t, i)
            }
        }

        onCidGcidRetrieved(e) {
            s.information("onCidGcidRetrieved", this.mTaskId, e), this.mTaskExtra.onCidGcidRetrieved(e)
        }

        onTaskCompleted() {
            s.information("onTaskCompleted", "taskId", this.mTaskId), this.remove()
        }

        onTaskRemoved() {
            s.information("onTaskRemoved", "taskId", this.mTaskId), this.remove()
        }

        init(e) {
            return i(this, void 0, void 0, function* () {
                this.onTaskDetailChanged(e);
                let t = yield l.getTaskStatus(this.mTaskId);
                yield this.onTaskStatusChanged(t)
            })
        }

        initTaskDetail() {
            return i(this, void 0, void 0, function* () {
                if (this.mTaskDetail = null, this.mTaskBase) {
                    let e = this.mTaskBase.taskType;
                    e !== o.DownloadKernel.TaskType.Bt && e !== o.DownloadKernel.TaskType.Group || (this.mTaskDetail = yield l.getTaskDetail(this.mTaskId))
                }
            })
        }

        setTaskBase(e) {
            this.mTaskBase = e, e && (e.taskType !== o.DownloadKernel.TaskType.P2sp && e.taskType !== o.DownloadKernel.TaskType.Emule || this.mIsGcidOk || e && e.gcid && "" !== e.gcid && e.cid && "" !== e.cid && (this.mIsGcidOk = !0, this.onCidGcidRetrieved(-1)))
        }

        getP2pFile() {
            return this.mTaskBase ? {
                subId: -1,
                taskStatus: this.mTaskBase.taskStatus,
                filePath: this.mTaskBase.savePath,
                fileName: this.mTaskBase.taskName,
                gcid: this.mTaskBase.gcid,
                cid: this.mTaskBase.cid,
                url: this.mTaskBase.url,
                refUrl: this.mTaskBase.refUrl,
                fileSize: this.mTaskBase.fileSize,
                downloadSize: this.mTaskBase.downloadSize,
                isNeedDownload: 1
            } : null
        }

        setFile(e, t) {
            if (!this.mTaskDetail) return;
            let n = this.getFile(e);
            this.mTaskDetail.files.set(e, t), n && n.taskStatus === t.taskStatus || this.mTaskExtra.onSubTaskStatusChanged(e, t.taskStatus), this.mIsSubGcidOk.get(e) || t.gcid && "" !== t.gcid && t.cid && "" !== t.cid && (this.mIsSubGcidOk.set(e, !0), this.onCidGcidRetrieved(e)), this.mTaskBase && this.mTaskBase.taskType === o.DownloadKernel.TaskType.Group && (n && n.dcdnStatus === t.dcdnStatus || this.onTaskDcdnStatusChanged(e, t.dcdnStatus))
        }

        isSubTaskDownloading(e) {
            if (!this.mTaskBase) return !1;
            let t = !1;
            switch (this.mTaskBase.taskType) {
                case o.DownloadKernel.TaskType.P2sp:
                case o.DownloadKernel.TaskType.Emule:
                    t = this.mTaskBase.taskStatus === o.DownloadKernel.TaskStatus.Started;
                    break;
                case o.DownloadKernel.TaskType.Bt:
                    if (this.mTaskDetail) {
                        let n = this.mTaskDetail.files.get(e);
                        n && (t = n.taskStatus === o.DownloadKernel.BtFileStatus.Started)
                    }
                    break;
                case o.DownloadKernel.TaskType.Group:
                    if (this.mTaskDetail) {
                        let n = this.mTaskDetail.files.get(e);
                        n && (t = n.taskStatus === o.DownloadKernel.TaskStatus.Started)
                    }
            }
            return t
        }

        getDcdnStatusPriority(e) {
            let t = -1;
            switch (e) {
                case void 0:
                    t = -1;
                    break;
                case o.DownloadKernel.DcdnStatusCode.Unkown:
                    t = 0;
                    break;
                case o.DownloadKernel.DcdnStatusCode.AuthorizingFailed:
                    t = 2;
                    break;
                case o.DownloadKernel.DcdnStatusCode.Success:
                    t = 3;
                    break;
                default:
                    t = 1
            }
            return t
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(111), o = n(695), r = n(59), s = n(5), l = n(701), u = n(707), d = n(221), c = n(651), h = n(507),
        f = n(260), p = n(220), g = n(48), k = n(508), m = n(25), T = n(186),
        v = n(1).default.getLogger("Thunder.VipDownload.task-extra"), w = r.UserHelperNS.getHelper(),
        y = T.ConfigHelperNS.getHelper(), S = d.TaskEventContainerNS.getEventContainer(),
        b = p.KuainiaoManagerNS.getManager();
    t.TaskExtra = class {
        constructor(e) {
            this.mTask = null, this.mOfflineTask = null, this.mAcclerateTasks = new Map, this.mIsCheckTry = !1, this.mKuaiNiaoInit = !1, this.mKuaiNiaoTimer = null, this.mVipTaskInfo = null, this.mEnterType = void 0, this.mTaskId = e.getTaskId(), this.mTask = e
        }

        get vipTaskType() {
            let e = a.VipDownloadDefineNS.VipTaskType.Vip;
            return this.tryTask && (e = a.VipDownloadDefineNS.VipTaskType.Try), e
        }

        get vipTaskStatus() {
            let e = a.VipDownloadDefineNS.VipTaskStatus.Init;
            return this.vipTaskType === a.VipDownloadDefineNS.VipTaskType.Try ? this.tryTask && (e = this.tryTask.vipTaskStatus) : this.vipTask && (e = this.vipTask.vipTaskStatus), e
        }

        get vipTaskError() {
            let e = null;
            return this.vipTaskType === a.VipDownloadDefineNS.VipTaskType.Try ? this.tryTask && (e = this.tryTask.error) : this.vipTask && (e = this.vipTask.error), e
        }

        get careKuaiNiao() {
            if (this.mKuaiNiaoInit && void 0 !== this.mEnterType) {
                let e = this.getAcclerateTask(this.mEnterType);
                if (e) return e.enableKuaiNiao
            }
            return !1
        }

        getVipTaskInfo() {
            return this.mVipTaskInfo || (this.mVipTaskInfo = this.createVipTaskInfo()), this.mVipTaskInfo
        }

        setVipTaskStatus(e, t) {
            this.updateVipTaskInfo()
        }

        createVipTaskInfo() {
            v.information("createVipTaskInfo", this.mTaskId);
            let e = null, t = !1, n = this.careKuaiNiao;
            this.taskStatus !== s.DownloadKernel.TaskStatus.Started || n || this.mAcclerateTasks.forEach(e => {
                e.showSpeed && (t = !0)
            });
            let i = !1;
            this.vipTaskType === a.VipDownloadDefineNS.VipTaskType.Vip ? i = w.isSuperVip : this.tryTask && (i = this.tryTask.tryType === a.VipDownloadDefineNS.TryType.SuperVip);
            let o = !1;
            return i && !n && this.vipTaskStatus > a.VipDownloadDefineNS.VipTaskStatus.Init && this.vipTaskStatus < a.VipDownloadDefineNS.VipTaskStatus.Finished && this.vipTaskStatus !== a.VipDownloadDefineNS.VipTaskStatus.CommitFailed && this.vipTaskStatus !== a.VipDownloadDefineNS.VipTaskStatus.AcclerateFailed && (o = !0), e = {
                taskType: this.vipTaskType,
                isSuper: i,
                taskStatus: this.vipTaskStatus,
                isShowVipSpeed: t,
                isShowSuperSpeed: o,
                error: this.vipTaskError,
                careKuaiNiao: n,
                kuaiNiaoStatus: b.status
            }, this.mVipTaskInfo = e, e
        }

        updateVipTaskInfo() {
            let e = this.mVipTaskInfo, t = this.createVipTaskInfo(), n = !1;
            e && e.taskType === t.taskType && e.taskStatus === t.taskStatus || (n = !0), v.information("onVipTaskInfoChanged", "taskId", this.mTaskId, "taskInfo", t, "statusChange", n), S.onEvent(d.TaskEventNS.vipTaskInfoChanged, this.mTaskId, t), n && S.onEvent(d.TaskEventNS.taskAcclerateStatusChanged, this.mTaskId, t)
        }

        enterAcclerate(e) {
            v.information("enter", "type", e), this.mEnterType = e, this.mKuaiNiaoInit = !0, this.createAcclerateTask(e).enter(), this.startKuaiNiaoShow()
        }

        exitAcclerate(e) {
            let t = this.getAcclerateTask(e);
            t && (v.information("exit", "type", e), this.killKuaiNiaoTimer(), t.exit(), this.deleteAcclerateTask(e), this.updateVipTaskInfo())
        }

        showTry() {
            v.information("showTry"), h.TryTaskCacheNS.getCacheManager().setTaskId(this.mTaskId);
            let e = a.VipDownloadDefineNS.VipTaskType.Try;
            this.createAcclerateTask(e)
        }

        removeTry() {
            v.information("removeTry");
            let e = a.VipDownloadDefineNS.VipTaskType.Try;
            this.exitAcclerate(e)
        }

        remove() {
            this.mAcclerateTasks.forEach(e => {
                e.remove()
            }), this.offlineTask && this.offlineTask.remove()
        }

        onExpand() {
            this.activeTry().catch()
        }

        onUserAuthorityChanged(e) {
            return i(this, void 0, void 0, function* () {
                v.information("onUserAuthorityChanged authority:" + e), e ? !this.tryTask || this.userCanTry && this.tryTask.tryType !== a.VipDownloadDefineNS.TryType.PlatinumVip || this.exitAcclerate(a.VipDownloadDefineNS.VipTaskType.Try) : this.exitAcclerate(a.VipDownloadDefineNS.VipTaskType.Vip), yield this.checkAcclerate(), yield this.checkOffline(!0)
            })
        }

        onKuaiNiaoStatusChanged(e) {
            e === f.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive && (this.killKuaiNiaoTimer(), this.mKuaiNiaoInit = !0, this.createKuaiNiaoTimer(3e3)), this.updateVipTaskInfo()
        }

        onTaskStatusChanged(e) {
            return i(this, void 0, void 0, function* () {
                this.mAcclerateTasks.forEach(t => {
                    t.onTaskStatusChanged(e)
                }), yield this.checkAcclerate(), yield this.checkOffline()
            })
        }

        onSubTaskStatusChanged(e, t) {
            this.mAcclerateTasks.forEach(n => {
                n.onSubTaskStatusChanged(e, t)
            })
        }

        onTaskDcdnStatusChanged(e, t) {
            this.mAcclerateTasks.forEach(n => {
                n.onTaskDcdnStatusChanged(e, t)
            })
        }

        onCidGcidRetrieved(e) {
            setTimeout(() => i(this, void 0, void 0, function* () {
                yield this.activeTry()
            }), 1e3), this.mAcclerateTasks.forEach(t => {
                t.onCidGcidRetrieved(e)
            })
        }

        onTryFinishOpenVipClick() {
            this.tryTask && this.tryTask.setFinishClickDispearDelay()
        }

        get task() {
            return this.mTask
        }

        get taskStatus() {
            return this.mTask.getTaskStatus()
        }

        get vipTask() {
            return this.getAcclerateTask(a.VipDownloadDefineNS.VipTaskType.Vip)
        }

        getAcclerateTask(e) {
            return this.mAcclerateTasks.get(e)
        }

        createAcclerateTask(e) {
            let t = this.mAcclerateTasks.get(e);
            return t || (t = e === a.VipDownloadDefineNS.VipTaskType.Try ? new u.TryTask(this.task) : new l.VipTask(this.task), this.mAcclerateTasks.set(e, t), t.init()), t
        }

        deleteAcclerateTask(e) {
            this.mAcclerateTasks.delete(e)
        }

        checkAcclerate() {
            return i(this, void 0, void 0, function* () {
                w.isVip && this.autoAcclerate(), yield this.activeTry()
            })
        }

        autoAcclerate() {
            this.taskStatus === s.DownloadKernel.TaskStatus.Started && this.vipTaskStatus === a.VipDownloadDefineNS.VipTaskStatus.Init && this.enterAcclerate(a.VipDownloadDefineNS.VipTaskType.Vip)
        }

        get tryTask() {
            return this.getAcclerateTask(a.VipDownloadDefineNS.VipTaskType.Try)
        }

        get trySubId() {
            let e = 0, t = void 0, n = this.task.getDownloadingFiles();
            for (let i of n) i.gcid && "" !== i.gcid && i.cid && "" !== i.cid && i.fileSize && i.fileSize > e && (e = i.fileSize, t = i.subId);
            return t
        }

        get userCanTry() {
            return !w.isSuperVip && !w.hasFlux
        }

        get isTryMode() {
            return this.vipTaskType === a.VipDownloadDefineNS.VipTaskType.Try
        }

        get isTryInit() {
            return !!this.isTryMode && this.vipTaskStatus === a.VipDownloadDefineNS.VipTaskStatus.Init
        }

        activeTry() {
            return i(this, void 0, void 0, function* () {
                if (this.mIsCheckTry) v.information("is checking try!"); else {
                    this.mIsCheckTry = !0;
                    do {
                        v.information("checkActiveTry");
                        let e = g.PluginHelperNS.getHelper().currentTime, t = this.isTryMode, n = this.isTryInit;
                        const i = h.TryTaskCacheNS.getCacheManager().getTask(this.mTaskId);
                        n && i && i.createTime && i.expireTime && e - i.createTime > i.expireTime && (this.removeTry(), t = !1, n = !1);
                        let a = !1;
                        if (i && (a = this.canShowTry(i.type)), n && !a) {
                            v.information("task can not show try anymore!"), this.removeTry();
                            break
                        }
                        if (t) {
                            v.information("task already show try!");
                            break
                        }
                        if (i) {
                            i.trialKey && !i.commited && a ? (v.information("show try from cache"), this.showTry()) : v.information("this task had query!");
                            break
                        }
                        if (this.taskStatus !== s.DownloadKernel.TaskStatus.Started) {
                            v.information("this task is not started!");
                            break
                        }
                        if (!this.canQueryTry()) {
                            v.information("this task can not query try!");
                            break
                        }
                        let o = m.ConfigNS.getValue("VipDownload", "LastTryEnterTime", 0),
                            r = y.getValue("VipDownload", "TryInterval");
                        if (e - o < r) {
                            v.information("interval time less than ", r);
                            break
                        }
                        let l = yield k.TryTaskDataBaseNS.getTable().getUserData(this.mTaskId, -1);
                        if (l && l.tryDate) {
                            let e = (new Date).toDateString();
                            if (l.tryDate === e) {
                                v.information("this task had try today!");
                                break
                            }
                        }
                        let u = this.trySubId;
                        if (void 0 === u) {
                            v.information("subId invalid!");
                            break
                        }
                        yield this.queryTry(u)
                    } while (0);
                    this.mIsCheckTry = !1
                }
            })
        }

        queryTry(e) {
            return i(this, void 0, void 0, function* () {
                let t = this.task.getTaskBase(), n = this.task.getFile(e);
                if (!t || !n) return null;
                let i = {btTitle: 2 === t.taskType ? t.taskName : void 0, file: n},
                    a = yield(new c.TryTaskHttpSession).query(i);
                a && (h.TryTaskCacheNS.getCacheManager().setQueryData(this.mTaskId, e, a), 0 === a.result && this.canShowTry(a.type) && (this.showTry(), this.task.select()))
            })
        }

        canQueryTry() {
            if (!this.userCanTry) return v.information("this user can not try!"), !1;
            let e = this.task.getTaskBase();
            if (!e) return v.information("task base not exist!"), !1;
            if (e.taskType === s.DownloadKernel.TaskType.Group) return v.information("this task is group task!"), !1;
            const t = h.TryTaskCacheNS.getCacheManager();
            if (t.chances <= 0) return v.information("no chances to try!", "chances:", t.chances), !1;
            let n = t.taskId;
            return !n || n === this.mTaskId || (v.information("another task trying!", "taskId:", n), !1)
        }

        canShowTry(e) {
            let t = this.task.getTaskBase();
            if (!t) return v.information("task base not exist!"), !1;
            if (!this.canQueryTry()) return !1;
            if (e !== a.VipDownloadDefineNS.TryType.SuperVip) {
                if (w.authority) return v.information("current user has superspeed authority!"), !1;
                if (this.vipTaskStatus !== a.VipDownloadDefineNS.VipTaskStatus.Init) return v.information("task already enter!"), !1
            }
            let n = 0, i = 0;
            e === a.VipDownloadDefineNS.TryType.SuperVip ? (n = y.getValue("VipDownload", "EnableSuperTryMinSize"), i = y.getValue("VipDownload", "EnableSuperTryMaxProgress")) : (n = y.getValue("VipDownload", "EnableTryMinSize"), i = y.getValue("VipDownload", "EnableTryMaxProgress"));
            let o = t.fileSize || 0;
            return o < n ? (v.information("fileSize less than minSize!"), !1) : !(100 * (t.downloadSize || 0) / o > i && (v.information("progress more than maxProgress!"), 1))
        }

        get offlineTask() {
            return this.mOfflineTask
        }

        checkOffline(e) {
            return i(this, void 0, void 0, function* () {
                let t = this.mTask.getTaskStatus();
                w.offlineAuthority && t === s.DownloadKernel.TaskStatus.Started && (this.mOfflineTask || (this.mOfflineTask = new o.OfflineTask(this.mTask), e = !0), e && (yield this.mOfflineTask.loadData()), yield this.mOfflineTask.enter())
            })
        }

        startKuaiNiaoShow() {
            this.careKuaiNiao && (v.information("startKuaiNiaoShow"), this.createKuaiNiaoTimer(5e3))
        }

        createKuaiNiaoTimer(e) {
            this.mKuaiNiaoTimer || (v.information("createKuaiNiaoTimer"), this.mKuaiNiaoTimer = setTimeout(() => {
                v.information("onKuaiNiaoTimer"), this.mKuaiNiaoInit = !1, this.mKuaiNiaoTimer = null, this.updateVipTaskInfo()
            }, e))
        }

        killKuaiNiaoTimer() {
            this.mKuaiNiaoTimer && (v.information("killKuaiNiaoTimer"), clearTimeout(this.mKuaiNiaoTimer), this.mKuaiNiaoInit = !1, this.mKuaiNiaoTimer = null)
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(5), o = n(696), r = n(698), s = n(110).DkHelperNS.getHelper(),
        l = n(1).default.getLogger("Thunder.VipDownload.offline-page");
    var u;
    !function (e) {
        e[e.Init = 0] = "Init", e[e.CommitWait = 1] = "CommitWait", e[e.Commiting = 2] = "Commiting", e[e.CommitFailed = 3] = "CommitFailed", e[e.CommitSuccess = 4] = "CommitSuccess"
    }(u = t.OfflineTaskStatus || (t.OfflineTaskStatus = {}));
    t.OfflineTask = class {
        constructor(e) {
            this.mOfflineTaskStatus = void 0, this.mCache = null, this.mTaskId = e.getTaskId(), this.mTask = e, this.offlineTaskStatus = u.Init, this.mCache = new r.OfflineTaskCacheNS.Task(this.mTaskId)
        }

        get taskId() {
            return this.mTaskId
        }

        get task() {
            return this.mTask
        }

        get offlineTaskStatus() {
            return this.mOfflineTaskStatus
        }

        set offlineTaskStatus(e) {
            (void 0 === this.mOfflineTaskStatus || e === u.Init || e > this.mOfflineTaskStatus) && (this.mOfflineTaskStatus = e)
        }

        enter() {
            return i(this, void 0, void 0, function* () {
                this.offlineTaskStatus === u.Init && (yield this.commit())
            })
        }

        exit() {
            this.clear(), this.offlineTaskStatus = u.Init
        }

        remove() {
            this.clear(!0)
        }

        loadData() {
            return i(this, void 0, void 0, function* () {
                yield this.mCache.load()
            })
        }

        clear(e) {
            this.mCache.clear(e)
        }

        commit() {
            return i(this, void 0, void 0, function* () {
                l.information("commit"), this.offlineTaskStatus = u.CommitWait;
                let e = this.task.getTaskBase();
                if (!e) return null;
                let t = [];
                if (e.taskType === a.DownloadKernel.TaskType.Bt) this.mCache.getItem(-1) || t.push(-1); else {
                    let e = this.task.getSelectFiles();
                    l.information("selectFiles", e);
                    for (let n of e) this.mCache.getItem(n.subId) || t.push(n.subId)
                }
                if (l.information("subIds", t), t.length > 0) {
                    this.offlineTaskStatus = u.Commiting;
                    for (let e of t) yield this.commitOneTask(e)
                }
            })
        }

        commitOneTask(e) {
            return i(this, void 0, void 0, function* () {
                let t = this.task.getTaskBase();
                if (!t) return l.information("taskBase not exits!"), null;
                let n = null;
                if (t.taskType === a.DownloadKernel.TaskType.Bt) {
                    let e = this.task.getTaskDetail();
                    if (!e) return l.information("taskDetail not exits!"), null;
                    let i = [], a = this.task.getSelectFiles();
                    for (let e of a) i.push(e.subId);
                    n = {
                        url: s.createBtTaskUrl(e.infoId),
                        filename: t.taskName,
                        gcid: "",
                        cid: "",
                        filesize: t.fileSize,
                        file_indexs: i,
                        refer_url: t.refUrl,
                        cookies: ""
                    }
                } else {
                    let t = this.task.getFile(e);
                    if (!t) return l.information("file not exits!"), null;
                    n = {
                        url: t.url,
                        filename: t.fileName,
                        gcid: t.gcid,
                        cid: t.cid,
                        filesize: t.fileSize,
                        file_indexs: [],
                        refer_url: t.refUrl,
                        cookies: ""
                    }
                }
                let i = {taskInfo: n}, r = yield(new o.OfflineTaskHttpSession).commitTask(i);
                this.onCommitTaskCallback(e, r)
            })
        }

        onCommitTaskCallback(e, t) {
            l.information("onCommitTaskCallback response", t), t && (0 === t.result ? this.offlineTaskStatus = u.CommitSuccess : this.offlineTaskStatus = u.CommitFailed, this.mCache.setItemData(e))
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(235), o = n(109), r = n(697), s = n(59), l = n(48), u = n(95),
        d = n(1).default.getLogger("Thunder.VipDownload.offline-page"), c = s.UserHelperNS.getHelper(),
        h = l.PluginHelperNS.getHelper();
    t.OfflineTaskHttpSession = class extends o.HttpSession {
        commitTask(e) {
            return i(this, void 0, void 0, function* () {
                let t = c.userId, n = yield c.getSessionId(), i = h.clientName, o = h.thunderVersionNumber,
                    s = h.currentTime, l = Math.random(), f = "+]^%?#@COLL`(^POST" + i + o + s + l,
                    p = "client_name=" + i + "&client_version=" + o + "&ts=" + s + "&r=" + l + "&key=" + (f = u.ToolsUtilitiesAWNS.genarateMd5(f));
                return d.information("key", f), this.host = "api.zone.lixian.vip.xunlei.com", this.retries = 2, this.timeout = 2e4, this.path = "/tasks/" + t + "?" + p, this.auth = t + ":" + n + ":client:0", this.accept = a.HttpJsonCryptoNS.getAccept(), e.userId = t, this.body = yield r.OfflineTaskHttpPackageNS.createCommitTaskBuffer(e), yield this.postCommitTaskRequest(e)
            })
        }

        postCommitTaskRequest(e) {
            return new Promise(t => {
                this.post(n => {
                    let i = null;
                    c.userId === e.userId && 200 === n.statusCode && n.body && (i = r.OfflineTaskHttpPackageNS.praseCommitTaskBuffer(n.body)), t(i)
                }, e => {
                    d.information("error", e), t(null)
                })
            })
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1).default.getLogger("Thunder.VipDownload.offline-page");
    !function (e) {
        e.createCommitTaskBuffer = function (e) {
            return i(this, void 0, void 0, function* () {
                a.information("--\x3ecreateCommitTaskBuffer");
                let t = {task_info: e.taskInfo}, n = JSON.stringify(t);
                a.information("jsonStr", n);
                let i = Buffer.from(n);
                return a.information("buffer", i), a.information("<--createCommitTaskBuffer"), i
            })
        }, e.praseCommitTaskBuffer = function (e) {
            a.information("--\x3epraseCommitTaskBuffer");
            let t = null;
            if (e) {
                let n = e.toString();
                a.information("jsonStr", n);
                try {
                    t = JSON.parse(n)
                } catch (e) {
                    a.warning(e)
                }
            }
            return a.information("<--praseCommitTaskBuffer"), t
        }
    }(t.OfflineTaskHttpPackageNS || (t.OfflineTaskHttpPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(648).OfflineTaskDataBaseNS.getTable();
    !function (e) {
        class t {
            constructor(e) {
                this.mSubId = e
            }

            get subId() {
                return this.mSubId
            }

            set itemData(e) {
                this.mData = e
            }

            get itemData() {
                return this.mData
            }
        }

        e.SubTask = t;
        e.Task = class {
            constructor(e) {
                this.mTaskId = void 0, this.mSubTasks = new Map, this.mTaskId = e
            }

            createItem(e) {
                let n = this.getItem(e);
                return n || (n = new t(e), this.mSubTasks.set(e, n)), n
            }

            deleteItem(e) {
                this.mSubTasks.delete(e)
            }

            getItem(e) {
                return this.mSubTasks.get(e)
            }

            setItemData(e, t) {
                this.createItem(e).itemData = t, this.save(e).catch()
            }

            load() {
                return i(this, void 0, void 0, function* () {
                    let e = yield a.getTaskIndexs(this.mTaskId);
                    for (let t of e) this.setItemData(t)
                })
            }

            save(e) {
                return i(this, void 0, void 0, function* () {
                    (yield a.isTaskExist(this.mTaskId, e)) || (yield a.setUserData(this.mTaskId, e))
                })
            }

            clear(e) {
                this.mSubTasks.clear(), e && a.removeTask(this.mTaskId, -2).catch()
            }
        }
    }(t.OfflineTaskCacheNS || (t.OfflineTaskCacheNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(29), a = n(1).default.getLogger("Thunder.VipDownload.aes-crypto");
    !function (e) {
        e.encryptString = function (e, t, n = "utf8", o = "hex") {
            let r = void 0;
            try {
                let s = i.createCipheriv("aes-128-ecb", t, "");
                r = s.update(e, n, o) + s.final(o)
            } catch (e) {
                a.error("encryptString", e)
            }
            return r
        }, e.decryptString = function (e, t, n = "hex", o = "utf8") {
            let r = void 0;
            try {
                let s = i.createDecipheriv("aes-128-ecb", t, "");
                r = s.update(e, n, o) + s.final(o)
            } catch (e) {
                a.error("decryptString", e)
            }
            return r
        }
    }(t.AesCryptoNS || (t.AesCryptoNS = {}))
}, function (e, t) {
    e.exports = require("querystring")
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(111), o = n(649), r = n(702), s = n(704), l = n(236), u = n(5), d = n(110), c = n(186), h = n(48),
        f = n(1).default.getLogger("Thunder.VipDownload.vip-task"), p = d.DkHelperNS.getHelper(),
        g = c.ConfigHelperNS.getHelper();
    t.VipTask = class extends o.VipTaskBase {
        constructor() {
            super(...arguments), this.mTokenTimer = null, this.mCache = new s.VipTaskCacheNS.Task(this.taskId)
        }

        get vipTaskType() {
            return a.VipDownloadDefineNS.VipTaskType.Vip
        }

        get enableKuaiNiao() {
            return !1
        }

        get error() {
            return this.mCache.error
        }

        init() {
            this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.Init
        }

        enter() {
            this.vipTaskStatus === a.VipDownloadDefineNS.VipTaskStatus.Init && (this.mCache.enter().catch(), this.task.getTaskStatus() === u.DownloadKernel.TaskStatus.Started ? this.commit() : this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped)
        }

        exit() {
            this.unAcclerate()
        }

        remove() {
            this.unAcclerate(!0)
        }

        onCidGcidRetrieved(e) {
            let t = this.task.getTaskBase();
            if (!t) return;
            let n = this.task.getTaskStatus(), i = this.vipTaskStatus;
            n === u.DownloadKernel.TaskStatus.Started && i !== a.VipDownloadDefineNS.VipTaskStatus.Init && (t.taskType === u.DownloadKernel.TaskType.Bt ? 0 === this.mCache.itemCount && this.commit([e]) : this.mCache.getItem(e) || this.commit([e]))
        }

        onTaskStatusChanged(e) {
            if (this.vipTaskStatus !== a.VipDownloadDefineNS.VipTaskStatus.Init) switch (e) {
                case u.DownloadKernel.TaskStatus.Started:
                    this.commit();
                    break;
                case u.DownloadKernel.TaskStatus.Stopped:
                    this.unAcclerate(), this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped
            }
        }

        onTaskDcdnStatusChanged(e, t, n) {
            let i = this.task.getTaskStatus(), o = this.vipTaskStatus;
            if (i === u.DownloadKernel.TaskStatus.Started && o >= a.VipDownloadDefineNS.VipTaskStatus.AcclerateWait) switch (t) {
                case u.DownloadKernel.DcdnStatusCode.Unkown:
                    break;
                case u.DownloadKernel.DcdnStatusCode.Success:
                    this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.Acclerating;
                    break;
                case u.DownloadKernel.DcdnStatusCode.AuthorizingFailed:
                    if (!n) {
                        let t = null;
                        t = e > 0 ? [e] : this.mCache.itemIds, this.commit(t)
                    }
                    break;
                case u.DownloadKernel.DcdnStatusCode.ResourceNotFound:
                    this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.SearchResource;
                    break;
                default:
                    let i = this.createDcdnError(t);
                    this.mCache.error = i, this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.AcclerateFailed
            }
        }

        onSubTaskStatusChanged(e, t) {
            let n = this.task.getTaskBase();
            if (!n) return;
            let i = this.task.getTaskStatus(), o = this.vipTaskStatus;
            i === u.DownloadKernel.TaskStatus.Started && o !== a.VipDownloadDefineNS.VipTaskStatus.Init && (n.taskType === u.DownloadKernel.TaskType.Bt && t === u.DownloadKernel.BtFileStatus.Started ? 0 === this.mCache.itemCount && this.commit([e]) : n.taskType === u.DownloadKernel.TaskType.Group && t === u.DownloadKernel.TaskStatus.Started && (this.mCache.getItem(e) || this.commit([e])))
        }

        clear(e) {
            this.killTokenTimer(), this.mCache.clear(e)
        }

        commit(e) {
            f.information("commit"), this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.CommitWait;
            let t = this.task.getTaskBase();
            if (!t) return null;
            let n = this.task.getDownloadingFiles(e);
            f.information("downloadingFiles", n);
            let i = [];
            for (let e of n) if (e.gcid && "" !== e.gcid && e.cid && "" !== e.cid && (i.push(e), this.mCache.createItem(e.subId), t.taskType === u.DownloadKernel.TaskType.Bt)) break;
            if (i.length > 0) {
                let e = void 0, n = void 0;
                if (t.taskType === u.DownloadKernel.TaskType.Bt) {
                    let i = this.task.getTaskDetail();
                    if (!i) return;
                    e = t.taskName, n = i.infoId
                }
                let o = {taskType: t.taskType, files: i, btTitle: e, infoId: n};
                this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.Commiting, (new r.VipTaskHttpSession).queyToken(o).then(e => {
                    this.onTokenCallback(e)
                }).catch()
            }
        }

        onTokenCallback(e) {
            let t = this.vipTaskStatus, n = this.task.getTaskStatus();
            if (t !== a.VipDownloadDefineNS.VipTaskStatus.Init && n === u.DownloadKernel.TaskStatus.Started) {
                let t = [], n = void 0, i = null;
                for (let a of e) {
                    let e = a.subId;
                    0 === a.result ? (t.push(e), n = a.expire) : (i = a).errorStep = l.HttpDefineNS.ErrorStep.Token, this.mCache.setItemData(e, a)
                }
                t.length > 0 ? this.acclerate(t) : i && (this.mCache.error = i, this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.CommitFailed), this.createTokenTimer(n)
            }
        }

        createTokenTimer(e) {
            if (!this.mTokenTimer) {
                f.information("--\x3ecreateTokenTimer");
                let t = void 0, n = h.PluginHelperNS.getHelper().currentTime;
                if (e) {
                    let i = g.getValue("VipDownload", "TokenExpireAdvanceSecond");
                    t = e - n - i, f.information("expire", e, "current", n);
                    let a = g.getValue("VipDownload", "TokenExpireMinSecond");
                    t = Math.max(a, t), f.information("advance", i, "min", a)
                }
                f.information("timeout", t), t && (t *= 1e3, this.mTokenTimer = setTimeout(() => i(this, void 0, void 0, function* () {
                    f.information("onTokenTimer");
                    let e = this.mCache.itemIds;
                    this.commit(e), this.mTokenTimer = null
                }), t)), f.information("<--createTokenTimer")
            }
        }

        killTokenTimer() {
            this.mTokenTimer && (clearTimeout(this.mTokenTimer), this.mTokenTimer = null)
        }

        acclerate(e) {
            this.vipTaskStatus = a.VipDownloadDefineNS.VipTaskStatus.AcclerateWait;
            let t = this.task.getDcdnStatus();
            for (let t of e) {
                let e = this.mCache.getItem(t);
                if (e && e.itemData) {
                    let n = this.taskId, i = this.task.getTaskBase();
                    i && i.taskType === u.DownloadKernel.TaskType.Group && (n = t), e.active ? (f.information("updateDcdnWithVipCert", "taskId", n), p.updateDcdnWithVipCert(n, e.itemData.token)) : (f.information("enableDcdnWithVipCert", "taskId", n), e.active = !0, p.enableDcdnWithVipCert(n, e.itemData.token))
                }
            }
            void 0 !== t && null !== t && this.onTaskDcdnStatusChanged(-1, t, !0)
        }

        unAcclerate(e) {
            this.clear(e);
            let t = this.vipTaskStatus;
            t !== a.VipDownloadDefineNS.VipTaskStatus.AcclerateWait && t !== a.VipDownloadDefineNS.VipTaskStatus.Acclerating || (f.information("disableDcdnWithVipCert"), p.disableDcdnWithVipCert(this.taskId))
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(235), o = n(109), r = n(703), s = n(59), l = n(236), u = n(48),
        d = n(1).default.getLogger("Thunder.VipDownload"), c = s.UserHelperNS.getHelper();

    class h extends o.HttpSession {
        constructor() {
            super(...arguments), this.mGcidTaskMap = new Map
        }

        queyToken(e) {
            return i(this, void 0, void 0, function* () {
                let t = ++h.sequence, n = c.userId, i = yield c.getSessionId(),
                    o = u.PluginHelperNS.getHelper().currentTime, s = a.HttpJsonCryptoNS.getUriParam(t, o, 0);
                return this.host = "speed.auth.vip.xunlei.com", this.retries = 2, this.timeout = 2e4, this.path = "/speed/speedup?" + s, this.auth = a.HttpJsonCryptoNS.getAuthorization(n, i), this.accept = a.HttpJsonCryptoNS.getAccept(), e.userId = n, e.random = o, this.mGcidTaskMap.clear(), this.body = yield r.VipTaskHttpPackageNS.createTokenBuffer(e, this.mGcidTaskMap), yield this.postTokenRequest(e)
            })
        }

        postTokenRequest(e) {
            return new Promise(t => {
                this.post(n => {
                    let i = [];
                    if (c.userId === e.userId) {
                        let t = n.headers["random-num"];
                        d.information("random", t);
                        let a = null, o = l.HttpErrorNS.errorOk;
                        if (200 === n.statusCode) if (n.body && t) {
                            let i = Number(t).valueOf();
                            a = r.VipTaskHttpPackageNS.praseTokenBuffer(e.userId, i, n.body)
                        } else o = l.HttpErrorNS.errorData; else o = l.HttpErrorNS.errorStatusCode;
                        i = this.createTokenResponse(o, e, a)
                    }
                    t(i)
                }, n => {
                    d.information("error", n);
                    let i = [];
                    c.userId === e.userId && (i = this.createTokenResponse(l.HttpErrorNS.errorConnect, e)), t(i)
                })
            })
        }

        createTokenResponse(e, t, n) {
            let i = [];
            if (e === l.HttpErrorNS.errorOk) if (n && 0 === n.result && n.task_infos) for (let e of n.task_infos) {
                let t = this.getSubIdByGcid(e.gcid);
                if (void 0 !== t) {
                    let n = {
                        subId: t,
                        result: e.result,
                        message: e.message,
                        detailMessage: e.simple_msg,
                        token: e.token,
                        expire: e.expire
                    };
                    i.push(n)
                }
            } else for (let e of t.files) {
                let t = {subId: e.subId, result: n.result, message: n.message};
                i.push(t)
            } else for (let n of t.files) {
                let t = {subId: n.subId, result: e, message: l.HttpErrorNS.getMessage(e)};
                i.push(t)
            }
            return i
        }

        getSubIdByGcid(e) {
            return this.mGcidTaskMap.get(e)
        }
    }

    h.sequence = 0, t.VipTaskHttpSession = h
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(235), o = n(110), r = n(1).default.getLogger("Thunder.VipDownload"), s = o.DkHelperNS.getHelper();
    !function (e) {
        e.createTokenBuffer = function (e, t) {
            return i(this, void 0, void 0, function* () {
                r.information("--\x3ecreateTokenBuffer");
                let n = [];
                for (let i of e.files) {
                    let a = {
                        url: i.url,
                        filename: i.fileName,
                        gcid: i.gcid,
                        cid: i.cid,
                        filesize: i.fileSize,
                        refer_url: i.refUrl,
                        cookies: "",
                        file_index: 2 === e.taskType ? i.subId : void 0
                    };
                    n.push(a), t.set(i.gcid, i.subId)
                }
                let i = {peer_id: yield s.getTpPeerId(), infohash: e.infoId, bt_title: e.btTitle, task_infos: n},
                    o = a.HttpJsonCryptoNS.getAesKey(e.userId, e.random),
                    l = a.HttpJsonCryptoNS.encryptHttpBuffer(i, o);
                return r.information("<--createTokenBuffer"), l
            })
        }, e.praseTokenBuffer = function (e, t, n) {
            r.information("--\x3epraseTokenBuffer");
            let i = a.HttpJsonCryptoNS.getAesKey(e, t), o = a.HttpJsonCryptoNS.decryptHttpBuffer(n, i);
            return r.information("<--praseTokenBuffer"), o
        }
    }(t.VipTaskHttpPackageNS || (t.VipTaskHttpPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(650), o = n(1).default.getLogger("Thunder.VipDownload"), r = a.VipTaskDataBaseNS.getTable();
    !function (e) {
        class t {
            constructor(e) {
                this.mSubId = e
            }

            get subId() {
                return this.mSubId
            }

            set active(e) {
                this.mActive = e
            }

            get active() {
                return this.mActive
            }

            set itemData(e) {
                this.mData = e
            }

            get itemData() {
                return this.mData
            }
        }

        e.SubTask = t;
        e.Task = class {
            constructor(e) {
                this.mTaskId = void 0, this.mSubTasks = new Map, this.mError = null, this.mTaskId = e
            }

            enter() {
                return i(this, void 0, void 0, function* () {
                    (yield r.isTaskExist(this.mTaskId, -1)) || r.setUserData(this.mTaskId, -1).catch()
                })
            }

            createItem(e) {
                if (!this.getItem(e)) {
                    let n = new t(e);
                    this.mSubTasks.set(e, n)
                }
            }

            deleteItem(e) {
                this.mSubTasks.delete(e)
            }

            getItem(e) {
                return this.mSubTasks.get(e)
            }

            setItemData(e, t) {
                let n = this.getItem(e);
                n && (n.itemData = t)
            }

            get itemIds() {
                let e = [];
                return this.mSubTasks.forEach(function (t, n) {
                    o.information("value", t, "key", n), e.push(n)
                }), e
            }

            get itemCount() {
                return this.mSubTasks.size
            }

            set error(e) {
                e && (this.mError = e)
            }

            get error() {
                return this.mError
            }

            clear(e) {
                this.mSubTasks.clear(), this.error = null, e && r.removeTask(this.mTaskId, -2).catch()
            }
        }
    }(t.VipTaskCacheNS || (t.VipTaskCacheNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(109), o = n(11), r = n(1).default.getLogger("Thunder.VipDownload.file-download");
    !function (e) {
        e.downloadFile = function (e, t) {
            return i(this, void 0, void 0, function* () {
                let n = !1;
                r.information("downloadFile", "downloadUrl", e, "savePath", t);
                let s = yield function (e) {
                    return i(this, void 0, void 0, function* () {
                        let t = new Promise(t => {
                            let n = new a.HttpSession;
                            n.url = e, n.get(e => {
                                let n = null;
                                200 === e.statusCode && e.body && (n = e.body), t(n)
                            }, e => {
                                r.information("error", e), t(null)
                            })
                        });
                        return t
                    })
                }(e);
                return s && (n = yield o.FileSystemAWNS.writeFileAW(t, s)), n
            })
        }
    }(t.FileDownloadNS || (t.FileDownloadNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(11), o = n(1).default.getLogger("Thunder.VipDownload.config");
    t.Config = class {
        constructor() {
            this.configData = {}
        }

        init() {
            this.configData = {
                VipDownload: {
                    TokenExpireAdvanceSecond: 300,
                    TokenExpireMinSecond: 20,
                    EnableTryMinSize: 209715200,
                    EnableTryMaxProgress: 40,
                    TryInterval: 1800,
                    TryMaxProgress: 20,
                    TryMaxSize: 1073741824,
                    TryFailDispearDelay: 5,
                    TryFinishDispearDelay: 1800,
                    TryFinishClickDispearDelay: 180,
                    EnableSuperTryMinSize: 524288e3,
                    EnableSuperTryMaxProgress: 50,
                    SuperTryFinishDispearDelay: 5,
                    SceneChangeInterval: 10
                }, KuaiNiao: {KuaiNiaoPortalPort: 81, KuaiNiaoHeartBeatInterval: 300, KuaiNiaoHeartBeatLoseMaxCount: 2}
            }
        }

        getValue(e, t) {
            let n = void 0;
            do {
                if (!e || "" === e) break;
                if (!t || "" === t) break;
                let i = this.configData[e];
                if (!i) break;
                n = i[t]
            } while (0);
            return n
        }

        loadFile(e) {
            return i(this, void 0, void 0, function* () {
                let t = yield a.FileSystemAWNS.existsAW(e);
                if (t) {
                    t = !1;
                    let n = yield a.FileSystemAWNS.readFileAW(e);
                    if (n) {
                        let e = null;
                        try {
                            (e = JSON.parse(n.toString())) && (t = !0)
                        } catch (e) {
                            o.warning(e)
                        }
                        this.mergeConfigData(e)
                    }
                }
                return t
            })
        }

        printConfigData() {
            o.information("configData", this.configData)
        }

        mergeConfigData(e) {
            if (e) if (null === this.configData) this.configData = e; else for (let t in e) {
                let n = e[t];
                if (!n) break;
                for (let e in n) {
                    let i = n[e], a = this.configData[t];
                    if (a) a[e] = i; else {
                        let n = {};
                        n[e] = i, this.configData[t] = n
                    }
                }
            }
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(111), a = n(649), o = n(651), r = n(507), s = n(110), l = n(5), u = n(236), d = n(186), c = n(220),
        h = n(59), f = n(48), p = n(221), g = n(1).default.getLogger("Thunder.VipDownload.try-task"),
        k = s.DkHelperNS.getHelper(), m = r.TryTaskCacheNS.getCacheManager(), T = d.ConfigHelperNS.getHelper(),
        v = c.KuainiaoManagerNS.getManager(), w = h.UserHelperNS.getHelper();
    t.TryTask = class extends a.VipTaskBase {
        constructor() {
            super(...arguments), this.mTryTimer = null, this.mTryFinishTimer = null, this.mIsExit = !1, this.mRemainTime = void 0, this.mRemainSize = void 0, this.mStartSize = void 0, this.mTrySize = void 0
        }

        get vipTaskType() {
            return i.VipDownloadDefineNS.VipTaskType.Try
        }

        get tryType() {
            let e = i.VipDownloadDefineNS.TryType.PlatinumVip;
            return this.cache && (e = this.cache.type), e
        }

        get enableKuaiNiao() {
            return this.tryType === i.VipDownloadDefineNS.TryType.SuperVip
        }

        get error() {
            let e = null;
            return this.cache && (e = this.cache.error), e
        }

        init() {
            this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.Init
        }

        enter() {
            this.checkExitVip(), this.task.getTaskStatus() === l.DownloadKernel.TaskStatus.Started ? this.commit() : this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped, this.mTrySize = this.getTrySize(), g.information("mTrySize", this.mTrySize), this.mRemainSize = this.mTrySize, this.updateDetail(), this.kuaiNiaoAcclerate()
        }

        exit() {
            this.unAcclerate(), this.clear(), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.Unkown
        }

        remove() {
            this.clear(), m.removeTask(this.taskId, !0)
        }

        setFinishClickDispearDelay() {
            if (this.tryType === i.VipDownloadDefineNS.TryType.PlatinumVip) {
                let e = T.getValue("VipDownload", "TryFinishClickDispearDelay");
                this.killTryFinishTimer(), this.createTryFinishTimer(e)
            }
        }

        onCidGcidRetrieved(e) {
        }

        onTaskStatusChanged(e) {
            g.information("onTaskStatusChanged", e);
            let t = this.vipTaskStatus;
            if (g.information("vipTaskStatus", t), t > i.VipDownloadDefineNS.VipTaskStatus.Init && t < i.VipDownloadDefineNS.VipTaskStatus.Finished) switch (e) {
                case l.DownloadKernel.TaskStatus.Started:
                    this.commit();
                    break;
                case l.DownloadKernel.TaskStatus.Stopped:
                    this.unAcclerate(), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.AcclerateStoped
            }
        }

        onTaskDcdnStatusChanged(e, t, n) {
            let a = this.task.getTaskStatus(), o = this.vipTaskStatus;
            if (!this.mIsExit && a === l.DownloadKernel.TaskStatus.Started && o >= i.VipDownloadDefineNS.VipTaskStatus.AcclerateWait && o < i.VipDownloadDefineNS.VipTaskStatus.Finished) switch (t) {
                case l.DownloadKernel.DcdnStatusCode.Unkown:
                    break;
                case l.DownloadKernel.DcdnStatusCode.Success:
                    this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.Acclerating, this.createTryTimer();
                    break;
                case l.DownloadKernel.DcdnStatusCode.AuthorizingFailed:
                    n || this.commit();
                    break;
                default:
                    let e = this.createDcdnError(t);
                    this.cache && (this.cache.error = e), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.AcclerateFailed, this.createTryFailTimer()
            }
        }

        onSubTaskStatusChanged(e, t) {
        }

        clear() {
            this.killTryTimer(), this.killTryFinishTimer(), this.mIsExit = !0, m.removeTaskId(this.taskId)
        }

        commit() {
            if (g.information("commit"), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.Commiting, !this.cache) return;
            if (this.cache.trialVerify) return void this.queryToken();
            let e = this.task.getFile(this.cache.subId);
            if (!e) return;
            let t = {trialKey: this.cache.trialKey, file: e};
            (new o.TryTaskHttpSession).commit(t).then(e => {
                this.onCommitCallback(e)
            }).catch()
        }

        onCommitCallback(e) {
            if (g.information("onCommitCallback"), !this.mIsExit && e) if (m.setCommitData(this.taskId, e), 0 === e.result) this.task.getTaskStatus() === l.DownloadKernel.TaskStatus.Started && this.queryToken(); else {
                let t = e;
                t.errorStep = u.HttpDefineNS.ErrorStep.Commit, this.cache && (this.cache.error = t), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.CommitFailed, this.createTryFailTimer()
            }
        }

        queryToken() {
            if (g.information("queryToken"), !this.cache) return;
            let e = this.task.getTaskBase(), t = this.task.getFile(this.cache.subId);
            if (!e || !t) return;
            let n = void 0, i = void 0;
            if (e.taskType === l.DownloadKernel.TaskType.Bt) {
                let t = this.task.getTaskDetail();
                if (!t) return;
                n = e.taskName, i = t.infoId
            }
            let a = {verify: this.cache.trialVerify, file: t, taskType: e.taskType, btTitle: n, infohash: i};
            (new o.TryTaskHttpSession).queyToken(a).then(e => {
                this.onTokenCallback(e)
            }).catch()
        }

        onTokenCallback(e) {
            if (g.information("onTokenCallback"), !this.mIsExit && e) if (m.setTokenData(this.taskId, e), 0 === e.result) this.task.getTaskStatus() === l.DownloadKernel.TaskStatus.Started && this.acclerate(); else {
                let t = e;
                t.errorStep = u.HttpDefineNS.ErrorStep.Token, this.cache && (this.cache.error = t), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.CommitFailed, this.createTryFailTimer()
            }
        }

        acclerate() {
            if (this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.AcclerateWait, !this.cache) return;
            let e = this.task.getDcdnStatus();
            this.cache.active ? (g.information("updateDcdnWithVipCert"), k.updateDcdnWithVipCert(this.taskId, this.cache.token)) : (g.information("enableDcdnWithVipCert"), this.cache.active = !0, k.enableDcdnWithVipCert(this.taskId, this.cache.token)), void 0 !== e && null !== e && this.onTaskDcdnStatusChanged(-1, e, !0)
        }

        unAcclerate() {
            this.cache && (this.cache.active = !1);
            let e = this.vipTaskStatus;
            e !== i.VipDownloadDefineNS.VipTaskStatus.AcclerateWait && e !== i.VipDownloadDefineNS.VipTaskStatus.Acclerating || (g.information("disableDcdnWithVipCert"), k.disableDcdnWithVipCert(this.taskId))
        }

        checkEnterVip() {
            if (this.tryType === i.VipDownloadDefineNS.TryType.SuperVip) {
                let e = this.task.getTaskStatus();
                w.isVip && e === l.DownloadKernel.TaskStatus.Started && this.task.getTaskExtra().enterAcclerate(i.VipDownloadDefineNS.VipTaskType.Vip)
            }
        }

        checkExitVip() {
            this.tryType === i.VipDownloadDefineNS.TryType.SuperVip && this.task.getTaskExtra().exitAcclerate(i.VipDownloadDefineNS.VipTaskType.Vip)
        }

        finish() {
            g.information("finish"), this.killTryTimer();
            let e = void 0;
            e = this.tryType === i.VipDownloadDefineNS.TryType.SuperVip ? T.getValue("VipDownload", "SuperTryFinishDispearDelay") : T.getValue("VipDownload", "TryFinishDispearDelay"), this.createTryFinishTimer(e), this.unAcclerate(), this.vipTaskStatus = i.VipDownloadDefineNS.VipTaskStatus.Finished, this.checkEnterVip()
        }

        kuaiNiaoAcclerate() {
            this.enableKuaiNiao && v.triggerTry().catch()
        }

        get cache() {
            return m.getTask(this.taskId)
        }

        createTryTimer() {
            if (!this.mTryTimer) {
                if (g.information("createTryTimer"), !this.cache || void 0 === this.cache.maxTime) return void g.information("cache.maxTime not exist!");
                let e = this.task.getTaskBase();
                if (!e || void 0 === e.receiveSize) return void g.information("taskBase.receiveSize not exist!");
                this.mRemainTime = this.cache.maxTime, this.mStartSize = e.receiveSize, g.information("mStartSize", this.mStartSize), this.mTryTimer = setInterval(() => {
                    this.onTryTimer()
                }, 1e3)
            }
        }

        onTryTimer() {
            this.mRemainTime -= 1;
            let e = this.task.getTaskBase();
            if (e && e.receiveSize) {
                g.information("receiveSize", e.receiveSize);
                let t = e.receiveSize - this.mStartSize;
                this.mRemainSize = this.mTrySize - t
            }
            g.information("mRemainSize", this.mRemainSize), g.information("mRemainTime", this.mRemainTime), this.mRemainSize <= 0 && (this.mRemainSize = 0, this.mRemainTime = 0), this.updateDetail(), this.mRemainTime <= 0 && this.finish();
            let t = T.getValue("VipDownload", "TokenExpireAdvanceSecond"), n = f.PluginHelperNS.getHelper().currentTime;
            this.vipTaskStatus === i.VipDownloadDefineNS.VipTaskStatus.Acclerating && this.cache && this.cache.tokenExpire - t < n && this.commit()
        }

        killTryTimer() {
            this.mTryTimer && (g.information("killTryTimer"), clearInterval(this.mTryTimer), this.mTryTimer = void 0)
        }

        createTryFinishTimer(e) {
            this.mTryFinishTimer || (g.information("createTryFinishTimer"), this.mTryFinishTimer = setTimeout(() => {
                this.task.getTaskExtra().exitAcclerate(this.vipTaskType), this.killTryFinishTimer()
            }, 1e3 * e))
        }

        killTryFinishTimer() {
            this.mTryFinishTimer && (g.information("killTryFinishTimer"), clearTimeout(this.mTryFinishTimer), this.mTryFinishTimer = void 0)
        }

        createTryFailTimer() {
            let e = T.getValue("VipDownload", "TryFailDispearDelay");
            this.createTryFinishTimer(e)
        }

        getTrySize() {
            let e = 0, t = this.task.getTaskBase();
            if (!t || !t.fileSize) return e;
            if (!this.cache || void 0 === this.cache.subId) return e;
            const n = T.getValue("VipDownload", "TryMaxProgress"), i = T.getValue("VipDownload", "TryMaxSize");
            return e = Math.floor(t.fileSize * n / 100), e = Math.min(e, i)
        }

        updateDetail() {
            let e = this.mTrySize ? 1 - this.mRemainSize / this.mTrySize : 0,
                t = {remainSize: this.mRemainSize, progress: e};
            p.TaskEventContainerNS.getEventContainer().onEvent(p.TaskEventNS.taskTryDetailChanged, this.taskId, t)
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(235), o = n(111), r = n(110), s = n(1).default.getLogger("Thunder.VipDownload"),
        l = r.DkHelperNS.getHelper();
    !function (e) {
        e.createQueryBuffer = function (e) {
            return i(this, void 0, void 0, function* () {
                s.information("--\x3ecreateQueryBuffer");
                let t = {
                    peer_id: yield l.getTpPeerId(),
                    bt_title: e.btTitle,
                    url: e.file.url,
                    filename: e.file.fileName,
                    gcid: e.file.gcid,
                    cid: e.file.cid,
                    filesize: e.file.fileSize
                }, n = a.HttpJsonCryptoNS.getAesKey(e.userId, e.random), i = a.HttpJsonCryptoNS.encryptHttpBuffer(t, n);
                return s.information("<--createQueryBuffer"), i
            })
        }, e.praseQueryBuffer = function (e, t, n) {
            s.information("--\x3epraseQueryBuffer");
            let i = a.HttpJsonCryptoNS.getAesKey(e, t), r = a.HttpJsonCryptoNS.decryptHttpBuffer(n, i);
            if (!r) return null;
            let l = void 0;
            l = 1 === r.speed_type ? o.VipDownloadDefineNS.TryType.SuperVip : o.VipDownloadDefineNS.TryType.PlatinumVip, l = o.VipDownloadDefineNS.TryType.PlatinumVip;
            let u = {
                result: r.result,
                message: r.message,
                trialKey: r.trial_key,
                expireTime: r.trial_refresh_time,
                leftCount: r.trial_left_times,
                type: l
            };
            return s.information("<--praseQueryBuffer"), u
        }, e.createCommitBuffer = function (e) {
            return i(this, void 0, void 0, function* () {
                s.information("--\x3ecreateCommitBuffer");
                let t = {
                    peer_id: yield l.getTpPeerId(),
                    url: e.file.url,
                    filename: e.file.fileName,
                    gcid: e.file.gcid,
                    cid: e.file.cid,
                    filesize: e.file.fileSize,
                    trial_key: e.trialKey
                }, n = a.HttpJsonCryptoNS.getAesKey(e.userId, e.random), i = a.HttpJsonCryptoNS.encryptHttpBuffer(t, n);
                return s.information("<--createCommitBuffer"), i
            })
        }, e.praseCommitBuffer = function (e, t, n) {
            s.information("--\x3epraseCommitBuffer");
            let i = a.HttpJsonCryptoNS.getAesKey(e, t), o = a.HttpJsonCryptoNS.decryptHttpBuffer(n, i);
            if (!o) return null;
            let r = {result: o.result, message: o.message, verify: o.trial_verify_info};
            return s.information("<--praseCommitBuffer"), r
        }, e.createTokenBuffer = function (e) {
            return i(this, void 0, void 0, function* () {
                s.information("--\x3ecreateTokenBuffer");
                let t = {
                        url: e.file.url,
                        filename: e.file.fileName,
                        gcid: e.file.gcid,
                        cid: e.file.cid,
                        filesize: e.file.fileSize,
                        refer_url: e.file.refUrl,
                        cookies: "",
                        file_index: 2 === e.taskType ? e.file.subId : void 0
                    }, n = {peer_id: yield l.getTpPeerId(), infohash: e.infohash, bt_title: e.btTitle, task_infos: [t]},
                    i = a.HttpJsonCryptoNS.getAesKey(e.userId, e.random),
                    o = a.HttpJsonCryptoNS.encryptHttpBuffer(n, i);
                return s.information("<--createTokenBuffer"), o
            })
        }, e.praseTokenBuffer = function (e, t, n) {
            s.information("--\x3epraseTokenBuffer");
            let i = a.HttpJsonCryptoNS.getAesKey(e, t), o = a.HttpJsonCryptoNS.decryptHttpBuffer(n, i);
            if (!o) return null;
            if (0 !== o.result) return {result: o.result, message: o.message};
            let r = o.task_infos;
            if (!r) return null;
            let l = r[0];
            if (!l) return null;
            let u = {
                result: l.result,
                message: l.message,
                detailMessage: l.simple_msg,
                gcid: l.gcid,
                token: l.token,
                expire: l.expirem,
                maxTime: o.speed_duration
            };
            return s.information("<--praseTokenBuffer"), u
        }
    }(t.TryTaskHttpPackageNS || (t.TryTaskHttpPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    t.TaskCache = class {
        constructor() {
            this.mSelectId = void 0, this.mTrialKey = void 0, this.mTrialVerify = void 0, this.mExpireTime = void 0, this.mCreateTime = void 0, this.mToken = void 0, this.mTokenExpire = void 0, this.mMaxTime = void 0, this.mActive = !1, this.mError = null, this.mCommited = !1
        }

        get subId() {
            return this.mSelectId
        }

        set subId(e) {
            this.mSelectId = e
        }

        set type(e) {
            this.mType = e
        }

        get type() {
            return this.mType
        }

        set trialKey(e) {
            this.mTrialKey = e
        }

        get trialKey() {
            return this.mTrialKey
        }

        set expireTime(e) {
            this.mExpireTime = e
        }

        get expireTime() {
            return this.mExpireTime
        }

        set createTime(e) {
            this.mCreateTime = e
        }

        get createTime() {
            return this.mCreateTime
        }

        set trialVerify(e) {
            this.mTrialVerify = e
        }

        get trialVerify() {
            return this.mTrialVerify
        }

        set token(e) {
            this.mToken = e
        }

        get token() {
            return this.mToken
        }

        set tokenExpire(e) {
            this.mTokenExpire = e
        }

        get tokenExpire() {
            return this.mTokenExpire
        }

        set maxTime(e) {
            this.mMaxTime = e
        }

        get maxTime() {
            return this.mMaxTime
        }

        set commited(e) {
            this.mCommited = e
        }

        get commited() {
            return this.mCommited
        }

        set active(e) {
            this.mActive = e
        }

        get active() {
            return this.mActive
        }

        set error(e) {
            e && (this.mError = e)
        }

        get error() {
            return this.mError
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(109), o = n(711), r = n(59), s = n(48), l = n(186), u = n(1).default.getLogger("Thunder.KuaiNiao"),
        d = s.PluginHelperNS.getHelper(), c = r.UserHelperNS.getHelper(), h = l.ConfigHelperNS.getHelper();

    class f extends a.HttpSession {
        queryPortal() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => i(this, void 0, void 0, function* () {
                    this.host = "api.portal.swjsq.vip.xunlei.com", this.retries = 1, this.port = h.getValue("KuaiNiao", "KuaiNiaoPortalPort"), this.path = "/v2/queryportal", this.timeout = 1e4;
                    let t = yield this.getPortalRequest();
                    t || (this.host = "api2.portal.swjsq.vip.xunlei.com", this.retries = 0, t = yield this.getPortalRequest()), e(t)
                }))
            })
        }

        queryBand(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => i(this, void 0, void 0, function* () {
                    let n = ++f.sequence;
                    this.host = e.ip, this.port = Number(e.port).valueOf();
                    let a = yield c.getPeerId(), o = c.userId;
                    this.path = `/v2/bandwidth?sequence=${n}&peerid=${a}&userid=${o}&client_type=${this.clientType}&client_version=${this.clientVersion}&os=${this.osVersion}`, this.retries = 0, this.timeout = 15e3;
                    let r = void 0, s = yield this.getBandRequest();
                    if (s) switch (s.result) {
                        case 0:
                        case 520:
                            break;
                        case 711:
                            r = 1e4;
                            break;
                        default:
                            r = 3e3
                    } else r = 3e3;
                    r ? setTimeout(() => i(this, void 0, void 0, function* () {
                        s = yield this.getBandRequest(), t(s)
                    }), r) : t(s)
                }))
            })
        }

        speedUp(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => i(this, void 0, void 0, function* () {
                    let n = ++f.sequence;
                    this.host = e.host.ip, this.port = Number(e.host.port).valueOf();
                    let a = yield c.getPeerId(), o = e.userId, r = e.sessionId;
                    this.path = `/v2/upgrade?sequence=${n}&peerid=${a}&userid=${o}&sessionid=${r}&user_type=${e.speedType}&dial_account=${e.dialAccount}&client_type=${this.clientType}&client_version=${this.clientVersion}&os=${this.osVersion}`, this.retries = 0, this.timeout = 15e3;
                    let s = void 0, l = yield this.getSpeedUpRequest();
                    if (l) switch (l.result) {
                        case 711:
                            s = 1e4
                    } else s = 3e3;
                    s ? setTimeout(() => i(this, void 0, void 0, function* () {
                        l = yield this.getSpeedUpRequest(), t(l)
                    }), s) : t(l)
                }))
            })
        }

        speedDown(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => i(this, void 0, void 0, function* () {
                    let n = ++f.sequence;
                    this.host = e.host.ip, this.port = Number(e.host.port).valueOf();
                    let i = yield c.getPeerId(), a = e.userId, o = e.sessionId;
                    this.path = `/v2/recover?sequence=${n}&peerid=${i}&userid=${a}&sessionid=${o}&user_type=${e.speedType}&dial_account=${e.dialAccount}&client_type=${this.clientType}&client_version=${this.clientVersion}&os=${this.osVersion}`, this.retries = 0, this.timeout = 1e4;
                    let r = !0, s = yield this.getSpeedDownRequest();
                    if (s) switch (s.result) {
                        case 0:
                        case 520:
                        case 513:
                        case 518:
                        case 700:
                            r = !1
                    }
                    r && (s = yield this.getSpeedDownRequest()), t(s)
                }))
            })
        }

        heartBeat(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => i(this, void 0, void 0, function* () {
                    let n = ++f.sequence;
                    this.host = e.host.ip, this.port = Number(e.host.port).valueOf();
                    let i = yield c.getPeerId(), a = c.userId, o = yield c.getSessionId();
                    this.path = `/v2/keepalive?sequence=${n}&peerid=${i}&userid=${a}&sessionid=${o}&dial_account=${e.dialAccount}&client_type=${this.clientType}&client_version=${this.clientVersion}&os=${this.osVersion}`, this.retries = 0, this.timeout = 1e4;
                    let r = yield this.getHeartBeatRequest();
                    t(r)
                }))
            })
        }

        queryTry(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => i(this, void 0, void 0, function* () {
                    let n = ++f.sequence;
                    this.host = e.host.ip, this.port = Number(e.host.port).valueOf();
                    let a = yield c.getPeerId(), o = c.userId, r = yield c.getSessionId();
                    this.path = `/v2/query_try_info?sequence=${n}&peerid=${a}&userid=${o}&sessionid=${r}&upspeed=0&dial_account=${e.dialAccount}&client_type=${this.clientType}&client_version=${this.clientVersion}&os=${this.osVersion}`, this.retries = 0, this.timeout = 1e4;
                    let s = void 0, l = yield this.getTryRequest();
                    if (l) switch (l.result) {
                        case 0:
                        case 508:
                        case 520:
                        case 715:
                        case 717:
                        case 718:
                            break;
                        default:
                            s = 3e3
                    } else s = 3e3;
                    s ? setTimeout(() => i(this, void 0, void 0, function* () {
                        l = yield this.getTryRequest(), t(l)
                    }), s) : t(l)
                }))
            })
        }

        getPortalRequest() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.get(t => {
                        let n = null;
                        200 === t.statusCode && t.body && (n = o.KuainiaoHttpPackageNS.prasePortalBuffer(t.body)), e(n)
                    }, t => {
                        u.information("error", t), e(null)
                    })
                })
            })
        }

        getBandRequest() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.get(t => {
                        let n = null;
                        200 === t.statusCode && t.body && (n = o.KuainiaoHttpPackageNS.praseBandBuffer(t.body)), e(n)
                    }, t => {
                        u.information("error", t), e(null)
                    })
                })
            })
        }

        getSpeedUpRequest() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.get(t => {
                        let n = null;
                        200 === t.statusCode && t.body && (n = o.KuainiaoHttpPackageNS.praseSpeedUpBuffer(t.body)), e(n)
                    }, t => {
                        u.information("error", t), e(null)
                    })
                })
            })
        }

        getSpeedDownRequest() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.get(t => {
                        let n = null;
                        200 === t.statusCode && t.body && (n = o.KuainiaoHttpPackageNS.praseSpeedDownBuffer(t.body)), e(n)
                    }, t => {
                        u.information("error", t), e(null)
                    })
                })
            })
        }

        getHeartBeatRequest() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.get(t => {
                        let n = null;
                        200 === t.statusCode && t.body && (n = o.KuainiaoHttpPackageNS.praseHeartBeatBuffer(t.body)), e(n)
                    }, t => {
                        u.information("error", t), e(null)
                    })
                })
            })
        }

        getTryRequest() {
            return i(this, void 0, void 0, function* () {
                return new Promise(e => {
                    this.get(t => {
                        let n = null;
                        200 === t.statusCode && t.body && (n = o.KuainiaoHttpPackageNS.praseTryBuffer(t.body)), e(n)
                    }, t => {
                        u.information("error", t), e(null)
                    })
                })
            })
        }

        get clientType() {
            return "pc-xlxknplugin-" + d.thunderVersionString
        }

        get clientVersion() {
            return "xlxkn-" + d.thunderVersionString
        }

        get osVersion() {
            return "1.0"
        }
    }

    f.sequence = 0, t.KuainiaoHttpSession = f
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1).default.getLogger("Thunder.KuaiNiao");
    !function (e) {
        e.prasePortalBuffer = function (e) {
            i.information("--\x3eprasePortalBuffer");
            let t = e.toString();
            i.information("jsonStr", t);
            let n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                i.warning(e)
            }
            if (!n) return null;
            let a = {
                result: n.errno,
                message: n.message,
                province: n.province,
                provinceName: n.province_name,
                sp: n.sp,
                spName: n.sp_name,
                serverIp: n.interface_ip,
                serverPort: n.interface_port
            };
            return i.information("<--prasePortalBuffer"), a
        }, e.praseBandBuffer = function (e) {
            i.information("--\x3epraseBandBuffer");
            let t = e.toString();
            i.information("jsonStr", t);
            let n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                i.warning(e)
            }
            if (!n) return null;
            let a = {
                result: n.errno,
                message: n.message,
                province: n.province,
                provinceName: n.province_name,
                sp: n.sp,
                spName: n.sp_name,
                canUpgrade: n.can_upgrade,
                dialAccount: n.dial_account,
                bandWidth: n.bandwidth,
                maxBandWidth: n.max_bandwidth
            };
            return i.information("<--praseBandBuffer"), a
        }, e.praseSpeedUpBuffer = function (e) {
            i.information("--\x3epraseSpeedUpBuffer");
            let t = e.toString();
            i.information("jsonStr", t);
            let n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                i.warning(e)
            }
            if (!n) return null;
            let a = {
                result: n.errno,
                message: n.message,
                province: n.province,
                provinceName: n.province_name,
                sp: n.sp,
                spName: n.sp_name,
                dialAccount: n.dial_account,
                bandWidth: n.bandwidth,
                timeStamp: n.timestamp
            };
            return i.information("<--praseSpeedUpBuffer"), a
        }, e.praseSpeedDownBuffer = function (e) {
            i.information("--\x3epraseSpeedDownBuffer");
            let t = e.toString();
            i.information("jsonStr", t);
            let n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                i.warning(e)
            }
            if (!n) return null;
            let a = {
                result: n.errno,
                message: n.message,
                province: n.province,
                provinceName: n.province_name,
                sp: n.sp,
                spName: n.sp_name,
                dialAccount: n.dial_account,
                bandWidth: n.bandwidth,
                timeStamp: n.timestamp
            };
            return i.information("<--praseSpeedDownBuffer"), a
        }, e.praseHeartBeatBuffer = function (e) {
            i.information("--\x3epraseHeartBeatBuffer");
            let t = e.toString();
            i.information("jsonStr", t);
            let n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                i.warning(e)
            }
            if (!n) return null;
            let a = {
                result: n.errno,
                message: n.message,
                timeStamp: n.timestamp,
                userId: n.userid,
                peerId: n.peerid,
                clientType: n.client_type,
                hasSpeedTime: n.has_speedup_time
            };
            return i.information("<--praseHeartBeatBuffer"), a
        }, e.praseTryBuffer = function (e) {
            i.information("--\x3epraseTryBuffer");
            let t = e.toString();
            i.information("jsonStr", t);
            let n = null;
            try {
                n = JSON.parse(t)
            } catch (e) {
                i.warning(e)
            }
            if (!n) return null;
            let a = {
                result: n.errno,
                message: n.message,
                timeStamp: n.timestamp,
                leftCount: n.number_of_try,
                duration: n.try_duration
            };
            return i.information("<--praseTryBuffer"), a
        }
    }(t.KuainiaoHttpPackageNS || (t.KuainiaoHttpPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(48), a = n(1).default.getLogger("Thunder.VipDownload.ui-helper"), o = i.PluginHelperNS.getHelper();

    class r {
        init() {
        }

        showLoginDialog() {
        }

        openTab(e) {
            o.nativeCall && o.nativeCall.CallNativeFunction("openNewTab", e, e => {
                a.information("errorCode", e)
            })
        }
    }

    t.UIHelper = r, function (e) {
        const t = new r;
        e.getHelper = function () {
            return t
        }
    }(t.UIHelperNS || (t.UIHelperNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(714), o = n(59), r = n(110), s = n(716), l = n(186), u = n(48), d = n(54),
        c = n(1).default.getLogger("Thunder.VipDownload.task-scene"), h = r.DkHelperNS.getHelper(),
        f = l.ConfigHelperNS.getHelper();
    var p;
    !function (e) {
        e.taskSceneChanged = "OnTaskSceneChanged"
    }(p = t.SceneEventNS || (t.SceneEventNS = {}));

    class g extends d.default {
        constructor() {
            super(), this.mSelectTaskId = void 0, this.mRefreshTime = void 0, this.mSession = null, this.mCacheManager = null, this.mSession = new a.SceneHttpSession, this.mCacheManager = s.SceneCacheNS.getCacheManager(), this.setMaxListeners(0)
        }

        init() {
            o.UserHelperNS.getHelper().attachListener(o.UserEventNS.authorityChanged, e => {
                c.information("authority", e), this.clear(), this.mSelectTaskId && this.activeTask(this.mSelectTaskId)
            }), setInterval(() => {
                this.refresh()
            }, 5e3), this.attachDkEvents()
        }

        getScene(e) {
            let t = this.mCacheManager.getTask(e);
            return t ? t.getItem() : null
        }

        onTaskExpand(e) {
            this.mSelectTaskId !== e && (this.mSelectTaskId = e, this.activeTask(e))
        }

        onTaskUnExpand(e) {
            this.mSelectTaskId === e && (this.mSelectTaskId = void 0, this.mRefreshTime = void 0)
        }

        onClickScene(e) {
            this.changeToNextScene(e)
        }

        attachDkEvents() {
            h.attachListener(r.DkEventNS.taskCompleted, e => {
                this.onTaskCompleted(e)
            }), h.attachListener(r.DkEventNS.taskRemoved, e => {
                this.onTaskRemoved(e)
            })
        }

        clear() {
            this.mSession.clear(), this.mCacheManager.clear()
        }

        refresh() {
            let e = f.getValue("VipDownload", "SceneChangeInterval"), t = this.mSelectTaskId, n = this.mRefreshTime,
                i = u.PluginHelperNS.getHelper().currentTime;
            t && n && i - n >= e && this.changeToNextScene(t)
        }

        activeTask(e) {
            this.mCacheManager.getTask(e) ? this.changeToNextScene(e) : this.mSession.queryTask(e, t => i(this, void 0, void 0, function* () {
                t && (yield this.mCacheManager.createTask(e, t), this.changeToNextScene(e))
            }))
        }

        changeToNextScene(e) {
            if (this.mSelectTaskId === e) {
                c.information("changeToNextScene", e);
                let t = this.mCacheManager.getTask(e);
                if (t) {
                    let n = t.getItem();
                    n && (this.fireEvent(p.taskSceneChanged, e, n), c.information("item.text", n.text)), t.next()
                }
                this.mRefreshTime = u.PluginHelperNS.getHelper().currentTime
            }
        }

        onTaskRemoved(e) {
            this.removeTask(e)
        }

        onTaskCompleted(e) {
            this.removeTask(e)
        }

        removeTask(e) {
            this.mCacheManager.deleteTask(e), this.mSession.removeTask(e), this.mSelectTaskId === e && (this.mSelectTaskId = void 0, this.mRefreshTime = void 0)
        }
    }

    t.SceneManager = g, function (e) {
        const t = new g;
        e.getSceneManager = function () {
            return t
        }
    }(t.TaskSceneManagerNS || (t.TaskSceneManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(109), o = n(715), r = n(59), s = n(1).default.getLogger("Thunder.VipDownload.task-scene");
    t.SceneHttpSession = class extends a.HttpSession {
        constructor() {
            super(), this.mMapDoneTaskids = new Map, this.mListWaitTasks = [], this.mIsQuerying = !1
        }

        clear() {
            this.mMapDoneTaskids.clear(), this.mListWaitTasks = []
        }

        removeTask(e) {
            this.mMapDoneTaskids.delete(e)
        }

        queryTask(e, t) {
            this.mMapDoneTaskids.get(e) ? s.information("taskId already query!") : (this.mMapDoneTaskids.set(e, e), this.mListWaitTasks.push({
                taskId: e,
                callback: t
            }), this.queryNext().catch())
        }

        queryNext() {
            return i(this, void 0, void 0, function* () {
                if (!this.mIsQuerying && this.mListWaitTasks.length > 0) {
                    let e = this.mListWaitTasks[0], t = e.taskId, n = e.callback;
                    this.mListWaitTasks.splice(0, 1);
                    let i = -1, a = {peerId: yield r.UserHelperNS.getHelper().getPeerId(), taskId: t, subId: i};
                    this.mIsQuerying = !0, n(yield this.query(a)), this.mIsQuerying = !1, this.queryNext().catch()
                }
            })
        }

        query(e) {
            return i(this, void 0, void 0, function* () {
                return new Promise(t => {
                    this.host = "scene.vip.xunlei.com", this.port = 8e3, this.retries = 1, this.timeout = 15e3, this.body = o.SceneHttpPackageNS.createSceneBuffer(e), this.post(e => {
                        let n = null;
                        200 === e.statusCode && e.body && e.body.length > 12 && (n = o.SceneHttpPackageNS.praseSceneBuffer(e.body)), t(n)
                    }, e => {
                        s.information("error", e), t(null)
                    })
                })
            })
        }
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(231), a = n(232), o = n(48), r = n(59), s = n(1).default.getLogger("Thunder.VipDownload.task-scene");
    !function (e) {
        let t = 0;

        class n {
        }

        e.ItemData = n, e.createSceneBuffer = function (e) {
            s.information("--\x3ecreateSceneBuffer");
            let n = 0, l = Buffer.alloc(1024);
            n = l.writeUInt32LE(11, n), s.information("    protocolVersion:", 11), n = l.writeUInt32LE(++t, n), s.information("    sequence:", t), n = l.writeUInt32LE(0, n), s.information("    commandLegth:", 0);
            let u = o.PluginHelperNS.getHelper().thunderVersionNumber;
            n = l.writeUInt32LE(u, n), s.information("    thunderVersion:", u), n = l.writeUInt16LE(256, n), s.information("    compressFlag:", 256), n = l.writeUInt16LE(1, n), s.information("    commandType:", 1);
            let d = r.UserHelperNS.getHelper(), c = Number(d.userId).valueOf();
            n = a.BufferUtilitiesNS.writeUInt64LE(l, c, n), s.information("    userId:", c);
            let h = d.vipLevel;
            n = l.writeInt8(h, n), s.information("    vipLevel:", h);
            let f = d.userLevel;
            n = l.writeUInt32LE(f, n), s.information("    userLevel:", f);
            let p = e.peerId;
            return n = a.BufferUtilitiesNS.writeString(l, p, n, "gbk"), s.information("    peerId:", p), n = a.BufferUtilitiesNS.writeString(l, "", n, "gbk"), s.information("    taskUrl:", ""), n = a.BufferUtilitiesNS.writeString(l, "", n, "gbk"), s.information("    referUrl:", ""), n = a.BufferUtilitiesNS.writeString(l, "", n, "gbk"), s.information("    gcid:", ""), n = a.BufferUtilitiesNS.writeString(l, "", n, "gbk"), s.information("    cid:", ""), n = a.BufferUtilitiesNS.writeUInt64LE(l, 0, n), s.information("    fileSize:", 0), n = a.BufferUtilitiesNS.writeString(l, "", n, "gbk"), s.information("    taskName:", ""), n = l.writeUInt32LE(0, n), s.information("    netStatus:", 0), n = a.BufferUtilitiesNS.writeUInt64LE(l, 0, n), s.information("    taskSpeed:", 0), n = a.BufferUtilitiesNS.writeUInt64LE(l, 0, n), s.information("    totalSpeed:", 0), n = a.BufferUtilitiesNS.writeUInt64LE(l, 0, n), s.information("    speedLimit:", 0), n = l.writeUInt32LE(0, n), s.information("    downloadingCount:", 0), n = l.writeUInt32LE(0, n), s.information("    resourceCount:", 0), n = l.writeUInt32LE(0, n), s.information("    downloadMode:", 0), n = l.writeUInt32LE(2, n), s.information("    queryType:", 2), n = l.writeUInt32LE(0, n), s.information("    ipProvince:", 0), n = l.writeUInt32LE(0, n), s.information("    ipCity:", 0), n = l.writeUInt32LE(0, n), s.information("    ipIsp:", 0), n = l.writeUInt32LE(0, n), s.information("    privilege:", 0), n = l.writeUInt32LE(0, n), s.information("    subNum:", 0), l = l.slice(0, n), l = i.ShubCryptoNS.encryptHttpBuffer(l), s.information("<--createSceneBuffer"), l
        }, e.praseSceneBuffer = function (e) {
            s.information("--\x3epraseSceneBuffer");
            let t = null;
            try {
                e = i.ShubCryptoNS.decryptHttpBuffer(e);
                let o = 0, r = e.readUInt32LE(o);
                s.information("    protocolVersion:", r), o += 4;
                let l = e.readUInt32LE(o);
                s.information("    sequence:", l), o += 4;
                let u = e.readUInt32LE(o);
                s.information("    commandLegth:", u), o += 4;
                let d = e.readUInt32LE(o);
                s.information("    thunderVersion:", d), o += 4;
                let c = e.readUInt16LE(o);
                s.information("    compressFlag:", c), o += 2;
                let h = e.readUInt16LE(o);
                s.information("    commandType:", h), o += 2;
                let f = e.readUInt32LE(o);
                s.information("    result:", f), o += 4;
                let p = a.BufferUtilitiesNS.readString(e, o, "gbk"), g = p[1];
                s.information("    key:", g), o = p[0];
                let k = e.readUInt32LE(o);
                s.information("    queryAgain:", k), o += 4;
                let m = e.readUInt32LE(o);
                s.information("    tryListNum:", m), o += 4;
                for (let t = 0; t < m; t++) {
                    s.information("");
                    let n = e.readUInt32LE(o);
                    s.information("      index", t, "size:", n), o += 4, o += n
                }
                let T = [], v = e.readUInt32LE(o);
                s.information("    sceneListNum:", v), o += 4;
                for (let t = 0; t < v; t++) {
                    s.information("");
                    let i = e.readUInt32LE(o);
                    s.information("      index", t, "size:", i), o += 4;
                    let r = new n, l = o;
                    r.id = e.readUInt32LE(l), s.information("      id:", r.id), l += 4, r.type = e.readUInt32LE(l), s.information("      type:", r.type), l += 4;
                    let u = a.BufferUtilitiesNS.readString(e, l, "gbk");
                    r.name = u[1], s.information("      name:", r.name), l = u[0], r.status = e.readInt32LE(l), s.information("      status:", r.status), l += 4;
                    let d = e.readUInt32LE(l);
                    s.information("      scoped:", d), l += 4, r.priority = e.readUInt32LE(l), s.information("      priority:", r.priority), l += 4;
                    let c = (u = a.BufferUtilitiesNS.readString(e, l, "gbk"))[1];
                    s.information("      clickStr:", c), l = u[0], u = a.BufferUtilitiesNS.readString(e, l, "gbk"), r.lineStr = u[1], s.information("      lineStr:", r.lineStr), l = u[0];
                    let h = (u = a.BufferUtilitiesNS.readString(e, l, "gbk"))[1];
                    s.information("      tipsStr:", h), l = u[0];
                    let f = e.readUInt32LE(l);
                    s.information("      indate:", f), l += 4;
                    let p = (u = a.BufferUtilitiesNS.readString(e, l, "gbk"))[1];
                    s.information("      matchStr:", p), l = u[0];
                    let g = (u = a.BufferUtilitiesNS.readString(e, l, "gbk"))[1];
                    s.information("      showStr:", g), l = u[0], T.push(r), o += i
                }
                t = {itemDatas: T}
            } catch (e) {
                s.error("praseSceneBuffer", e)
            }
            return s.information("<--praseSceneBuffer"), t
        }
    }(t.SceneHttpPackageNS || (t.SceneHttpPackageNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(717);

    class o {
        constructor() {
            this.mTasks = new Map
        }

        createTask(e, t) {
            return i(this, void 0, void 0, function* () {
                let n = this.getTask(e);
                return n || (yield(n = new a.TaskCache).setData(t), this.mTasks.set(e, n)), n
            })
        }

        deleteTask(e) {
            this.mTasks.delete(e)
        }

        getTask(e) {
            return this.mTasks.get(e)
        }

        clear() {
            this.mTasks.clear()
        }
    }

    t.SceneCacheManager = o, function (e) {
        const t = new o;
        e.getCacheManager = function () {
            return t
        }
    }(t.SceneCacheNS || (t.SceneCacheNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(652), o = n(7).promisify, r = n(1).default.getLogger("Thunder.VipDownload.task-scene");
    t.TaskCache = class {
        constructor() {
            this.mItems = [], this.mCursor = 0
        }

        next() {
            this.mCursor += 1
        }

        getItem() {
            let e = this.mItems.length;
            if (e > 0) {
                let t = this.mCursor % e;
                return this.mItems[t]
            }
            return null
        }

        setData(e) {
            return i(this, void 0, void 0, function* () {
                let t = yield this.parseData(e);
                this.mItems = t
            })
        }

        parseData(e) {
            return i(this, void 0, void 0, function* () {
                let t = [];
                for (let n of e.itemDatas) if (-1 === n.status) {
                    let e = {explicitArray: !1}, i = yield o(a.parseString)(n.lineStr, e);
                    if (!i || !i.scene || !i.scene.element) {
                        r.information("scene elements is null");
                        continue
                    }
                    let s = i.scene.element;
                    if (!(s instanceof Array)) {
                        r.information("scene elements is not array");
                        continue
                    }
                    let l = {id: n.id, priority: n.priority}, u = void 0, d = void 0;
                    for (let e of s) e.text && "" !== e.text && (u = e.text, e.code && "" !== e.code && (d = this.parseUrl(e.code)));
                    u && "" !== u && (l.text = u, l.textlink = d, t.push(l))
                }
                return t
            })
        }

        parseUrl(e) {
            let t = void 0, n = e.indexOf('GenerateJumpKey("');
            if (n < 0 || n >= e.length) return t;
            n += 17;
            let i = e.indexOf('")', n);
            return i <= n || i >= e.length ? t : t = e.substring(n, i)
        }
    }
}, function (e, t, n) {
    (function () {
        "use strict";
        var e, i, a, o, r, s = {}.hasOwnProperty;
        e = n(719), i = n(509).defaults, o = function (e) {
            return "string" == typeof e && (e.indexOf("&") >= 0 || e.indexOf(">") >= 0 || e.indexOf("<") >= 0)
        }, r = function (e) {
            return "<![CDATA[" + a(e) + "]]>"
        }, a = function (e) {
            return e.replace("]]>", "]]]]><![CDATA[>")
        }, t.Builder = function () {
            function t(e) {
                var t, n, a;
                for (t in this.options = {}, n = i[.2]) s.call(n, t) && (a = n[t], this.options[t] = a);
                for (t in e) s.call(e, t) && (a = e[t], this.options[t] = a)
            }

            return t.prototype.buildObject = function (t) {
                var n, a, l, u, d, c;
                return n = this.options.attrkey, a = this.options.charkey, 1 === Object.keys(t).length && this.options.rootName === i[.2].rootName ? t = t[d = Object.keys(t)[0]] : d = this.options.rootName, c = this, l = function (e, t) {
                    var i, u, d, h, f, p;
                    if ("object" != typeof t) c.options.cdata && o(t) ? e.raw(r(t)) : e.txt(t); else if (Array.isArray(t)) {
                        for (h in t) if (s.call(t, h)) for (f in u = t[h]) d = u[f], e = l(e.ele(f), d).up()
                    } else for (f in t) if (s.call(t, f)) if (u = t[f], f === n) {
                        if ("object" == typeof u) for (i in u) p = u[i], e = e.att(i, p)
                    } else if (f === a) e = c.options.cdata && o(u) ? e.raw(r(u)) : e.txt(u); else if (Array.isArray(u)) for (h in u) s.call(u, h) && (e = "string" == typeof(d = u[h]) ? c.options.cdata && o(d) ? e.ele(f).raw(r(d)).up() : e.ele(f, d).up() : l(e.ele(f), d).up()); else "object" == typeof u ? e = l(e.ele(f), u).up() : "string" == typeof u && c.options.cdata && o(u) ? e = e.ele(f).raw(r(u)).up() : (null == u && (u = ""), e = e.ele(f, u.toString()).up());
                    return e
                }, u = e.create(d, this.options.xmldec, this.options.doctype, {
                    headless: this.options.headless,
                    allowSurrogateChars: this.options.allowSurrogateChars
                }), l(u, t).end(this.options.renderOpts)
            }, t
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s, l;
        l = n(160), r = l.assign, s = l.isFunction, t = n(720), i = n(721), o = n(510), a = n(722), e.exports.create = function (e, n, i, a) {
            var o, s;
            if (null == e) throw new Error("Root element needs a name");
            return a = r({}, n, i, a), s = (o = new t(a)).element(e), a.headless || (o.declaration(a), null == a.pubID && null == a.sysID || o.doctype(a)), s
        }, e.exports.begin = function (e, n, a) {
            var o;
            return s(e) && (n = (o = [e, n])[0], a = o[1], e = {}), n ? new i(e, n, a) : new t(e)
        }, e.exports.stringWriter = function (e) {
            return new o(e)
        }, e.exports.streamWriter = function (e, t) {
            return new a(e, t)
        }
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r = {}.hasOwnProperty;
        o = n(160).isPlainObject, t = n(73), a = n(654), i = n(510), e.exports = function (e) {
            function n(e) {
                n.__super__.constructor.call(this, null), e || (e = {}), e.writer || (e.writer = new i), this.options = e, this.stringify = new a(e), this.isDocument = !0
            }

            return function (e, t) {
                for (var n in t) r.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, t), n.prototype.end = function (e) {
                var t;
                return e ? o(e) && (t = e, e = this.options.writer.set(t)) : e = this.options.writer, e.document(this)
            }, n.prototype.toString = function (e) {
                return this.options.writer.set(e).document(this)
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s, l, u, d, c, h, f, p, g, k, m, T, v, w, y = {}.hasOwnProperty;
        w = n(160), T = w.isObject, m = w.isFunction, v = w.isPlainObject, c = n(261), i = n(262), a = n(263), f = n(270), k = n(271), h = n(272), u = n(264), d = n(265), o = n(266), s = n(267), r = n(268), l = n(269), t = n(653), g = n(654), p = n(510), e.exports = function () {
            function e(e, t, n) {
                var i;
                e || (e = {}), e.writer ? v(e.writer) && (i = e.writer, e.writer = new p(i)) : e.writer = new p(e), this.options = e, this.writer = e.writer, this.stringify = new g(e), this.onDataCallback = t || function () {
                }, this.onEndCallback = n || function () {
                }, this.currentNode = null, this.currentLevel = -1, this.openTags = {}, this.documentStarted = !1, this.documentCompleted = !1, this.root = null
            }

            return e.prototype.node = function (e, t, n) {
                var i;
                if (null == e) throw new Error("Missing node name");
                if (this.root && -1 === this.currentLevel) throw new Error("Document can only have one root node");
                return this.openCurrent(), e = e.valueOf(), null == t && (t = {}), t = t.valueOf(), T(t) || (n = (i = [t, n])[0], t = i[1]), this.currentNode = new c(this, e, t), this.currentNode.children = !1, this.currentLevel++, this.openTags[this.currentLevel] = this.currentNode, null != n && this.text(n), this
            }, e.prototype.element = function (e, t, n) {
                return this.currentNode && this.currentNode instanceof d ? this.dtdElement.apply(this, arguments) : this.node(e, t, n)
            }, e.prototype.attribute = function (e, n) {
                var i, a;
                if (!this.currentNode || this.currentNode.children) throw new Error("att() can only be used immediately after an ele() call in callback mode");
                if (null != e && (e = e.valueOf()), T(e)) for (i in e) y.call(e, i) && (a = e[i], this.attribute(i, a)); else m(n) && (n = n.apply()), this.options.skipNullAttributes && null == n || (this.currentNode.attributes[e] = new t(this, e, n));
                return this
            }, e.prototype.text = function (e) {
                var t;
                return this.openCurrent(), t = new k(this, e), this.onData(this.writer.text(t, this.currentLevel + 1)), this
            }, e.prototype.cdata = function (e) {
                var t;
                return this.openCurrent(), t = new i(this, e), this.onData(this.writer.cdata(t, this.currentLevel + 1)), this
            }, e.prototype.comment = function (e) {
                var t;
                return this.openCurrent(), t = new a(this, e), this.onData(this.writer.comment(t, this.currentLevel + 1)), this
            }, e.prototype.raw = function (e) {
                var t;
                return this.openCurrent(), t = new f(this, e), this.onData(this.writer.raw(t, this.currentLevel + 1)), this
            }, e.prototype.instruction = function (e, t) {
                var n, i, a, o, r;
                if (this.openCurrent(), null != e && (e = e.valueOf()), null != t && (t = t.valueOf()), Array.isArray(e)) for (n = 0, o = e.length; n < o; n++) i = e[n], this.instruction(i); else if (T(e)) for (i in e) y.call(e, i) && (a = e[i], this.instruction(i, a)); else m(t) && (t = t.apply()), r = new h(this, e, t), this.onData(this.writer.processingInstruction(r, this.currentLevel + 1));
                return this
            }, e.prototype.declaration = function (e, t, n) {
                var i;
                if (this.openCurrent(), this.documentStarted) throw new Error("declaration() must be the first node");
                return i = new u(this, e, t, n), this.onData(this.writer.declaration(i, this.currentLevel + 1)), this
            }, e.prototype.doctype = function (e, t, n) {
                if (this.openCurrent(), null == e) throw new Error("Missing root node name");
                if (this.root) throw new Error("dtd() must come before the root node");
                return this.currentNode = new d(this, t, n), this.currentNode.rootNodeName = e, this.currentNode.children = !1, this.currentLevel++, this.openTags[this.currentLevel] = this.currentNode, this
            }, e.prototype.dtdElement = function (e, t) {
                var n;
                return this.openCurrent(), n = new r(this, e, t), this.onData(this.writer.dtdElement(n, this.currentLevel + 1)), this
            }, e.prototype.attList = function (e, t, n, i, a) {
                var r;
                return this.openCurrent(), r = new o(this, e, t, n, i, a), this.onData(this.writer.dtdAttList(r, this.currentLevel + 1)), this
            }, e.prototype.entity = function (e, t) {
                var n;
                return this.openCurrent(), n = new s(this, !1, e, t), this.onData(this.writer.dtdEntity(n, this.currentLevel + 1)), this
            }, e.prototype.pEntity = function (e, t) {
                var n;
                return this.openCurrent(), n = new s(this, !0, e, t), this.onData(this.writer.dtdEntity(n, this.currentLevel + 1)), this
            }, e.prototype.notation = function (e, t) {
                var n;
                return this.openCurrent(), n = new l(this, e, t), this.onData(this.writer.dtdNotation(n, this.currentLevel + 1)), this
            }, e.prototype.up = function () {
                if (this.currentLevel < 0) throw new Error("The document node has no parent");
                return this.currentNode ? (this.currentNode.children ? this.closeNode(this.currentNode) : this.openNode(this.currentNode), this.currentNode = null) : this.closeNode(this.openTags[this.currentLevel]), delete this.openTags[this.currentLevel], this.currentLevel--, this
            }, e.prototype.end = function () {
                for (; this.currentLevel >= 0;) this.up();
                return this.onEnd()
            }, e.prototype.openCurrent = function () {
                if (this.currentNode) return this.currentNode.children = !0, this.openNode(this.currentNode)
            }, e.prototype.openNode = function (e) {
                if (!e.isOpen) return !this.root && 0 === this.currentLevel && e instanceof c && (this.root = e), this.onData(this.writer.openNode(e, this.currentLevel)), e.isOpen = !0
            }, e.prototype.closeNode = function (e) {
                if (!e.isClosed) return this.onData(this.writer.closeNode(e, this.currentLevel)), e.isClosed = !0
            }, e.prototype.onData = function (e) {
                return this.documentStarted = !0, this.onDataCallback(e)
            }, e.prototype.onEnd = function () {
                return this.documentCompleted = !0, this.onEndCallback()
            }, e.prototype.ele = function () {
                return this.element.apply(this, arguments)
            }, e.prototype.nod = function (e, t, n) {
                return this.node(e, t, n)
            }, e.prototype.txt = function (e) {
                return this.text(e)
            }, e.prototype.dat = function (e) {
                return this.cdata(e)
            }, e.prototype.com = function (e) {
                return this.comment(e)
            }, e.prototype.ins = function (e, t) {
                return this.instruction(e, t)
            }, e.prototype.dec = function (e, t, n) {
                return this.declaration(e, t, n)
            }, e.prototype.dtd = function (e, t, n) {
                return this.doctype(e, t, n)
            }, e.prototype.e = function (e, t, n) {
                return this.element(e, t, n)
            }, e.prototype.n = function (e, t, n) {
                return this.node(e, t, n)
            }, e.prototype.t = function (e) {
                return this.text(e)
            }, e.prototype.d = function (e) {
                return this.cdata(e)
            }, e.prototype.c = function (e) {
                return this.comment(e)
            }, e.prototype.r = function (e) {
                return this.raw(e)
            }, e.prototype.i = function (e, t) {
                return this.instruction(e, t)
            }, e.prototype.att = function () {
                return this.currentNode && this.currentNode instanceof d ? this.attList.apply(this, arguments) : this.attribute.apply(this, arguments)
            }, e.prototype.a = function () {
                return this.currentNode && this.currentNode instanceof d ? this.attList.apply(this, arguments) : this.attribute.apply(this, arguments)
            }, e.prototype.ent = function (e, t) {
                return this.entity(e, t)
            }, e.prototype.pent = function (e, t) {
                return this.pEntity(e, t)
            }, e.prototype.not = function (e, t) {
                return this.notation(e, t)
            }, e
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        var t, i, a, o, r, s, l, u, d, c, h, f, p, g = {}.hasOwnProperty;
        l = n(264), u = n(265), t = n(262), i = n(263), d = n(261), h = n(270), f = n(271), c = n(272), a = n(266), o = n(268), r = n(267), s = n(269), p = n(655), e.exports = function (e) {
            function n(e, t) {
                n.__super__.constructor.call(this, t), this.stream = e
            }

            return function (e, t) {
                for (var n in t) g.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(n, p), n.prototype.document = function (e) {
                var t, n, a, o, r, s, d, h;
                for (n = 0, o = (s = e.children).length; n < o; n++) (t = s[n]).isLastRootNode = !1;
                for (e.children[e.children.length - 1].isLastRootNode = !0, h = [], a = 0, r = (d = e.children).length; a < r; a++) switch (t = d[a], !1) {
                    case!(t instanceof l):
                        h.push(this.declaration(t));
                        break;
                    case!(t instanceof u):
                        h.push(this.docType(t));
                        break;
                    case!(t instanceof i):
                        h.push(this.comment(t));
                        break;
                    case!(t instanceof c):
                        h.push(this.processingInstruction(t));
                        break;
                    default:
                        h.push(this.element(t))
                }
                return h
            }, n.prototype.attribute = function (e) {
                return this.stream.write(" " + e.name + '="' + e.value + '"')
            }, n.prototype.cdata = function (e, t) {
                return this.stream.write(this.space(t) + "<![CDATA[" + e.text + "]]>" + this.endline(e))
            }, n.prototype.comment = function (e, t) {
                return this.stream.write(this.space(t) + "\x3c!-- " + e.text + " --\x3e" + this.endline(e))
            }, n.prototype.declaration = function (e, t) {
                return this.stream.write(this.space(t)), this.stream.write('<?xml version="' + e.version + '"'), null != e.encoding && this.stream.write(' encoding="' + e.encoding + '"'), null != e.standalone && this.stream.write(' standalone="' + e.standalone + '"'), this.stream.write(this.spacebeforeslash + "?>"), this.stream.write(this.endline(e))
            }, n.prototype.docType = function (e, n) {
                var l, u, d, h;
                if (n || (n = 0), this.stream.write(this.space(n)), this.stream.write("<!DOCTYPE " + e.root().name), e.pubID && e.sysID ? this.stream.write(' PUBLIC "' + e.pubID + '" "' + e.sysID + '"') : e.sysID && this.stream.write(' SYSTEM "' + e.sysID + '"'), e.children.length > 0) {
                    for (this.stream.write(" ["), this.stream.write(this.endline(e)), u = 0, d = (h = e.children).length; u < d; u++) switch (l = h[u], !1) {
                        case!(l instanceof a):
                            this.dtdAttList(l, n + 1);
                            break;
                        case!(l instanceof o):
                            this.dtdElement(l, n + 1);
                            break;
                        case!(l instanceof r):
                            this.dtdEntity(l, n + 1);
                            break;
                        case!(l instanceof s):
                            this.dtdNotation(l, n + 1);
                            break;
                        case!(l instanceof t):
                            this.cdata(l, n + 1);
                            break;
                        case!(l instanceof i):
                            this.comment(l, n + 1);
                            break;
                        case!(l instanceof c):
                            this.processingInstruction(l, n + 1);
                            break;
                        default:
                            throw new Error("Unknown DTD node type: " + l.constructor.name)
                    }
                    this.stream.write("]")
                }
                return this.stream.write(this.spacebeforeslash + ">"), this.stream.write(this.endline(e))
            }, n.prototype.element = function (e, n) {
                var a, o, r, s, l, u, p, k;
                for (l in n || (n = 0), k = this.space(n), this.stream.write(k + "<" + e.name), u = e.attributes) g.call(u, l) && (a = u[l], this.attribute(a));
                if (0 === e.children.length || e.children.every(function (e) {
                    return "" === e.value
                })) this.allowEmpty ? this.stream.write("></" + e.name + ">") : this.stream.write(this.spacebeforeslash + "/>"); else if (this.pretty && 1 === e.children.length && null != e.children[0].value) this.stream.write(">"), this.stream.write(e.children[0].value), this.stream.write("</" + e.name + ">"); else {
                    for (this.stream.write(">" + this.newline), r = 0, s = (p = e.children).length; r < s; r++) switch (o = p[r], !1) {
                        case!(o instanceof t):
                            this.cdata(o, n + 1);
                            break;
                        case!(o instanceof i):
                            this.comment(o, n + 1);
                            break;
                        case!(o instanceof d):
                            this.element(o, n + 1);
                            break;
                        case!(o instanceof h):
                            this.raw(o, n + 1);
                            break;
                        case!(o instanceof f):
                            this.text(o, n + 1);
                            break;
                        case!(o instanceof c):
                            this.processingInstruction(o, n + 1);
                            break;
                        default:
                            throw new Error("Unknown XML node type: " + o.constructor.name)
                    }
                    this.stream.write(k + "</" + e.name + ">")
                }
                return this.stream.write(this.endline(e))
            }, n.prototype.processingInstruction = function (e, t) {
                return this.stream.write(this.space(t) + "<?" + e.target), e.value && this.stream.write(" " + e.value), this.stream.write(this.spacebeforeslash + "?>" + this.endline(e))
            }, n.prototype.raw = function (e, t) {
                return this.stream.write(this.space(t) + e.value + this.endline(e))
            }, n.prototype.text = function (e, t) {
                return this.stream.write(this.space(t) + e.value + this.endline(e))
            }, n.prototype.dtdAttList = function (e, t) {
                return this.stream.write(this.space(t) + "<!ATTLIST " + e.elementName + " " + e.attributeName + " " + e.attributeType), "#DEFAULT" !== e.defaultValueType && this.stream.write(" " + e.defaultValueType), e.defaultValue && this.stream.write(' "' + e.defaultValue + '"'), this.stream.write(this.spacebeforeslash + ">" + this.endline(e))
            }, n.prototype.dtdElement = function (e, t) {
                return this.stream.write(this.space(t) + "<!ELEMENT " + e.name + " " + e.value), this.stream.write(this.spacebeforeslash + ">" + this.endline(e))
            }, n.prototype.dtdEntity = function (e, t) {
                return this.stream.write(this.space(t) + "<!ENTITY"), e.pe && this.stream.write(" %"), this.stream.write(" " + e.name), e.value ? this.stream.write(' "' + e.value + '"') : (e.pubID && e.sysID ? this.stream.write(' PUBLIC "' + e.pubID + '" "' + e.sysID + '"') : e.sysID && this.stream.write(' SYSTEM "' + e.sysID + '"'), e.nData && this.stream.write(" NDATA " + e.nData)), this.stream.write(this.spacebeforeslash + ">" + this.endline(e))
            }, n.prototype.dtdNotation = function (e, t) {
                return this.stream.write(this.space(t) + "<!NOTATION " + e.name), e.pubID && e.sysID ? this.stream.write(' PUBLIC "' + e.pubID + '" "' + e.sysID + '"') : e.pubID ? this.stream.write(' PUBLIC "' + e.pubID + '"') : e.sysID && this.stream.write(' SYSTEM "' + e.sysID + '"'), this.stream.write(this.spacebeforeslash + ">" + this.endline(e))
            }, n.prototype.endline = function (e) {
                return e.isLastRootNode ? "" : this.newline
            }, n
        }()
    }).call(this)
}, function (e, t, n) {
    (function () {
        "use strict";
        var e, i, a, o, r, s, l, u, d = function (e, t) {
            return function () {
                return e.apply(t, arguments)
            }
        }, c = {}.hasOwnProperty;
        l = n(724), a = n(36), e = n(725), s = n(656), u = n(726).setImmediate, i = n(509).defaults, o = function (e) {
            return "object" == typeof e && null != e && 0 === Object.keys(e).length
        }, r = function (e, t, n) {
            var i, a;
            for (i = 0, a = e.length; i < a; i++) t = (0, e[i])(t, n);
            return t
        }, t.Parser = function (n) {
            function h(e) {
                var n, a, o;
                if (this.parseString = d(this.parseString, this), this.reset = d(this.reset, this), this.assignOrPush = d(this.assignOrPush, this), this.processAsync = d(this.processAsync, this), !(this instanceof t.Parser)) return new t.Parser(e);
                for (n in this.options = {}, a = i[.2]) c.call(a, n) && (o = a[n], this.options[n] = o);
                for (n in e) c.call(e, n) && (o = e[n], this.options[n] = o);
                this.options.xmlns && (this.options.xmlnskey = this.options.attrkey + "ns"), this.options.normalizeTags && (this.options.tagNameProcessors || (this.options.tagNameProcessors = []), this.options.tagNameProcessors.unshift(s.normalize)), this.reset()
            }

            return function (e, t) {
                for (var n in t) c.call(t, n) && (e[n] = t[n]);

                function i() {
                    this.constructor = e
                }

                i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype
            }(h, a.EventEmitter), h.prototype.processAsync = function () {
                var e, t;
                try {
                    return this.remaining.length <= this.options.chunkSize ? (e = this.remaining, this.remaining = "", this.saxParser = this.saxParser.write(e), this.saxParser.close()) : (e = this.remaining.substr(0, this.options.chunkSize), this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length), this.saxParser = this.saxParser.write(e), u(this.processAsync))
                } catch (e) {
                    if (t = e, !this.saxParser.errThrown) return this.saxParser.errThrown = !0, this.emit(t)
                }
            }, h.prototype.assignOrPush = function (e, t, n) {
                return t in e ? (e[t] instanceof Array || (e[t] = [e[t]]), e[t].push(n)) : this.options.explicitArray ? e[t] = [n] : e[t] = n
            }, h.prototype.reset = function () {
                var e, t, n, i, a;
                return this.removeAllListeners(), this.saxParser = l.parser(this.options.strict, {
                    trim: !1,
                    normalize: !1,
                    xmlns: this.options.xmlns
                }), this.saxParser.errThrown = !1, this.saxParser.onerror = (a = this, function (e) {
                    if (a.saxParser.resume(), !a.saxParser.errThrown) return a.saxParser.errThrown = !0, a.emit("error", e)
                }), this.saxParser.onend = function (e) {
                    return function () {
                        if (!e.saxParser.ended) return e.saxParser.ended = !0, e.emit("end", e.resultObject)
                    }
                }(this), this.saxParser.ended = !1, this.EXPLICIT_CHARKEY = this.options.explicitCharkey, this.resultObject = null, i = [], e = this.options.attrkey, t = this.options.charkey, this.saxParser.onopentag = function (n) {
                    return function (a) {
                        var o, s, l, u, d;
                        if ((l = {})[t] = "", !n.options.ignoreAttrs) for (o in d = a.attributes) c.call(d, o) && (e in l || n.options.mergeAttrs || (l[e] = {}), s = n.options.attrValueProcessors ? r(n.options.attrValueProcessors, a.attributes[o], o) : a.attributes[o], u = n.options.attrNameProcessors ? r(n.options.attrNameProcessors, o) : o, n.options.mergeAttrs ? n.assignOrPush(l, u, s) : l[e][u] = s);
                        return l["#name"] = n.options.tagNameProcessors ? r(n.options.tagNameProcessors, a.name) : a.name, n.options.xmlns && (l[n.options.xmlnskey] = {
                            uri: a.uri,
                            local: a.local
                        }), i.push(l)
                    }
                }(this), this.saxParser.onclosetag = function (e) {
                    return function () {
                        var n, a, s, l, u, d, h, f, p, g;
                        if (d = i.pop(), u = d["#name"], e.options.explicitChildren && e.options.preserveChildrenOrder || delete d["#name"], !0 === d.cdata && (n = d.cdata, delete d.cdata), p = i[i.length - 1], d[t].match(/^\s*$/) && !n ? (a = d[t], delete d[t]) : (e.options.trim && (d[t] = d[t].trim()), e.options.normalize && (d[t] = d[t].replace(/\s{2,}/g, " ").trim()), d[t] = e.options.valueProcessors ? r(e.options.valueProcessors, d[t], u) : d[t], 1 === Object.keys(d).length && t in d && !e.EXPLICIT_CHARKEY && (d = d[t])), o(d) && (d = "" !== e.options.emptyTag ? e.options.emptyTag : a), null != e.options.validator && (g = "/" + function () {
                            var e, t, n;
                            for (n = [], e = 0, t = i.length; e < t; e++) l = i[e], n.push(l["#name"]);
                            return n
                        }().concat(u).join("/"), function () {
                            var t;
                            try {
                                d = e.options.validator(g, p && p[u], d)
                            } catch (n) {
                                return t = n, e.emit("error", t)
                            }
                        }()), e.options.explicitChildren && !e.options.mergeAttrs && "object" == typeof d) if (e.options.preserveChildrenOrder) {
                            if (p) {
                                for (s in p[e.options.childkey] = p[e.options.childkey] || [], h = {}, d) c.call(d, s) && (h[s] = d[s]);
                                p[e.options.childkey].push(h), delete d["#name"], 1 === Object.keys(d).length && t in d && !e.EXPLICIT_CHARKEY && (d = d[t])
                            }
                        } else l = {}, e.options.attrkey in d && (l[e.options.attrkey] = d[e.options.attrkey], delete d[e.options.attrkey]), !e.options.charsAsChildren && e.options.charkey in d && (l[e.options.charkey] = d[e.options.charkey], delete d[e.options.charkey]), Object.getOwnPropertyNames(d).length > 0 && (l[e.options.childkey] = d), d = l;
                        return i.length > 0 ? e.assignOrPush(p, u, d) : (e.options.explicitRoot && (f = d, (d = {})[u] = f), e.resultObject = d, e.saxParser.ended = !0, e.emit("end", e.resultObject))
                    }
                }(this), n = function (e) {
                    return function (n) {
                        var a, o;
                        if (o = i[i.length - 1]) return o[t] += n, e.options.explicitChildren && e.options.preserveChildrenOrder && e.options.charsAsChildren && (e.options.includeWhiteChars || "" !== n.replace(/\\n/g, "").trim()) && (o[e.options.childkey] = o[e.options.childkey] || [], (a = {"#name": "__text__"})[t] = n, e.options.normalize && (a[t] = a[t].replace(/\s{2,}/g, " ").trim()), o[e.options.childkey].push(a)), o
                    }
                }(this), this.saxParser.ontext = n, this.saxParser.oncdata = function (e) {
                    var t;
                    if (t = n(e)) return t.cdata = !0
                }
            }, h.prototype.parseString = function (t, n) {
                var i;
                null != n && "function" == typeof n && (this.on("end", function (e) {
                    return this.reset(), n(null, e)
                }), this.on("error", function (e) {
                    return this.reset(), n(e)
                }));
                try {
                    return "" === (t = t.toString()).trim() ? (this.emit("end", null), !0) : (t = e.stripBOM(t), this.options.async ? (this.remaining = t, u(this.processAsync), this.saxParser) : this.saxParser.write(t).close())
                } catch (e) {
                    if (i = e, !this.saxParser.errThrown && !this.saxParser.ended) return this.emit("error", i), this.saxParser.errThrown = !0;
                    if (this.saxParser.ended) throw i
                }
            }, h
        }(), t.parseString = function (e, n, i) {
            var a, o;
            return null != i ? ("function" == typeof i && (a = i), "object" == typeof n && (o = n)) : ("function" == typeof n && (a = n), o = {}), new t.Parser(o).parseString(e, a)
        }
    }).call(this)
}, function (e, t, n) {
    !function (e) {
        e.parser = function (e, t) {
            return new a(e, t)
        }, e.SAXParser = a, e.SAXStream = r, e.createStream = function (e, t) {
            return new r(e, t)
        }, e.MAX_BUFFER_LENGTH = 65536;
        var t,
            i = ["comment", "sgmlDecl", "textNode", "tagName", "doctype", "procInstName", "procInstBody", "entity", "attribName", "attribValue", "cdata", "script"];

        function a(t, n) {
            if (!(this instanceof a)) return new a(t, n);
            !function (e) {
                for (var t = 0, n = i.length; t < n; t++) e[i[t]] = ""
            }(this), this.q = this.c = "", this.bufferCheckPosition = e.MAX_BUFFER_LENGTH, this.opt = n || {}, this.opt.lowercase = this.opt.lowercase || this.opt.lowercasetags, this.looseCase = this.opt.lowercase ? "toLowerCase" : "toUpperCase", this.tags = [], this.closed = this.closedRoot = this.sawRoot = !1, this.tag = this.error = null, this.strict = !!t, this.noscript = !(!t && !this.opt.noscript), this.state = C.BEGIN, this.strictEntities = this.opt.strictEntities, this.ENTITIES = this.strictEntities ? Object.create(e.XML_ENTITIES) : Object.create(e.ENTITIES), this.attribList = [], this.opt.xmlns && (this.ns = Object.create(c)), this.trackPosition = !1 !== this.opt.position, this.trackPosition && (this.position = this.line = this.column = 0), N(this, "onready")
        }

        e.EVENTS = ["text", "processinginstruction", "sgmldeclaration", "doctype", "comment", "opentagstart", "attribute", "opentag", "closetag", "opencdata", "cdata", "closecdata", "error", "end", "ready", "script", "opennamespace", "closenamespace"], Object.create || (Object.create = function (e) {
            function t() {
            }

            return t.prototype = e, new t
        }), Object.keys || (Object.keys = function (e) {
            var t = [];
            for (var n in e) e.hasOwnProperty(n) && t.push(n);
            return t
        }), a.prototype = {
            end: function () {
                A(this)
            }, write: function (t) {
                if (this.error) throw this.error;
                if (this.closed) return E(this, "Cannot write after close. Assign an onready handler.");
                if (null === t) return A(this);
                "object" == typeof t && (t = t.toString());
                var n = 0, a = "";
                for (; a = V(t, n++), this.c = a, a;) switch (this.trackPosition && (this.position++, "\n" === a ? (this.line++, this.column = 0) : this.column++), this.state) {
                    case C.BEGIN:
                        if (this.state = C.BEGIN_WHITESPACE, "\ufeff" === a) continue;
                        K(this, a);
                        continue;
                    case C.BEGIN_WHITESPACE:
                        K(this, a);
                        continue;
                    case C.TEXT:
                        if (this.sawRoot && !this.closedRoot) {
                            for (var o = n - 1; a && "<" !== a && "&" !== a;) (a = V(t, n++)) && this.trackPosition && (this.position++, "\n" === a ? (this.line++, this.column = 0) : this.column++);
                            this.textNode += t.substring(o, n - 1)
                        }
                        "<" !== a || this.sawRoot && this.closedRoot && !this.strict ? (k(a) || this.sawRoot && !this.closedRoot || P(this, "Text data outside of root node."), "&" === a ? this.state = C.TEXT_ENTITY : this.textNode += a) : (this.state = C.OPEN_WAKA, this.startTagPosition = this.position);
                        continue;
                    case C.SCRIPT:
                        "<" === a ? this.state = C.SCRIPT_ENDING : this.script += a;
                        continue;
                    case C.SCRIPT_ENDING:
                        "/" === a ? this.state = C.CLOSE_TAG : (this.script += "<" + a, this.state = C.SCRIPT);
                        continue;
                    case C.OPEN_WAKA:
                        if ("!" === a) this.state = C.SGML_DECL, this.sgmlDecl = ""; else if (k(a)) ; else if (v(h, a)) this.state = C.OPEN_TAG, this.tagName = a; else if ("/" === a) this.state = C.CLOSE_TAG, this.tagName = ""; else if ("?" === a) this.state = C.PROC_INST, this.procInstName = this.procInstBody = ""; else {
                            if (P(this, "Unencoded <"), this.startTagPosition + 1 < this.position) {
                                var r = this.position - this.startTagPosition;
                                a = new Array(r).join(" ") + a
                            }
                            this.textNode += "<" + a, this.state = C.TEXT
                        }
                        continue;
                    case C.SGML_DECL:
                        (this.sgmlDecl + a).toUpperCase() === s ? (I(this, "onopencdata"), this.state = C.CDATA, this.sgmlDecl = "", this.cdata = "") : this.sgmlDecl + a === "--" ? (this.state = C.COMMENT, this.comment = "", this.sgmlDecl = "") : (this.sgmlDecl + a).toUpperCase() === l ? (this.state = C.DOCTYPE, (this.doctype || this.sawRoot) && P(this, "Inappropriately located doctype declaration"), this.doctype = "", this.sgmlDecl = "") : ">" === a ? (I(this, "onsgmldeclaration", this.sgmlDecl), this.sgmlDecl = "", this.state = C.TEXT) : m(a) ? (this.state = C.SGML_DECL_QUOTED, this.sgmlDecl += a) : this.sgmlDecl += a;
                        continue;
                    case C.SGML_DECL_QUOTED:
                        a === this.q && (this.state = C.SGML_DECL, this.q = ""), this.sgmlDecl += a;
                        continue;
                    case C.DOCTYPE:
                        ">" === a ? (this.state = C.TEXT, I(this, "ondoctype", this.doctype), this.doctype = !0) : (this.doctype += a, "[" === a ? this.state = C.DOCTYPE_DTD : m(a) && (this.state = C.DOCTYPE_QUOTED, this.q = a));
                        continue;
                    case C.DOCTYPE_QUOTED:
                        this.doctype += a, a === this.q && (this.q = "", this.state = C.DOCTYPE);
                        continue;
                    case C.DOCTYPE_DTD:
                        this.doctype += a, "]" === a ? this.state = C.DOCTYPE : m(a) && (this.state = C.DOCTYPE_DTD_QUOTED, this.q = a);
                        continue;
                    case C.DOCTYPE_DTD_QUOTED:
                        this.doctype += a, a === this.q && (this.state = C.DOCTYPE_DTD, this.q = "");
                        continue;
                    case C.COMMENT:
                        "-" === a ? this.state = C.COMMENT_ENDING : this.comment += a;
                        continue;
                    case C.COMMENT_ENDING:
                        "-" === a ? (this.state = C.COMMENT_ENDED, this.comment = x(this.opt, this.comment), this.comment && I(this, "oncomment", this.comment), this.comment = "") : (this.comment += "-" + a, this.state = C.COMMENT);
                        continue;
                    case C.COMMENT_ENDED:
                        ">" !== a ? (P(this, "Malformed comment"), this.comment += "--" + a, this.state = C.COMMENT) : this.state = C.TEXT;
                        continue;
                    case C.CDATA:
                        "]" === a ? this.state = C.CDATA_ENDING : this.cdata += a;
                        continue;
                    case C.CDATA_ENDING:
                        "]" === a ? this.state = C.CDATA_ENDING_2 : (this.cdata += "]" + a, this.state = C.CDATA);
                        continue;
                    case C.CDATA_ENDING_2:
                        ">" === a ? (this.cdata && I(this, "oncdata", this.cdata), I(this, "onclosecdata"), this.cdata = "", this.state = C.TEXT) : "]" === a ? this.cdata += "]" : (this.cdata += "]]" + a, this.state = C.CDATA);
                        continue;
                    case C.PROC_INST:
                        "?" === a ? this.state = C.PROC_INST_ENDING : k(a) ? this.state = C.PROC_INST_BODY : this.procInstName += a;
                        continue;
                    case C.PROC_INST_BODY:
                        if (!this.procInstBody && k(a)) continue;
                        "?" === a ? this.state = C.PROC_INST_ENDING : this.procInstBody += a;
                        continue;
                    case C.PROC_INST_ENDING:
                        ">" === a ? (I(this, "onprocessinginstruction", {
                            name: this.procInstName,
                            body: this.procInstBody
                        }), this.procInstName = this.procInstBody = "", this.state = C.TEXT) : (this.procInstBody += "?" + a, this.state = C.PROC_INST_BODY);
                        continue;
                    case C.OPEN_TAG:
                        v(f, a) ? this.tagName += a : (M(this), ">" === a ? B(this) : "/" === a ? this.state = C.OPEN_TAG_SLASH : (k(a) || P(this, "Invalid character in tag name"), this.state = C.ATTRIB));
                        continue;
                    case C.OPEN_TAG_SLASH:
                        ">" === a ? (B(this, !0), U(this)) : (P(this, "Forward-slash in opening tag not followed by >"), this.state = C.ATTRIB);
                        continue;
                    case C.ATTRIB:
                        if (k(a)) continue;
                        ">" === a ? B(this) : "/" === a ? this.state = C.OPEN_TAG_SLASH : v(h, a) ? (this.attribName = a, this.attribValue = "", this.state = C.ATTRIB_NAME) : P(this, "Invalid attribute name");
                        continue;
                    case C.ATTRIB_NAME:
                        "=" === a ? this.state = C.ATTRIB_VALUE : ">" === a ? (P(this, "Attribute without value"), this.attribValue = this.attribName, O(this), B(this)) : k(a) ? this.state = C.ATTRIB_NAME_SAW_WHITE : v(f, a) ? this.attribName += a : P(this, "Invalid attribute name");
                        continue;
                    case C.ATTRIB_NAME_SAW_WHITE:
                        if ("=" === a) this.state = C.ATTRIB_VALUE; else {
                            if (k(a)) continue;
                            P(this, "Attribute without value"), this.tag.attributes[this.attribName] = "", this.attribValue = "", I(this, "onattribute", {
                                name: this.attribName,
                                value: ""
                            }), this.attribName = "", ">" === a ? B(this) : v(h, a) ? (this.attribName = a, this.state = C.ATTRIB_NAME) : (P(this, "Invalid attribute name"), this.state = C.ATTRIB)
                        }
                        continue;
                    case C.ATTRIB_VALUE:
                        if (k(a)) continue;
                        m(a) ? (this.q = a, this.state = C.ATTRIB_VALUE_QUOTED) : (P(this, "Unquoted attribute value"), this.state = C.ATTRIB_VALUE_UNQUOTED, this.attribValue = a);
                        continue;
                    case C.ATTRIB_VALUE_QUOTED:
                        if (a !== this.q) {
                            "&" === a ? this.state = C.ATTRIB_VALUE_ENTITY_Q : this.attribValue += a;
                            continue
                        }
                        O(this), this.q = "", this.state = C.ATTRIB_VALUE_CLOSED;
                        continue;
                    case C.ATTRIB_VALUE_CLOSED:
                        k(a) ? this.state = C.ATTRIB : ">" === a ? B(this) : "/" === a ? this.state = C.OPEN_TAG_SLASH : v(h, a) ? (P(this, "No whitespace between attributes"), this.attribName = a, this.attribValue = "", this.state = C.ATTRIB_NAME) : P(this, "Invalid attribute name");
                        continue;
                    case C.ATTRIB_VALUE_UNQUOTED:
                        if (!T(a)) {
                            "&" === a ? this.state = C.ATTRIB_VALUE_ENTITY_U : this.attribValue += a;
                            continue
                        }
                        O(this), ">" === a ? B(this) : this.state = C.ATTRIB;
                        continue;
                    case C.CLOSE_TAG:
                        if (this.tagName) ">" === a ? U(this) : v(f, a) ? this.tagName += a : this.script ? (this.script += "</" + this.tagName, this.tagName = "", this.state = C.SCRIPT) : (k(a) || P(this, "Invalid tagname in closing tag"), this.state = C.CLOSE_TAG_SAW_WHITE); else {
                            if (k(a)) continue;
                            w(h, a) ? this.script ? (this.script += "</" + a, this.state = C.SCRIPT) : P(this, "Invalid tagname in closing tag.") : this.tagName = a
                        }
                        continue;
                    case C.CLOSE_TAG_SAW_WHITE:
                        if (k(a)) continue;
                        ">" === a ? U(this) : P(this, "Invalid characters in closing tag");
                        continue;
                    case C.TEXT_ENTITY:
                    case C.ATTRIB_VALUE_ENTITY_Q:
                    case C.ATTRIB_VALUE_ENTITY_U:
                        var u, d;
                        switch (this.state) {
                            case C.TEXT_ENTITY:
                                u = C.TEXT, d = "textNode";
                                break;
                            case C.ATTRIB_VALUE_ENTITY_Q:
                                u = C.ATTRIB_VALUE_QUOTED, d = "attribValue";
                                break;
                            case C.ATTRIB_VALUE_ENTITY_U:
                                u = C.ATTRIB_VALUE_UNQUOTED, d = "attribValue"
                        }
                        ";" === a ? (this[d] += L(this), this.entity = "", this.state = u) : v(this.entity.length ? g : p, a) ? this.entity += a : (P(this, "Invalid character in entity name"), this[d] += "&" + this.entity + a, this.entity = "", this.state = u);
                        continue;
                    default:
                        throw new Error(this, "Unknown state: " + this.state)
                }
                this.position >= this.bufferCheckPosition && function (t) {
                    for (var n = Math.max(e.MAX_BUFFER_LENGTH, 10), a = 0, o = 0, r = i.length; o < r; o++) {
                        var s = t[i[o]].length;
                        if (s > n) switch (i[o]) {
                            case"textNode":
                                _(t);
                                break;
                            case"cdata":
                                I(t, "oncdata", t.cdata), t.cdata = "";
                                break;
                            case"script":
                                I(t, "onscript", t.script), t.script = "";
                                break;
                            default:
                                E(t, "Max buffer length exceeded: " + i[o])
                        }
                        a = Math.max(a, s)
                    }
                    var l = e.MAX_BUFFER_LENGTH - a;
                    t.bufferCheckPosition = l + t.position
                }(this);
                return this
            }
            /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */, resume: function () {
                return this.error = null, this
            }, close: function () {
                return this.write(null)
            }, flush: function () {
                var e;
                _(e = this), "" !== e.cdata && (I(e, "oncdata", e.cdata), e.cdata = ""), "" !== e.script && (I(e, "onscript", e.script), e.script = "")
            }
        };
        try {
            t = n(64).Stream
        } catch (e) {
            t = function () {
            }
        }
        var o = e.EVENTS.filter(function (e) {
            return "error" !== e && "end" !== e
        });

        function r(e, n) {
            if (!(this instanceof r)) return new r(e, n);
            t.apply(this), this._parser = new a(e, n), this.writable = !0, this.readable = !0;
            var i = this;
            this._parser.onend = function () {
                i.emit("end")
            }, this._parser.onerror = function (e) {
                i.emit("error", e), i._parser.error = null
            }, this._decoder = null, o.forEach(function (e) {
                Object.defineProperty(i, "on" + e, {
                    get: function () {
                        return i._parser["on" + e]
                    }, set: function (t) {
                        if (!t) return i.removeAllListeners(e), i._parser["on" + e] = t, t;
                        i.on(e, t)
                    }, enumerable: !0, configurable: !1
                })
            })
        }

        r.prototype = Object.create(t.prototype, {constructor: {value: r}}), r.prototype.write = function (e) {
            if ("function" == typeof Buffer && "function" == typeof Buffer.isBuffer && Buffer.isBuffer(e)) {
                if (!this._decoder) {
                    var t = n(258).StringDecoder;
                    this._decoder = new t("utf8")
                }
                e = this._decoder.write(e)
            }
            return this._parser.write(e.toString()), this.emit("data", e), !0
        }, r.prototype.end = function (e) {
            return e && e.length && this.write(e), this._parser.end(), !0
        }, r.prototype.on = function (e, n) {
            var i = this;
            return i._parser["on" + e] || -1 === o.indexOf(e) || (i._parser["on" + e] = function () {
                var t = 1 === arguments.length ? [arguments[0]] : Array.apply(null, arguments);
                t.splice(0, 0, e), i.emit.apply(i, t)
            }), t.prototype.on.call(i, e, n)
        };
        var s = "[CDATA[", l = "DOCTYPE", u = "http://www.w3.org/XML/1998/namespace",
            d = "http://www.w3.org/2000/xmlns/", c = {xml: u, xmlns: d},
            h = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
            f = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/,
            p = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
            g = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;

        function k(e) {
            return " " === e || "\n" === e || "\r" === e || "\t" === e
        }

        function m(e) {
            return '"' === e || "'" === e
        }

        function T(e) {
            return ">" === e || k(e)
        }

        function v(e, t) {
            return e.test(t)
        }

        function w(e, t) {
            return !v(e, t)
        }

        var y, S, b, C = 0;
        for (var D in e.STATE = {
            BEGIN: C++,
            BEGIN_WHITESPACE: C++,
            TEXT: C++,
            TEXT_ENTITY: C++,
            OPEN_WAKA: C++,
            SGML_DECL: C++,
            SGML_DECL_QUOTED: C++,
            DOCTYPE: C++,
            DOCTYPE_QUOTED: C++,
            DOCTYPE_DTD: C++,
            DOCTYPE_DTD_QUOTED: C++,
            COMMENT_STARTING: C++,
            COMMENT: C++,
            COMMENT_ENDING: C++,
            COMMENT_ENDED: C++,
            CDATA: C++,
            CDATA_ENDING: C++,
            CDATA_ENDING_2: C++,
            PROC_INST: C++,
            PROC_INST_BODY: C++,
            PROC_INST_ENDING: C++,
            OPEN_TAG: C++,
            OPEN_TAG_SLASH: C++,
            ATTRIB: C++,
            ATTRIB_NAME: C++,
            ATTRIB_NAME_SAW_WHITE: C++,
            ATTRIB_VALUE: C++,
            ATTRIB_VALUE_QUOTED: C++,
            ATTRIB_VALUE_CLOSED: C++,
            ATTRIB_VALUE_UNQUOTED: C++,
            ATTRIB_VALUE_ENTITY_Q: C++,
            ATTRIB_VALUE_ENTITY_U: C++,
            CLOSE_TAG: C++,
            CLOSE_TAG_SAW_WHITE: C++,
            SCRIPT: C++,
            SCRIPT_ENDING: C++
        }, e.XML_ENTITIES = {amp: "&", gt: ">", lt: "<", quot: '"', apos: "'"}, e.ENTITIES = {
            amp: "&",
            gt: ">",
            lt: "<",
            quot: '"',
            apos: "'",
            AElig: 198,
            Aacute: 193,
            Acirc: 194,
            Agrave: 192,
            Aring: 197,
            Atilde: 195,
            Auml: 196,
            Ccedil: 199,
            ETH: 208,
            Eacute: 201,
            Ecirc: 202,
            Egrave: 200,
            Euml: 203,
            Iacute: 205,
            Icirc: 206,
            Igrave: 204,
            Iuml: 207,
            Ntilde: 209,
            Oacute: 211,
            Ocirc: 212,
            Ograve: 210,
            Oslash: 216,
            Otilde: 213,
            Ouml: 214,
            THORN: 222,
            Uacute: 218,
            Ucirc: 219,
            Ugrave: 217,
            Uuml: 220,
            Yacute: 221,
            aacute: 225,
            acirc: 226,
            aelig: 230,
            agrave: 224,
            aring: 229,
            atilde: 227,
            auml: 228,
            ccedil: 231,
            eacute: 233,
            ecirc: 234,
            egrave: 232,
            eth: 240,
            euml: 235,
            iacute: 237,
            icirc: 238,
            igrave: 236,
            iuml: 239,
            ntilde: 241,
            oacute: 243,
            ocirc: 244,
            ograve: 242,
            oslash: 248,
            otilde: 245,
            ouml: 246,
            szlig: 223,
            thorn: 254,
            uacute: 250,
            ucirc: 251,
            ugrave: 249,
            uuml: 252,
            yacute: 253,
            yuml: 255,
            copy: 169,
            reg: 174,
            nbsp: 160,
            iexcl: 161,
            cent: 162,
            pound: 163,
            curren: 164,
            yen: 165,
            brvbar: 166,
            sect: 167,
            uml: 168,
            ordf: 170,
            laquo: 171,
            not: 172,
            shy: 173,
            macr: 175,
            deg: 176,
            plusmn: 177,
            sup1: 185,
            sup2: 178,
            sup3: 179,
            acute: 180,
            micro: 181,
            para: 182,
            middot: 183,
            cedil: 184,
            ordm: 186,
            raquo: 187,
            frac14: 188,
            frac12: 189,
            frac34: 190,
            iquest: 191,
            times: 215,
            divide: 247,
            OElig: 338,
            oelig: 339,
            Scaron: 352,
            scaron: 353,
            Yuml: 376,
            fnof: 402,
            circ: 710,
            tilde: 732,
            Alpha: 913,
            Beta: 914,
            Gamma: 915,
            Delta: 916,
            Epsilon: 917,
            Zeta: 918,
            Eta: 919,
            Theta: 920,
            Iota: 921,
            Kappa: 922,
            Lambda: 923,
            Mu: 924,
            Nu: 925,
            Xi: 926,
            Omicron: 927,
            Pi: 928,
            Rho: 929,
            Sigma: 931,
            Tau: 932,
            Upsilon: 933,
            Phi: 934,
            Chi: 935,
            Psi: 936,
            Omega: 937,
            alpha: 945,
            beta: 946,
            gamma: 947,
            delta: 948,
            epsilon: 949,
            zeta: 950,
            eta: 951,
            theta: 952,
            iota: 953,
            kappa: 954,
            lambda: 955,
            mu: 956,
            nu: 957,
            xi: 958,
            omicron: 959,
            pi: 960,
            rho: 961,
            sigmaf: 962,
            sigma: 963,
            tau: 964,
            upsilon: 965,
            phi: 966,
            chi: 967,
            psi: 968,
            omega: 969,
            thetasym: 977,
            upsih: 978,
            piv: 982,
            ensp: 8194,
            emsp: 8195,
            thinsp: 8201,
            zwnj: 8204,
            zwj: 8205,
            lrm: 8206,
            rlm: 8207,
            ndash: 8211,
            mdash: 8212,
            lsquo: 8216,
            rsquo: 8217,
            sbquo: 8218,
            ldquo: 8220,
            rdquo: 8221,
            bdquo: 8222,
            dagger: 8224,
            Dagger: 8225,
            bull: 8226,
            hellip: 8230,
            permil: 8240,
            prime: 8242,
            Prime: 8243,
            lsaquo: 8249,
            rsaquo: 8250,
            oline: 8254,
            frasl: 8260,
            euro: 8364,
            image: 8465,
            weierp: 8472,
            real: 8476,
            trade: 8482,
            alefsym: 8501,
            larr: 8592,
            uarr: 8593,
            rarr: 8594,
            darr: 8595,
            harr: 8596,
            crarr: 8629,
            lArr: 8656,
            uArr: 8657,
            rArr: 8658,
            dArr: 8659,
            hArr: 8660,
            forall: 8704,
            part: 8706,
            exist: 8707,
            empty: 8709,
            nabla: 8711,
            isin: 8712,
            notin: 8713,
            ni: 8715,
            prod: 8719,
            sum: 8721,
            minus: 8722,
            lowast: 8727,
            radic: 8730,
            prop: 8733,
            infin: 8734,
            ang: 8736,
            and: 8743,
            or: 8744,
            cap: 8745,
            cup: 8746,
            int: 8747,
            there4: 8756,
            sim: 8764,
            cong: 8773,
            asymp: 8776,
            ne: 8800,
            equiv: 8801,
            le: 8804,
            ge: 8805,
            sub: 8834,
            sup: 8835,
            nsub: 8836,
            sube: 8838,
            supe: 8839,
            oplus: 8853,
            otimes: 8855,
            perp: 8869,
            sdot: 8901,
            lceil: 8968,
            rceil: 8969,
            lfloor: 8970,
            rfloor: 8971,
            lang: 9001,
            rang: 9002,
            loz: 9674,
            spades: 9824,
            clubs: 9827,
            hearts: 9829,
            diams: 9830
        }, Object.keys(e.ENTITIES).forEach(function (t) {
            var n = e.ENTITIES[t], i = "number" == typeof n ? String.fromCharCode(n) : n;
            e.ENTITIES[t] = i
        }), e.STATE) e.STATE[e.STATE[D]] = D;

        function N(e, t, n) {
            e[t] && e[t](n)
        }

        function I(e, t, n) {
            e.textNode && _(e), N(e, t, n)
        }

        function _(e) {
            e.textNode = x(e.opt, e.textNode), e.textNode && N(e, "ontext", e.textNode), e.textNode = ""
        }

        function x(e, t) {
            return e.trim && (t = t.trim()), e.normalize && (t = t.replace(/\s+/g, " ")), t
        }

        function E(e, t) {
            return _(e), e.trackPosition && (t += "\nLine: " + e.line + "\nColumn: " + e.column + "\nChar: " + e.c), t = new Error(t), e.error = t, N(e, "onerror", t), e
        }

        function A(e) {
            return e.sawRoot && !e.closedRoot && P(e, "Unclosed root tag"), e.state !== C.BEGIN && e.state !== C.BEGIN_WHITESPACE && e.state !== C.TEXT && E(e, "Unexpected end"), _(e), e.c = "", e.closed = !0, N(e, "onend"), a.call(e, e.strict, e.opt), e
        }

        function P(e, t) {
            if ("object" != typeof e || !(e instanceof a)) throw new Error("bad call to strictFail");
            e.strict && E(e, t)
        }

        function M(e) {
            e.strict || (e.tagName = e.tagName[e.looseCase]());
            var t = e.tags[e.tags.length - 1] || e, n = e.tag = {name: e.tagName, attributes: {}};
            e.opt.xmlns && (n.ns = t.ns), e.attribList.length = 0, I(e, "onopentagstart", n)
        }

        function F(e, t) {
            var n = e.indexOf(":") < 0 ? ["", e] : e.split(":"), i = n[0], a = n[1];
            return t && "xmlns" === e && (i = "xmlns", a = ""), {prefix: i, local: a}
        }

        function O(e) {
            if (e.strict || (e.attribName = e.attribName[e.looseCase]()), -1 !== e.attribList.indexOf(e.attribName) || e.tag.attributes.hasOwnProperty(e.attribName)) e.attribName = e.attribValue = ""; else {
                if (e.opt.xmlns) {
                    var t = F(e.attribName, !0), n = t.prefix, i = t.local;
                    if ("xmlns" === n) if ("xml" === i && e.attribValue !== u) P(e, "xml: prefix must be bound to " + u + "\nActual: " + e.attribValue); else if ("xmlns" === i && e.attribValue !== d) P(e, "xmlns: prefix must be bound to " + d + "\nActual: " + e.attribValue); else {
                        var a = e.tag, o = e.tags[e.tags.length - 1] || e;
                        a.ns === o.ns && (a.ns = Object.create(o.ns)), a.ns[i] = e.attribValue
                    }
                    e.attribList.push([e.attribName, e.attribValue])
                } else e.tag.attributes[e.attribName] = e.attribValue, I(e, "onattribute", {
                    name: e.attribName,
                    value: e.attribValue
                });
                e.attribName = e.attribValue = ""
            }
        }

        function B(e, t) {
            if (e.opt.xmlns) {
                var n = e.tag, i = F(e.tagName);
                n.prefix = i.prefix, n.local = i.local, n.uri = n.ns[i.prefix] || "", n.prefix && !n.uri && (P(e, "Unbound namespace prefix: " + JSON.stringify(e.tagName)), n.uri = i.prefix);
                var a = e.tags[e.tags.length - 1] || e;
                n.ns && a.ns !== n.ns && Object.keys(n.ns).forEach(function (t) {
                    I(e, "onopennamespace", {prefix: t, uri: n.ns[t]})
                });
                for (var o = 0, r = e.attribList.length; o < r; o++) {
                    var s = e.attribList[o], l = s[0], u = s[1], d = F(l, !0), c = d.prefix, h = d.local,
                        f = "" === c ? "" : n.ns[c] || "", p = {name: l, value: u, prefix: c, local: h, uri: f};
                    c && "xmlns" !== c && !f && (P(e, "Unbound namespace prefix: " + JSON.stringify(c)), p.uri = c), e.tag.attributes[l] = p, I(e, "onattribute", p)
                }
                e.attribList.length = 0
            }
            e.tag.isSelfClosing = !!t, e.sawRoot = !0, e.tags.push(e.tag), I(e, "onopentag", e.tag), t || (e.noscript || "script" !== e.tagName.toLowerCase() ? e.state = C.TEXT : e.state = C.SCRIPT, e.tag = null, e.tagName = ""), e.attribName = e.attribValue = "", e.attribList.length = 0
        }

        function U(e) {
            if (!e.tagName) return P(e, "Weird empty close tag."), e.textNode += "</>", void(e.state = C.TEXT);
            if (e.script) {
                if ("script" !== e.tagName) return e.script += "</" + e.tagName + ">", e.tagName = "", void(e.state = C.SCRIPT);
                I(e, "onscript", e.script), e.script = ""
            }
            var t = e.tags.length, n = e.tagName;
            e.strict || (n = n[e.looseCase]());
            for (var i = n; t--;) {
                if (e.tags[t].name === i) break;
                P(e, "Unexpected close tag")
            }
            if (t < 0) return P(e, "Unmatched closing tag: " + e.tagName), e.textNode += "</" + e.tagName + ">", void(e.state = C.TEXT);
            e.tagName = n;
            for (var a = e.tags.length; a-- > t;) {
                var o = e.tag = e.tags.pop();
                e.tagName = e.tag.name, I(e, "onclosetag", e.tagName);
                var r = {};
                for (var s in o.ns) r[s] = o.ns[s];
                var l = e.tags[e.tags.length - 1] || e;
                e.opt.xmlns && o.ns !== l.ns && Object.keys(o.ns).forEach(function (t) {
                    var n = o.ns[t];
                    I(e, "onclosenamespace", {prefix: t, uri: n})
                })
            }
            0 === t && (e.closedRoot = !0), e.tagName = e.attribValue = e.attribName = "", e.attribList.length = 0, e.state = C.TEXT
        }

        function L(e) {
            var t, n = e.entity, i = n.toLowerCase(), a = "";
            return e.ENTITIES[n] ? e.ENTITIES[n] : e.ENTITIES[i] ? e.ENTITIES[i] : ("#" === (n = i).charAt(0) && ("x" === n.charAt(1) ? (n = n.slice(2), a = (t = parseInt(n, 16)).toString(16)) : (n = n.slice(1), a = (t = parseInt(n, 10)).toString(10))), n = n.replace(/^0+/, ""), isNaN(t) || a.toLowerCase() !== n ? (P(e, "Invalid character entity"), "&" + e.entity + ";") : String.fromCodePoint(t))
        }

        function K(e, t) {
            "<" === t ? (e.state = C.OPEN_WAKA, e.startTagPosition = e.position) : k(t) || (P(e, "Non-whitespace before first tag."), e.textNode = t, e.state = C.TEXT)
        }

        function V(e, t) {
            var n = "";
            return t < e.length && (n = e.charAt(t)), n
        }

        C = e.STATE, String.fromCodePoint || (y = String.fromCharCode, S = Math.floor, b = function () {
            var e, t, n = [], i = -1, a = arguments.length;
            if (!a) return "";
            for (var o = ""; ++i < a;) {
                var r = Number(arguments[i]);
                if (!isFinite(r) || r < 0 || r > 1114111 || S(r) !== r) throw RangeError("Invalid code point: " + r);
                r <= 65535 ? n.push(r) : (e = 55296 + ((r -= 65536) >> 10), t = r % 1024 + 56320, n.push(e, t)), (i + 1 === a || n.length > 16384) && (o += y.apply(null, n), n.length = 0)
            }
            return o
        }, Object.defineProperty ? Object.defineProperty(String, "fromCodePoint", {
            value: b,
            configurable: !0,
            writable: !0
        }) : String.fromCodePoint = b)
    }(t)
}, function (e, t) {
    (function () {
        "use strict";
        t.stripBOM = function (e) {
            return "\ufeff" === e[0] ? e.substring(1) : e
        }
    }).call(this)
}, function (e, t) {
    e.exports = require("timers")
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(111), o = n(657), r = n(5), s = n(59), l = n(259), u = n(505), d = n(221),
        c = n(1).default.getLogger("Thunder.VipDownload"), h = s.UserHelperNS.getHelper();
    !function (e) {
        const t = d.TaskEventContainerNS.getEventContainer();

        function n(e, t, n) {
            c.information("vipButtonShow");
            let i = new Map, a = k(), r = m(), s = T(), l = t ? 1 : 0, u = v(e);
            i.set("is_login", a), i.set("is_vip", r), i.set("vip_type", s), i.set("is_cj_speed", l), i.set("taskid", e), i.set("gcid", u), i.set("btn_type", n);
            let d = {attribute1: "hyjs_show", extData: i};
            o.StatUtilitiesNS.trackEvent("xlx_vip_event", d)
        }

        function s(e) {
            g(e, u.DownloadManagerNS.getDownloadManager().getVipTaskInfo(e))
        }

        function f(e, t) {
            e === u.DownloadManagerNS.getDownloadManager().expandTaskId && g(e, t)
        }

        function p(e, t) {
            let n = !1;
            if (h.isVip) return n;
            if (!t || t.taskType !== a.VipDownloadDefineNS.VipTaskType.Vip) return n;
            switch (t.taskStatus) {
                case a.VipDownloadDefineNS.VipTaskStatus.Init:
                    n = !0
            }
            return n
        }

        function g(e, t) {
            p(0, t) && setTimeout(() => i(this, void 0, void 0, function* () {
                let t = u.DownloadManagerNS.getDownloadManager().getVipTaskInfo(e);
                p(0, t) && n(e, t.isSuper, "task")
            }), 1500)
        }

        function k() {
            let e = 0;
            return h.isLogin && (e = 1), e
        }

        function m() {
            let e = 0;
            return h.isVip && (e = 1), e
        }

        function T() {
            let e = 0;
            return h.isSuperVip ? e = 5 : h.isPlatinumVip ? e = 3 : h.isVip && (e = 2), e
        }

        function v(e) {
            const t = l.TaskManagerNS.getTaskManager().getTask(e);
            let n = "";
            if (t) {
                const e = t.getTaskBase();
                !e || e.taskType !== r.DownloadKernel.TaskType.P2sp && e.taskType !== r.DownloadKernel.TaskType.Emule || (n = e.gcid)
            }
            return n
        }

        t.attachListener(d.TaskEventNS.taskAcclerateStatusChanged, f), t.attachListener(d.TaskEventNS.taskExpand, s), e.vipButtonShow = n, e.vipButtonClick = function (e, t, n) {
            c.information("vipButtonClick");
            let i = new Map, a = k(), r = m(), s = T(), l = t ? 1 : 0, u = v(e);
            i.set("is_login", a), i.set("is_vip", r), i.set("vip_type", s), i.set("is_cj_speed", l), i.set("taskid", e), i.set("gcid", u), i.set("clickid", n);
            let d = {attribute1: "hyjs_click", extData: i};
            o.StatUtilitiesNS.trackEvent("xlx_vip_event", d)
        }, e.onTaskExpand = s, e.onTaskAcclerateStatusChanged = f
    }(t.VipStatNS || (t.VipStatNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(111), a = n(657), o = n(5), r = n(59), s = n(259), l = n(505), u = n(221), d = n(507), c = n(260),
        h = n(220), f = n(1).default.getLogger("Thunder.VipDownload"), p = r.UserHelperNS.getHelper();
    !function (e) {
        let t = void 0, n = !1, r = !1, g = !1, k = !1;
        const m = u.TaskEventContainerNS.getEventContainer();

        function T(e, t) {
            f.information("tryButtonShow");
            let n = new Map, i = x(), o = P(e);
            n.set("is_login", i), n.set("vip_type", 0), n.set("taskid", e), n.set("gcid", o), n.set("btn_type", t);
            let r = {attribute1: "jssy_show", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", r)
        }

        function v(e, t) {
            f.information("tryOpenVipButtonShow");
            let n = new Map, i = x(), o = P(e);
            n.set("is_login", i), n.set("is_vip", 0), n.set("vip_type", 0), n.set("taskid", e), n.set("gcid", o), n.set("btn_type", t);
            let r = {attribute1: "jssy_kthy_show", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", r)
        }

        function w(e) {
            if (r) return;
            r = !0, f.information("trySuccess");
            let n = new Map, i = x(), o = P(e);
            n.set("is_login", i), n.set("is_vip", 0), n.set("vip_type", 0), n.set("taskid", e), n.set("gcid", o), n.set("btn_type", t), n.set("js_type", 3);
            let s = {attribute1: "jssy_succ", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", s)
        }

        function y(e, i, o) {
            if (!n) return;
            n = !1, f.information("tryEnd");
            let r = new Map, s = x(), l = P(e), u = i ? "fail" : "succ";
            r.set("is_login", s), r.set("is_vip", 0), r.set("vip_type", 0), r.set("taskid", e), r.set("gcid", l), r.set("btn_type", t), r.set("result", u), o && r.set("errcode", o);
            let d = {attribute1: "jssy_end", extData: r};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", d)
        }

        function S(e, t) {
            f.information("superTryButtonShow");
            let n = new Map, i = x(), o = E(), r = A(), s = P(e);
            n.set("is_login", i), n.set("is_vip", o), n.set("vip_type", r), n.set("taskid", e), n.set("gcid", s), n.set("btn_type", t);
            let l = {attribute1: "cjjssy_show", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", l)
        }

        function b(e, t) {
            f.information("superTryOpenVipButtonShow");
            let n = new Map, i = x(), o = E(), r = A(), s = 1 === o ? "vipsj" : "vipkt", l = P(e);
            n.set("is_login", i), n.set("is_vip", o), n.set("vip_type", r), n.set("taskid", e), n.set("gcid", l), n.set("biz_type", s), n.set("btn_type", t);
            let u = {attribute1: "cjjssy_ktch_show", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", u)
        }

        function C(e) {
            if (r) return;
            r = !0, f.information("superTrySuccess");
            let n = new Map, i = x(), o = E(), s = A(), l = P(e);
            let u = h.KuainiaoManagerNS.getManager().status === c.KuaiNiaoDefineNS.KuaiNiaoStatus.Alive ? 1 : 3;
            n.set("is_login", i), n.set("is_vip", o), n.set("vip_type", s), n.set("taskid", e), n.set("gcid", l), n.set("btn_type", t), n.set("js_type", u);
            let d = {attribute1: "cjjssy_succ", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", d)
        }

        function D(e, i, o) {
            if (!n) return;
            n = !1, f.information("superTryEnd");
            let r = new Map, s = x(), l = E(), u = A(), d = P(e), c = i ? "fail" : "succ";
            r.set("is_login", s), r.set("is_vip", l), r.set("vip_type", u), r.set("taskid", e), r.set("gcid", d), r.set("btn_type", t), r.set("result", c), o && r.set("errcode", o);
            let h = {attribute1: "cjjssy_end", extData: r};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", h)
        }

        function N(e) {
            g = !1, k = !1, _(e, l.DownloadManagerNS.getDownloadManager().getVipTaskInfo(e))
        }

        function I(e, t) {
            if (e === l.DownloadManagerNS.getDownloadManager().expandTaskId && _(e, t), t && t.taskType === i.VipDownloadDefineNS.VipTaskType.Try) switch (t.taskStatus) {
                case i.VipDownloadDefineNS.VipTaskStatus.Acclerating:
                    t.isSuper ? C(e) : w(e);
                    break;
                case i.VipDownloadDefineNS.VipTaskStatus.CommitFailed:
                case i.VipDownloadDefineNS.VipTaskStatus.AcclerateFailed:
                    let n = d.TryTaskCacheNS.getCacheManager().getTask(e);
                    n && n.error && (t.isSuper ? D(e, n.error.errorStep, n.error.result) : y(e, n.error.errorStep, n.error.result));
                    break;
                case i.VipDownloadDefineNS.VipTaskStatus.Finished:
                case i.VipDownloadDefineNS.VipTaskStatus.Unkown:
                    t.isSuper ? D(e) : y(e)
            }
        }

        function _(e, t) {
            t && t.taskType === i.VipDownloadDefineNS.VipTaskType.Try && (t.taskStatus === i.VipDownloadDefineNS.VipTaskStatus.Init ? t.isSuper ? S(e, "task") : T(e, "task") : t.taskStatus > i.VipDownloadDefineNS.VipTaskStatus.Init && t.taskStatus < i.VipDownloadDefineNS.VipTaskStatus.Finished ? g || (g = !0, t.isSuper ? b(e, "cjjssying") : v(e, "sying")) : t.taskStatus === i.VipDownloadDefineNS.VipTaskStatus.Finished && (k || (k = !0, t.isSuper ? b(e, "cjjssyend") : v(e, "syend"))))
        }

        function x() {
            let e = 0;
            return p.isLogin && (e = 1), e
        }

        function E() {
            let e = 0;
            return p.isVip && (e = 1), e
        }

        function A() {
            let e = 0;
            return p.isPlatinumVip ? e = 3 : p.isVip && (e = 2), e
        }

        function P(e) {
            const t = s.TaskManagerNS.getTaskManager().getTask(e);
            let n = "";
            if (t) {
                const e = t.getTaskBase();
                !e || e.taskType !== o.DownloadKernel.TaskType.P2sp && e.taskType !== o.DownloadKernel.TaskType.Emule || (n = e.gcid)
            }
            return n
        }

        m.attachListener(u.TaskEventNS.taskAcclerateStatusChanged, I), m.attachListener(u.TaskEventNS.taskExpand, N), e.tryButtonShow = T, e.tryButtonClick = function (e, i) {
            f.information("tryButtonClick"), n = !0, r = !1;
            let o = new Map, s = x(), l = P(e);
            o.set("is_login", s), o.set("vip_type", 0), o.set("taskid", e), o.set("gcid", l), o.set("clickid", i), t = i;
            let u = {attribute1: "jssy_click", extData: o};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", u)
        }, e.tryOpenVipButtonShow = v, e.tryOpenVipButtonClick = function (e, t) {
            f.information("tryOpenVipButtonClick");
            let n = new Map, i = x(), o = P(e);
            n.set("is_login", i), n.set("is_vip", 0), n.set("vip_type", 0), n.set("taskid", e), n.set("gcid", o), n.set("clickid", t);
            let r = {attribute1: "jssy_kthy_click", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", r)
        }, e.trySuccess = w, e.tryEnd = y, e.superTryButtonShow = S, e.superTryButtonClick = function (e, n) {
            f.information("superTryButtonClick");
            let i = new Map, o = x(), r = E(), s = A(), l = P(e);
            i.set("is_login", o), i.set("is_vip", r), i.set("vip_type", s), i.set("taskid", e), i.set("gcid", l), i.set("clickid", n), t = n;
            let u = {attribute1: "cjjssy_click", extData: i};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", u)
        }, e.superTryOpenVipButtonShow = b, e.superTryOpenVipButtonClick = function (e, t) {
            f.information("superTryOpenVipButtonClick");
            let n = new Map, i = x(), o = E(), r = A(), s = 1 === o ? "vipsj" : "vipkt", l = P(e);
            n.set("is_login", i), n.set("is_vip", o), n.set("vip_type", r), n.set("taskid", e), n.set("gcid", l), n.set("biz_type", s), n.set("clickid", t);
            let u = {attribute1: "cjjssy_ktch_click", extData: n};
            a.StatUtilitiesNS.trackEvent("xlx_vip_event", u)
        }, e.superTrySuccess = C, e.superTryEnd = D, e.onTaskExpand = N, e.onTaskAcclerateStatusChanged = I
    }(t.TryStatNS || (t.TryStatNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(5), o = n(52), r = n(28), s = n(32), l = n(81), u = n(85), d = n(229), c = n(25), h = n(187),
        f = n(8), p = n(513), g = n(6);
    !function (e) {
        e.dk = a.DownloadKernel, e.dkManager = o.DownloadKernelManager, e.taskManager = r.DownloadKernelTaskManager.getTaskManager(), e.eventManager = s.DownloadKernelEventManager.getEventManager(), e.categoryManager = l.DownloadKernelCategoryManager.getCategoryManager(), e.categoryViewManager = u.DownloadKernelCategoryViewManager.getCategoryViewManager(), e.taskUtilities = d.TaskUtilitiesAWNS, e.config = c.ConfigNS, e.logHelper = h.LoginHelperNS, e.thunderHelper = g.default(i.join(__rootDir, "../bin/ThunderHelper.node")), e.nativeCallModule = f.NativeCallModule, e.messageChannel = p.MessageChannelNS, e.thunderMsgChannel = g.default(i.join(__rootDir, "../bin/ThunderMsgChannel.node"))
    }(t.DownloadKernelTestNS || (t.DownloadKernelTestNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = new class {
        getUserInfo(e, t) {
            let n = "string" == typeof e ? e : "", i = "function" == typeof e ? e : t;
            this.getXdasDatas("memory", "userinfo", function (e) {
                if (e) {
                    let t = "" !== n ? e[n] : e;
                    i && i(t)
                } else i && i(null)
            })
        }

        getAllUserInfo(e, t) {
            let n = "string" == typeof e ? e : "", i = "function" == typeof e ? e : t;
            this.getXdasDatas("memory", "allUserInfo", function (e) {
                if (e) {
                    let t = "" !== n ? e[n] : e;
                    i && i(t)
                } else i && i(null)
            })
        }

        logout() {
            this.saveToXdas("memory", "userinfo", JSON.stringify({userid: "", sessionid: "", loginType: "1"}))
        }

        switchAccount() {
            this.saveToXdas("memory", "userinfo", JSON.stringify({userid: "", sessionid: "", loginType: "2"}))
        }

        retryLogin() {
            this.saveToXdas("memory", "userinfo", JSON.stringify({loginType: "3"}))
        }

        saveToXdas(e, t, n) {
            global.xlNativeCallModule.nativeCall.CallNativeFunction("SaveLoginData", e, t, n, function (e, t) {
            })
        }

        isLogined(e) {
            this.getUserInfo(null, function (t) {
                t && t.userid && "" !== t.userid ? e(!0) : e(!1)
            })
        }

        isAutologin(e) {
            this.getXdasDatas("file", "users", function (t) {
                let n = t || [];
                if (0 == n.length) e(!1); else {
                    let t = n[0];
                    e(!!t.xl_autologin)
                }
            })
        }

        getXdasDatas(e, t, n) {
            global.xlNativeCallModule.nativeCall.CallNativeFunction("LoadLoginData", e, t, function (e, t) {
                let i = "" !== t ? JSON.parse(t) : null;
                n && n(i)
            })
        }
    };
    t.xlQuickLogin = i
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(2), o = n(6).default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        r = i.default.getLogger("HistoryDataNS");
    let s = a.resolve(__profilesDir, "mainWndData.ini"), l = 1020, u = 650;
    !function (e) {
        e.getMainWndSizeHistoryData = function () {
            let e = null;
            r.information(s);
            let t = o.readINI(s, "MainFrame", "ExitState"), n = o.readINI(s, "MainFrame", "MainWndLastWidth"),
                i = o.readINI(s, "MainFrame", "MainWndLastHeight");
            if (r.information(t, n, i), "" !== n && "" !== i) {
                let a = Number(n), o = Number(i);
                (a < l || o < u) && (a = l, o = u), (e = {}).width = a, e.height = o, e.exitState = t
            }
            return null === e && ((e = {}).exitState = "normal", e.width = l, e.height = u), e
        }, e.setExitType = function (e) {
            o.writeINI(s, "MainFrame", "ExitType", e)
        }, e.getExitType = function () {
            return o.readINI(s, "MainFrame", "ExitType")
        }
    }(t.HistoryDataNS || (t.HistoryDataNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(5), o = n(32), r = n(28).DownloadKernelTaskManager.getTaskManager(),
        s = o.DownloadKernelEventManager.getEventManager(), l = i.default.getLogger("Community.TaskManager");
    !function (e) {
        class t {
            constructor() {
                this.insertToCategoryViewEventId = void 0, this.detailChangedEventId = void 0, this.taskStatusChangedEventId = void 0, this.taskInfoMap = new Map
            }

            init() {
                l.information("init"), this.insertToCategoryViewEventId = s.attachTaskEvent(a.DownloadKernel.TaskEventType.InsertToCategoryView, (...e) => {
                    e && e[0] === a.DownloadKernel.TaskEventType.InsertToCategoryView && this.onInsertToCategoryView(e[1], e[2], e[3])
                }), this.detailChangedEventId = s.attachTaskEvent(a.DownloadKernel.TaskEventType.DetailChanged, (...e) => {
                    e && e[0] === a.DownloadKernel.TaskEventType.DetailChanged && this.onDetailChanged(e[1])
                }), this.taskStatusChangedEventId = s.attachTaskEvent(a.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                    e && e[0] === a.DownloadKernel.TaskEventType.StatusChanged && this.onTaskStatusChanged(e[1])
                })
            }

            uninit() {
                void 0 !== this.insertToCategoryViewEventId && (this.insertToCategoryViewEventId = void 0, s.detachTaskEvent(a.DownloadKernel.TaskEventType.InsertToCategoryView, this.insertToCategoryViewEventId)), void 0 !== this.detailChangedEventId && (this.detailChangedEventId = void 0, s.detachTaskEvent(a.DownloadKernel.TaskEventType.DetailChanged, this.detailChangedEventId)), void 0 !== this.taskStatusChangedEventId && (this.taskStatusChangedEventId = void 0, s.detachTaskEvent(a.DownloadKernel.TaskEventType.StatusChanged, this.taskStatusChangedEventId)), this.taskInfoMap.clear()
            }

            getTaskNameByTaskUniqueID(e) {
                if (!e || "" === e) return "";
                let t = this.taskInfoMap.get(e);
                return t && -1 === t.categoryId ? t.taskName : ""
            }

            getTaskAverageSpeedByTaskUniqueID(e) {
                if (!e || "" === e) return 0;
                let t = 0, n = this.taskInfoMap.get(e);
                return n && (-1 !== n.categoryId || (t = this.getTaskAverageSpeed(n.taskId))), t
            }

            getTaskInfoByTaskUniqueID(e) {
                return e && "" !== e ? this.taskInfoMap.get(e) : null
            }

            onInsertToCategoryView(e, t, n) {
                do {
                    if (!n) break;
                    l.information("onInsertToCategoryView number of taskList:", n.length), this.updateTaskInfo(n)
                } while (0)
            }

            onDetailChanged(e) {
                do {
                    if (!e) break;
                    l.information("onDetailChanged number of taskList:", e.length), this.updateTaskInfo(e)
                } while (0)
            }

            onTaskStatusChanged(e) {
                for (let t = 0; t < e.length; ++t) {
                    let n = e[t];
                    if (n && n.getTaskStatus() === a.DownloadKernel.TaskStatus.DestroyPending) {
                        let e = this.getTaskUniqueIDByTask(n);
                        e && "" !== e && (l.information("onTaskStatusChanged delete taskInfoMap uniqueId:", e), this.taskInfoMap.delete(e))
                    }
                }
            }

            updateTaskInfo(e) {
                for (let t = 0; t < e.length; ++t) {
                    let n = e[t];
                    if (!n) continue;
                    let i = this.getTaskUniqueIDByTask(n);
                    if (i && "" !== i) {
                        let e = this.getTaskNameByTask(n), t = n.getTaskBaseInfo().taskId,
                            o = n.getTaskAttribute(a.DownloadKernel.TaskAttribute.CategoryId),
                            r = n.getTaskAttribute(a.DownloadKernel.TaskAttribute.CategoryViewId);
                        l.information("updateTaskInfo uniqueId:", i, ", taskId:", t, ", taskName:", e, ", categoryId:", o, ", categoryViewId:", r);
                        let s = {taskId: t, taskName: e, categoryId: o, categoryViewId: r};
                        this.taskInfoMap.set(i, s)
                    }
                }
            }

            getTaskAverageSpeed(e) {
                let t = r.getTaskFromTaskId(e);
                if (!t) return 0;
                let n = t.getTaskAttribute(a.DownloadKernel.TaskAttribute.DownloadingPeriod),
                    i = t.getTaskAttribute(a.DownloadKernel.TaskAttribute.DownloadSize);
                0 === n && (n = 0);
                let o = Math.round(i / n);
                return l.information("getTaskAverageSpeed taskId:", e, ", taskAverageSpeed:", o, ", taskAverageSpeedFormat:", this.formatSize(o)), o
            }

            formatSize(e, t = 2) {
                if (!e || e < 0) return "0.0B";
                let n = 0, i = e;
                for (; i > 1024 && !(n >= 5);) i /= 1024, n += 1;
                let a = Math.pow(10, t);
                return Math.round(i * a) / a + ["B", "KB", "MB", "GB", "TB", "PB"][n]
            }

            getTaskNameByTask(e) {
                let t = e.getTaskName();
                if (!t || "" === t) {
                    if (e.getTaskBaseInfo().taskType === a.DownloadKernel.TaskType.Bt) {
                        t = e.getExtraObject().getDisplayName()
                    }
                }
                return t
            }

            getTaskUniqueIDByTask(e) {
                let t = "";
                if (!e) return t;
                switch (e.getTaskBaseInfo().taskType) {
                    case a.DownloadKernel.TaskType.Bt:
                        let n = e.getExtraObject().getInfoId();
                        l.information("getTaskUniqueIDByTask bt task infoId:", n), t = n;
                        break;
                    case a.DownloadKernel.TaskType.P2sp:
                    case a.DownloadKernel.TaskType.Emule:
                        let i = e.getTaskAttribute(a.DownloadKernel.TaskAttribute.Gcid);
                        l.information("getTaskUniqueIDByTask p2sp or emule task gcid: ", i), t = i
                }
                return t
            }
        }

        e.TaskManager = t;
        const n = new t;
        e.getTaskManager = function () {
            return n
        }
    }(t.CommunityTaskManagerNS || (t.CommunityTaskManagerNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = "\n", a = "\r\n", o = /^\s*\[(.+?)\]\s*$/, r = /^\s*([^#].*?)\s*=\s*(.*?)\s*$/;
    !function (e) {
        e.stringify = function (e) {
            let t = "";
            for (let n in e) {
                let i = e[n];
                if (!i) break;
                t += "[" + n + "]" + a;
                for (let e in i) {
                    let n = i[e];
                    if (void 0 === n || null === n) break;
                    t += e + "=" + n + a
                }
            }
            return t + i
        }, e.parse = function (e) {
            let t, n = {}, i = e.split(/\r\n|\r|\n/), a = {};
            for (let e = 0; e < i.length; ++e) {
                let s = i[e];
                (t = s.match(o)) ? n[t[1]] = a = n[t[1]] || {} : a && (t = s.match(r)) && (a[t[1]] = t[2])
            }
            return n
        }
    }(t.IniNS || (t.IniNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(82), o = n(7), r = n(108), s = n(17), l = n(187),
        u = i.default.getLogger("NativeFunction.Login");
    !function (e) {
        const t = new class {
            constructor() {
                this.isRegister = !1
            }

            registerNativeFunction() {
                if (!this.isRegister) {
                    this.isRegister = !0;
                    let e = [{
                        functionName: "NativeFireEvent",
                        nativeFunc: this.fireEvent
                    }, {
                        functionName: "CreateLoginWnd",
                        nativeFunc: this.createLoginWnd
                    }, {functionName: "CloseLoginWnd", nativeFunc: this.closeLoginWnd}, {
                        functionName: "UpdateLoginWnd",
                        nativeFunc: this.updateLoginWnd
                    }, {functionName: "SaveLoginData", nativeFunc: this.saveLoginData}, {
                        functionName: "LoadLoginData",
                        nativeFunc: this.loadLoginData
                    }, {functionName: "GetUserID", nativeFunc: this.getUserID}, {
                        functionName: "GetSessionID",
                        nativeFunc: this.getSessionID
                    }, {functionName: "ShowLoginDlg", nativeFunc: this.showLoginDlg}, {
                        functionName: "GetLoginInfo",
                        nativeFunc: this.getLoginInfo
                    }, {functionName: "GetUserInfo", nativeFunc: this.getUserInfo}, {
                        functionName: "GetAllUserInfo",
                        nativeFunc: this.getAllUserInfo
                    }, {functionName: "IsLogined", nativeFunc: this.isLogined}, {
                        functionName: "Logout",
                        nativeFunc: this.logout
                    }, {
                        functionName: "GetLoginDeviceID",
                        nativeFunc: this.getLoginDeviceID
                    }, {
                        functionName: "RetryLogIn",
                        nativeFunc: this.retryLogIn
                    }, {
                        functionName: "ShowModifierUserInfoWnd",
                        nativeFunc: this.showModifierUserInfoWnd
                    }, {
                        functionName: "CloseModifierUserInfoWnd",
                        nativeFunc: this.closeModifierUserInfoWnd
                    }, {functionName: "GetUserHeaderByUserID", nativeFunc: this.getUserHeaderByUserID}];
                    a.setDefaultNativeFunctionMap(e)
                }
            }

            fireEvent(e, t, n, i) {
                if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) return void e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                let a = i[0];
                u.information("fireEvent eventName:", a), i.splice(0, 1), r.NativeCallHostModule.nativeCallHost.fireNativeEvent(a, ...i), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            getUserID(e, t, n, i) {
                u.information("getUserID:", i), l.LoginHelperNS.loginHelper.getUserInfo("userid", function (i) {
                    u.information("getUserID:userid = ", i), null !== i && void 0 !== i && "" !== i || (i = "0"), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                })
            }

            getSessionID(e, t, n, i) {
                u.information("getSessionID:", i), l.LoginHelperNS.loginHelper.getUserInfo("sessionid", function (i) {
                    u.information("getSessionID:sessionid = ", i), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                })
            }

            showLoginDlg(e, t, n, i) {
                u.information(i);
                let a = "", r = !0;
                o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || (a = i[0]), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[1]) || (r = i[1]), l.LoginHelperNS.loginHelper.showLoginDlg(a, r), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            getLoginInfo(e, t, n, i) {
                if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) l.LoginHelperNS.loginHelper.getUserInfo(function (i) {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }); else {
                    let a = i[0];
                    l.LoginHelperNS.loginHelper.getUserInfo(a, function (i) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                    })
                }
            }

            getUserInfo(e, t, n, i) {
                u.information(i), (o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) && e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                let a = 0;
                if (o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) a = 0; else {
                    let e = i[0];
                    a = null === e || void 0 === e || "" === e ? 0 : Number(e)
                }
                l.LoginHelperNS.loginHelper.getUserInfoEx(a, function (i) {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                })
            }

            getAllUserInfo(e, t, n, i) {
                if (u.information(i), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) l.LoginHelperNS.loginHelper.getAllUserInfo(function (i) {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }); else {
                    let a = i[0];
                    l.LoginHelperNS.loginHelper.getAllUserInfo(a, function (i) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                    })
                }
            }

            isLogined(e, t, n, i) {
                u.information(i), (o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n)) && e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError), l.LoginHelperNS.loginHelper.isLogined(function (i) {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                })
            }

            logout(e, t, n, i) {
                u.information(i), l.LoginHelperNS.loginHelper.logout(), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            saveLoginData(e, t, n, i) {
                do {
                    if (u.information("saveLoginData", e, t, n), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1]) || o.isNullOrUndefined(i[2])) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], d = i[2];
                    l.LoginHelperNS.loginSDKHelper.saveData(a, r, d).then(i => {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                    }).catch(() => {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.CallFailed)
                    })
                } while (0)
            }

            loadLoginData(e, t, n, i) {
                let a = null;
                do {
                    if (u.information("loadLoginData", e, t, n), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let r = i[0], d = i[1];
                    a = "memory" === r && "initconfig" === d ? l.LoginHelperNS.loginSDKHelper.getInitData() : l.LoginHelperNS.loginSDKHelper.loadData(r, d), u.information("loadLoginData:data = ", a), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, a)
                } while (0)
            }

            createLoginWnd(e, t, n, i) {
                do {
                    if (o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n) || o.isNullOrUndefined(i)) break;
                    if (o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], r = i[1], u = "", d = null, c = null;
                    o.isNullOrUndefined(i[2]) || (u = i[2]), o.isNullOrUndefined(i[3]) || (d = i[3]), o.isNullOrUndefined(i[4]) || (c = i[4]), l.LoginHelperNS.loginUIHelper.createLoginWnd(a, r, u, d, c), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
                } while (0)
            }

            closeLoginWnd(e, t, n, i) {
                do {
                    if (o.isNullOrUndefined(e) || o.isNullOrUndefined(t) || o.isNullOrUndefined(n) || o.isNullOrUndefined(i)) break;
                    if (o.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    l.LoginHelperNS.loginUIHelper.closeLoginWnd(a)
                } while (0)
            }

            updateLoginWnd(e, t, n, i) {
                u.information("updateLoginWnd", e, t, n);
                let a = !1, r = null, d = null, c = null, h = null;
                o.isNullOrUndefined(i[0]) || (a = i[0]), o.isNullOrUndefined(i[1]) || (r = i[1]), o.isNullOrUndefined(i[2]) || (d = i[2]), o.isNullOrUndefined(i[3]) || (c = i[3]), o.isNullOrUndefined(i[4]) || (h = i[4]), l.LoginHelperNS.loginUIHelper.updateLoginWnd(a, r, d, c, h), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            getLoginDeviceID(e, t, n, i) {
                u.information("getDeviceID", e, t, n), l.LoginHelperNS.loginSDKHelper.getDeviceID().then(i => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }).catch(i => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.CallFailed, i)
                })
            }

            retryLogIn(e, t, n, i) {
                u.information("retryLogIn"), l.LoginHelperNS.loginHelper.logIn("retryLogIn"), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            showModifierUserInfoWnd(e, t, n, i) {
                u.information("showModifierUserInfoWnd", e, t, n);
                let a = "";
                a = o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) ? "" : i[0], l.LoginHelperNS.loginUIHelper.createModifierUserInfoWnd(a), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            closeModifierUserInfoWnd(e, t, n, i) {
                u.information("showModifierUserInfoWnd", e, t, n);
                let a = "";
                a = o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) ? "" : i[0], l.LoginHelperNS.loginUIHelper.closeModifierUserInfoWnd(a), e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
            }

            getUserHeaderByUserID(e, t, n, i) {
                u.information("getUserHeaderByUserID", e, t, n), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) ? e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError) : l.LoginHelperNS.loginHelper.getUserHeaderAw(i[0]).then(i => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }).catch()
            }
        };
        e.registerNativeFunction = function () {
            t.registerNativeFunction()
        }
    }(t.LoginNaviteFunctionNS || (t.LoginNaviteFunctionNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(5), o = n(52), r = n(28), s = n(32), l = n(85), u = n(82), d = n(17), c = n(108), h = n(63),
        f = n(21), p = n(163), g = n(11), k = n(230), m = n(645), T = i.default.getLogger("DKNativeFunction"),
        v = r.DownloadKernelTaskManager.getTaskManager(), w = s.DownloadKernelEventManager.getEventManager(),
        y = l.DownloadKernelCategoryViewManager.getCategoryViewManager();
    !function (e) {
        const t = new class {
            constructor() {
                this.isRegister = !1, w.attachTaskEvent(a.DownloadKernel.TaskEventType.DetailChanged, (...e) => {
                    this.onTaskDetailChanged(...e)
                }), w.attachTaskEvent(a.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                    this.onTaskStatusChanged(...e)
                }), w.attachTaskEvent(a.DownloadKernel.TaskEventType.DcdnStatusChanged, (...e) => {
                    this.onTaskDcdnStatusChanged(...e)
                }), w.attachTaskEvent(a.DownloadKernel.TaskEventType.BtSubFileDetailChanged, (...e) => {
                    this.onBtSubFileDetailChanged(...e)
                }), w.attachTaskEvent(a.DownloadKernel.TaskEventType.BtSubFileForbidden, (...e) => {
                    this.onBtSubFileForbidden(...e)
                }), w.attachTaskEvent(a.DownloadKernel.TaskEventType.InsertToCategoryView, (...e) => {
                    this.onTaskInserted(...e)
                }), w.attachTaskEvent(a.DownloadKernel.TaskEventType.RemoveFromCategoryView, (...e) => {
                    this.onTaskRemoved(...e)
                }), o.DownloadKernelManager.attachListener(f.NodeEventMesssageNS.eventGlobalDownloadSpeedChanged, (...e) => {
                    this.onGlobalDownloadSpeedChanged(...e)
                })
            }

            registerNativeFunction() {
                if (!this.isRegister) {
                    this.isRegister = !0;
                    let e = [{
                        functionName: "GetTaskChannelInfo",
                        nativeFunc: this.getTaskChannelInfo
                    }, {
                        functionName: "GetTaskBaseInfo",
                        nativeFunc: this.getTaskBaseInfo
                    }, {functionName: "GetTaskStatus", nativeFunc: this.getTaskStatus}, {
                        functionName: "FindTask",
                        nativeFunc: this.findTask
                    }, {functionName: "IsTaskExist", nativeFunc: this.isTaskExist}, {
                        functionName: "IsSupportPlay",
                        nativeFunc: this.isSupportPlay
                    }, {
                        functionName: "GetTaskDownloadSpeed",
                        nativeFunc: this.getTaskDownloadSpeed
                    }, {
                        functionName: "EnableDcdnWithVipCert",
                        nativeFunc: this.enableDcdnWithVipCert
                    }, {
                        functionName: "UpdateDcdnWithVipCert",
                        nativeFunc: this.updateDcdnWithVipCert
                    }, {
                        functionName: "DisableDcdnWithVipCert",
                        nativeFunc: this.disableDcdnWithVipCert
                    }, {functionName: "GetTpPeerId", nativeFunc: this.getPeerId}, {
                        functionName: "ExecSqlite",
                        nativeFunc: this.execSqlite
                    }, {
                        functionName: "QuerySqlite",
                        nativeFunc: this.querySqlite
                    }, {
                        functionName: "GetCategoryViewTaskList",
                        nativeFunc: this.getCategoryViewTaskList
                    }, {
                        functionName: "GetCategoryViewTaskListForSuspensionWnd",
                        nativeFunc: this.getCategoryViewTaskListForSuspensionWnd
                    }, {
                        functionName: "IsLoadStorageTaskFinish",
                        nativeFunc: this.isLoadStorageTaskFinish
                    }, {
                        functionName: "IsSupportInstall",
                        nativeFunc: this.isSupportInstall
                    }, {functionName: "GetDownloadProgress", nativeFunc: this.getDownloadProgress}];
                    u.setDefaultNativeFunctionMap(e)
                }
            }

            getTaskChannelInfo(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    if (o) {
                        let i = o.getTaskChannelInfo(), a = JSON.stringify(i);
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, a)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            getTaskBaseInfo(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    if (o) {
                        let i = o.getTaskBaseInfo(), a = JSON.stringify(i);
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, a)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            getTaskDownloadSpeed(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    if (o) {
                        let i = o.getDownloadSpeed();
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            getTaskStatus(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    if (o) {
                        let i = o.getTaskStatus();
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            findTask(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0] || !i[1]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let o = {keyType: i[0], keyValue: i[1], keyFilter: a.DownloadKernel.KeyFilter.All};
                    v.findTaskAsync(o, (i, o) => {
                        if (i && o) {
                            let r = o.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId);
                            e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i, r)
                        } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !1, 0)
                    })
                } while (0)
            }

            isTaskExist(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0];
                    v.getTaskFromTaskId(a) ? e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !0) : e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !1)
                } while (0)
            }

            isSupportPlay(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    if (o) {
                        let i = o.isSupportPlay();
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !1)
                } while (0)
            }

            enableDcdnWithVipCert(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0] || !i[1]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    o ? (o.enableDcdnWithVipCert(i[1]), e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success)) : e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            updateDcdnWithVipCert(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0] || !i[1]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    o ? (o.updateDcdnWithVipCert(i[1]), e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success)) : e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            disableDcdnWithVipCert(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = v.getTaskFromTaskId(a);
                    o ? (o.disableDcdnWithVipCert(), e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success)) : e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            getPeerId(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    T.verbose(i), o.DownloadKernelManager.getPeerId().then(i => {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    }).catch()
                } while (0)
            }

            execSqlite(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    h.ThunderKernel.execSqlite(i[0], i => {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    })
                } while (0)
            }

            querySqlite(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    h.ThunderKernel.querySqlite(i[0], i => {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    })
                } while (0)
            }

            getCategoryViewTaskList(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = y.getCategoryViewFromId(i[0]);
                    if (a) {
                        let i = [], o = a.getTasks();
                        if (o) for (let e of o) {
                            let t = e[0];
                            i.push(t)
                        }
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, i)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            getCategoryViewTaskListForSuspensionWnd(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = y.getCategoryViewFromId(i[0]);
                    if (a) {
                        let i = a.getTasks(), o = "", r = [];
                        if (i) {
                            for (let [, e]of i) {
                                let t = e.getTaskBaseInfo();
                                r.push(t)
                            }
                            o = JSON.stringify(r)
                        }
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, o)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError)
                } while (0)
            }

            isLoadStorageTaskFinish(e, t, n) {
                do {
                    if (!e || !t || !n) break;
                    o.DownloadKernelManager.attachListener(f.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, () => {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !0)
                    })
                } while (0)
            }

            onTaskDetailChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.DetailChanged) break;
                    if (!e[1]) break;
                    let t = e[1], n = {};
                    for (let e = 0; e < t.length; ++e) {
                        let i = t[e];
                        if (!i) continue;
                        let o = i.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId), r = i.getTaskBaseInfo();
                        n[o] = r
                    }
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnTaskDetailChanged", JSON.stringify(n))
                } while (0)
            }

            onTaskStatusChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.StatusChanged) break;
                    if (!e[1]) break;
                    let t = e[1], n = {};
                    for (let e = 0; e < t.length; ++e) {
                        let i = t[e];
                        if (!i) continue;
                        let o = i.getTaskStatus();
                        n[i.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId)] = o
                    }
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnTaskStatusChanged", JSON.stringify(n))
                } while (0)
            }

            onTaskDcdnStatusChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.DcdnStatusChanged) break;
                    if (!e[1]) break;
                    let t = e[1], n = {};
                    for (let e = 0; e < t.length; ++e) {
                        let i = t[e];
                        if (!i) continue;
                        let o = i.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId),
                            r = i.getTaskChannelInfo().dcdnStatus;
                        n[o] = r
                    }
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnTaskDcdnStatusChanged", JSON.stringify(n))
                } while (0)
            }

            onBtSubFileDetailChanged(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.BtSubFileDetailChanged) break;
                    if (!e[1] || !e[2]) break;
                    let t = e[1], n = e[2];
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnBtSubFileDetailChanged", t, JSON.stringify(n))
                } while (0)
            }

            onBtSubFileForbidden(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.BtSubFileForbidden) break;
                    if (!e[1] || !e[2]) break;
                    let t = e[1], n = e[2];
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnBtSubFileForbidden", t, n)
                } while (0)
            }

            onTaskInserted(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.InsertToCategoryView) break;
                    if (void 0 === e[1] || !e[2] || !e[3]) break;
                    let t = e[1], n = e[2], i = e[3], o = [];
                    for (let e = 0; e < i.length; ++e) {
                        let t = i[e].getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId);
                        o.push(t)
                    }
                    let r = JSON.stringify(o);
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnTaskInserted", t, n, r)
                } while (0)
            }

            onTaskRemoved(...e) {
                do {
                    if (!e) break;
                    if (e[0] !== a.DownloadKernel.TaskEventType.RemoveFromCategoryView) break;
                    if (void 0 === e[1] || !e[2] || !e[3]) break;
                    let t = e[1], n = e[2], i = e[3], o = [];
                    for (let e = 0; e < i.length; ++e) {
                        let t = i[e].getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskId);
                        o.push(t)
                    }
                    let r = JSON.stringify(o);
                    c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnTaskRemoved", t, n, r)
                } while (0)
            }

            onGlobalDownloadSpeedChanged(...e) {
                let t = o.DownloadKernelManager.getTotalTaskDownloadSpeed(!1, !1),
                    n = o.DownloadKernelManager.getTotalTaskVipSpeed(!1, !1);
                c.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnGlobalDownloadSpeedChanged", t, n)
            }

            isSupportInstall(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0]) {
                        e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let o = i[0], r = v.getTaskFromTaskId(o);
                    if (r.getTaskAttribute(a.DownloadKernel.TaskAttribute.TaskType) === a.DownloadKernel.TaskType.Group) {
                        let i = r.getExtraObject(),
                            a = i.getUserData(k.TaskUserDataGUID.guidDownloadCompleteInstall, "installFile");
                        if (void 0 !== a && null !== a && "" !== a && "0" !== a) {
                            let r = p.TaskCtrlOperatorNS.getSavePathByFileName(o, a);
                            g.FileSystemAWNS.existsAW(r).then(a => {
                                if (a) {
                                    let a = i.getUserData(k.TaskUserDataGUID.guidDownloadCompleteRunParams, "runParams");
                                    e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !0, r, a)
                                } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !1)
                            }).catch()
                        } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !1)
                    } else e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, !1)
                } while (0)
            }

            getDownloadProgress(e, t, n, i) {
                let a = m.DownloadProgressNS.getDownloadProgressPercent();
                e.callNativeFunctionCallback(t, n, d.NativeFunctionErrorCode.Success, a)
            }
        };
        e.registerNativeFunction = function () {
            t.registerNativeFunction()
        }
    }(t.DKNaviteFunctionNS || (t.DKNaviteFunctionNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(21), o = n(82), r = n(17), s = n(108), l = n(25), u = n(254), d = n(237),
        c = i.default.getLogger("ConfigNaviteFunction");
    !function (e) {
        const t = new class {
            constructor() {
                this.isRegister = !1, l.ConfigNS.attachListener(a.NodeEventMesssageNS.eventConfigValueChanged, (e, t, n, i) => {
                    s.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnConfigValueChanaged", e, t, n, i)
                }), l.ConfigNS.attachListener(a.NodeEventMesssageNS.eventConfigInitFinished, () => {
                    s.NativeCallHostModule.nativeCallHost.fireNativeEvent("OnConfigInitFinished")
                })
            }

            registerNativeFunction() {
                if (!this.isRegister) {
                    this.isRegister = !0;
                    let e = [{functionName: "Save", nativeFunc: this.save}, {
                        functionName: "GetValue",
                        nativeFunc: this.getValue
                    }, {functionName: "SetValue", nativeFunc: this.setValue}, {
                        functionName: "SaveConfig",
                        nativeFunc: this.save
                    }, {functionName: "GetConfigValue", nativeFunc: this.getValue}, {
                        functionName: "SetConfigValue",
                        nativeFunc: this.setValue
                    }, {
                        functionName: "IsConfigInitFinish",
                        nativeFunc: this.isConfigInitFinish
                    }, {
                        functionName: "GetConfigModules",
                        nativeFunc: this.getConfigModules
                    }, {
                        functionName: "IsConfigBrowserInitFinish",
                        nativeFunc: this.isConfigBrowserInitFinish
                    }, {functionName: "GetInstallBrowserInfo", nativeFunc: this.getInstallBrowserInfo}];
                    o.setDefaultNativeFunctionMap(e)
                }
            }

            save(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    c.verbose(i), l.ConfigNS.save().then(() => {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success)
                    }).catch()
                } while (0)
            }

            getValue(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0] || !i[1]) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = i[1], s = i[2], u = l.ConfigNS.getValue(a, o, s);
                    e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, u)
                } while (0)
            }

            setValue(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (!i || !i[0] || !i[1]) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = i[1], s = i[2];
                    l.ConfigNS.setValue(a, o, s), e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success)
                } while (0)
            }

            isConfigInitFinish(e, t, n) {
                do {
                    if (!e || !t || !n) break;
                    l.ConfigNS.attachListener(a.NodeEventMesssageNS.eventConfigInitFinished, () => {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, !0)
                    })
                } while (0)
            }

            getConfigModules(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    let a = "", o = "";
                    null !== i && void 0 !== i && (null !== i[0] && void 0 !== i[0] && "" !== i[0] && (a = i[0]), null !== i[1] && void 0 !== i[1] && "" !== i[1] && (o = i[1]));
                    let s = u.default.getConfigInfo(a, o);
                    e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, s)
                } while (0)
            }

            isConfigBrowserInitFinish(e, t, n) {
                do {
                    if (!e || !t || !n) break;
                    d.SettingConfigHelperNS.configBrowserHelper.attachListener(a.NodeEventMesssageNS.eventConfigBrowserInitFinished, () => {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, !0)
                    })
                } while (0)
            }

            getInstallBrowserInfo(e, t, n, i) {
                do {
                    if (!e || !t || !n) break;
                    if (null === i || void 0 === i || i.length <= 0 || void 0 === i[0] || null === i[0] || "" === i[0]) {
                        e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let a = i[0], o = d.SettingConfigHelperNS.configBrowserHelper.getWatchBrowerByName(a);
                    e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, o)
                } while (0)
            }
        };
        e.registerNativeFunction = function () {
            t.registerNativeFunction()
        }
    }(t.ConfigNaviteFunctionNS || (t.ConfigNaviteFunctionNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(82), a = n(7), o = n(486), r = n(485), s = n(17);
    !function (e) {
        const t = new class {
            constructor() {
                this.isRegister = !1
            }

            registerNativeFunction() {
                if (!this.isRegister) {
                    this.isRegister = !0;
                    let e = [{functionName: "InstallXmp", nativeFunc: this.installXmp}, {
                        functionName: "OpenXmp",
                        nativeFunc: this.openXmp
                    }, {
                        functionName: "GetXmpCoreVersion",
                        nativeFunc: this.getXmpCoreVersion
                    }, {functionName: "GetXmpBuildNum", nativeFunc: this.getXmpBuildNum}, {
                        functionName: "GetXmpPath",
                        nativeFunc: this.getXmpPath
                    }, {functionName: "GetXmpReg", nativeFunc: this.getXmpReg}, {
                        functionName: "GetXmpUserDataPath",
                        nativeFunc: this.getXmpUserDataPath
                    }];
                    i.setDefaultNativeFunctionMap(e)
                }
            }

            installXmp(e, t, n, i) {
                a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n) || o.default.installXmp().then(() => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success)
                }).catch()
            }

            openXmp(e, t, n, i) {
                do {
                    if (a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n)) break;
                    let r = "";
                    a.isNullOrUndefined(i) || a.isNullOrUndefined(i[0]) || (r = i[0]), o.default.openXmp(r).then(i => {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                    }).catch()
                } while (0)
            }

            getXmpCoreVersion(e, t, n, i) {
                a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n) || o.default.getXmpCoreVersion().then(i => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }).catch()
            }

            getXmpBuildNum(e, t, n, i) {
                a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n) || o.default.getXmpBuildNum().then(i => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }).catch()
            }

            getXmpPath(e, t, n, i) {
                if (a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n)) return;
                let o = r.DownloadAndPlayNS.getXmpPath();
                e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, o)
            }

            getXmpReg(e, t, n, i) {
                do {
                    if (a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n)) break;
                    if (a.isNullOrUndefined(i) || a.isNullOrUndefined(i[0])) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let o = i[0];
                    if (a.isNullOrUndefined(o) || "" === o) {
                        e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.ParamError);
                        break
                    }
                    let l = r.DownloadAndPlayNS.getXmpReg(o);
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, l)
                } while (0)
            }

            getXmpUserDataPath(e, t, n, i) {
                a.isNullOrUndefined(e) || a.isNullOrUndefined(t) || a.isNullOrUndefined(n) || o.default.getXmpUserDataPath().then(i => {
                    e.callNativeFunctionCallback(t, n, s.NativeFunctionErrorCode.Success, i)
                }).catch()
            }
        };
        e.registerNativeFunction = function () {
            t.registerNativeFunction()
        }
    }(t.DownloadAndPlayNaviteFunctionNS || (t.DownloadAndPlayNaviteFunctionNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(11), r = n(25), s = n(21), l = n(58), u = n(5), d = n(52), c = n(32), h = n(658), f = n(3),
        p = n(1), g = n(516), k = n(230), m = n(86), T = n(157), v = n(112), w = n(13), y = n(113),
        S = g.MsgQueueManagerNS.MsgQueue.getInstance().getQueue("notification"),
        b = c.DownloadKernelEventManager.getEventManager(), C = p.default.getLogger("notification-render"),
        D = T.ToastNotifyManagerNS.getToastNotifyManger(), N = 1;
    const I = new class {
        init() {
            this.attachConfigInitFinished(), this.attachTaskStatusChanged(), this.attachTaskCreated()
        }

        attachConfigInitFinished() {
            r.ConfigNS.attachListener(s.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.onConfigInitFinished()
            })
        }

        onConfigInitFinished() {
            this.attachLoadStorageTaskFinish()
        }

        attachLoadStorageTaskFinish() {
            d.DownloadKernelManager.attachListener(s.NodeEventMesssageNS.eventTaskDataBaseLoadEnd, () => {
                this.autoStartUnfinishTask(), setTimeout(() => {
                    this.autoDeleteNonExistTasks().catch()
                }, 1e4)
            })
        }

        autoDeleteNonExistTasks() {
            return i(this, void 0, void 0, function* () {
                if (r.ConfigNS.getValue("ConfigNormalSession", "ConfigNormal_AutoDeleteNotExistFile", !1)) {
                    let e = yield l.TaskOperatorNs.removeNonExistingTask();
                    if (e > 0) {
                        let t = "已自动删除" + e + "个文件不存在的任务";
                        C.information(t), D.showNotify(T.ToastNotifyManagerNS.notifyIdAutoDeleteNonExistTasks, v.ToastNotifyItemType.GreenNotify, t, 3e3)
                    }
                }
            })
        }

        autoStartUnfinishTask() {
            let e = r.ConfigNS.getValue("ConfigNormalSession", "ConfigNormal_MaxRunningTaskCount", 5);
            m.DowloadDispatchNS.setStartTaskCount(e), r.ConfigNS.getValue("ConfigNormalSession", "ConfigNormal_AutoStartUnFinishedTask", !1) && l.TaskOperatorNs.startAll()
        }

        getBrowserFromProductInfo(e) {
            let t = "";
            do {
                if (void 0 === e || null === e || "" === e) break;
                let n = /^(xl_thunder_pc)\|([\d\.]+)\|(\d+)\|(.*)$/.exec(e);
                if (null === n) break;
                if (null === n[4] || void 0 === n[4]) break;
                t = n[4]
            } while (0);
            return t
        }

        convertSourceToStat(e) {
            let t = e;
            do {
                if ("leftup" === e || "rightup" === e || "BHO_left" === e || "BHO_right" === e) {
                    t = "BHO";
                    break
                }
                if ("wfp" === e) {
                    t = "XLWFP";
                    break
                }
                if ("redown" === e) {
                    t = "re_download";
                    break
                }
                if ("newwindow" === e) {
                    t = "newwindow_url";
                    break
                }
                if ("bt_file" === e) {
                    t = "Torrent";
                    break
                }
            } while (0);
            return t
        }

        statCoreEvent(e, t, n) {
            do {
                if (null === e) break;
                if (e.getTaskAttribute(u.DownloadKernel.TaskAttribute.GroupTaskId) > 0) break;
                let i = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.Origin);
                i = this.convertSourceToStat(i);
                let o = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.ProductInfo),
                    r = this.getBrowserFromProductInfo(o), s = e.getId();
                const l = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.FileSize);
                let c = `source=${i},broswer=${r},taskid=${s}`,
                    h = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType);
                h === u.DownloadKernel.TaskType.P2sp ? c = `${c},task_type=p2sp,download_info=${encodeURIComponent(e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskUrl))}` : h === u.DownloadKernel.TaskType.Bt ? c = `${c},task_type=bt,download_info=${e.getExtraObject().getInfoId()}` : h === u.DownloadKernel.TaskType.Emule ? c = `${c},task_type=emule,download_info=${encodeURIComponent(e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskUrl))}` : h === u.DownloadKernel.TaskType.Group ? c = `${c},task_type=group,download_info=` : h === u.DownloadKernel.TaskType.Magnet && (c = `${c},task_type=magnet,download_info=${encodeURIComponent(e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskUrl))}`);
                let f = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), p = encodeURIComponent(f),
                    g = a.extname(f);
                "" !== (g = void 0 === g ? "" : g) && (g = g.substring(1)), y.ParseUrlFileNameNS.isUsualFileExtName(g) || (g = ""), c = `${c},filename=${p},filesize=${l},filesuffix=${g},libversion=${d.DownloadKernelManager.getDownloadSdkVersion()}`, void 0 !== n && (c = `${c},${n}`);
                let k = "core_event";
                C.information("trackEvent", k, t, c), w.XLStatNS.trackEvent(k, t, "", 0, 0, 0, 0, c)
            } while (0)
        }

        statJsSdkEvent(e, t, n) {
            do {
                if (null === e) break;
                if (e.getTaskAttribute(u.DownloadKernel.TaskAttribute.GroupTaskId) > 0) break;
                if (e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskType) !== u.DownloadKernel.TaskType.Group) break;
                if ("ThunderUnion" !== e.getTaskAttribute(u.DownloadKernel.TaskAttribute.Origin)) break;
                let i = e.getId();
                const a = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.FileSize);
                let o = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName), r = encodeURIComponent(o),
                    s = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.Gcid), l = e.getExtraObject();
                if (null === l || void 0 === l) break;
                let d = `taskid=${i},filesize=${a},filename=${r},gcid=${s},filenum=${l.getSubTaskCount()}`;
                if ("js_grouptask_download_success" === t && null !== a && void 0 !== a && a >= 1048576) {
                    let t = 0, n = 0, i = 0, a = 0, o = e.getTaskChannelInfo();
                    if (null !== o && void 0 !== o) {
                        void 0 !== o.originSize && (t = this.getSizeFormat(o.originSize)), null !== o.p2sSize && void 0 !== o.p2sSize && (n = this.getSizeFormat(o.p2sSize)), null !== o.p2pSize && void 0 !== o.p2pSize && (i = this.getSizeFormat(o.p2pSize));
                        let e = 0;
                        null !== o.offlineSize && void 0 !== o.offlineSize && (e = o.offlineSize), null !== o.dcdnSize && void 0 !== o.dcdnSize && (e += o.dcdnSize), d = `${d},ysdzh=${t},jxjs=${n},P2P=${i},hyjs=${a = this.getSizeFormat(e)}`
                    }
                }
                void 0 !== n && (d = `${d},${n}`);
                let c = "core_operate";
                C.information("trackEvent", c, t, d), w.XLStatNS.trackEvent(c, t, "", 0, 0, 0, 0, d)
            } while (0)
        }

        getSizeFormat(e) {
            let t = 0;
            do {
                if (void 0 === e || null === e || e <= 0) break;
                t = Number((e / 1048576).toFixed(2))
            } while (0);
            return t
        }

        attachTaskCreated() {
            b.attachTaskEvent(u.DownloadKernel.TaskEventType.TaskCreated, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== u.DownloadKernel.TaskEventType.TaskCreated) break;
                    let t = e[1];
                    if (!t) break;
                    for (let e of t) this.statCoreEvent(e, "createtask"), this.statJsSdkEvent(e, "js_grouptask_create")
                } while (0)
            })
        }

        attachTaskStatusChanged() {
            b.attachTaskEvent(u.DownloadKernel.TaskEventType.StatusChanged, (...e) => {
                do {
                    if (!e) break;
                    if (e[0] !== u.DownloadKernel.TaskEventType.StatusChanged) break;
                    let t = e[1];
                    if (!t) break;
                    for (let e = 0; e < t.length; ++e) {
                        let n = t[e];
                        if (!n) continue;
                        let i = n.getTaskStatus();
                        if (n.getTaskAttribute(u.DownloadKernel.TaskAttribute.GroupTaskId) > 0) {
                            i === u.DownloadKernel.TaskStatus.Succeeded && this.checkOpenOnFinish(n).catch();
                            continue
                        }
                        let a = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.Background);
                        if (i === u.DownloadKernel.TaskStatus.Succeeded) {
                            let e = `task_stop_type=success,errorcode=0,gcid=${n.getTaskAttribute(u.DownloadKernel.TaskAttribute.Gcid)}`;
                            this.statCoreEvent(n, "download_task_result", e);
                            let t = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.CreateTime);
                            e = `downloadtime=${(n.getTaskAttribute(u.DownloadKernel.TaskAttribute.CompletionTime) - t) / 1e3}`, this.statJsSdkEvent(n, "js_grouptask_download_success", e), a || this.onTaskFinished(n)
                        } else if (i === u.DownloadKernel.TaskStatus.Failed) {
                            let e = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.Gcid),
                                t = n.getTaskAttribute(u.DownloadKernel.TaskAttribute.ErrorCode),
                                i = `task_stop_type=fail,errorcode=${t},gcid=${e}`;
                            this.statCoreEvent(n, "download_task_result", i), i = `errorcode=${t}`, this.statJsSdkEvent(n, "js_grouptask_download_fail", i), a || this.onTaskFailed(n)
                        }
                    }
                } while (0)
            })
        }

        onTaskFinished(e) {
            let t = r.ConfigNS.getValue("BossKey", "BossKeyState", !1);
            const n = r.ConfigNS.getValue("ConfigMsg", "ConfigMsg_Finish", !0),
                i = f.remote.getGlobal("mainRendererWindow"), a = i.isMinimized(), o = i.isVisible(),
                s = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName),
                d = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.FileSize), c = e.getTaskBaseInfo(),
                p = c.taskType === u.DownloadKernel.TaskType.Group, g = e.getIsPrivate(),
                m = null !== f.remote.BrowserWindow.getFocusedWindow();
            if (t || this.playTaskFinishedSound().catch(), this.openFinishedTask(e).catch(), p) {
                let t = e.getExtraObject().getUserData(k.TaskUserDataGUID.guidDownloadCompleteInstall, "isImmediatelyInstall");
                null !== t && void 0 !== t && "1" === t && l.TaskOperatorNs.executeInstallFile(e).catch()
            }
            if (!t && n && (a || !o || !m) && s && !g) {
                if (p && d < 10485760) return;
                let e = S.isEmpty();
                C.information("DownloadComplete", S), S.enQueue({
                    callback: function () {
                        C.information("trackEvent", "download_leftpanel", "dl_finished_tips_show", "panel_type=mypc"), w.XLStatNS.trackEvent("download_leftpanel", "dl_finished_tips_show", "", 0, 0, 0, 0, "panel_type=mypc"), h.Notification.notify({
                            type: "DownloadComplete",
                            data: {taskBase: c}
                        })
                    }, name: "download", priority: N
                }), (e || S.getCurrentProperty() < N) && S.deQueue()
            }
        }

        onTaskFailed(e) {
            let t = r.ConfigNS.getValue("BossKey", "BossKeyState", !1);
            const n = r.ConfigNS.getValue("ConfigMsg", "ConfigMsg_FailSuggest", !0),
                i = f.remote.getGlobal("mainRendererWindow"), a = i.isMinimized(), o = i.isVisible(),
                s = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName),
                l = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.FileSize), d = e.getTaskBaseInfo(),
                c = d.taskType === u.DownloadKernel.TaskType.Group, p = e.getIsPrivate(),
                g = null !== f.remote.BrowserWindow.getFocusedWindow();
            if (!t && n && (a || !o || !g) && s && !p) {
                if (c && l < 10485760) return;
                let e = S.isEmpty();
                S.enQueue({
                    callback: function () {
                        C.information("trackEvent", "download_leftpanel", "dl_fail_tips_show", "panel_type=mypc"), w.XLStatNS.trackEvent("download_leftpanel", "dl_fail_tips_show", "", 0, 0, 0, 0, "panel_type=mypc"), h.Notification.notify({
                            type: "DownloadFail",
                            data: {taskBase: d}
                        })
                    }, name: "download", priority: N
                }), (e || S.getCurrentProperty() < N) && S.deQueue()
            }
        }

        playTaskFinishedSound() {
            return i(this, void 0, void 0, function* () {
                if (r.ConfigNS.getValue("ConfigMsg", "ConfigMsg_PlayWaveWhileFinish", !0)) {
                    let e = a.join(__rootDir, "../../download-complete.wav"),
                        t = r.ConfigNS.getValue("ConfigMsg", "ConfigMsg_WavePath", e);
                    (yield o.FileSystemAWNS.existsAW(t)) ? yield new Audio(t).play() : (yield o.FileSystemAWNS.existsAW(e)) && (yield new Audio(e).play())
                }
            })
        }

        checkOpenOnFinish(e) {
            return i(this, void 0, void 0, function* () {
                let t = e.getTaskAttribute(u.DownloadKernel.TaskAttribute.TaskName);
                if (".torrent" === a.extname(t)) {
                    if (r.ConfigNS.getValue("BtGenericSettings", "AutoBTNewTask", !1)) {
                        let t = e.getTaskBaseInfo();
                        yield l.TaskOperatorNs.openTaskItem(t)
                    }
                } else if (1 === e.getTaskAttribute(u.DownloadKernel.TaskAttribute.OpenOnComplete)) {
                    let t = e.getTaskBaseInfo();
                    yield l.TaskOperatorNs.openTaskItem(t)
                }
            })
        }

        openFinishedTask(e) {
            return i(this, void 0, void 0, function* () {
                if (r.ConfigNS.getValue("TaskDefaultSettings", "OpenFile", !1)) {
                    let t = e.getTaskBaseInfo();
                    yield l.TaskOperatorNs.openTaskItem(t)
                } else this.checkOpenOnFinish(e).catch()
            })
        }
    };
    !function (e) {
        e.init = function () {
            I.init()
        }
    }(t.TaskHelperNS || (t.TaskHelperNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1).default.getLogger("msg-queue");
    !function (e) {
        e.Queue = class {
            constructor() {
                this.queue = [], this.priority = 0
            }

            enQueue(e) {
                let t = !1;
                i.information("消息队列增加消息", this.queue);
                for (let n = 0; n < this.queue.length; n++) if (this.queue[n].priority >= e.priority) {
                    t = !0, this.queue.splice(n, 0, e);
                    break
                }
                t || this.queue.push(e)
            }

            deQueue() {
                if (0 !== this.queue.length) {
                    let e = this.queue.pop();
                    this.priority = e.priority, void 0 !== e.callback && "function" == typeof e.callback && (i.information("消息队列弹出消息", this.queue), e.callback())
                }
            }

            clearQueuesByName(e) {
                let t = [];
                for (let n = 0; n < this.queue.length; n++) this.queue[n].name !== e && t.push(this.queue[n]);
                this.queue = t
            }

            isEmpty() {
                return 0 === this.queue.length
            }

            getCurrentProperty() {
                return this.priority
            }
        }
    }(t.MsgQueueNS || (t.MsgQueueNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(14), o = n(2), r = n(6), s = n(1), l = n(13), u = n(21), d = n(25), c = n(515), h = n(52), f = n(659),
        p = n(274), g = n(58), k = n(86), m = n(157), T = n(112), v = n(237), w = s.default.getLogger("ConfigHandler"),
        y = r.default(o.join(__rootDir, "../bin/ThunderHelper.node")),
        S = m.ToastNotifyManagerNS.getToastNotifyManger();
    const b = new class {
        init() {
            this.attachConfigInitFinished(), d.ConfigNS.attachListener(u.NodeEventMesssageNS.eventConfigValueChanged, (e, t, n, i) => {
                switch (e) {
                    case"ConfigNormalSession":
                        this.onConfigNormalSessionChanged(t, n, i);
                        break;
                    case"TaskDefaultSettings":
                        this.onTaskDefaultSettingsChanged(t, n, i);
                        break;
                    case"ConfigNet":
                        this.onConfigNetChanged(t, n, i);
                        break;
                    case"ConfigMsg":
                        this.onConfigMsgChanged(t, n, i);
                        break;
                    case"Monitor":
                        this.onMonitorChanged(t, n, i);
                        break;
                    case"Proxy":
                        this.onProxyChanged(t, n, i);
                        break;
                    case"BtGenericSettings":
                        this.onBtGenericSettingsChanged(t, n, i);
                        break;
                    case"ConfigNoLimitDownload":
                        this.onConfigNoLimitDownloadChanged(t, n, i);
                        break;
                    case"Others":
                        this.onOthersChanged(t, n, i);
                        break;
                    case"IdleDownload":
                        this.onIdleDownloadChanged(t, n, i);
                        break;
                    case"EMuleGenericSettings":
                        this.onEMuleGenericSettingsChanged(t, n, i);
                        break;
                    case"MagnetGenericSettings":
                        this.onMagnetGenericSettingsChanged(t, n, i);
                        break;
                    case"BossKey":
                        this.onBossKeyChanged(t, n, i);
                        break;
                    case"DiskCache":
                        this.onDiskCacheChanged(t, n, i);
                        break;
                    case"Motitor":
                        this.onMotitorChanged(t, n, i)
                }
            }), c.BHOConfigNS.attachListener(u.NodeEventMesssageNS.eventBHOConfigValueChanged, (e, t, n, i) => {
                switch (e) {
                    case"Monitor":
                        this.onBHOConfigMonitorSessionChanged(t, n, i)
                }
            })
        }

        attachConfigInitFinished() {
            d.ConfigNS.attachListener(u.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.onConfigInitFinished()
            })
        }

        onConfigInitFinished() {
            let e = d.ConfigNS.getValue("DiskCache", "DiskCacheSelect", 256);
            h.DownloadKernelManager.setCacheSize(e);
            let t = d.ConfigNS.getValue("ConfigNormalSession", "ConfigNormal_MaxRunningTaskCount", 5);
            k.DowloadDispatchNS.setStartTaskCount(t);
            let n = d.ConfigNS.getValue("ConfigNormalSession", "ConfigNormal_AutoRun", !0),
                i = y.readRegString("HKEY_CURRENT_USER", "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Thunder");
            if (n && "" === i ? d.ConfigNS.setValue("ConfigNormalSession", "ConfigNormal_AutoRun", 0) : n || "" === i || d.ConfigNS.setValue("ConfigNormalSession", "ConfigNormal_AutoRun", 1), "1" === d.ConfigNS.getValue("ConfigNet", "ConfigNet_Type", "1") ? p.DownloadModeNS.setFullDownloadMode() : p.DownloadModeNS.handleCustomDownloadMode(), d.ConfigNS.getValue("BtGenericSettings", "AssocTorrent", !0) && f.FileAssociationNS.checkAndRegisterTorrentFile(), 0 === d.ConfigNS.getValue("GenericSettings", "CheckCpu", 0)) {
                d.ConfigNS.setValue("GenericSettings", "CheckCpu", 1);
                let e = y.getCpuProcessors();
                y.getCpuFrequency(t => {
                    let n = "0";
                    n = 1 === e ? "0" : 2 === e || 3 === e ? t < 3500 ? "0" : "1" : 4 === e && t < 3e3 ? "0" : "1", d.ConfigNS.setValue("GenericSettings", "AnimationLevel", n);
                    let i = "cpu_processors=" + e.toString();
                    i += ",cpu_frequency=", i += t.toString(), l.XLStatNS.trackEvent("xdas_client_pro", "cpu_info", "", 0, 0, 0, 0, i)
                })
            }
        }

        onConfigNormalSessionChanged(e, t, n) {
            switch (e) {
                case"ConfigNormal_AutoRun":
                    this.handleAutoRun(t, n);
                    break;
                case"ConfigNormal_AutoStartUnFinishedTask":
                    break;
                case"ConfigNormal_MaxRunningTaskCount":
                    this.handleSetMaxRunningTaskCount(t, n);
                    break;
                case"TaskCountTotalSpeed":
                case"ConfigNormal_AutoSlowTask2Tail":
                    break;
                case"ConfigNormal_AutoDeleteNotExistFile":
                    this.handleAutoDeleteNonExistTasks(t, n).catch()
            }
        }

        onTaskDefaultSettingsChanged(e, t, n) {
            switch (e) {
                case"DefaultPath":
                case"UseLastCatalog":
                case"Win7Libraries":
                case"NewTaskStartMode":
                case"OpenFile":
                case"OpenSilenceDownload":
                    break;
                case"AwayModeEnabled":
                    this.handleAwayMode(t, n);
                    break;
                case"NewTaskDlgWithoutMainWnd":
                    this.handleNewTaskDlgWithoutMainWnd(t, n);
                    break;
                case"OrignHostThreads":
                    this.handleSetThreadCount(t, n)
            }
        }

        onConfigNetChanged(e, t, n) {
            switch (e) {
                case"ConfigNet_Type":
                    this.handleDownloadMode(t, n);
                    break;
                case"ConfigNet_Custom_MaxDownloadSpeed":
                case"ConfigNet_Custom_MaxUploadSpeed":
                case"ConfigNet_Custom_Time_Switch":
                case"ConfigNet_Custom_Time_Begin_Hour":
                case"ConfigNet_Custom_Time_Begin_Minute":
                case"ConfigNet_Custom_Time_End_Hour":
                case"ConfigNet_Custom_Time_End_Minute":
                    p.DownloadModeNS.handleCustomDownloadMode();
                    break;
                case"ConfigNet_OpenMirrorImageIncreaseSpeed":
                    this.handleOpenMirrorImageIncreaseSpeed(t, n);
                    break;
                case"ConfigNet_OpenXunleiP2PIncreaseSpeed":
                    this.handleOpenXunleiP2PIncreaseSpeed(t, n)
            }
        }

        onConfigMsgChanged(e, t, n) {
            switch (e) {
                case"ConfigMsg_Finish":
                    break;
                case"ConfigMsg_PlayWaveWhileFinish":
                    this.handlePlayWaveWhileFinish(t, n)
            }
        }

        onMonitorChanged(e, t, n) {
            switch (e) {
                case"MonitorClipBoard":
                    this.handleMonitorClipBoard(t, n)
            }
        }

        onMotitorChanged(e, t, n) {
            w.information("onMotitorChanged:", e, t, n);
            do {
                if ("MotitorAll" === e) break;
                let t = v.SettingConfigHelperNS.configBrowserHelper.getWriteIniConfigShowBrowsers();
                c.BHOConfigNS.setValue("Monitor", "ConfigBrowsers", t), v.SettingConfigHelperNS.configBrowserHelper.savaMotiorBrowserToConfig()
            } while (0)
        }

        onProxyChanged(e, t, n) {
            switch (e) {
                case"UseProxy":
                    this.handleUseProxy(t, n)
            }
        }

        onBtGenericSettingsChanged(e, t, n) {
            switch (e) {
                case"AutoBTNewTask":
                case"AssocTorrent":
                    break;
                case"ConfigBt_SetPortType":
                    this.handleSetPortType(t, n)
            }
        }

        onConfigNoLimitDownloadChanged(e, t, n) {
            switch (e) {
                case"TaskCountAutoAdd":
                    break;
                case"OpenNoLimitDownload":
                    this.handleOpenNoLimitDownload(t, n)
            }
        }

        onOthersChanged(e, t, n) {
            switch (e) {
                case"AntiDisturb":
                    this.handleAntiDisturb(t, n)
            }
        }

        onIdleDownloadChanged(e, t, n) {
            switch (e) {
                case"isOpen":
                    this.handleOpenIdleDownload(t, n)
            }
        }

        onEMuleGenericSettingsChanged(e, t, n) {
            switch (e) {
                case"EMuleWatchLink":
                    this.handleWatchEmuleLink(t, n)
            }
        }

        onMagnetGenericSettingsChanged(e, t, n) {
            switch (e) {
                case"MagnetWatchLink":
                    this.handleWatchMagnetLink(t, n)
            }
        }

        onBossKeyChanged(e, t, n) {
            switch (e) {
                case"BossKeySwitch":
                    this.handleBossKeySwitch(t, n)
            }
        }

        onDiskCacheChanged(e, t, n) {
            switch (e) {
                case"DiskCacheSelect":
                    this.handleDiskCacheSelect(t, n)
            }
        }

        handleAutoRun(e, t) {
            if (w.verbose("handleAutoRun preValue:", e, "; newValue:", t), t) {
                let e = o.join(__rootDir, "../../Thunder.exe") + " -silent -StartType:AutoRun";
                y.writeRegValue("HKEY_CURRENT_USER", "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Thunder", e, 1)
            } else y.deleteRegValue("HKEY_CURRENT_USER", "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Thunder")
        }

        handleSetMaxRunningTaskCount(e, t) {
            w.verbose("handleSetMaxRunningTaskCount preValue:", e, "; newValue:", t), t && k.DowloadDispatchNS.setStartTaskCount(t)
        }

        handleAutoDeleteNonExistTasks(e, t) {
            return i(this, void 0, void 0, function* () {
                if (t) {
                    let e = yield g.TaskOperatorNs.removeNonExistingTask();
                    if (e > 0) {
                        let t = "已自动删除" + e + "个文件不存在的任务";
                        w.information(t), S.showNotify(m.ToastNotifyManagerNS.notifyIdAutoDeleteNonExistTasks, T.ToastNotifyItemType.GreenNotify, t, 3e3)
                    }
                }
            })
        }

        handleSetThreadCount(e, t) {
            w.verbose("handleSetThreadCount preValue:", e, "; newValue:", t)
        }

        handleDownloadMode(e, t) {
            w.verbose("handleDownloadMode preValue:", e, "; newValue:", t), "1" === String(t) ? p.DownloadModeNS.setFullDownloadMode() : "0" === String(t) && p.DownloadModeNS.handleCustomDownloadMode()
        }

        handleOpenMirrorImageIncreaseSpeed(e, t) {
            w.verbose("handleOpenMirrorImageIncreaseSpeed preValue:", e, "; newValue:", t), h.DownloadKernelManager.enableCommonP2sChannel(t)
        }

        handleOpenXunleiP2PIncreaseSpeed(e, t) {
            w.verbose("handleOpenXunleiP2PIncreaseSpeed preValue:", e, "; newValue:", t), h.DownloadKernelManager.enableCommonP2pChannel(t)
        }

        handleMonitorClipBoard(e, t) {
            w.verbose("handleMonitorClipBoard preValue:", e, "; newValue:", t)
        }

        handleUseProxy(e, t) {
            w.verbose("handleUseProxy preValue:", e, "; newValue:", t)
        }

        handlePlayWaveWhileFinish(e, t) {
            w.verbose("handlePlayWaveWhileFinish preValue:", e, "; newValue:", t)
        }

        handleSetPortType(e, t) {
            w.verbose("handleSetPortType preValue:", e, "; newValue:", t)
        }

        handleOpenNoLimitDownload(e, t) {
            w.verbose("handleOpenNoLimitDownload preValue:", e, "; newValue:", t)
        }

        handleAntiDisturb(e, t) {
            w.verbose("handleAntiDisturb preValue:", e, "; newValue:", t)
        }

        handleOpenIdleDownload(e, t) {
            w.verbose("handleOpenIdleDownload preValue:", e, "; newValue:", t)
        }

        handleWatchEmuleLink(e, t) {
            w.verbose("handleWatchEmuleLink preValue:", e, "; newValue:", t)
        }

        handleWatchMagnetLink(e, t) {
            w.verbose("handleWatchMagnetLink preValue:", e, "; newValue:", t)
        }

        handleBossKeySwitch(e, t) {
            w.verbose("handleBossKeySwitch preValue:", e, "; newValue:", t)
        }

        handleDiskCacheSelect(e, t) {
            w.verbose("handleBossKeySwitch preValue:", e, "; newValue:", t), h.DownloadKernelManager.setCacheSize(t)
        }

        onBHOConfigMonitorSessionChanged(e, t, n) {
            switch (c.BHOConfigNS.saveSync(), e) {
                case"ConfigBrowsers":
                case"FilterSitesForUI":
                    this.handleBHOConfigMonitorBrowserChanged(t, n)
            }
        }

        handleBHOConfigMonitorBrowserChanged(e, t) {
            y.notifyBrowserConfigChanged(), w.verbose("handleBossKeySwitch preValue:", e, "; newValue:", t)
        }

        handleNewTaskDlgWithoutMainWnd(e, t) {
            e !== t && d.ConfigNS.saveSync()
        }

        handleAwayMode(e, t) {
            let n = t, i = a.release(), r = i.indexOf(".", 0), s = i.substring(0, r);
            if (null !== s && void 0 !== s && Number(s) >= 6) {
                let e = y.queryRegValue("HKEY_LOCAL_MACHINE", "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power", "AwayModeEnabled"),
                    t = o.join(__rootDir, "../../ThunderCmd.exe");
                w.information("设置离开模式:", t, n, e), n ? 1 !== e && y.shellExecute(0, "runas", t, "-OpenLeaveMode", "", "SW_HIDE") : 1 === e && y.shellExecute(0, "runas", t, "-CloseLeaveMode", "", "SW_HIDE")
            }
        }
    };
    !function (e) {
        e.init = function () {
            b.init()
        }
    }(t.ConfigHandlerNS || (t.ConfigHandlerNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(604), a = n(277);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(814), n(250), n(815), n(564), n(816), n(817), n(818), n(819), n(820), n(821);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\app.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(579), a = n(279);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(771);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(605), a = n(281);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\login-area.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(283);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-top\\address-bar-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(610), a = n(285);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\address-bar.vue", t.default = s.exports
}, function (e) {
    e.exports = {
        urls: [{url: "www.baidu.com", context: "百度一下，你就知道"}, {
            url: "www.sogou.com",
            context: "搜狗搜索引擎 - 上网从搜狗开始"
        }, {url: "www.youdao.com", context: "有道首页"}, {
            url: "www.bing.com",
            context: "微软必应搜索 - 全球搜索，有问必应"
        }, {url: "www.google.com", context: "谷歌"}, {url: "www.yahoo.com", context: "Yahoo"}, {
            url: "www.so.com",
            context: "360搜索，SO靠谱"
        }, {url: "www.qq.com", context: "腾讯首页"}, {url: "www.sohu.com", context: "搜狐"}, {
            url: "www.sina.com.cn",
            context: "新浪首页"
        }, {url: "www.thepaper.cn", context: "澎湃新闻-专注时政与思想"}, {
            url: "www.163.com",
            context: "网易"
        }, {url: "www.toutiao.com", context: "今日头条》你关心的,才是头条! - TouTiao.com"}, {
            url: "www.huxiu.com",
            context: "虎嗅网"
        }, {url: "www.ifeng.com", context: "凤凰网"}, {url: "tieba.baidu.com", context: "百度贴吧"}, {
            url: "www.tianya.cn",
            context: "天涯社区_华人网上家园"
        }, {url: "www.zhihu.com", context: "知乎 - 与世界分享你的知识、经验和见解"}, {
            url: "www.youku.com",
            context: "优酷-中国领先视频网站,提供视频播放,视频发布,视频搜索 - 优酷视频"
        }, {url: "www.tudou.com", context: "土豆_每个人都是生活的导演_在线视频观看,原创视频上传,海量视频搜索"}, {
            url: "v.qq.com",
            context: "腾讯视频-中国领先的在线视频媒体平台,海量高清视频在线观看"
        }, {url: "www.iqiyi.com", context: "爱奇艺-中国领先的视频门户，高清影视剧，网络视频在线观看"}, {
            url: "tv.sohu.com",
            context: "搜狐视频-中国领先的综合视频网站,正版高清视频在线观看,原创视频上传,全网视频搜索"
        }, {url: "www.acfun.cn", context: "AcFun弹幕视频网 - 认真你就输啦 (・ω・)ノ- ( ゜- ゜)つロ"}, {
            url: "www.bilibili.com",
            context: "哔哩哔哩弹幕视频网 - ( ゜- ゜)つロ 乾杯~ - bilibili"
        }, {url: "www.pptv.com", context: "PPTV聚力-始终和你同一频道,海量影视剧,高清体育直播,热点视频在线观看"}, {
            url: "www.le.com",
            context: "乐视视频 - 乐视旗下专业的影视剧视频网站_高清视频在线观看"
        }, {url: "www.cntv.cn", context: "央视网_世界就在眼前"}, {
            url: "www.hupu.com/",
            context: "虎扑体育 - 你的体育全世界！"
        }, {url: "sports.sina.com.cn", context: "新浪体育_新浪网"}, {
            url: "sports.qq.com",
            context: "腾讯体育_腾讯网"
        }, {url: "sports.sohu.com", context: "搜狐体育_搜狐网"}, {
            url: "sports.163.com",
            context: "网易体育_有态度的体育门户"
        }, {url: "sports.cntv.cn", context: "体育_央视网"}, {
            url: "china.nba.com",
            context: "NBA中国官方网站"
        }, {url: "www.titan24.com", context: "体坛网_体坛周报 足球周刊 扣篮 全体育官网"}, {
            url: "www.zhibo8.cc",
            context: "直播吧-NBA直播丨NBA直播吧丨足球直播丨英超直播丨CCTV5在线直播丨CBA直播丨体育直播"
        }, {url: "sports.ifeng.com", context: "凤凰体育_凤凰网"}, {
            url: "www.lottery.gov.cn",
            context: "中国体彩网 - 体育彩票管理中心唯一指定官方网站"
        }, {url: "www.xinhuanet.com/sports", context: "新华体育_新华网"}, {
            url: "sports.youku.com/",
            context: "运动即生活 - 优酷体育频道 - 优酷视频"
        }, {
            url: "sports.pptv.com",
            context: "体育频道-西甲-CBA-中超-亚冠-体育赛事视频24小时在线直播-PPTV聚力-始终和你同一频道"
        }, {url: "www.lesports.com", context: "乐视体育–最专业的体育赛事平台"}, {
            url: "www.xueqiu.com",
            context: "雪球"
        }, {url: "finance.qq.com/", context: "财经频道_腾讯网"}, {
            url: "finance.sina.com.cn/",
            context: "新浪财经_新浪网"
        }, {url: "finance.163.com/", context: "网易财经-有态度的财经门户"}, {
            url: "www.hexun.com",
            context: "和讯网-中国最大财经门户网站"
        }, {url: "www.eastmoney.com", context: "东方财富网：中国财经第一门户"}, {
            url: "www.stockstar.com",
            context: "证券之星_中国交易者第一门户_股票_基金_外汇_期货_黄金_行情"
        }, {url: "finance.ifeng.com/", context: "凤凰财经-新主流财经门户-凤凰网"}, {
            url: "www.cnfol.com",
            context: "中金在线首页：财经 _ 股票 _ 证券 _ 金融 _ 财经博客"
        }, {url: "www.caijing.com.cn", context: "财经网 - CAIJING.COM.CN"}, {
            url: "www.cnstock.com",
            context: "上海证券报·中国证券网-上市公司，财富管理，财经新闻，上证博客，网上营业部，中国资本市场信息披露平台"
        }, {url: "www.jrj.com.cn", context: "金融界—投资者首选财经金融门户网站，以证券交易为核心的互联网综合理财平台"}, {
            url: "fanyi.youdao.com",
            context: "在线翻译_有道"
        }, {url: "fanyi.baidu.com", context: "百度翻译"}, {
            url: "translate.google.cn",
            context: "谷歌翻译"
        }, {url: "www.douban.com", context: "豆瓣"}, {
            url: "www.mtime.com",
            context: "Mtime时光网：让电影遇见生活"
        }, {url: "www.gewara.com", context: "上海电影票网上购买预订_上海电影院排片购票_最新上映电影票价_格瓦拉生活网"}, {
            url: "www.onlinedown.net",
            context: "华军软件园-提供国内外最新免费软件、共享软件下载及发布的软件下载站，软件资讯、技巧、评测、教程等相关软件资讯！"
        }, {url: "xiazai.zol.com.cn/", context: "ZOL下载-免费软件,绿色软件"}, {
            url: "www.pc6.com",
            context: "pc6下载站 _ 官方软件下载基地_最安全的软件官方下载网站！"
        }, {url: "www.skycn.com", context: "下载_下载软件_提供最新最安全的免费软件资源下载_天空软件下载"}, {
            url: "www.crsky.com",
            context: "非凡软件站_CRSKY.com_旗舰软件下载站-免费软件、共享软件一网打尽!(原霏凡软件站)"
        }, {url: "music.baidu.com", context: "百度音乐-听到极致"}, {
            url: "y.qq.com",
            context: "QQ音乐 - 中国最新最全免费正版高品质音乐平台！"
        }, {url: "www.1ting.com", context: "一听音乐网_歌曲大全: :免费网络在线正版音乐第一站"}, {
            url: "www.9ku.com",
            context: "九酷音乐网|好听的歌|网络歌曲|dj舞曲|流行歌曲大全"
        }, {url: "www.kugou.com", context: "酷狗音乐 和音乐在一起"}, {
            url: "www.kuwo.cn",
            context: "正版音乐免费在线试听下载_酷我在线音乐播放器酷我音乐播放器"
        }, {url: "www.xiami.com", context: "虾米音乐(xiami.com) - 阿里音乐旗下品牌 - 乐随心动"}, {
            url: "www.yinyuetai.com",
            context: "音悦Tai-口袋·FAN-看好音乐"
        }, {url: "www.douban.fm", context: "Filmstar - 豆瓣FM - Beta"}, {
            url: "www.duomi.com",
            context: "多米音乐播放器官网下载,多米音乐手机版免费下载,多米音乐盒下载"
        }, {url: "www.yue365.com", context: "365音乐网_音乐MP3歌曲免费下载试听的音乐网站"}, {
            url: "music.163.com",
            context: "网易云音乐 听见好时光"
        }, {url: "www.migu.cn", context: "咪咕文化科技有限公司"}, {
            url: "www.musicradio.com.cn",
            context: "MusicRadio音乐之声"
        }, {url: "music.weibo.com", context: "微博音乐人-发现明天的流行音乐"}, {
            url: "www.bttiantang.com",
            context: "bt天堂 - bt电影下载 - BT天堂下载"
        }, {url: "www.dytt8.net", context: "电影天堂_免费电影_迅雷电影下载"}, {
            url: "www.dygang.com",
            context: "电影港_高清电影下载_720p高清_1080p高清"
        }, {url: "www.gaoqing.la", context: "中国高清网 | 高清电影网|720P|1080P|蓝光原盘|磁力链迅雷下载高清的电影天堂"}, {
            url: "www.piaohua.com",
            context: "飘花电影网_飘花迅雷电影下载网_最新电影_迅雷免费电影下载"
        }, {url: "www.hdwan.net", context: "海盗湾中文网 | 最新720P、1080P高清电影种子下载网站,海盗湾"}, {
            url: "www.66ys.tv",
            context: "66影视网-最新电影,最新电视剧,迅雷电影下载（无弹窗网站）"
        }, {url: "www.6vhao.com", context: "最新电影下载，最新电视剧下载，高清电影下载，免费电影下载，6v电影下载网（旧版66影视）"}, {
            url: "www.tiantiandy.com",
            context: "电影天堂_迅雷电影下载_最新免费电影下载_高清电影 - 天天电影网"
        }, {url: "vod.cnzol.com", context: "飘花电影网_飘花迅雷电影下载网_最新高清电影_迅雷免费电影下载"}, {
            url: "www.xlpu.cc",
            context: "最新电影下载_免费电影下载_高清电影 - 迅雷铺电影网"
        }, {url: "www.poxiao.com", context: "破晓电影 最新电影 最新电视剧 迅雷电影下载 在线观看"}, {
            url: "www.80s.tw",
            context: "80s手机电影网 - 最新MP4手机电影下载"
        }, {url: "www.k5.cc", context: "在线吧手机电影网-最新电影下载_80s电影网_迅雷电影下载_MP4高清手机电影下载"}, {
            url: "www.dexiazai.com",
            context: "DE下载站-分享最新高清电影迅雷下载资源"
        }, {url: "www.taobao.com", context: "淘宝网 - 淘！我喜欢"}, {
            url: "www.jd.com",
            context: "京东(JD.COM)-综合网购首选-正品低价、品质保障、配送及时、轻松购物！"
        }, {url: "www.1688.com", context: "阿里巴巴1688.com - 全球领先的采购批发平台"}, {
            url: "www.hc360.com",
            context: "慧聪网-中国领先的B2B电子商务平台，帮助所有企业做成生意!"
        }, {url: "www.tmall.com", context: "天猫tmall.com--上天猫，就够了"}, {
            url: "www.amazon.cn",
            context: "亚马逊-网上购物商城：要网购, 就来Z.cn!"
        }, {url: "www.dangdang.com", context: "当当—网上购物中心：图书、母婴、美妆、家居、数码、家电、服装、鞋包等，正品低价，货到付款"}, {
            url: "www.etao.com",
            context: "一淘网_最有影响力的消费者购物社区_优惠特卖 购物分享 海淘全球"
        }, {url: "www.nuomi.com", context: "百度糯米"}, {
            url: "www.meituan.com",
            context: "【美团网团购】吃喝玩乐好帮手，专业品质团购网"
        }, {url: "www.dianping.com", context: "大众点评网_美食，生活，优惠券，团购"}, {
            url: "www.alibaba.com",
            context: "Manufacturers, Suppliers, Exporters & Importers from the world's largest online B2B marketplace-Alibaba.com"
        }, {
            url: "www.amazon.com",
            context: "Amazon.com: Online Shopping for Electronics, Apparel, Computers, Books, DVDs & more"
        }, {url: "www.suning.com", context: "苏宁易购(Suning) -综合网上购物商城,正品行货,全国联保,货到付款！"}, {
            url: "www.gome.com.cn",
            context: "国美在线-国美电器官方网上商城,中国领先专业的综合网购平台,正品低价、快速送达、安心服务!"
        }, {url: "www.mogujie.com", context: "蘑菇街 - 我的买手街！"}, {
            url: "www.zhe800.com",
            context: "【折800官网】精选商品折扣, 1折特卖,天天9.9包邮在折800网!"
        }, {
            url: "www.kongfz.com",
            context: "孔夫子旧书网】网上买书：图书_书籍_古籍_二手书，网上卖书：网上书店_古旧书拍卖，全球最大的中文旧书网站"
        }, {url: "www.vmall.com", context: "华为商城官网-提供华为手机"}, {
            url: "ju.taobao.com/",
            context: "【聚划算】无所不能聚"
        }, {url: "www.tuan88.com", context: "团800团购导航 - 专业团购网站大全,团购网优选"}, {
            url: "www.yhd.com",
            context: "网上超市1号店，省力省钱省时间"
        }, {url: "www.meilishuo.com", context: "美丽说首页 - 只做正确流行款; 独家冠名《奔跑吧兄弟3》"}, {
            url: "www.lashou.com",
            context: "团购网-拉手网团购-超人气团购网站-团购上拉手"
        }, {url: "www.bitauto.com", context: "易车网"}, {url: "www.58.com", context: "58同城"}, {
            url: "www.ganji.com",
            context: "赶集网"
        }, {url: "www.weather.com.cn", context: "中国天气网-专业天气预报、气象服务门户"}, {
            url: "www.autohome.com.cn",
            context: "汽车之家_我的汽车网站，我的汽车之家"
        }, {url: "detail.zol.com.cn/", context: "IT数码产品报价大全_400个类别, 30万产品_中关村在线报价查询频道"}, {
            url: "www.tianqi.com",
            context: "天气预报查询一周_天气预报15天查询_今天,明天,未来天气预报查询_天气网"
        }, {url: "www.xcar.com.cn", context: "爱卡汽车_中国领先的汽车主题社区、汽车资讯、汽车论坛中心"}, {
            url: "www.kuaidi100.com",
            context: "快递100-查快递,寄快递,上快递100"
        }, {url: "www.tianqi2345.com", context: "全国天气预报15天_天气在线查询_天气观察网"}, {
            url: "newcar.xcar.com.cn/",
            context: "【汽车报价|选车中心|选车工具】_爱卡汽车"
        }, {url: "www.51job.com", context: "招聘网_人才网_找工作_求职_上前程无忧"}, {
            url: "www.zhaopin.com",
            context: "招聘_求职_找工作_上智联招聘人才网"
        }, {url: "www.renren.com", context: "人人网，中国领先的实名制SNS社交网络。加入人人网，找到老同学，结识新朋友"}, {
            url: "www.babytree.com",
            context: "宝宝树 - 怀孕 育儿 大型育儿网站社区"
        }, {url: "www.focus.cn", context: "搜狐焦点"}, {
            url: "www.pcauto.com.cn",
            context: "太平洋汽车网_精准报价_权威评测_汽车世界,由此精彩"
        }, {url: "www.ce.cn", context: "中国经济网——国家经济门户"}, {
            url: "www.pcbaby.com.cn",
            context: "太平洋亲子网_健康育儿 品质生活"
        }, {url: "www.ip138.com", context: "IP地址查询--手机号码查询归属地 | 邮政编码查询 | 长途电话区号 | 身份证号码验证在线查询网"}, {
            url: "qzone.qq.com/",
            context: "QQ空间"
        }, {url: "www.mama.cn", context: "妈妈网_官方网站_怀孕、育儿等知识交流平台_中国妈妈第一门户网站"}, {
            url: "auto.sina.com.cn/",
            context: "新浪汽车 - 汽车生活源动力！"
        }, {url: "auto.sohu.com/", context: "搜狐汽车_我的汽车网站，我的搜狐汽车"}, {
            url: "auto.163.com/",
            context: "汽车首页_网易汽车_车生活.有态度"
        }, {url: "www.8684.cn", context: "公交查询_公交线路查询_公交查询网_8684公交查询"}, {
            url: "auto.qq.com/",
            context: "腾讯汽车_腾讯网"
        }, {url: "business.sohu.com/", context: "搜狐财经-搜狐"}, {
            url: "www.anjuke.com",
            context: "安居客"
        }, {url: "www.douguo.com", context: "豆果美食_开启美味生活_中文美食菜谱分享网站，提供优质的家常菜谱大全、餐厅餐馆与美食网购信息"}, {
            url: "www.csc.edu.cn",
            context: "欢迎访问国家留学网！"
        }, {url: "www.yaolan.com", context: "摇篮网 - 中国最专业的育儿网站和母婴门户"}, {
            url: "www.liepin.com",
            context: "【猎聘网】招聘_找工作_精英职业发展平台"
        }, {url: "www.lagou.com", context: "拉勾网-最专业的互联网招聘平台"}, {
            url: "www.10jqka.com.cn",
            context: "同花顺财经__让投资变得更简单"
        }, {url: "price.pcauto.com.cn", context: "【汽车报价】汽车最新报价_汽车价格查询_太平洋汽车网"}, {
            url: "www.meishichina.com",
            context: "美食天下|美食|菜谱大全|家常菜谱|美食社区-最大的中文美食网站"
        }, {url: "www.baixing.com", context: "百姓网"}, {
            url: "www.chinahr.com",
            context: "中华英才网"
        }, {url: "www.kaixin001.com", context: "开心网"}, {
            url: "www.weibo.com",
            context: "微博-随时随地发现新鲜事"
        }, {url: "www.xinhuanet.com", context: "新华网_让新闻离你更近"}, {
            url: "www.people.com.cn",
            context: "人民网"
        }, {url: "www.hao123.com", context: "hao123_上网从这里开始"}, {
            url: "www.china.com.cn",
            context: "中国网--网上中国"
        }, {url: "blog.sina.com.cn/", context: "新浪博客首页_新浪网"}, {
            url: "www.xilu.com",
            context: "西陆网-军事观察室、军事记实、军事科技:中国第一军事门户网站"
        }, {url: "bbs.tianya.cn/", context: "天涯论坛_华人网上家园"}, {
            url: "iask.sina.com.cn/",
            context: "爱问知识人 - 新浪旗下中文互动问答平台"
        }, {url: "www.2345.com", context: "2345网址导航－开创中国百年品牌"}, {
            url: "www.linkedin.com",
            context: "全球最大的职业社交网站 | 领英"
        }, {url: "mt.sohu.com/", context: "公众平台首页-搜狐"}, {
            url: "www.chinaz.com",
            context: "站长之家 - 中国站长站 - 站长资讯 | 我们致力于为中文网站提供动力！"
        }, {url: "www.huanqiu.com", context: "环球网_全球生活新门户_环球时报旗下网站"}, {
            url: "www.eastday.com",
            context: "东方网"
        }, {url: "www.21cn.com", context: "21CN"}, {url: "www.offcn.com", context: "公务员考试网"}, {
            url: "weixin.qq.com/",
            context: "微信，是一个生活方式"
        }, {url: "kf.qq.com/", context: "腾讯客服-首页"}, {url: "blog.163.com/", context: "网易博客-网易"}, {
            url: "www.msn.com",
            context: "MSN中文网：数字生活 白领门户; (MSN官方下载)"
        }, {url: "mp.weixin.qq.com/", context: "微信公众平台"}, {
            url: "www.19lou.com",
            context: "19楼(19lou.com) - 分享生活 温暖你我 - 杭州19楼"
        }, {url: "www.qidian.com", context: "小说阅读_起点中文小说网|免费小说,玄幻小说,武侠小说,青春小说,小说网各类小说下载"}, {
            url: "v.baidu.com/",
            context: "百度视频搜索——全球最大中文视频搜索引擎"
        }, {url: "www.ku6.com", context: "酷6网 中国领先视频门户"}, {
            url: "image.baidu.com/",
            context: "百度图片—全球最大中文图片库"
        }, {url: "www.56.com", context: "56网_中国最大的原创视频分享网站,在线视频观看,原创视频上传,海量视频搜索 - 56.com"}, {
            url: "www.pps.tv",
            context: "PPS影音-看你想看,高清影视剧,卫视直播,网络在线视频,免费视频"
        }, {url: "movie.douban.com", context: "豆瓣电影"}, {
            url: "movie.xunlei.com",
            context: "迅雷影评"
        }, {url: "www.yxlady.com", context: "伊秀女性网-我们致力于最专业的女性时尚门户网站"}, {
            url: "ent.qq.com/",
            context: "娱乐首页_腾讯网"
        }, {url: "ent.sina.com.cn/", context: "新浪娱乐首页_娱乐新闻_新浪网"}, {
            url: "yule.sohu.com/",
            context: "搜狐娱乐-搜狐"
        }, {url: "ent.ifeng.com/", context: "凤凰娱乐_娱乐频道_凤凰网"}, {
            url: "www.kankan.com",
            context: "响巢看看-中国领先的高清影视视频门户 最新电影和最新电视剧在线观看"
        }, {url: "v.ifeng.com/", context: "凤凰视频-最具媒体价值的视频门户-凤凰网"}, {
            url: "eladies.sina.com.cn/",
            context: "新浪女性_新浪网"
        }, {url: "video.sina.com.cn/", context: "新浪视频_高清视频在线观看_新浪网"}, {
            url: "ac.qq.com/",
            context: "动漫 - 腾讯动漫官方网站 - 首页"
        }, {url: "www.xunlei.com", context: "迅雷-领先的众筹云计算服务商"}, {
            url: "www.duowan.com",
            context: "多玩游戏网 | 多玩游戏 多交朋友"
        }, {url: "www.17173.com", context: ": :17173.com: :中国游戏第一门户站"}, {
            url: "www.tgbus.com",
            context: ": :TGbus.com: :中国游戏第一门户_电玩巴士_电视游戏_电子游戏_网络游戏_手机游戏_网页游戏"
        }, {url: "www.52pk.com", context: "游戏第一综合门户_52pk游戏网"}, {
            url: "www.178.com",
            context: "178游戏网 | 一起把游戏进行到底"
        }, {url: "www.pcgames.com.cn", context: "太平洋游戏网_竞技游戏综合门户"}, {
            url: "www.99danji.com",
            context: "单机游戏_单机游戏下载大全中文版下载_好玩的单机游戏下载基地 - 99单机游戏"
        }, {url: "www.uuu9.com", context: "游久网 - 玩家喜爱的网络游戏资讯门户 - www.uuu9.com"}, {
            url: "iwan.baidu.com/",
            context: "百度爱玩"
        }, {
            url: "www.4399.com",
            context: "小游戏, 4399小游戏,小游戏大全,双人小游戏大全 - www.4399.com 中国领先的游戏平台"
        }, {url: "games.sina.com.cn/", context: "新浪游戏_最新网游,手游,单机游戏资讯,排行,下载_最大中文游戏媒体"}, {
            url: "games.qq.com/",
            context: "腾讯游戏频道—最有影响力的游戏媒体"
        }, {url: "lol.qq.com/", context: "英雄联盟-LOL-官方网站-腾讯游戏-英雄，为你而战"}, {
            url: "www.gamersky.com",
            context: "游民星空 - 大型单机游戏媒体 提供最具特色单机游戏资讯、下载"
        }, {url: "www.7k7k.com", context: "小游戏, 7k7k小游戏,小游戏大全,双人小游戏 - www.7k7k.com"}, {
            url: "www.18183.com",
            context: "手机游戏第一门户网站 www.18183.com"
        }, {url: "www.yxdown.com", context: "单机游戏_单机游戏下载_单机游戏下载大全中文版下载_游迅网"}, {
            url: "www.gamedog.cn",
            context: "手游第一门户_排行榜_游戏狗手游网"
        }, {url: "www.ali213.net", context: "单机游戏_单机游戏下载_中国单机游戏门户_游侠网"}, {
            url: "cf.qq.com/",
            context: "惊爆娱人节-穿越火线官方网站-腾讯游戏"
        }, {url: "www.ptbus.com", context: "口袋巴士_手机游戏第一门户_安卓游戏_苹果游戏_手机游戏"}, {
            url: "www.3366.com",
            context: "小游戏, 3366小游戏大全,双人小游戏, 3366小游戏快乐简单一点！ - www.3366.com"
        }, {url: "www.91.com", context: "91.com_移动互联网第一平台_百度91门户"}, {
            url: "www.doyo.cn",
            context: "最大最全的游戏基地_单机游戏下载_小游戏大全_逗游网"
        }, {url: "www.eeyy.com", context: "一游网_网页游戏_好玩的网页游戏_网页游戏开服表"}, {
            url: "www.sdo.com",
            context: "盛大游戏——盛大游戏娱乐平台"
        }, {url: "www.07073.com", context: "07073游戏网-新开网页游戏开服表,最新网页游戏大全,好玩的网页游戏排行榜"}, {
            url: "game.163.com/",
            context: "网易游戏官网_游戏热爱者"
        }, {url: "www.265g.com", context: "网页游戏第一门户站: : : 265G.COM: : :"}, {
            url: "www.5173.com",
            context: "网络游戏交易平台|装备交易|游戏币交易|帐号交易|点卡充值|代练服务-是国内最权威最安全的游戏交易平台-5173.com"
        }, {url: "dnf.qq.com/", context: "地下城与勇士-DNF-官方网站-腾讯游戏-格斗网游王者之作, 300万同时在线"}, {
            url: "game.weibo.com/",
            context: "微游戏-动漫游戏-新浪微博官方游戏平台"
        }, {url: "www.xoyo.com", context: "金山游戏官方网站_金山逍遥网Xoyo.com"}, {
            url: "www.yzz.cn",
            context: "网络游戏:叶子猪游戏网-最专业的网络游戏门户"
        }, {url: "www.25pp.com", context: "苹果助手_苹果手机助手_PP苹果助手官方下载-PP助手官网"}, {
            url: "www.wanmei.com",
            context: "完美世界 - 完美娱乐 世界同享"
        }, {url: "bbs.duowan.com/", context: "多玩游戏论坛-第一游戏论坛，多玩游戏，多交朋友！"}, {
            url: "www.61.com",
            context: "淘米网_妈妈放心_孩子欢喜"
        }, {url: "qqgame.qq.com/", context: "QQ游戏_QQ游戏大全_游戏下载_QQ游戏官网"}, {
            url: "www.huya.com",
            context: "虎牙直播-虎牙TV-中国领先的互动直播平台"
        }, {url: "www.91danji.com", context: "单机游戏下载,好玩的单机游戏大全官网,单机游戏下载基地-91单机网"}, {
            url: "xyq.163.com/",
            context: "《梦幻西游》电脑版官方网站 - 中国第一网游 网易西游题材扛鼎之作"
        }, {url: "www.changyou.com", context: "畅游-ChangYou.com"}, {
            url: "www.zongheng.com",
            context: "小说,小说网-纵横中文网|最热门的免费小说网"
        }, {
            url: "www.xs8.cn",
            context: "言情小说吧 - (清晰)免费言情小说在线阅读和言情小说下载网（都市言情小说、穿越小说、古代言情小说） - www.xs8.cn"
        }, {url: "www.xxsy.net", context: "小说,潇湘书院,言情小说,女性免费小说网站"}, {
            url: "www.readnovel.com",
            context: "《小说阅读网》小说,言情小说,小说下载,校园小说,穿越小说,玄幻小说"
        }, {url: "www.hongxiu.com", context: "小说 - 红袖添香小说网 - 最新言情小说,免费小说下载,好看的言情小说阅读网"}, {
            url: "www.jjwxc.net",
            context: "言情小说_都市言情小说_免费言情小说在线阅读_晋江文学城"
        }, {url: "www.17k.com", context: "小说-17K小说网|免费小说下载,最新最好看的小说网"}, {
            url: "book.qq.com/",
            context: "腾讯文学 - 文字之美，感动心灵"
        }, {url: "www.zhulang.com", context: "逐浪小说网_免费小说,玄幻小说,都市小说,修真武侠,军事历史阅读下载"}, {
            url: "www.3gsc.com.cn",
            context: "小说,都市小说,好看的小说,小说网-3G小说网"
        }, {url: "www.kanshu.com", context: "看书网 - 原创小说网站,(最新)小说免费阅读下载 好看的小说阅读网!"}, {
            url: "chuangshi.qq.com",
            context: "小说_小说排行榜_免费小说下载网_好看的小说网络尽在创世中文网"
        }, {url: "www.tadu.com", context: "小说,塔读文学小说网-好看的畅销小说,原创小说"}, {
            url: "yuedu.163.com",
            context: "网易云阅读--海量新闻、精彩资讯、图书、免费小说、漫画，免费畅读"
        }, {url: "dl.xunlei.com/", context: "迅雷产品中心"}, {
            url: "vip.xunlei.com/",
            context: "迅雷会员 因快而乐"
        }, {url: "niu.xunlei.com/", context: "【网页游戏】新开网页游戏开服表-迅雷牛X页游平台"}, {
            url: "lixian.xunlei.com/",
            context: "迅雷离线下载，让下载飞起来"
        }]
    }
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(2), r = a.default.getLogger("Thunder.renderer.contextmenu"), s = n(7), l = n(8), u = n(107),
        d = n(55), c = n(11), h = n(3), f = n(106), p = n(80), g = n(5), k = n(19),
        m = n(6).default(o.join(__rootDir, "../bin/ThunderHelper.node")),
        T = ".asf;.avi;.exe;.iso;.mp3;.mp4;.mkv;.mpeg;.mpg;.mpga;.ra;.rar;||.rm;.rmvb;.tar;.wma;.wmp;.wmv;.mov;.zip;.3gp;.chm;.mdf",
        v = ["http://", "https://", "ftp://"], w = ["thunder://", "thunders://", "ed2k://", "magnet:"];

    function y(e) {
        let t = !1;
        if (e) for (let n = 0; n < v.length; ++n) {
            let i = v[n];
            if (0 === e.indexOf(i)) {
                t = !0;
                break
            }
        }
        return t
    }

    function S(e) {
        let t = !1;
        if (e) for (let n = 0; n < w.length; ++n) {
            let i = w[n];
            if (0 === e.indexOf(i)) {
                t = !0;
                break
            }
        }
        return t
    }

    function b(e) {
        let t = [], n = e;
        if (f.Common.isThunderPrivateUrl(n) && (n = f.Common.parseThunderPrivateUrl(n)), function (e) {
            let t = !1;
            do {
                if (!e) break;
                if (y(e)) {
                    let n = o.extname(e);
                    if (!n) break;
                    T.indexOf(n) > -1 && (t = !0)
                } else S(e) && (t = !0)
            } while (0);
            return t
        }(n)) {
            let i = k.ThunderHelper.getTaskTypeFromUrl(n);
            if (i === g.DownloadKernel.TaskType.P2sp || i === g.DownloadKernel.TaskType.Emule) t.push(e); else if (i === g.DownloadKernel.TaskType.Magnet || i === g.DownloadKernel.TaskType.Bt) return p.ThunderNewTask.createBtTaskWindow({
                url: e,
                type: "url"
            }, {browser: "xlbrowser.exe"}), !0
        }
        return t.length > 0 && (p.ThunderNewTask.createPreNewTaskWindow(t), !0)
    }

    function C(e, t) {
        return i(this, void 0, void 0, function* () {
            let n = null, i = !1;
            try {
                n = yield d.default.get(e)
            } catch (e) {
            }
            return null !== n && void 0 !== n.status && 200 === n.status && null !== n.data && (i = yield c.FileSystemAWNS.writeFileAW(t, n.data)), i
        })
    }

    function D(e) {
        do {
            if (s.isNullOrUndefined(e)) break;
            let t = e;
            !1 === N(e) && (t = "https://www.baidu.com/s?wd=" + e), l.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", t)
        } while (0)
    }

    function N(e) {
        let t = !1;
        do {
            let n = e.trim();
            if (s.isNullOrUndefined(n)) break;
            if (t = /([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(n)) {
                t = 1 === m.isPingHostValid(n)
            }
        } while (0);
        return t
    }

    function I(e, t) {
        r.information("commandOpenUrl", e), b(e.link_url) ? r.information(e.link_url) : D(e.link_url)
    }

    function _(e, t) {
        if (r.information(e), b(e.link_url)) return;
        let n = h.remote.getCurrentWindow(), i = h.remote.dialog.showSaveDialog(n, {
            defaultPath: "新建网页.html",
            filters: [{name: "网页 HTML（*.html）", extensions: ["html"]}]
        });
        void 0 !== i && "" !== i && (".html" !== o.extname(i).toLowerCase() && (i += ".html"), setTimeout(() => {
            C(e.link_url, i).catch()
        }, 0))
    }

    t.contextMenuPage = [{
        label: "返回", commandFunc: function (e, t) {
            r.information("goBack"), t.goBack()
        }
    }, {
        label: "前进", commandFunc: function (e, t) {
            r.information(e), t.goForward()
        }
    }, {
        label: "重新加载", commandFunc: function (e, t) {
            r.information(e), t.refresh(!1)
        }
    }, {
        label: "另存为", commandFunc: function (e, t) {
            r.information(e);
            let n = h.remote.getCurrentWindow(), i = h.remote.dialog.showSaveDialog(n, {
                defaultPath: "新建网页.html",
                filters: [{name: "网页 HTML（*.html）", extensions: ["html"]}]
            });
            if (void 0 === i || "" === i) return;
            ".html" !== o.extname(i).toLowerCase() && (i += ".html");
            setTimeout(() => {
                C(e.page_url, i).catch()
            }, 0)
        }
    }, {
        label: "查看网页源代码", commandFunc: function (e, t) {
            r.information(e), l.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", "view-source:" + e.page_url)
        }
    }], t.contextMenuDownloadableLink = [{label: "在新标签页打开链接", commandFunc: I}, {
        label: "链接另存为",
        commandFunc: _
    }, {
        label: "复制链接地址", commandFunc: function (e, t) {
            r.information(e), m.copyTextToClipBoard(e.link_url)
        }
    }], t.contextMenuMedia = [{
        label: "在新标签页中打开图片", commandFunc: function (e, t) {
            r.information("commandOpenUrl", e), D(e.source_url)
        }
    }, {
        label: "图片另存为", commandFunc: function (e, t) {
            r.information(e);
            let n = o.basename(e.source_url), a = o.extname(n);
            "" === n && (n = function () {
                let e = "";
                for (let t = 1; t <= 32; t++) {
                    let n = Math.floor(16 * Math.random()).toString(16);
                    e += n, 8 !== t && 12 !== t && 16 !== t && 20 !== t || (e += "-")
                }
                return e
            }() + a);
            let s = void 0;
            s = "" !== a ? {
                defaultPath: n,
                filters: [{name: "图片（*" + a + "）", extensions: [a]}, {name: "所有文件", extensions: ["*"]}]
            } : {defaultPath: n, filters: [{name: "所有文件", extensions: ["*"]}]};
            let l = h.remote.getCurrentWindow(), u = h.remote.dialog.showSaveDialog(l, s);
            if (void 0 === u || "" === u) return;
            setTimeout(() => {
                (function (e, t) {
                    return i(this, void 0, void 0, function* () {
                        let n = null, i = !1;
                        try {
                            n = yield d.default.get(e, {responseType: "arraybuffer"})
                        } catch (e) {
                        }
                        return null !== n && void 0 !== n.status && 200 === n.status && null !== n.data && (i = yield c.FileSystemAWNS.writeFileAW(t, n.data)), i
                    })
                })(e.source_url, u).catch()
            }, 0)
        }
    }, {
        label: "复制图片", commandFunc: function (e, t) {
            r.information(e), setTimeout(() => {
                (function (e) {
                    return i(this, void 0, void 0, function* () {
                        let t = null, i = !1;
                        try {
                            t = yield d.default.get(e, {responseType: "arraybuffer"})
                        } catch (e) {
                            return !1
                        }
                        if (null !== t && void 0 !== t.status && 200 === t.status && null !== t.data) {
                            let e = "data:" + t.headers["content-type"] + ";base64," + new Buffer(t.data).toString("base64"),
                                a = n(3).nativeImage.createFromDataURL(e);
                            h.clipboard.clear(), h.clipboard.writeImage(a), i = !0
                        }
                        return i
                    })
                })(e.source_url).catch()
            }, 0)
        }
    }, {
        label: "复制图片地址", commandFunc: function (e, t) {
            r.information(e), m.copyTextToClipBoard(e.source_url)
        }
    }], t.contextMenuSelection = [{
        label: "复制", commandFunc: function (e, t) {
            r.information(e), t.editCopy()
        }
    }, {
        label: "用百度搜索", commandFunc: function (e, t) {
            r.information(e);
            let n = "https://www.baidu.com/s?wd=" + e.selection_text;
            l.NativeCallModule.nativeCall.CallNativeFunction("openNewTab", n)
        }
    }], t.contextMenuEditable = [{
        label: "撤销", commandFunc: function (e, t) {
            r.information(e), t.editUndo()
        }
    }, {
        label: "剪切", commandFunc: function (e, t) {
            r.information(e), t.editCut()
        }
    }, {
        label: "复制", commandFunc: function (e, t) {
            r.information(e), t.editCopy()
        }
    }, {
        label: "粘贴", commandFunc: function (e, t) {
            r.information(e), t.editPaste()
        }
    }, {
        label: "删除", commandFunc: function (e, t) {
            r.information(e), t.editDelete()
        }
    }, {
        label: "全选", commandFunc: function (e, t) {
            r.information(e), t.editSelectAll()
        }
    }], t.contextMenuLink = [{label: "在新标签页打开链接", commandFunc: I}, {label: "链接另存为", commandFunc: _}, {
        label: "复制链接地址",
        commandFunc: function (e, t) {
            r.information(e), m.copyTextToClipBoard(e.link_url), b(e.link_url) && r.information(e.link_url)
        }
    }], t.registerContextMenu = function (e) {
        e.getTabType() === u.TabType.Chromium && e.getBrowser().registerContextMenu({
            page: t.contextMenuPage,
            selection: t.contextMenuSelection,
            edit: t.contextMenuEditable,
            link: t.contextMenuLink,
            media: t.contextMenuMedia,
            downloadLink: t.contextMenuDownloadableLink
        })
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(25), a = n(749), o = n(30), r = n(1).default.getLogger("setting-conf"), s = {
        SET_CONFIG_DATA(e, t) {
            e.formData = t
        }, SET_CONF_SCHEMA(e, t) {
            e.confSchema = t
        }, ADD_SCHEMA_ITEM(e, t) {
            if (r.information("ADD_SCHEMA_ITEM", t), void 0 !== t.position[0] && void 0 !== t.position[1]) {
                let n = 0;
                n = t.direction < 0 ? e.confSchema[t.position[0]].children[t.position[1]].children.length + t.direction + 1 : t.direction, e.confSchema[t.position[0]].children[t.position[1]].children.splice(n, 0, t.schemaItem), o.default.set(e.confSchema[t.position[0]].children[t.position[1]].children, "children", e.confSchema[t.position[0]].children[t.position[1]].children)
            }
        }, ADD_FORMDATA_ITEM(e, t) {
            let n = `${t.section}-${t.key}`;
            void 0 === e.formData[n] && o.default.set(e.formData, n, t)
        }, ADD_SELECT_ITEM(e, t) {
            let n = e.formData[t.target];
            r.information("targetItem", n), n.selectItems.includes(t.from) || (n.selectItems.push(t.from), o.default.set(e.formData[t.target], "selectItems", n.selectItems))
        }, SET_CONFIG_VALUE(e, t) {
            if (void 0 !== e.formData[t.name].optionToValue) {
                let n = t.value;
                i.ConfigNS.setValue(t.section, `${t.key}`, e.formData[t.name].optionToValue[n]), "" !== t.userId && i.ConfigNS.setValue(t.section, `${t.key}${t.userId}`, e.formData[t.name].optionToValue[n])
            } else if (e.formData[t.name].type && "number" === e.formData[t.name].type) {
                let e = Number(t.value);
                i.ConfigNS.setValue(t.section, `${t.key}`, e), "" !== t.userId && i.ConfigNS.setValue(t.section, `${t.key}${t.userId}`, e)
            } else i.ConfigNS.setValue(t.section, `${t.key}`, t.value), "" !== t.userId && i.ConfigNS.setValue(t.section, `${t.key}${t.userId}`, t.value);
            void 0 !== e.formData[t.name].immediatelySave && i.ConfigNS.saveSync(), function (e, t) {
                let n = e.formData[t.name];
                void 0 !== n.selectItems && n.selectItems.map(n => {
                    let a = t.value;
                    e.formData[n].type && "number" === e.formData[n].type && (a = Number(t.value)), i.ConfigNS.setValue(e.formData[n].section, e.formData[n].key, a)
                });
                if (void 0 !== n.selectAllName) {
                    let n = e.formData[t.name].selectAllName, a = e.formData[n];
                    if (t.value) {
                        let t = !0;
                        a.selectItems.map(n => {
                            t = i.ConfigNS.getValue(e.formData[n].section, e.formData[n].key, !1) && t
                        }), t && i.ConfigNS.setValue(a.section, a.key, !0)
                    } else {
                        let e = i.ConfigNS.getValue(a.section, a.key, "");
                        e && i.ConfigNS.setValue(a.section, a.key, !1)
                    }
                }
            }(e, t)
        }, SET_FOMR_DATA(e, t) {
            let n = `${t.section}-${t.key}`;
            if (void 0 === e.formData[n]) return;
            let i = t.value;
            if (void 0 !== e.formData[n] && void 0 !== e.formData[n].optionToValue) {
                let a = e.formData[n];
                for (let e in a.optionToValue) if (a.optionToValue[e] === t.value) {
                    i = e;
                    break
                }
            } else void 0 !== e.formData[`${t.section}-${t.key}`] && (i = t.value);
            e.formData[`${t.section}-${t.key}`].value = i
        }
    }, l = {
        initSettingData({commit: e}) {
            a.SettingInit.setBaseConf();
            let t = a.SettingInit.getConfSchema(), n = a.SettingInit.getConfFormData();
            e("SET_CONF_SCHEMA", t), e("SET_CONFIG_DATA", n)
        }
    };
    t.default = {state: {confSchema: [], formData: {}}, mutations: s, actions: l}
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(25), a = n(2), o = a.join(__rootDir, "../../download-complete.wav");
    !function (e) {
        e.conf = {
            sechema: [{
                name: "基本设置",
                children: [{
                    name: "启动",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "ConfigNormalSession-ConfigNormal_AutoRun",
                        type: "confCheckbox",
                        label: "开机启动迅雷",
                        classes: ""
                    }, {
                        name: "Others-AntiDisturb",
                        type: "confCheckbox",
                        label: "开启免打扰模式",
                        classes: "",
                        extEles: [{
                            type: "confTip",
                            classes: "td-icon-info",
                            text: "免打扰模式下，当您运行全屏程序时，迅雷将\n自动帮您取消提示消息弹出，避免打扰您的其\n它体验。",
                            value: ""
                        }]
                    }, {
                        name: "ConfigNormalSession-ConfigNormal_AutoStartUnFinishedTask",
                        type: "confCheckbox",
                        label: "启动迅雷后自动开始未完成任务"
                    }]
                }, {
                    name: "下载目录",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "TaskDefaultSettings-DefaultPath",
                        type: "confSelect",
                        label: "",
                        classes: "noPullDown",
                        selectType: "file",
                        slotOption: "openDirectory"
                    }, {
                        name: "TaskDefaultSettings-UseLastCatalog",
                        type: "confCheckbox",
                        label: "自动修改为上次使用的目录",
                        linkItem: {
                            section: "PathAndCategory",
                            key: "LastUsedPath",
                            name: "TaskDefaultSettings-DefaultPath"
                        }
                    }]
                }]
            }, {
                name: "下载接管设置",
                children: [{
                    name: "接管设置",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "",
                        type: "confText",
                        text: "接管对象",
                        value: "xlx-setting-content__text"
                    }, {
                        name: "Monitor-MonitorClipBoard",
                        type: "confCheckbox",
                        label: "接管剪切板"
                    }, {name: "Motitor-MotitorAll", type: "confCheckbox", label: "接管所有浏览器"}]
                }, {
                    name: "BT关联",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "BtGenericSettings-AutoBTNewTask",
                        type: "confCheckbox",
                        label: "下载种子文件后自动打开新建面板"
                    }, {name: "BtGenericSettings-AssocTorrent", type: "confCheckbox", label: "启动时关联BT种子文件(.torrent文件)"}]
                }]
            }, {
                name: "下载设置",
                children: [{
                    name: "下载管理",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "TaskDefaultSettings-OpenSilenceDownload",
                        type: "confCheckbox",
                        label: "一键下载",
                        extEles: [{
                            type: "confTip",
                            text: '"一键下载" 生效时,点击下载链接将直接建立下载任务,不会弹出新建任务面板',
                            classes: "td-icon-info"
                        }]
                    }, {
                        name: "TaskDefaultSettings-NewTaskStartMode",
                        type: "confSelect",
                        label: "默认下载方式",
                        classes: "xlx-select-size-4",
                        option: ["立即下载", "手动下载"]
                    }, {
                        name: "ConfigNormalSession-ConfigNormal_MaxRunningTaskCount",
                        type: "confSelect",
                        label: "同时下载的最大任务数",
                        classes: "xlx-select-size-1",
                        option: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50"]
                    }, {
                        name: "TaskDefaultSettings-OrignHostThreads",
                        type: "confSelect",
                        label: "原始地址线程数",
                        classes: "xlx-select-size-1",
                        option: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
                    }, {
                        name: "TaskDefaultSettings-OpenFile",
                        type: "confCheckbox",
                        label: "下载完成后自动打开"
                    }, {
                        name: "ConfigNormalSession-ConfigNormal_AutoDeleteNotExistFile",
                        type: "confCheckbox",
                        label: "自动删除“文件不存在”的任务"
                    }]
                }, {
                    name: "下载模式",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "ConfigNet-ConfigNet_Type",
                        type: "confRadio",
                        label: "全速下载",
                        extEles: [{
                            type: "confTip",
                            text: "p2sp下载完的文件会通过p2p的方式上传分享，\n帮助其它网友加速下载，绝不会涉及任何用户隐\n私。下载和分享是通过智能带宽控制的技术，不\n会影响您的上网体验，请放心使用。",
                            classes: "td-icon-info"
                        }, {
                            type: "confBtn",
                            text: "修改配置",
                            classes: "td-button--small",
                            outerClass: "inline",
                            boxType: "speedConfBox"
                        }],
                        extActiveValue: "0",
                        labels: ["全速下载", "限速下载"],
                        option: ["1", "0"]
                    }, {type: "confSpeedText", classes: "xlx-setting-content__config"}]
                }]
            }, {
                name: "消息及提醒",
                children: [{
                    name: "提醒",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "ConfigMsg-ConfigMsg_Finish",
                        type: "confCheckbox",
                        label: "下载完成后右下角弹窗提示"
                    }, {
                        name: "ConfigMsg-ConfigMsg_PlayWaveWhileFinish",
                        type: "confCheckbox",
                        label: "下载完成后播放提示音"
                    }, {
                        type: "confSelect",
                        name: "ConfigMsg-ConfigMsg_WavePath",
                        classes: "noPullDown",
                        selectType: "file",
                        slotOption: "openFile",
                        outerClass: "td-checkbox",
                        editable: !0
                    }, {
                        name: "ConfigMsg-ConfigMsg_FailSuggest",
                        type: "confCheckbox",
                        label: "下载失败时右下角弹窗提示"
                    }, {
                        name: "",
                        type: "confText",
                        text: "消息通知设置",
                        isReleventUser: !0,
                        value: "xlx-setting-content__text"
                    }, {
                        name: "UserCommunitySet-radio_id_",
                        isReleventUser: !0,
                        type: "confRadio",
                        label: "接收所有人的消息通知",
                        option: ["1", "3"],
                        labels: ["接收所有人的消息通知", "不接收消息通知"],
                        ulClasses: "xlx-setting-content__horizontal"
                    }]
                }]
            }, {
                name: "高级设置",
                children: [{
                    name: "快捷设置",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "TaskDefaultSettings-AwayModeEnabled",
                        type: "confCheckbox",
                        label: '启用"离开模式"',
                        extEles: [{
                            type: "confTip",
                            text: "启用“离开模式”后，在电脑处于“睡眠”状态时，\n迅雷仍然能帮您继续下载资源",
                            classes: "td-icon-info"
                        }]
                    }, {
                        name: "BossKey-BossKeySwitch",
                        type: "confCheckboxInput",
                        label: "启用老板键",
                        extEles: [{
                            type: "confInput",
                            name: "BossKey-BossKeyName",
                            label: " ",
                            toolTipsContent: "注册老板键失败,请选择功能键 + 字母键/数字键",
                            rules: [["rule, value, callback", "let errors = [];\n                        value = String(value);\n                        if (value.indexOf('+') === -1 ) {\n                          errors.push(new Error('注册老板键失败,请选择功能键 + 字母键/数字键'));\n                        }\n                        callback(errors);"]],
                            outClasses: "inline xlx-select-size-4",
                            ShortcutKey: !0
                        }, {type: "confTip", text: "如果老板来了，按老板键，迅雷将自动隐身", classes: "td-icon-info"}]
                    }, {
                        name: "TaskDefaultSettings-NewTaskDlgWithoutMainWnd",
                        type: "confCheckbox",
                        label: "新建任务时显示主界面"
                    }]
                }, {
                    name: "悬浮窗",
                    classes: "xlx-setting-content__horizontal",
                    children: [{
                        name: "ConfigFloatPanel-FloatPanelValue",
                        type: "confRadio",
                        label: "显示悬浮窗",
                        option: ["0", "1", "2"],
                        labels: ["显示悬浮窗", "下载时显示悬浮窗", "隐藏悬浮窗"],
                        ulClasses: "xlx-setting-content__horizontal"
                    }]
                }, {
                    name: "动画效果",
                    children: [{
                        name: "GenericSettings-AnimationLevel",
                        type: "confRadio",
                        label: "开启全部动效",
                        ulClasses: "xlx-setting-content__vertical",
                        tip: "适用于CPU性能较低的电脑",
                        tipClass: "xlx-setting-content__tips tip-text",
                        option: ["1", "0"],
                        labels: ["开启全部动效", "关闭部分动效"]
                    }]
                }, {
                    name: "下载磁盘缓存",
                    children: [{
                        name: "DiskCache-DiskCacheSelect",
                        type: "confRadio",
                        label: "256",
                        ulClasses: "xlx-setting-content__horizontal",
                        tip: "磁盘缓存越大，下载速度越快，占用资源越多",
                        tipClass: "xlx-setting-content__tips tip-text",
                        option: ["128", "256", "512"],
                        labels: ["128M", "256M", "512M"]
                    }]
                }, {
                    name: "下载加速",
                    classes: "xlx-setting-content__vertical",
                    children: [{
                        name: "ConfigNet-ConfigNet_OpenMirrorImageIncreaseSpeed",
                        type: "confCheckbox",
                        label: "开启镜像服务器加速",
                        tip: "全网数据挖掘，自动匹配与原始资源相同的镜像供用户下载",
                        tipClass: "xlx-setting-content__tips tip-text"
                    }, {
                        name: "ConfigNet-ConfigNet_OpenXunleiP2PIncreaseSpeed",
                        type: "confCheckbox",
                        label: "开启迅雷P2P加速",
                        tip: "利用P2P技术进行用户间加速，该通道产生的上传流量会慢慢提升通道的健康度，从而提升通道加速效果",
                        tipClass: "xlx-setting-content__tips tip-text"
                    }]
                }]
            }],
            formData: {
                "ConfigNormalSession-ConfigNormal_AutoRun": {
                    section: "ConfigNormalSession",
                    key: "ConfigNormal_AutoRun",
                    value: !0
                },
                "Others-AntiDisturb": {section: "Others", key: "AntiDisturb", value: !0},
                "ConfigNormalSession-ConfigNormal_AutoStartUnFinishedTask": {
                    section: "ConfigNormalSession",
                    key: "ConfigNormal_AutoStartUnFinishedTask",
                    value: !1
                },
                "TaskDefaultSettings-DefaultPath": {section: "TaskDefaultSettings", key: "DefaultPath", value: ""},
                "TaskDefaultSettings-UseLastCatalog": {
                    section: "TaskDefaultSettings",
                    key: "UseLastCatalog",
                    value: !0
                },
                "DiskCache-DiskCacheSelect": {section: "DiskCache", key: "DiskCacheSelect", value: "256"},
                "TaskDefaultSettings-NewTaskStartMode": {
                    section: "TaskDefaultSettings",
                    key: "NewTaskStartMode",
                    value: "立即下载",
                    optionToValue: {"立即下载": 1, "手动下载": 0}
                },
                "ConfigNormalSession-ConfigNormal_MaxRunningTaskCount": {
                    section: "ConfigNormalSession",
                    key: "ConfigNormal_MaxRunningTaskCount",
                    value: "5"
                },
                "ConfigNormalSession-ConfigNormal_AutoDeleteNotExistFile": {
                    section: "ConfigNormalSession",
                    key: "ConfigNormal_AutoDeleteNotExistFile",
                    value: !1
                },
                "TaskDefaultSettings-OpenFile": {section: "TaskDefaultSettings", key: "OpenFile", value: !1},
                "ConfigNet-ConfigNet_Type": {section: "ConfigNet", key: "ConfigNet_Type", value: "1"},
                "ConfigMsg-ConfigMsg_Finish": {section: "ConfigMsg", key: "ConfigMsg_Finish", value: !0},
                "ConfigMsg-ConfigMsg_PlayWaveWhileFinish": {
                    section: "ConfigMsg",
                    key: "ConfigMsg_PlayWaveWhileFinish",
                    value: !0
                },
                "ConfigMsg-ConfigMsg_WavePath": {section: "ConfigMsg", key: "ConfigMsg_WavePath", value: o},
                "ConfigMsg-ConfigMsg_FailSuggest": {section: "ConfigMsg", key: "ConfigMsg_FailSuggest", value: !0},
                "Monitor-MonitorClipBoard": {section: "Monitor", key: "MonitorClipBoard", value: !0},
                "Monitor-ShortcutMonitor": {section: "Monitor", key: "ShortcutMonitor", value: !0},
                "Monitor-WatchTraditionLink": {section: "Monitor", key: "WatchTraditionLink", value: !0},
                "Monitor-ConfigWatch_Bt": {section: "Monitor", key: "ConfigWatch_Bt", value: !0},
                "EMuleGenericSettings-EMuleWatchLink": {
                    section: "EMuleGenericSettings",
                    key: "EMuleWatchLink",
                    value: !0
                },
                "MagnetGenericSettings-MagnetWatchLink": {
                    section: "MagnetGenericSettings",
                    key: "MagnetWatchLink",
                    value: !0
                },
                "BtGenericSettings-AutoBTNewTask": {section: "BtGenericSettings", key: "AutoBTNewTask", value: !0},
                "BtGenericSettings-AssocTorrent": {section: "BtGenericSettings", key: "AssocTorrent", value: !0},
                "TaskDefaultSettings-OpenSilenceDownload": {
                    section: "TaskDefaultSettings",
                    key: "OpenSilenceDownload",
                    type: "number",
                    value: 0
                },
                "TaskDefaultSettings-AwayModeEnabled": {
                    section: "TaskDefaultSettings",
                    key: "AwayModeEnabled",
                    value: !1
                },
                "BossKey-BossKeySwitch": {section: "BossKey", key: "BossKeySwitch", value: !1},
                "BossKey-BossKeyName": {section: "BossKey", key: "BossKeyName", value: "Alt+D"},
                "TaskDefaultSettings-NewTaskDlgWithoutMainWnd": {
                    section: "TaskDefaultSettings",
                    key: "NewTaskDlgWithoutMainWnd",
                    value: !0
                },
                "ConfigFloatPanel-FloatPanelValue": {
                    section: "ConfigFloatPanel",
                    key: "FloatPanelValue",
                    value: "0",
                    immediatelySave: !0
                },
                "TaskDefaultSettings-OrignHostThreads": {
                    section: "TaskDefaultSettings",
                    key: "OrignHostThreads",
                    value: "5"
                },
                "ConfigNoLimitDownload-TaskCountAutoAdd": {
                    section: "ConfigNoLimitDownload",
                    key: "TaskCountAutoAdd",
                    value: !1
                },
                "ConfigNoLimitDownload-TaskCountAutoAddRate": {
                    section: "ConfigNoLimitDownload",
                    key: "TaskCountAutoAddRate",
                    value: "1000"
                },
                "ConfigNormalSession-ConfigNormal_AutoSlowTask2Tail": {
                    section: "ConfigNormalSession",
                    key: "ConfigNormal_AutoSlowTask2Tail",
                    value: !0
                },
                "ConfigNoLimitDownload-OpenNoLimitDownload": {
                    section: "ConfigNoLimitDownload",
                    key: "OpenNoLimitDownload",
                    value: !1
                },
                "ConfigNoLimitDownload-NoLimitDownloadFileSize": {
                    section: "ConfigNoLimitDownload",
                    key: "NoLimitDownloadFileSize",
                    value: "5"
                },
                "ConfigNet-ConfigNet_OpenMirrorImageIncreaseSpeed": {
                    section: "ConfigNet",
                    key: "ConfigNet_OpenMirrorImageIncreaseSpeed",
                    value: !0
                },
                "ConfigNet-ConfigNet_OpenXunleiP2PIncreaseSpeed": {
                    section: "ConfigNet",
                    key: "ConfigNet_OpenXunleiP2PIncreaseSpeed",
                    value: !0
                },
                "ConfigNet-ConfigNet_Custom_DownloadSpeedChk": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_DownloadSpeedChk",
                    value: !0,
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_UploadSpeedChk": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_UploadSpeedChk",
                    value: !0,
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_MaxDownloadSpeed": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_MaxDownloadSpeed",
                    value: "1024",
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_MaxUploadSpeed": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_MaxUploadSpeed",
                    value: "1024",
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_Time_Switch": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_Time_Switch",
                    value: !1,
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_Time_Begin_Hour": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_Time_Begin_Hour",
                    value: "0",
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_Time_Begin_Minute": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_Time_Begin_Minute",
                    value: "0",
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_Time_End_Hour": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_Time_End_Hour",
                    value: "23",
                    immediatelySave: !0
                },
                "ConfigNet-ConfigNet_Custom_Time_End_Minute": {
                    section: "ConfigNet",
                    key: "ConfigNet_Custom_Time_End_Minute",
                    value: "59",
                    immediatelySave: !0
                },
                "BtGenericSettings-ConfigBt_SetPortType": {
                    section: "BtGenericSettings",
                    key: "ConfigBt_SetPortType",
                    value: "0"
                },
                "BtGenericSettings-ConfigBt_Manul_TcpPort": {
                    section: "BtGenericSettings",
                    key: "ConfigBt_Manul_TcpPort",
                    value: "15000"
                },
                "Monitor-FilterSitesForUI": {
                    section: "Monitor",
                    key: "FilterSitesForUI",
                    value: "\n*.mail.live.com\n*.mail.yahoo.com\n*.mail.qq.com\n*.mail.sohu.com\n*.mail.google.com\n*.sinamail.sina.com.cn\n*.mail.sina.com.cn\n*.mail.163.com\n*.mail.10086.cn\n*.www.126.com\n*.passport.alipay.com\n*.login.live.com\n*.mail.sogou.com\n*.web.mail.tom.com\n*.www.2980.com\n*.mail.21cn.com\n*.www.188.com\n*.yeah.net\n*.mail.wo.com.cn\n*.263.net\n*.ecitic.com\n*.pos.baidu.com"
                },
                "Monitor-ExtendNames": {
                    section: "Monitor",
                    key: "ExtendNames",
                    value: ".asf;.avi;.exe;.iso;.mp3;.mpeg;.mpg;.mpga;.ra;.rar;.rm;.rmvb;.tar;.wma;.wmp;.wmv;.mov;.zip;.3gp;.chm;.mdf;.torrent;.jar;.msi;.arj;.bin;.dll;.psd;.hqx;.sit;.lzh;.gz;.tgz;.xlsx;.xls;.doc;.docx;.ppt;.pptx;.flv;.swf;.mkv;.tp;.ts;.flac;.ape;.wav;.aac;.txt;.dat;.7z;.ttf;.bat;.xv;.xvx;.pdf;.mp4;.apk;.ipa;.epub;.mobi;.deb;.sisx;.cab;.pxl;.xlb;"
                },
                "UserCommunitySet-radio_id_": {
                    section: "UserCommunitySet",
                    key: "radio_id_",
                    value: "1",
                    isReleventUser: !0,
                    immediatelySave: !0
                },
                "GenericSettings-AnimationLevel": {section: "GenericSettings", key: "AnimationLevel", value: "1"},
                "Motitor-MotitorAll": {
                    section: "Motitor",
                    key: "MotitorAll",
                    value: 1,
                    type: "number",
                    selectItems: ["Motitor-MotitorIE浏览器"]
                },
                "Bookmark-ShowBookmarkBar": {section: "Bookmark", key: "ShowBookmarkBar", value: 1}
            }
        }, e.setBaseConf = function () {
            let t = Object.values(e.conf.formData);
            for (let n = 0; n < t.length; n++) {
                let a = "";
                if (void 0 !== t[n].optionToValue) {
                    let e = i.ConfigNS.getValue(t[n].section, t[n].key, t[n].optionToValue[t[n].value]);
                    for (let i in t[n].optionToValue) if (t[n].optionToValue[i] === e) {
                        a = i;
                        break
                    }
                } else a = i.ConfigNS.getValue(t[n].section, t[n].key, t[n].value);
                e.conf.formData[`${t[n].section}-${t[n].key}`].value = a
            }
        }, e.initConf = function () {
            return i.ConfigNS.init(a.join(__profilesDir, "config.json"))
        }, e.getConfSchema = function () {
            return e.conf.sechema
        }, e.getConfFormData = function () {
            return e.conf.formData
        }
    }(t.SettingInit || (t.SettingInit = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(4), a = n(1), o = n(5), r = n(32), s = n(85), l = n(81), u = n(751), d = n(43), c = n(484),
        h = a.default.getLogger("DownloadStore"), f = r.DownloadKernelEventManager.getEventManager(),
        p = s.DownloadKernelCategoryViewManager.getCategoryViewManager(),
        g = l.DownloadKernelCategoryManager.getCategoryManager(), k = {
            currentCategoryId: -1,
            currentCategoryViewId: o.DownloadKernel.CategroyViewID.Downloading,
            taskList: [{
                categoryId: -1,
                id: o.DownloadKernel.CategroyViewID.Downloading,
                tasksMap: {},
                selected: [],
                taskIds: []
            }, {
                categoryId: -1,
                id: o.DownloadKernel.CategroyViewID.Completed,
                tasksMap: {},
                selected: [],
                taskIds: []
            }, {categoryId: -1, id: o.DownloadKernel.CategroyViewID.Recycle, tasksMap: {}, selected: [], taskIds: []}],
            taskListPrivate: [{
                id: o.DownloadKernel.CategroyViewID.Downloading,
                tasksMap: {},
                selected: [],
                taskIds: []
            }, {id: o.DownloadKernel.CategroyViewID.Completed, tasksMap: {}, selected: [], taskIds: []}]
        }, m = {
            INIT_CATEGORY_TASKLIST(e) {
                h.information("INIT_CATEGORY_TASKLIST state.currentCategoryId:", e.currentCategoryId);
                let t = e.taskList;
                -1 !== e.currentCategoryId && (t = e.taskListPrivate);
                for (let n = 0; n < t.length; n++) {
                    let i = t[n], a = null;
                    if (!(a = -1 === e.currentCategoryId ? p.getCategoryViewFromId(i.id) : g.getCategoryView(e.currentCategoryId, i.id))) {
                        i.tasksMap = null, i.selected = [], i.taskIds = [], i.tasksMap = {};
                        continue
                    }
                    let o = a.getTasks();
                    t[n].tasksMap = null, t[n].tasksMap = {}, t[n].selected = [], t[n].categoryId = e.currentCategoryId;
                    let r = {};
                    for (let [e, t]of o) r[e] = t.getTaskBaseInfo();
                    let s = [...Object.values(r)];
                    s.sort(c.SortNS.getSortFuncByConfig(i.id, i.categoryId)), t[n].tasksMap = Object.assign({}, r), t[n].taskIds = s.map(e => e.taskId)
                }
                h.information("INIT_CATEGORY_TASKLIST end")
            }, SORT_CATEGORY_HISTORY(e) {
                let t = e.taskList;
                -1 !== e.currentCategoryId && (t = e.taskListPrivate);
                for (let e = 0; e < t.length; e++) {
                    let n = [...Object.values(t[e].tasksMap)];
                    n.sort(c.SortNS.getSortFuncByConfig(t[e].id, t[e].categoryId)), t[e].taskIds = n.map(e => e.taskId)
                }
            }, SORT_CATEGORY_BY_FUNCTION(e, t) {
                do {
                    if (t.index < 0 || t.index > 2) break;
                    if ("function" != typeof t.compareFn) break;
                    if (-1 === t.categoryId) {
                        let n = [...Object.values(e.taskList[t.index].tasksMap)];
                        n.sort(t.compareFn), e.taskList[t.index].taskIds = n.map(e => e.taskId)
                    } else {
                        let n = [...Object.values(e.taskListPrivate[t.index].tasksMap)];
                        n.sort(t.compareFn), e.taskListPrivate[t.index].taskIds = n.map(e => e.taskId)
                    }
                } while (0)
            }, UPDATE_CATEGORYVIEW(e, t) {
                e.currentCategoryViewId !== t && (e.currentCategoryViewId = t)
            }, INSERT_TO_CATEGORY_VIEW(e, t) {
                h.information("insert INSERT_TO_CATEGORY_VIEW in ");
                let n = e.taskList;
                -1 !== t.categoryId && (n = e.taskListPrivate);
                for (let e = 0; e < n.length; e++) if (n[e].id === t.id) {
                    if (n[e].categoryId !== t.categoryId) break;
                    let i = [], a = {};
                    for (let e of t.tasks) a[e.taskId] = Object.assign({}, e), i.unshift(e.taskId);
                    n[e].tasksMap = Object.assign({}, n[e].tasksMap, a), i.length > 0 && n[e].taskIds.splice(0, 0, ...i);
                    break
                }
                h.information("insert INSERT_TO_CATEGORY_VIEW end ")
            }, REMOVE_FROM_CATEGORY_VIEW(e, t) {
                let n = e.taskList;
                -1 !== t.categoryId && (n = e.taskListPrivate);
                for (let e = 0; e < n.length; e++) if (n[e].id === t.categoryViewId) {
                    if (n[e].categoryId !== t.categoryId) break;
                    let i = Object.assign({}, n[e].tasksMap), a = Object.assign([], n[e].taskIds),
                        o = Object.assign([], n[e].selected);
                    for (let e of t.tasks) {
                        let t = e.taskId;
                        delete i[t];
                        let n = a.indexOf(t);
                        -1 !== n && a.splice(n, 1);
                        let r = o.indexOf(t);
                        -1 !== r && o.splice(r, 1)
                    }
                    n[e].tasksMap = i, n[e].taskIds = a, n[e].selected = o;
                    break
                }
            }, UPDATE_TASK_INFO(e, t) {
                do {
                    if (null === t || 0 === t.length) break;
                    for (let n of t) {
                        let t = 0;
                        e.taskList[t].tasksMap.hasOwnProperty(String(n.taskId)) ? i.Vue.set(e.taskList[t].tasksMap, String(n.taskId), Object.assign({}, n)) : e.taskListPrivate[t].tasksMap.hasOwnProperty(String(n.taskId)) ? i.Vue.set(e.taskListPrivate[t].tasksMap, String(n.taskId), Object.assign({}, n)) : (t = 1, e.taskList[t].tasksMap.hasOwnProperty(String(n.taskId)) ? (h.information("update task info not find in downloading", n), i.Vue.set(e.taskList[t].tasksMap, String(n.taskId), Object.assign({}, n))) : e.taskListPrivate[t].tasksMap.hasOwnProperty(String(n.taskId)) && i.Vue.set(e.taskListPrivate[t].tasksMap, String(n.taskId), Object.assign({}, n)))
                    }
                } while (0)
            }, UPDATE_TASK_READED(e, t) {
                do {
                    if (null === t || 0 === t.length) break;
                    let n = 1;
                    for (let a of t) -1 === e.currentCategoryId ? e.taskList[n].tasksMap.hasOwnProperty(String(a.taskId)) && i.Vue.set(e.taskList[n].tasksMap, String(a.taskId), Object.assign({}, a)) : e.taskListPrivate[n].tasksMap.hasOwnProperty(String(a.taskId)) && i.Vue.set(e.taskListPrivate[n].tasksMap, String(a.taskId), Object.assign({}, a))
                } while (0)
            }, UPDATE_TASK_RENAME(e, t) {
                do {
                    if (null === t || 0 === t.length) break;
                    let n = 1;
                    for (let a of t) -1 === e.currentCategoryId ? e.taskList[n].tasksMap.hasOwnProperty(String(a.taskId)) && i.Vue.set(e.taskList[n].tasksMap, String(a.taskId), Object.assign({}, a)) : e.taskListPrivate[n].tasksMap.hasOwnProperty(String(a.taskId)) && i.Vue.set(e.taskListPrivate[n].tasksMap, String(a.taskId), Object.assign({}, a))
                } while (0)
            }, UPDATE_TASK_MOVED(e, t) {
                do {
                    if (null === t || 0 === t.length) break;
                    let n = 0;
                    t[0].taskStatus !== o.DownloadKernel.TaskStatus.Succeeded && t[0].taskStatus !== o.DownloadKernel.TaskStatus.Seeding || (n = 1);
                    for (let a of t) -1 === e.currentCategoryId ? e.taskList[n].tasksMap.hasOwnProperty(String(a.taskId)) && i.Vue.set(e.taskList[n].tasksMap, String(a.taskId), Object.assign({}, a)) : e.taskListPrivate[n].tasksMap.hasOwnProperty(String(a.taskId)) && i.Vue.set(e.taskListPrivate[n].tasksMap, String(a.taskId), Object.assign({}, a))
                } while (0)
            }, UPDATE_TASK_STATUS(e, t) {
                h.information("update status in", t.length, t[0].taskStatus, t[0].taskId);
                let n = {}, i = void 0;
                for (let a of t) void 0 === i && (i = !e.taskList[0].tasksMap.hasOwnProperty(String(a.taskId))), n[a.taskId] = a;
                h.information("update status "), i ? e.taskListPrivate[0].tasksMap = Object.assign({}, e.taskListPrivate[0].tasksMap, n) : e.taskList[0].tasksMap = Object.assign({}, e.taskList[0].tasksMap, n), h.information("update status end")
            }, UPDATE_DOWNLOADING_SELECTED_TASKS(e, t) {
                -1 === e.currentCategoryId ? e.taskList[0].selected = [...t] : e.taskListPrivate[0].selected = [...t]
            }, UPDATE_COMPLETED_SELECTED_TASKS(e, t) {
                -1 === e.currentCategoryId ? e.taskList[1].selected = [...t] : e.taskListPrivate[1].selected = [...t]
            }, UPDATE_RECYCLE_SELECTED_TASKS(e, t) {
                -1 === e.currentCategoryId && (e.taskList[2].selected = [...t])
            }, MOVE_TO_TOP(e, t) {
                do {
                    if (null === t || 0 === t.length) break;
                    let n = e.taskList[0].taskIds;
                    -1 !== e.currentCategoryId && (n = e.taskListPrivate[0].taskIds);
                    let i = [];
                    for (let e of t) {
                        let t = n.indexOf(e);
                        -1 !== t && i.push(t)
                    }
                    i.sort();
                    let a = [];
                    for (let e = i.length - 1; e >= 0; e--) a.unshift(n.splice(i[e], 1)[0]);
                    n.splice(0, 0, ...a)
                } while (0)
            }, MOVE_TO_BOTTOM(e, t) {
                do {
                    if (null === t || 0 === t.length) break;
                    let n = e.taskList[0].taskIds;
                    -1 !== e.currentCategoryId && (n = e.taskListPrivate[0].taskIds);
                    let i = [];
                    for (let e of t) {
                        let t = n.indexOf(e);
                        -1 !== t && i.push(t)
                    }
                    i.sort();
                    let a = [];
                    for (let e = i.length - 1; e >= 0; e--) a.unshift(n.splice(i[e], 1)[0]);
                    n.splice(n.length, 0, ...a)
                } while (0)
            }, UPDATE_CATEGORY(e, t) {
                if (e.currentCategoryId !== t) {
                    if (e.currentCategoryId = t, -1 !== t) for (let n = 0; n < e.taskListPrivate.length; n++) e.taskListPrivate[n].categoryId = t, e.taskListPrivate[n].tasksMap = null, e.taskListPrivate[n].tasksMap = {}, e.taskListPrivate[n].taskIds = [], e.taskListPrivate[n].selected = [];
                    d.default.setCurrentCategoryId(t)
                }
            }, UPDATE_DOWNLOADING_TASKLIST(e, t) {
                if (t.length > 0) {
                    let n = 0, i = e.taskList[n];
                    -1 !== e.currentCategoryId && (i = e.taskListPrivate[n]), i.taskIds.splice(0, t.length, ...t)
                }
            }, UPDATE_COMPLETED_TASKLIST(e, t) {
                if (t.length > 0) {
                    let n = 1, i = e.taskList[n];
                    -1 !== e.currentCategoryId && (i = e.taskListPrivate[n]), i.taskIds.splice(0, t.length, ...t)
                }
            }, UPDATE_RECYCLE_TASKLIST(e, t) {
                t.length > 0 && -1 === e.currentCategoryId && e.taskList[2].taskIds.splice(0, t.length, ...t)
            }
        }, T = {
            attachTaskEvent({commit: e}) {
                f.attachTaskEvent(o.DownloadKernel.TaskEventType.DetailChanged, (...t) => {
                    do {
                        if (!t) break;
                        if (t[0] !== o.DownloadKernel.TaskEventType.DetailChanged) break;
                        if (!t[1]) break;
                        let n = t[1].map(e => e.getTaskBaseInfo());
                        e("UPDATE_TASK_INFO", n)
                    } while (0)
                }), f.attachTaskEvent(o.DownloadKernel.TaskEventType.TaskUserRead, (...t) => {
                    do {
                        if (!t) break;
                        if (t[0] !== o.DownloadKernel.TaskEventType.TaskUserRead) break;
                        if (!t[1]) break;
                        let n = t[1].map(e => e.getTaskBaseInfo());
                        e("UPDATE_TASK_READED", n)
                    } while (0)
                }), f.attachTaskEvent(o.DownloadKernel.TaskEventType.TaskRenamed, (...t) => {
                    do {
                        if (!t) break;
                        if (t[0] !== o.DownloadKernel.TaskEventType.TaskRenamed) break;
                        if (!t[1]) break;
                        let n = t[1].map(e => e.getTaskBaseInfo());
                        e("UPDATE_TASK_RENAME", n)
                    } while (0)
                }), f.attachTaskEvent(o.DownloadKernel.TaskEventType.TaskMovedEnd, (...t) => {
                    do {
                        if (!t) break;
                        if (t[0] !== o.DownloadKernel.TaskEventType.TaskMovedEnd) break;
                        if (!t[1]) break;
                        let n = t[1], i = [];
                        for (let e of n) null !== e && i.push(e.getTaskBaseInfo());
                        i.length > 0 && e("UPDATE_TASK_MOVED", i)
                    } while (0)
                }), f.attachTaskEvent(o.DownloadKernel.TaskEventType.TaskCategoryMovedEnd, (...t) => {
                    do {
                        if (!t) break;
                        if (t[0] !== o.DownloadKernel.TaskEventType.TaskCategoryMovedEnd) break;
                        if (!t[1]) break;
                        let n = t[1], i = [];
                        for (let e of n) null !== e && i.push(e.getTaskBaseInfo());
                        i.length > 0 && e("UPDATE_TASK_MOVED", i)
                    } while (0)
                }), f.attachTaskEvent(o.DownloadKernel.TaskEventType.RemoveFromCategoryView, (...t) => {
                    do {
                        if (!t) break;
                        if (t[0] !== o.DownloadKernel.TaskEventType.RemoveFromCategoryView) break;
                        if (void 0 === t[1] || !t[2] || !t[3]) break;
                        let n = t[1], i = t[2], a = t[3].map(e => e.getTaskBaseInfo());
                        e("REMOVE_FROM_CATEGORY_VIEW", {categoryId: n, categoryViewId: i, tasks: a})
                    } while (0)
                })
            }
        }, v = {
            toolbarButtons: e => {
                let t = [];
                return -1 === e.currentCategoryId ? e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Downloading ? t = u.DownloadToolbar.downloadingButtons : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Completed ? t = u.DownloadToolbar.completedButtons : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Recycle && (t = u.DownloadToolbar.recycleButtons) : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Downloading ? t = u.DownloadToolbar.privateDownloadingButtons : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Completed && (t = u.DownloadToolbar.privateCompletedButtons), t
            }, currentCategoryTaskCount: e => {
                let t = 0;
                return e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Downloading ? -1 === e.currentCategoryId ? t = e.taskList[0].taskIds.length : e.currentCategoryId === e.taskListPrivate[0].categoryId && (t = e.taskListPrivate[0].taskIds.length) : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Completed ? -1 === e.currentCategoryId ? t = e.taskList[1].taskIds.length : e.currentCategoryId === e.taskListPrivate[0].categoryId && (t = e.taskListPrivate[1].taskIds.length) : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Recycle && -1 === e.currentCategoryId && (t = e.taskList[2].taskIds.length), t
            }, currentSelectdTaskInfos: e => {
                let t = [], n = null, i = [];
                if (e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Downloading ? -1 !== e.currentCategoryId ? e.currentCategoryId === e.taskListPrivate[0].categoryId && (n = e.taskListPrivate[0].tasksMap, i = e.taskListPrivate[0].selected) : (n = e.taskList[0].tasksMap, i = e.taskList[0].selected) : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Completed ? -1 !== e.currentCategoryId ? e.currentCategoryId === e.taskListPrivate[1].categoryId && (n = e.taskListPrivate[1].tasksMap, i = e.taskListPrivate[1].selected) : (n = e.taskList[1].tasksMap, i = e.taskList[1].selected) : e.currentCategoryViewId === o.DownloadKernel.CategroyViewID.Recycle && -1 === e.currentCategoryId && (n = e.taskList[2].tasksMap, i = e.taskList[2].selected), null !== n) for (let e of i) void 0 !== n[e] && null !== n[e] ? t.push(n[e]) : h.information("selected taskbase undefined", e);
                return t
            }, downloadingSelectedIndexs: e => {
                let t = [];
                return -1 === e.currentCategoryId ? t = e.taskList[0].selected : e.currentCategoryId === e.taskListPrivate[0].categoryId && (t = e.taskListPrivate[0].selected), t
            }, completedSelectedTaskIndexs: e => {
                let t = [];
                return -1 === e.currentCategoryId ? t = e.taskList[1].selected : e.currentCategoryId === e.taskListPrivate[1].categoryId && (t = e.taskListPrivate[1].selected), t
            }, recycleSelectedTaskIndexs: e => {
                let t = [];
                return -1 === e.currentCategoryId && (t = e.taskList[2].selected), t
            }, downloadingTaskList: e => {
                let t = [];
                return -1 === e.currentCategoryId ? t = e.taskList[0].taskIds : e.currentCategoryId === e.taskListPrivate[0].categoryId && (t = e.taskListPrivate[0].taskIds), t
            }, completedTaskList: e => {
                let t = [];
                return -1 === e.currentCategoryId ? t = e.taskList[1].taskIds : e.currentCategoryId === e.taskListPrivate[1].categoryId && (t = e.taskListPrivate[1].taskIds), t
            }, recycleTaskList: e => {
                let t = [];
                return -1 === e.currentCategoryId && (t = e.taskList[2].taskIds), t
            }, downloadingOrder: e => {
                return e.taskList[0].taskIds
            }, downloadingTaskBaseList: e => {
                let t = [], n = {};
                return -1 !== e.currentCategoryId ? e.currentCategoryId === e.taskListPrivate[0].categoryId && (n = e.taskListPrivate[0].tasksMap) : n = e.taskList[0].tasksMap, t = [...Object.values(n)]
            }, completedTaskBaseList: e => {
                let t = [], n = {};
                return -1 !== e.currentCategoryId ? e.currentCategoryId === e.taskListPrivate[1].categoryId && (n = e.taskListPrivate[1].tasksMap) : n = e.taskList[1].tasksMap, t = [...Object.values(n)]
            }, recycleTaskBaseList: e => {
                let t = [], n = {};
                return -1 === e.currentCategoryId && (n = e.taskList[2].tasksMap), t = [...Object.values(n)]
            }
        };
    t.default = {state: k, mutations: m, actions: T, getters: v}
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(5), r = n(80), s = n(158), l = n(28), u = n(58), d = n(163), c = n(85), h = n(13), f = n(239),
        p = c.DownloadKernelCategoryViewManager.getCategoryViewManager(), g = a.default.getLogger("DownloadToolbar"),
        k = l.DownloadKernelTaskManager.getTaskManager();
    let m = (e, t) => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_newtask_click"), h.XLStatNS.trackEvent("core_event", "create_task_click", "", 0, 0, 0, 0, "click_source=dltab_menu"), r.ThunderNewTask.createPreNewTaskWindow(null)
    }, T = () => "", v = (e, t, n, i) => {
        let a = "";
        return i && (a = "is-disabled"), a
    }, w = (e, t) => {
        g.verbose(e);
        let n = t.currentCategoryViewId, i = t.currentSelectdTaskInfos;
        n === o.DownloadKernel.CategroyViewID.Downloading ? u.TaskOperatorNs.startTasks(i) : g.error("toolbar start tasks but not in downloading category")
    }, y = (e, t, n, i) => {
        let a = "is-disabled";
        return !i && s.TaskStatusHelper.canStartSelectedTask(t, n) && (a = ""), a
    }, S = (e, t) => {
        g.verbose(e);
        let n = t.currentCategoryViewId, i = t.currentSelectdTaskInfos;
        n === o.DownloadKernel.CategroyViewID.Downloading ? u.TaskOperatorNs.pauseTasks(i, o.DownloadKernel.TaskStopReason.ToolbarButton) : g.error("toolbar pause tasks but not in downloading category")
    }, b = (e, t, n, i) => {
        let a = "is-disabled";
        return !i && s.TaskStatusHelper.canStopSelectedTask(t, n) && (a = ""), a
    }, C = (e, t) => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_delete_click");
        let n = t.currentSelectdTaskInfos, i = !1;
        e.shiftKey && (i = !0), i ? u.TaskOperatorNs.destroyTasks(n) : u.TaskOperatorNs.deleteTasks(n)
    }, D = (e, t) => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_delete_click");
        let n = t.currentSelectdTaskInfos;
        u.TaskOperatorNs.destroyTasks(n)
    }, N = (e, t, n, i) => {
        let a = "is-disabled";
        return !i && s.TaskStatusHelper.canDeleteSelectedTask(t, n) && (a = ""), a
    }, I = (e, t) => i(this, void 0, void 0, function* () {
        g.verbose(e);
        let n = t.currentCategoryViewId, i = t.currentSelectdTaskInfos;
        do {
            if (n === o.DownloadKernel.CategroyViewID.Downloading) break;
            if (1 !== i.length) break;
            let e = i[0].taskType;
            if (e === o.DownloadKernel.TaskType.Bt) yield u.TaskOperatorNs.openTaskFolder(i[0], !0); else if (e === o.DownloadKernel.TaskType.Group) if (n === o.DownloadKernel.CategroyViewID.Completed) {
                let e = k.getTaskFromTaskId(i[0].taskId);
                (yield u.TaskOperatorNs.executeInstallFile(e)) || (yield u.TaskOperatorNs.openTaskFolder(i[0], !0))
            } else yield u.TaskOperatorNs.openTaskFolder(i[0], !0); else {
                let e = "";
                n === o.DownloadKernel.CategroyViewID.Completed ? e = "finished" : n === o.DownloadKernel.CategroyViewID.Recycle && (e = "dustbin"), yield u.TaskOperatorNs.openTaskItem(i[0], void 0, void 0, e)
            }
            n === o.DownloadKernel.CategroyViewID.Completed && u.TaskOperatorNs.markReadStatus(i, 1)
        } while (0)
    }), _ = (e, t) => i(this, void 0, void 0, function* () {
        g.verbose(e);
        let n = t.currentCategoryViewId, i = t.currentSelectdTaskInfos;
        do {
            if (n === o.DownloadKernel.CategroyViewID.Downloading) break;
            if (1 !== i.length) break;
            yield u.TaskOperatorNs.openTaskFolder(i[0]), n === o.DownloadKernel.CategroyViewID.Completed && u.TaskOperatorNs.markReadStatus(i, 1)
        } while (0)
    }), x = (e, t, n, a) => i(this, void 0, void 0, function* () {
        let e = "is-disabled";
        do {
            if (a || t !== o.DownloadKernel.CategroyViewID.Completed) break;
            if (1 === n.length) {
                if (!(yield d.TaskCtrlOperatorNS.canOpenSelectedTaskFile(n[0]))) break;
                e = ""
            }
        } while (0);
        return e
    }), E = (e, t, n, a) => i(this, void 0, void 0, function* () {
        let e = "is-disabled";
        do {
            if (a || t !== o.DownloadKernel.CategroyViewID.Completed) break;
            if (1 === n.length) {
                if (!(yield d.TaskCtrlOperatorNS.canOpenSelectedTaskFolder(n[0]))) break;
                e = ""
            }
        } while (0);
        return e
    }), A = (e, t) => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_undo_click"), g.verbose(e);
        let n = t.currentCategoryViewId, i = t.currentSelectdTaskInfos;
        n === o.DownloadKernel.CategroyViewID.Recycle && u.TaskOperatorNs.recoverTask(i)
    }, P = (e, t) => {
        g.verbose(e), h.XLStatNS.trackEvent("download_leftpanel", "top_delete_click");
        let n = t.currentCategoryViewId, i = t.currentSelectdTaskInfos;
        n === o.DownloadKernel.CategroyViewID.Recycle && u.TaskOperatorNs.destroyTasks(i)
    }, M = (e, t, n, i) => {
        g.verbose(t);
        let a = "is-disabled";
        return !i && n.length > 0 && (a = ""), a
    }, F = () => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_clear_click"), u.TaskOperatorNs.clearRecycle()
    }, O = (e, t, n, i) => {
        let a = p.getCategoryViewFromId(o.DownloadKernel.CategroyViewID.Recycle).getTasks().size, r = "is-disabled";
        return !i && a > 0 && (r = ""), r
    }, B = (e, t, n, i) => {
        let a = "";
        return i && (a = "is-disabled"), a
    }, U = (e, t) => i(this, void 0, void 0, function* () {
        const {VipDownloadPlugin: t} = yield Promise.resolve().then(() => n(38));
        let i = encodeURIComponent("referfrom=v_pc_xlx_ggong_taskbar_vip");
        h.XLStatNS.trackEvent("download_leftpanel", "top_vipicon_click", "", 0, 0, 0, 0, i), g.verbose(e), t.clickToolbarVipBtn()
    }), L = (e, t) => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_more_click"), g.information("open more"), g.verbose(e), f.downloadContextMenu.setContextInfo(t, t.currentCategoryId), f.downloadContextMenu.popMenu(f.DownloadMenuType.ToolbarMore).catch()
    }, K = (e, t) => {
        h.XLStatNS.trackEvent("download_leftpanel", "top_computer_click"), f.downloadContextMenu.setContextInfo(t, t.currentCategoryId), f.downloadContextMenu.popMenu(f.DownloadMenuType.PrivateSpaceHome).catch()
    };
    !function (e) {
        e.downloadingButtons = [{
            id: "xlx-icon-nav-new",
            title: "新建任务",
            onClick: m,
            filterClass: v
        }, {id: "xlx-icon-nav-down", title: "下载", onClick: w, filterClass: y}, {
            id: "xlx-icon-nav-pause",
            title: "暂停",
            onClick: S,
            filterClass: b
        }, {id: "xlx-icon-nav-delete", title: "删除任务", onClick: C, filterClass: N}, {
            id: "xlx-icon-nav-vip",
            title: "会员",
            onClick: U,
            filterClass: T
        }, {
            id: "xlx-icon-nav-more",
            title: "更多",
            onClick: L,
            filterClass: v
        }], e.completedButtons = [{
            id: "xlx-icon-nav-new",
            title: "新建任务",
            onClick: m,
            filterClass: v
        }, {id: "xlx-icon-nav-file", title: "打开文件", onClick: I, filterClass: x}, {
            id: "xlx-icon-nav-folder",
            title: "打开文件夹",
            onClick: _,
            filterClass: E
        }, {id: "xlx-icon-nav-delete", title: "删除任务", onClick: C, filterClass: N}, {
            id: "xlx-icon-nav-vip",
            title: "会员",
            onClick: U,
            filterClass: T
        }, {
            id: "xlx-icon-nav-more",
            title: "更多",
            onClick: L,
            filterClass: v
        }], e.recycleButtons = [{
            id: "xlx-icon-nav-new",
            title: "新建任务",
            onClick: m,
            filterClass: v
        }, {id: "xlx-icon-nav-restore", title: "还原", onClick: A, filterClass: M}, {
            id: "xlx-icon-nav-clear",
            title: "彻底删除",
            onClick: P,
            filterClass: M
        }, {id: "xlx-icon-nav-rubbish", title: "清空垃圾箱", onClick: F, filterClass: O}, {
            id: "xlx-icon-nav-vip",
            title: "会员",
            onClick: U,
            filterClass: T
        }, {
            id: "xlx-icon-nav-more",
            title: "更多",
            onClick: L,
            filterClass: v
        }], e.privateDownloadingButtons = [{
            id: "xlx-icon-nav-new",
            title: "新建任务",
            onClick: m,
            filterClass: v
        }, {id: "xlx-icon-nav-down", title: "下载", onClick: w, filterClass: y}, {
            id: "xlx-icon-nav-pause",
            title: "暂停",
            onClick: S,
            filterClass: b
        }, {id: "xlx-icon-nav-delete", title: "删除任务", onClick: D, filterClass: N}, {
            id: "xlx-icon-nav-vip",
            title: "会员",
            onClick: U,
            filterClass: T
        }, {
            id: "xlx-icon-nav-home",
            title: "私人空间设置",
            onClick: K,
            filterClass: B
        }], e.privateCompletedButtons = [{
            id: "xlx-icon-nav-new",
            title: "新建任务",
            onClick: m,
            filterClass: v
        }, {id: "xlx-icon-nav-file", title: "打开文件", onClick: I, filterClass: x}, {
            id: "xlx-icon-nav-folder",
            title: "打开文件夹",
            onClick: _,
            filterClass: E
        }, {id: "xlx-icon-nav-delete", title: "删除任务", onClick: D, filterClass: N}, {
            id: "xlx-icon-nav-vip",
            title: "会员",
            onClick: U,
            filterClass: T
        }, {id: "xlx-icon-nav-home", title: "私人空间设置", onClick: K, filterClass: B}]
    }(t.DownloadToolbar || (t.DownloadToolbar = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
        e.contextMenuDownloadImportUncomplete = "context_menu_download_import_uncompleted", e.contextMenuDownloadFolder = "context_menu_download_folder", e.contextMenuGroupAccelerate = "context_menu_group_accelerate", e.contxtMenuSubtitleSearch = "context_menu_subtitle_search", e.contextMenuDownloadStart = "context_menu_download_start", e.contextMenuDownloadPause = "context_menu_download_pause", e.contextMenuDownloadStartAll = "context_menu_download_start_all", e.contextMenuDownloadPauseAll = "context_menu_download_pause_all", e.contextMenuDownloadDelete = "context_menu_download_delete", e.contextMenuDownloadDestroy = "context_menu_download_destroy", e.contextMenuDownloadMoveFilePrivateSpace = "context_menu_download_move_file_private_space", e.contextMenuDownloadMoveFileOutPrivateSpace = "context_menu_download_move_file_out_private_space", e.contextMenuDownloadMoveFileOther = "context_menu_download_move_file_other", e.contextMenuDownloadMoveFileLastest = "context_menu_download_move_file_lastest", e.contextMenuDownloadMoveTop = "context_menu_download_move_top", e.contextMenuDownloadMoveBottom = "context_menu_download_move_bottom", e.contextMenuDownloadMerge = "context_menu_download_merge", e.contextMenuDownloadVipAcc = "context_menu_download_vip_acc", e.contextMenuDownloadCopyLink = "context_menu_download_copy_link", e.contextMenuDownloadTorrentSaveAs = "context_menu_download_torrent_save_as", e.contextMenuDownloadCopyMagnet = "context_menu_download_copy_magnet", e.contextMenuDownloadFile = "context_menu_download_file", e.contextMenuDownloadRename = "context_menu_download_rename", e.contextMenuDownloadCopyFileLastest = "context_menu_download_copy_file_lastest", e.contextMenuDownloadCopyFileOther = "context_menu_download_copy_file_other", e.contextMenuDownloadRedownload = "context_menu_download_redownload", e.contextMenuDownloadRecover = "context_menu_download_recover", e.contextMenuDownloadClear = "context_menu_download_clear", e.contextMenuDownloadSelectAll = "context_menu_download_select_all", e.contextMenuDownloadDeleteNonexisting = "context_menu_download_delete_non_existing", e.contextMenuDownloadAsReadedAll = "context_menu_download_as_readed_all", e.contextMenuToolbarMoreOpenSearch = "context_menu_toolbar_more_opensearch", e.contextMenuToolbarMoreDestroy = "context_menu_toolbar_more_destroy", e.contextMenuToolbarMoreConfig = "context_menu_toolbar_more_config", e.contextMenuToolbarMoreSortByDefault = "context_menu_toolbar_more_sort_default", e.contextMenuToolbarMoreSortByTime = "context_menu_toolbar_more_sort_time", e.contextMenuToolbarMoreSortByType = "context_menu_toolbar_more_sort_type", e.contextMenuToolbarMoreSortByName = "context_menu_toolbar_more_sort_name", e.contextMenuToolbarMoreSortBySize = "context_menu_toolbar_more_sort_size", e.contextMenuToolbarMoreSortByStatus = "context_menu_toolbar_more_sort_status", e.contextMenuToolbarMoreSortByProgress = "context_menu_toolbar_more_sort_progress", e.contextMenuTabChangeCategoryMyComputer = "context_menu_tab_change_category_mycomputer", e.contextMenuTabChangeCategoryPrivateSpace = "context_menu_tab_change_category_privatespace", e.contextMenuToolbarPrivateSpaceSelectAll = "context_menu_toolbar_privatespace_select_all", e.contextMenuToolbarPrivateSpaceDownloadSetting = "context_menu_toolbar_privatespace_download_setting", e.contextMenuToolbarPrivateSpaceTaskManager = "context_menu_toolbar_privatespace_download_task_manager", e.contextMenuOpenTaskPosition = "context_menu_search_openfile_position"
    }(t.ContextMenuIdsNS || (t.ContextMenuIdsNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = {
        ON_MOUNTED(e, t) {
            e.homePageUrl = t
        }
    };
    t.default = {state: {homePageUrl: ""}, mutations: i, actions: {}}
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(755), o = i.default.getLogger("CommunityStore"), r = [6, 8, 10], s = [7, 9, 11];
    o.verbose("enter");
    const l = {
        SET_UNREAD_NUMS(e, t) {
            e.unreadNums = Object.assign({}, e.unreadNums, t)
        }, SET_SHOW_MESSAGE_BUTTON(e, t) {
            e.showMessageButton = t
        }, SET_UNREAD_MESSAGES(e, t) {
            e.messages = t
        }, SET_UNREAD_STARS(e, t) {
            e.stars = t
        }, SET_CHAT_MSGS(e, t) {
            o.information("SET_CHAT_MSGS", Object.assign({}, e.chatMsgs)), e.chatMsgs = e.chatMsgs.concat(t)
        }, RESET_CHATS_NUM(e) {
            e.chatMsgs = []
        }, SET_USERS_INFO(e, t) {
            e.chatUsersInfo[t.uid || "0"] = t, o.information(" state.chatUsersInfo", e.chatUsersInfo), e.chatUserId = t.uid || 0
        }, SET_CHATS_NUM(e, t) {
            e.unreadNums.chat = t
        }, SET_MINE_ID(e, t) {
            e.mineId = t
        }
    }, u = {
        getUnreadNums: ({commit: e, state: t, rootState: n}, i) => (o.information("getUnreadNums"), a.getUnreadMsgNum(i).then(n => {
            n.error || "ok" !== n.data.result || (o.information("getUnreadNums>>>", n), e("SET_UNREAD_NUMS", {
                star: n.data.aggregation,
                comment: n.data.comment,
                chat: t.unreadNums.chat
            }))
        }).catch(e => {
            o.information("getUnreadNums error")
        })),
        getUnreadNoticeNum: ({commit: e, state: t, rootState: n}, i) => (o.information("getUnreadNoticeNum"), a.getUnreadNoticeNum(i).then(t => {
            t.error || "ok" !== t.data.result || e("SET_UNREAD_NUMS", {notice: t.data.count})
        }).catch(e => {
            o.information("getUnreadNoticeNum error")
        })),
        getUnreadMessages: ({commit: e, state: t, rootState: n}, i) => a.getUnreadMsgs(i, 0).then(t => {
            o.information("getUnreadMessages...", t);
            let n = [];
            if (!t.error && "ok" === t.data.result) {
                let i = 0;
                for (let e = 0; e < t.data.messages.length; e++) !t.data.messages[e].have_read && r.includes(t.data.messages[e].type) && (n[i] = {
                    msgType: t.data.messages[e].type,
                    userId: t.data.messages[e].initiator,
                    userName: t.data.messages[e].initiator_name,
                    userAvatar: t.data.messages[e].initiator_portrait,
                    messageContent: t.data.messages[e].reply,
                    msgid: t.data.messages[e].msgid,
                    res: t.data.messages[e].cinecism,
                    createTime: t.data.messages[e].insert_time
                }, i++);
                o.information("messages--", n), n.length > 0 && e("SET_UNREAD_MESSAGES", n)
            }
        }).catch(e => {
            o.information("getUnreadMessages error")
        }),
        getUnreadStars: ({commit: e, state: t, rootState: n}, i) => a.getStarsMsg(i, 0).then(t => {
            o.information("getStarsMsg-", t);
            let n = [];
            if (!t.error && "ok" === t.data.result) {
                let i = 0;
                for (let e = 0; e < t.data.messages.length; e++) !t.data.messages[e].have_read && s.includes(t.data.messages[e].type) && (n[i] = {
                    msgType: t.data.messages[e].type,
                    userId: t.data.messages[e].initiator,
                    userName: t.data.messages[e].initiator_name,
                    userAvatar: t.data.messages[e].initiator_portrait,
                    messageContent: t.data.messages[e].original,
                    res: t.data.messages[e].cinecism,
                    msgid: t.data.messages[e].msgid,
                    createTime: t.data.messages[e].insert_time
                }, i++);
                o.information("messages--", n), n.length > 0 && e("SET_UNREAD_STARS", n)
            }
        }).catch(e => {
            o.information("getUnreadStars error")
        }),
        getUserInfo: ({commit: e, state: t, rootState: n}, i) => (o.information("getUserInfo", i), void 0 !== t.chatUsersInfo[i] ? (o.information("用户信息已存在"), Promise.resolve({data: {result: "ok"}})) : a.getUserInfo(i).then(t => (o.information("getUserInfo....", t), t.error || "ok" !== t.data.result || (o.information("getUserInfo....", t.data.user_info), e("SET_USERS_INFO", t.data.user_info)), t)).catch(e => {
            o.information("getUserInfo error")
        })),
        getUserSessionList: ({commit: e, state: t, rootState: n}, i) => a.getUserSessionList(i).then(n => {
            if (o.information("获取用户会话列表", n), !n.error && "ok" === n.data.result) {
                let i = 0, a = [];
                for (let e = 0; e < n.data.sessions.length; e++) o.information("mineId--", t.mineId), n.data.sessions[e].user_id === t.mineId || a.includes(n.data.sessions[e].record.sender) || (i += n.data.sessions[e].unread, a.push(n.data.sessions[e].record.sender));
                i > 0 && e("SET_CHATS_NUM", i), o.information("私信未读数 chatNum", i)
            }
        }).catch(e => {
            o.information("getUserSessionList error")
        })
    }, d = {
        totalUnread(e, t, n) {
            let {star: i, comment: a, notice: o, chat: r} = e.unreadNums;
            return i + a + o + r
        }, UnreadMsgsLen: (e, t, n) => e.messages.length + e.stars.length + e.chatMsgs.length
    };
    t.default = {
        state: {
            unreadNums: {star: 0, comment: 0, notice: 0, chat: 0},
            showMessageButton: !0,
            messages: [],
            stars: [],
            chatUserId: 0,
            chatMsgs: [],
            chatUsersInfo: {},
            mineId: 0
        }, mutations: l, actions: u, getters: d
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(661);
    t.getUnreadMsgNum = function (e) {
        return i.fetchSlRes({url: "/msgcenter/unread_info_v3", data: {userid: e, "Chat-Version": 4}})
    }, t.getUnreadNoticeNum = function (e) {
        return i.fetchSlRes({url: "/msgcenter/pc/unread_count", data: {user_id: e, "Chat-Version": 4}})
    }, t.getUnreadMsgs = function (e, t, n, a) {
        return i.fetchSlRes({
            url: "/msgcenter/query_comment_v3",
            data: {userid: e, "Chat-Version": 4, reset_read_status: t, cursor: n, size: a}
        })
    }, t.getStarsMsg = function (e, t, n, a) {
        return i.fetchSlRes({
            url: "/msgcenter/query_star_v3",
            data: {userid: e, "Chat-Version": 4, reset_read_status: t, cursor: n, size: a}
        })
    }, t.getUserInfo = function (e) {
        return i.fetchSlRes({url: "/user_info/pc_info", data: {uid: e}})
    }, t.getUserSessionList = function (e, t = 60) {
        return i.fetchSlRes({url: "/chitchat/sessions", data: {uid: e, limit: t}})
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = {
        SHOW_PRIVATE_SPACE_OPEN_PAGE(e, t) {
            e.showPrivateSpaceOpenPage = t
        }
    };
    t.default = {state: {showPrivateSpaceOpenPage: !1}, mutations: i, actions: {}, getters: {}}
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = {
        SHOW_UPGRADE_TASK(e, t) {
            e.showUpgradeTask !== t && (e.showUpgradeTask = t)
        }
    };
    t.default = {state: {showUpgradeTask: !1}, mutations: i, actions: {}, getters: {}}
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(18), a = n(2), o = n(25), r = n(4), s = n(1).default.getLogger("book-marks-store"), l = n(83),
        u = a.join(__profilesDir, "XLBrowserApp", "bookmarks"), d = 1, c = {
            ADD_BOOK_MARKS_ITEM(e, t) {
                e.bookMarks = Object.assign({}, e.bookMarks, t);
                let n = JSON.stringify(e.bookMarks);
                o.ConfigNS.setValue("book-marks-section", "book-marks-key", n)
            }, REMOVE_BOOK_MARKS_ITEM(e, t) {
                if (s.information("REMOVE_BOOK_MARKS_ITEM", t), void 0 !== e.bookMarks[t]) {
                    s.information("delete state.bookMarks", e.bookMarks), r.Vue.delete(e.bookMarks, t);
                    let n = JSON.stringify(e.bookMarks);
                    o.ConfigNS.setValue("book-marks-section", "book-marks-key", n)
                }
            }, SET_BOOK_MARKS_STATE(e, t) {
                e.bookMarks = t
            }
        }, h = {
            initBookMarks: ({commit: e, state: t, rootState: n}) => new Promise((e, t) => {
                let n = o.ConfigNS.getValue("book-marks-section", "book-marks-key", "/");
                if ("/" !== n) try {
                    let i = JSON.parse(n);
                    e(i)
                } catch (e) {
                    t(!1)
                } else i.readFile(`${u}`, "utf8", (n, i) => {
                    if (n) s.information("读取书签文件出错,书签路径..", u), t(!1); else try {
                        let t = function (e) {
                            if (void 0 === l(e, "roots", "bookmarkbar", "itemlist")) return {};
                            let t = l(e, "roots", "bookmarkbar", "itemlist");
                            s.information("bookMarkItemList", t);
                            let n = {};
                            for (let e = 0; e < t.length; e++) l(t[e], "bmType") === d && void 0 === n[l(t[e], "url")] ? n[l(t[e], "url")] = {
                                url: l(t[e], "url"),
                                name: l(t[e], "name"),
                                iconUrl: l(t[e], "iconUrl") || ""
                            } : f(t[e], n);
                            return n
                        }(JSON.parse(i)), n = JSON.stringify(t);
                        o.ConfigNS.setValue("book-marks-section", "book-marks-key", n), e(t)
                    } catch (e) {
                        s.information("book marks data parse error")
                    }
                })
            }).then(t => {
                e("SET_BOOK_MARKS_STATE", t)
            }).catch(e => {
                s.information("初始化书签数据失败")
            })
        };

    function f(e, t) {
        let n = l(e, "itemlist");
        for (let e = 0; e < n.length; e++) l(n[e], "bmType") === d && void 0 === t[l(t[e], "url")] ? t[l(n[e], "url")] = {
            url: l(n[e], "url"),
            name: l(n[e], "name")
        } : f(n[e], t)
    }

    t.default = {state: {bookMarks: {}}, mutations: c, actions: h}
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(287);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-top\\system-buttons-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(615), a = n(289);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(763);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\system-buttons.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(291);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-top\\message-button-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(624), a = n(293);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\message-button.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(924);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(295);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-top\\tabs-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(570), a = n(297);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(766);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\tabs.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(926);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(299);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-top\\message-tips-containner.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(618), a = n(301);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\message-tips.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(303);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-top\\book-marks-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(614), a = n(305);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-top\\book-marks.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(928);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(307);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\index-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(607), a = n(309);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(617), a = n(311);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(313);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\index-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(625), a = n(315);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(317);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\tool-bar\\tool-bar-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(635), a = n(319);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\tool-bar\\tool-bar.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(321);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\tool-bar\\tool-bar-button-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(637), a = n(323);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\tool-bar\\tool-bar-button.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(627), a = n(325);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\status-bar.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(2), o = n(6), r = n(32), s = n(5), l = n(85), u = n(222), d = n(34), c = n(58), h = n(20), f = n(3),
        p = n(157), g = n(112), k = n(10), m = o.default(a.join(__rootDir, "../bin/ThunderHelper.node")),
        T = r.DownloadKernelEventManager.getEventManager(),
        v = l.DownloadKernelCategoryViewManager.getCategoryViewManager(),
        w = p.ToastNotifyManagerNS.getToastNotifyManger();
    var y;
    !function (e) {
        e[e.UnKnown = -1] = "UnKnown", e[e.ShutDown = 0] = "ShutDown", e[e.Sleep = 1] = "Sleep", e[e.Exit = 2] = "Exit", e[e.StartAll = 3] = "StartAll", e[e.StopAll = 4] = "StopAll"
    }(y = t.ScheduleCompleteTaskType || (t.ScheduleCompleteTaskType = {})), function (e) {
        let t = y.UnKnown, n = null, a = -1, o = [];

        function r() {
            n = T.attachTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged, I)
        }

        function l() {
            null !== n && (T.detachTaskEvent(s.DownloadKernel.TaskEventType.StatusChanged, n), n = null)
        }

        function S() {
            l(), t = y.UnKnown
        }

        function b(e) {
            let t = 0, n = ["关机", "睡眠", "退出迅雷", "开始全部任务", "暂停全部任务"];
            for (let i = n.length - 1; i >= 0; --i) if (n[i] === e) {
                t = i;
                break
            }
            return t
        }

        function C(e) {
            let t = !1;
            for (let n = 0; n < e.length; ++n) {
                let i = e[n];
                if (!i) continue;
                let a = i.getTaskStatus();
                if (a !== s.DownloadKernel.TaskStatus.Succeeded && a !== s.DownloadKernel.TaskStatus.Seeding && a !== s.DownloadKernel.TaskStatus.Failed) continue;
                let o = i.getTaskBaseInfo(), r = i.getTaskPreStatus();
                if (o.taskType !== s.DownloadKernel.TaskType.Bt || a !== s.DownloadKernel.TaskStatus.Succeeded && a !== s.DownloadKernel.TaskStatus.Seeding || r !== s.DownloadKernel.TaskStatus.Succeeded && r !== s.DownloadKernel.TaskStatus.Seeding) {
                    t = !0;
                    break
                }
            }
            return t
        }

        function D() {
            let e = !1;
            do {
                let t = v.getCategoryViewFromId(s.DownloadKernel.CategroyViewID.Downloading).getTasks(), n = !1;
                for (let [, e]of t) if (null !== e) {
                    let t = e.getTaskStatus();
                    if (t === s.DownloadKernel.TaskStatus.PreDownloading || t === s.DownloadKernel.TaskStatus.StartWaiting || t === s.DownloadKernel.TaskStatus.StartPending || t === s.DownloadKernel.TaskStatus.Started) {
                        n = !0;
                        break
                    }
                }
                if (n) break;
                e = !0
            } while (0);
            return e
        }

        function N(e) {
            e === y.ShutDown ? m.shutDownMachine() : e === y.Sleep ? m.suspendMachine() : e === y.Exit ? u.quitPromises.run() : e === y.StartAll ? c.TaskOperatorNs.startAll() : e === y.StopAll && c.TaskOperatorNs.pauseAll()
        }

        function I(...e) {
            do {
                if (!e) break;
                if (e[0] !== s.DownloadKernel.TaskEventType.StatusChanged) break;
                if (!e[1]) break;
                if (!C(e[1])) break;
                if (!D()) break;
                setTimeout(() => {
                    N(t), S()
                }, 1e4)
            } while (0)
        }

        e.setDownloadCompleteTaskType = function (e) {
            do {
                if (e !== y.ShutDown && e !== y.Sleep && e !== y.Exit) break;
                if (t === e) break;
                S(), t = e, r();
                let n = "";
                switch (e) {
                    case y.ShutDown:
                        n = "已开启下载完成后关机";
                        break;
                    case y.Sleep:
                        n = "已开启下载完成后睡眠";
                        break;
                    case y.Exit:
                        n = "已开启下载完成后退出迅雷"
                }
                let i = w.showNotify(p.ToastNotifyManagerNS.notifyIdScheduleTaskComplete, g.ToastNotifyItemType.RedCancelNotify, n, 5e3);
                i && i.onCancel(() => {
                    S()
                })
            } while (0)
        }, e.getDownloadCompleteTaskType = function () {
            return t
        }, e.startDownloadCompleteMonitor = r, e.stopDownloadCompleteMonitor = l, e.cancelDownloadCompleteTask = S, e.showPlanTaskDlg = function () {
            d.MessageBox.custom("PlanTask", o)
        }, e.init = function () {
            f.remote.ipcMain.on(h.ThunderChannelList.channelRMCommitPlanTask, (e, t) => i(this, void 0, void 0, function* () {
                o = t, -1 !== a && (clearInterval(a), a = -1), a = setInterval(() => {
                    for (let e = o.length - 1; e >= 0; --e) {
                        let t = o[e],
                            n = k.ThunderUtil.convertTimeToMinutes(Number(t.hours), Number(t.minutes), Number(t.seconds));
                        if ((n -= 1) <= 0) {
                            N(b(t.operation)), o.splice(e, 1);
                            continue
                        }
                        let i = k.ThunderUtil.convertMinuteToTime(n);
                        t.hours = i[0] + "", t.minutes = i[1] + "", t.seconds = i[2] + ""
                    }
                    o.length <= 0 && -1 !== a && (clearInterval(a), a = -1)
                }, 1e3)
            })), f.remote.ipcMain.on(h.ThunderChannelList.channelRMPerformePlanTask, (e, t) => i(this, void 0, void 0, function* () {
                N(b(t))
            }))
        }, e.getOperationIndex = b, e.excuteTask = N
    }(t.ScheduleTaskNS || (t.ScheduleTaskNS = {}))
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(25), a = n(52), o = n(222);
    !function (e) {
        let t = 0, n = 0, r = "", s = 0, l = 0;

        function u() {
            let e = new Date;
            return e.getFullYear() + "." + (e.getMonth() + 1) + "." + e.getDate()
        }

        function d() {
            let e = !0;
            return u() === r && (e = !1), e
        }

        function c() {
            return i.ConfigNS.getValue("FlowMonitor", "DownloadSize", 0)
        }

        function h() {
            return i.ConfigNS.getValue("FlowMonitor", "UploadSize", 0)
        }

        function f(e, t) {
            i.ConfigNS.setValue("FlowMonitor", "DownloadSize", e), i.ConfigNS.setValue("FlowMonitor", "UploadSize", t), i.ConfigNS.setValue("FlowMonitor", "Date", u())
        }

        e.isDateChange = d, e.getDownloadSizeFromFile = c, e.getUploadSizeFromFile = h, e.setFlowData = f, e.startMonitor = function () {
            t = c(), n = h(), r = i.ConfigNS.getValue("FlowMonitor", "Date", ""), d() && (t = 0, n = 0, f(0, 0)), s = t, l = n, o.quitPromises.add(function () {
                return new Promise(e => {
                    f(s, l), i.ConfigNS.save().catch(), e(!0)
                })
            })
        }, e.getTodayDownloadSize = function () {
            let e = a.DownloadKernelManager.getTotalDownloadSize();
            return s = t + e
        }, e.getTodayUploadSize = function () {
            let e = a.DownloadKernelManager.getTotalUploadSize();
            return l = n + e
        }, e.getCurrentDownloadSpeed = function () {
            return a.DownloadKernelManager.getTotalTaskDownloadSpeed(!1)
        }, e.getCurrentVipSpeed = function () {
            return a.DownloadKernelManager.getTotalTaskVipSpeed(!1)
        }
    }(t.FlowMonitorNS || (t.FlowMonitorNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(327);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\upgrade-task-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(631), a = n(329);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\upgrade-task.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(5), r = n(28), s = n(81), l = n(229), u = n(25), d = n(7),
        c = a.default.getLogger("PrivateSpace.Upgrade"), h = r.DownloadKernelTaskManager.getTaskManager(),
        f = s.DownloadKernelCategoryManager.getCategoryManager();

    class p {
        insertTaskToNewPrivateSpace(e, t, n) {
            return i(this, void 0, void 0, function* () {
                let i = !1, a = yield l.TaskUtilitiesAWNS.findTaskAW(n);
                return null !== a && a.result || (c.information("insertTaskToNewPrivateSpace taskId:", t.getId(), ", findInfo:", n), i = h.moveCategoryTask(t.getId(), e.getId())), i
            })
        }

        getOldPrivateSpaceTaskList() {
            let e = [], t = f.getCategorys();
            for (let [, n]of t) {
                let t = n.getName(), i = n.getUserName();
                if ("Private" === t && "0" === i) {
                    let t = n.getCategoryViews();
                    for (let n = 0; n < t.length; n++) {
                        let i = t[n].getTasks();
                        for (let [, t]of i) e.push(t)
                    }
                }
            }
            return e
        }

        insertTaskListToNewPrivateSpace(e) {
            return i(this, void 0, void 0, function* () {
                let t = !1, n = this.getOldPrivateSpaceTaskList();
                for (let i = 0; i < n.length; i++) {
                    let a = n[i], r = a.getType();
                    if (c.information("addTaskListToNewPrivateSpace taskType:", r), r === o.DownloadKernel.TaskType.P2sp) {
                        let n = a.getTaskAttribute(o.DownloadKernel.TaskAttribute.TaskUrl),
                            i = {taskType: o.DownloadKernel.TaskType.P2sp, value: n};
                        t = yield this.insertTaskToNewPrivateSpace(e, a, i)
                    } else if (r === o.DownloadKernel.TaskType.Bt) {
                        let n = a.getExtraObject().getInfoId(), i = {taskType: o.DownloadKernel.TaskType.Bt, value: n};
                        t = yield this.insertTaskToNewPrivateSpace(e, a, i)
                    } else if (r === o.DownloadKernel.TaskType.Emule) {
                        let n = a.getExtraObject().getFileHash(),
                            i = {taskType: o.DownloadKernel.TaskType.Emule, value: n};
                        t = yield this.insertTaskToNewPrivateSpace(e, a, i)
                    }
                }
                return t
            })
        }

        upgradePrivateSpace(e) {
            let t = !1, n = u.ConfigNS.getValue("TaskUpgrading", "UpgradedUsers", "");
            if (d.isString(n) || (n = ""), -1 === n.indexOf(e + ", ")) {
                let i = f.getPrivateCategoryFromUserId(e);
                i && (this.insertTaskListToNewPrivateSpace(i).catch(), n += e + ", ", u.ConfigNS.setValue("TaskUpgrading", "UpgradedUsers", n), t = !0)
            }
            return t
        }
    }

    t.PrivateSpaceUpgrade = p, function (e) {
        const t = new p;
        e.getUpgrade = function () {
            return t
        }
    }(t.PrivateSpaceUpgradeNS || (t.PrivateSpaceUpgradeNS = {}))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(630), a = n(331);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\toast-notify\\toast-notify.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(333);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\download-list-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(634), a = n(335);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\download-list.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(339);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\downloading-item-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(640), a = n(341);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\downloading-item.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(641), a = n(343);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\item-vip-expand\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(642), a = n(345);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\item-vip-expand\\item-vip-status.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(643), a = n(347);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\item-vip-expand\\item-try-status.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(349);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\completed-item-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(638), a = n(351);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\completed-item.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(353);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\recycle-item-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(639), a = n(355);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\task-items\\recycle-item.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(940);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(357);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\private-space-open-page-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(632), a = n(359);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\private-space-open-page.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(361);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\download-search-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(633), a = n(363);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\download-panel\\download-list-search.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(365);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\home-page\\index-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(626), a = n(367);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(806);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, "f12073ec", null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\home-tab-view\\home-page\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(942);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(369);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\browser-view-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(620), a = n(371);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(809);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\browser-view.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(944);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(373);
    for (var a in i) "default" !== a && function (e) {
        n.d(t, e, function () {
            return i[e]
        })
    }(a);
    var o = n(0), r = Object(o.a)(i.default, void 0, void 0, !1, null, null, null);
    r.options.__file = "src\\main-renderer\\views\\main-bottom\\setting-center-view\\index-container.vue", t.default = r.exports
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(621), a = n(375);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    n(812);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-bottom\\setting-center-view\\index.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(951);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    n.r(t);
    var i = n(578), a = n(377);
    for (var o in a) "default" !== o && function (e) {
        n.d(t, e, function () {
            return a[e]
        })
    }(o);
    var r = n(0), s = Object(r.a)(a.default, i.a, i.b, !1, null, null, null);
    s.options.__file = "src\\main-renderer\\views\\main-background.vue", t.default = s.exports
}, function (e, t, n) {
    "use strict";
    var i = n(953);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(957);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(970);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(972);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(974);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(976);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(979);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    var i = n(983);
    n.n(i).a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(2), a = n(22), o = n(1), r = n(6), s = n(106), l = n(5), u = n(25), d = n(80), c = n(512), h = n(19),
        f = r.default(i.join(__rootDir, "../bin/ThunderHelper.node"));
    !function (e) {
        const t = ".asf;.avi;.exe;.iso;.mp3;.mpeg;.mpg;.mpga;.ra;.rar;.rm;.rmvb;.tar;.wma;.wmp;.wmv;.mov;.zip;.3gp;.chm;.mdf;.torrent;.jar;.msi;.arj;.bin;.dll;.psd;.hqx;.sit;.lzh;.gz;.tgz;.xlsx;.xls;.doc;.docx;.ppt;.pptx;.flv;.swf;.mkv;.tp;.ts;.flac;.ape;.wav;.aac;.txt;.dat;.7z;.ttf;.bat;.xv;.xvx;.pdf;.mp4;.apk;.ipa;.epub;.mobi;.deb;.sisx;.cab;.pxl;.dmg;",
            n = ["http://", "https://", "ftp://"], r = ["thunder://", "thunders://", "ed2k://", "magnet:"],
            p = o.default.getLogger("ClipBoardNS");

        function g(e) {
            let t = !1;
            if (e) for (let i = 0; i < n.length; ++i) {
                let a = n[i];
                if (0 === e.indexOf(a)) {
                    t = !0;
                    break
                }
            }
            return t
        }

        function k(e) {
            let t = !1;
            if (e) for (let n = 0; n < r.length; ++n) {
                let i = r[n];
                if (0 === e.indexOf(i)) {
                    t = !0;
                    break
                }
            }
            return t
        }

        function m(e) {
            let n = !1;
            do {
                if (!e) break;
                if (g(e)) {
                    let o = a.parse(e);
                    if (null === o) break;
                    let r = i.extname(o.pathname);
                    if (!r) break;
                    t.indexOf(r) > -1 && (n = !0)
                } else k(e) && (n = !0)
            } while (0);
            return n
        }

        function T(e) {
            let t = !1;
            do {
                if (void 0 === e || null === e || "" === e) break;
                let n = "thunderx://";
                if (void 0 === (e = e.trim()) || null === e || "" === e) break;
                0 === e.indexOf(n, 0) && (t = !0)
            } while (0);
            return t
        }

        function v(e) {
            let t = "", n = (e = e.trim()).substring("thunderx://".length), i = n.lastIndexOf("}");
            return i > 0 && (t = n.substring(0, i + 1)), t
        }

        function w(e, t) {
            let n = [], i = u.ConfigNS.getValue("Monitor", "MonitorClipBoard", !0);
            do {
                if (!i) break;
                if (p.information("attachClipBoardCallback type:", e), null !== t && void 0 !== t && t.length > 0) {
                    let e = t.join("");
                    if (T(e)) {
                        let t = v(e);
                        d.ThunderNewTask.createThunderxTask(t).catch();
                        break
                    }
                }
                for (let e = 0; e < t.length; ++e) {
                    let i = t[e], a = i;
                    if (s.Common.isThunderPrivateUrl(i) && (i = s.Common.parseThunderPrivateUrl(i)), m(i)) {
                        let e = h.ThunderHelper.getTaskTypeFromUrl(i);
                        e === l.DownloadKernel.TaskType.P2sp || e === l.DownloadKernel.TaskType.Emule ? n.push(a) : e !== l.DownloadKernel.TaskType.Magnet && e !== l.DownloadKernel.TaskType.Bt || (c.default.bringMainWindowToTop(), d.ThunderNewTask.createBtTaskWindow({
                            url: a,
                            type: "url"
                        }, {source: "clipboard"}))
                    }
                }
            } while (0);
            n.length > 0 && d.ThunderNewTask.createPreNewTaskWindow(n, "clipboard")
        }

        e.init = function () {
            f.initClipBoard(), setTimeout(() => {
                f.attachClipBoard(w)
            }, 5e3)
        }
    }(t.ClipBoardNS || (t.ClipBoardNS = {}))
}, function (e, t, n) {
    "use strict";
    var i = this && this.__awaiter || function (e, t, n, i) {
        return new (n || (n = Promise))(function (a, o) {
            function r(e) {
                try {
                    l(i.next(e))
                } catch (e) {
                    o(e)
                }
            }

            function s(e) {
                try {
                    l(i.throw(e))
                } catch (e) {
                    o(e)
                }
            }

            function l(e) {
                e.done ? a(e.value) : new n(function (t) {
                    t(e.value)
                }).then(r, s)
            }

            l((i = i.apply(e, t || [])).next())
        })
    };
    Object.defineProperty(t, "__esModule", {value: !0});
    const a = n(1), o = n(3), r = n(2), s = n(11), l = n(10), u = n(6), d = n(21), c = n(25),
        h = a.default.getLogger("MainRendererHelper"), f = u.default(r.join(__rootDir, "../bin/ThunderHelper.node"));
    const p = new class {
        constructor() {
            this.mainWndDataIniPath = r.resolve(__profilesDir, "mainWndData.ini"), this.preBossKeyName = "", this.defaultMainWndWidth = 1020, this.defaultMainWndHeight = 650
        }

        saveMainWndData() {
            let e = o.remote.getCurrentWindow(), t = e.getSize(), n = "normal";
            e.isMaximized() && (n = "max");
            let i = this.defaultMainWndWidth, a = this.defaultMainWndHeight;
            t && (i = t[0], a = t[1]), f.writeINI(this.mainWndDataIniPath, "MainFrame", "ExitState", n), f.writeINI(this.mainWndDataIniPath, "MainFrame", "MainWndLastWidth", i.toString()), f.writeINI(this.mainWndDataIniPath, "MainFrame", "MainWndLastHeight", a.toString()), h.information("saveMainWndData:", this.mainWndDataIniPath, i, a, n)
        }

        initMainRendererHelper() {
            c.ConfigNS.attachListener(d.NodeEventMesssageNS.eventConfigInitFinished, () => {
                this.onRegisterBossKey(), this.onInitDefaultPath().catch()
            })
        }

        onInitDefaultPath() {
            return i(this, void 0, void 0, function* () {
                let e = c.ConfigNS.getValue("TaskDefaultSettings", "InitPath", "");
                if ("" === e) {
                    let t = l.ThunderUtil.getMaxFreeDriver();
                    null !== t && "" !== t && (e = t + ":\\迅雷下载")
                }
                "" !== e && c.ConfigNS.setValue("TaskDefaultSettings", "InitPath", e);
                let t = c.ConfigNS.getValue("TaskDefaultSettings", "DefaultPath", "");
                "" !== t && (yield s.FileSystemAWNS.mkdirsAW(t)) || "" !== e && (yield s.FileSystemAWNS.mkdirsAW(e), c.ConfigNS.setValue("TaskDefaultSettings", "DefaultPath", e))
            })
        }

        onRegisterBossKey() {
            c.ConfigNS.setValue("BossKey", "BossKeyState", !1), this.registerBossKey(), c.ConfigNS.attachListener(d.NodeEventMesssageNS.eventConfigValueChanged, (e, t, n, i) => {
                "BossKey" === e && this.registerBossKey()
            })
        }

        registerBossKey() {
            if ("" !== this.preBossKeyName && o.remote.globalShortcut.unregister(this.preBossKeyName), c.ConfigNS.getValue("BossKey", "BossKeySwitch", !1)) {
                let e = c.ConfigNS.getValue("BossKey", "BossKeyName", "");
                null !== e && void 0 !== e && "" !== e && (o.remote.globalShortcut.register(e, () => {
                    o.ipcRenderer.send("closeMainWindow", "BossKey")
                }), this.preBossKeyName = e)
            }
        }
    };
    t.default = p
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    const i = n(1), a = n(82), o = n(7), r = n(17), s = i.default.getLogger("MessageChannel.NativeFunction"),
        l = n(513);
    !function (e) {
        const t = new class {
            constructor() {
                this.isRegister = !1, this.cookieIndex = 0, this.serviceCookie = new Map
            }

            registerNativeFunction() {
                if (!this.isRegister) {
                    this.isRegister = !0;
                    let e = [{
                        functionName: "MessageChannelRegisterService",
                        nativeFunc: this.registerService.bind(this)
                    }, {
                        functionName: "MessageChannelUnregisterService",
                        nativeFunc: this.unregisterService.bind(this)
                    }, {
                        functionName: "MessageChannelJoinGroup",
                        nativeFunc: this.joinGroup.bind(this)
                    }, {
                        functionName: "MessageChannelLeaveGroup",
                        nativeFunc: this.leaveGroup.bind(this)
                    }, {
                        functionName: "MessageChannelGetLongConnectState",
                        nativeFunc: this.getLongConnectState.bind(this)
                    }, {functionName: "MessageChannelGetUserState", nativeFunc: this.getUserState.bind(this)}];
                    a.setDefaultNativeFunctionMap(e)
                }
            }

            registerService(e, t, n, i) {
                if (s.information("registerService args:", i), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0])) return void e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                let a = !0, u = i[0], d = this.serviceCookie.get(u);
                if (d && 0 !== d.length || (d = [], this.serviceCookie.set(u, d), a = l.MessageChannelNS.registerService(u)), a) {
                    let i = this.cookieIndex;
                    d.push(i), ++this.cookieIndex, e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, !0, i)
                } else e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, !1)
            }

            unregisterService(e, t, n, i) {
                if (s.information("unregisterService args:", i), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) return void e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                let a = i[0], u = i[1], d = !1, c = this.serviceCookie.get(a);
                if (c && c.length > 0) {
                    let e = c.indexOf(u);
                    -1 !== e && c.splice(e, 1), d = 0 !== c.length || l.MessageChannelNS.unregisterService(a)
                }
                e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, d)
            }

            joinGroup(e, t, n, i) {
                if (s.information("joinGroup args:", i), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) return void e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                let a = i[0], u = l.MessageChannelNS.joinGroup(a);
                e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, u)
            }

            leaveGroup(e, t, n, i) {
                if (s.information("leaveGroup args:", i), o.isNullOrUndefined(i) || o.isNullOrUndefined(i[0]) || o.isNullOrUndefined(i[1])) return void e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                let a = i[0], u = l.MessageChannelNS.leaveGroup(a);
                e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, u)
            }

            getLongConnectState(e, t, n, i) {
                if (s.information("getLongConnectState"), o.isNullOrUndefined(i)) return void e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                let a = l.MessageChannelNS.getLongConnectState();
                s.information("longConnectState:", a), e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, a)
            }

            getUserState(e, t, n, i) {
                if (s.information("getUserState"), o.isNullOrUndefined(i)) return void e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.ParamError);
                let a = l.MessageChannelNS.getUserState();
                s.information("userState:", a), e.callNativeFunctionCallback(t, n, r.NativeFunctionErrorCode.Success, a)
            }
        };
        e.registerNativeFunction = function () {
            t.registerNativeFunction()
        }
    }(t.MessageChannelNaviteFunctionNS || (t.MessageChannelNaviteFunctionNS = {}))
}, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function (e, t) {
}, , , , , , , , , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , , , function (e, t) {
}, , , , , , , , , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , function (e, t) {
}, , , function (e, t) {
}, , , , function (e, t) {
}]);
//# sourceMappingURL=renderer.js.map
/*! ThunderX BY LUOCHENZHIMU */
/*! Last updated on 2018/10/04 */