https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd
测试网站:
https://www.alipan.com/s/tJ5uzFvp2aF
// ==UserScript==
// @name 阿里云盘助手
// @namespace http://tampermonkey.net/
// @version 2.1.6
// @description 支持生成文件下载链接、修改文件后缀,支持第三方播放器Artplayer(突破视频2分钟限制,长按倍速,选集,历史播放)
// @license MIT
// @icon https://img.alicdn.com/imgextra/i1/O1CN01JDQCi21Dc8EfbRwvF_!!6000000000236-73-tps-64-64.ico
// @match https://www.aliyundrive.com/*
// @match https://www.alipan.com/*
// @require https://cdn.bootcdn.net/ajax/libs/vue/3.2.47/vue.global.min.js
// @require data:application/javascript,window.Vue%3DVue%3B
// @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js
// @require https://cdn.bootcdn.net/ajax/libs/axios/1.3.4/axios.min.js
// @require https://cdn.bootcdn.net/ajax/libs/hls.js/1.3.3/hls.min.js
// @require https://cdn.bootcdn.net/ajax/libs/artplayer/4.6.2/artplayer.min.js
// @require https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.32/index.full.min.js
// @resource element-plus/dist/index.css https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.32/index.min.css
// @grant GM_getResourceText
// @grant unsafeWindow
// ==/UserScript==
(t=>{const e=document.createElement("style");e.dataset.source="vite-plugin-monkey",e.innerText=t,document.head.appendChild(e)})(".icon-wrapper--3dbbo[data-v-e5d83ee0]{height:28px;width:28px;display:-ms-flexbox;display:flex;border-radius:5px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;color:var(--context_secondary);position:absolute;top:18px;right:16px;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;cursor:pointer;z-index:10}.notice2[data-v-e5d83ee0]{margin:2px 0 0;color:red;font-size:8pt}.close-icon--33bP0[data-v-e5d83ee0]{font-size:18px}.icon--d-ejA[data-v-e5d83ee0]{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;text-align:center}.content-wrapper--1_WJv[data-v-e5d83ee0]{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.notice[data-v-afdd0eed]{color:#6592f9;font-size:10pt}.notice1[data-v-afdd0eed]{margin:2px 0 0;color:#e6a23c;font-size:8pt}.notice2[data-v-afdd0eed]{margin:2px 0 0;color:red;font-size:8pt}.footer[data-v-afdd0eed]{height:68px;background:var(--background_secondary_blur);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);margin:-20px;padding:0 20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;border-radius:0 0 10px 10px}.notice1[data-v-d892bc01]{margin:2px 0 0;color:#e6a23c;font-size:8pt}.breadcrumb-item--tV9dn[data-v-d892bc01]{font-size:12px}.td--SGrZj[data-v-d892bc01]{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;height:52px;position:relative}.td---v-kp[data-v-d892bc01]{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;padding:0 24px}.cover--Mn1Bt[data-v-d892bc01]{margin-right:20px}.folder-cover--ExDmp[data-v-d892bc01]{position:relative;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}.folder-cover--ExDmp[data-size=XXS][data-v-d892bc01],.folder-cover--ExDmp[data-size=XXS] .fileicon--Ob-Oj[data-v-d892bc01]{width:28px;height:28px}.fileicon---webs[data-v-d892bc01]{max-width:100%;max-height:100%}.breadcrumb-wrap--Uq5Lb[data-v-d892bc01]{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;font-size:16px;line-height:1.4;width:100%;overflow:hidden;position:relative}.breadcrumb-wrap--Uq5Lb[data-align=left][data-v-d892bc01]{-ms-flex-pack:start;justify-content:flex-start}.breadcrumb-wrap--Uq5Lb .breadcrumb--gnRPG[data-v-d892bc01]{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-width:24px}.breadcrumb-item--j8J5H[data-v-d892bc01]{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;white-space:nowrap;color:var(--context_tertiary);cursor:pointer}.breadcrumb-item--j8J5H:first-child .breadcrumb-item-link--9zcQY[data-v-d892bc01]{font-weight:500}.breadcrumb-item--j8J5H .breadcrumb-item-link--9zcQY[data-v-d892bc01]{font-weight:400;line-height:1.4;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}.breadcrumb-item--j8J5H .breadcrumb-item-separator--MnbFV[data-v-d892bc01]{line-height:1.4;margin:0 8px}.card[data-v-d200ca3c]{margin-bottom:10px}.player[data-v-ee523f38]{display:flex;height:100%;align-items:center;justify-content:center;flex-direction:column}.notice[data-v-46fc6531]{color:#6592f9;font-size:8pt}.notice2[data-v-46fc6531]{color:red;font-size:8pt}.notice[data-v-4f08e60f]{color:#6592f9;font-size:10pt}.notice1[data-v-4f08e60f]{margin:2px 0 0;color:#e6a23c;font-size:8pt}.notice2[data-v-4f08e60f]{margin:2px 0 0;color:red;font-size:8pt}.footer[data-v-4f08e60f]{height:68px;background:var(--background_secondary_blur);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);margin:-20px;padding:0 20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;border-radius:0 0 10px 10px}");
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
(function(elementPlus, $2, axios2, vue, Hls2, Artplayer2) {
"use strict";
var monkeyWindow = window;
var unsafeWindow = /* @__PURE__ */ (() => {
return monkeyWindow.unsafeWindow;
})();
var message = null;
let showMessge = function(option) {
try {
message.close();
} catch {
}
message = elementPlus.ElMessage(option);
};
let showError$1 = function(msg, timeout, option) {
showMessge({
message: msg,
type: "error",
duration: timeout || 3e3,
...option
});
};
let showSuccess = function(msg, timeout, option) {
showMessge({
message: msg,
type: "success",
duration: timeout || 3e3,
...option
});
};
let showDiv = function(title2, app) {
function format(s2, c) {
return s2.replace(/{(\w+)}/g, function(m, p) {
return c[p];
});
}
let html2 = '
';
html2 = format(html2, {
title: title2
});
html2 += "
";
$2("body").append(html2);
app.mount(
(() => {
const app2 = document.createElement("div");
$2(".ant-modal-body").append(app2);
return app2;
})()
);
$2(".ant-modal-Link .icon-wrapper--TbIdu").one("click", function() {
$2(".ant-modal-Link").remove();
app.unmount();
});
$2(".ant-modal-Link .ant-modal-wrap").on("click", function(event) {
if ($2(event.target).closest(".ant-modal-content").length === 0) {
$2(".ant-modal-Link").remove();
app.unmount();
}
});
};
let showShareDiv = function(title2, app) {
function format(s2, c) {
return s2.replace(/{(\w+)}/g, function(m, p) {
return c[p];
});
}
let html2 = `
`;
html2 = format(html2, {
title: title2
});
html2 += "
";
$2("body").append(html2);
app.mount(
(() => {
const app2 = document.createElement("div");
$2(".ant-modal-body").append(app2);
return app2;
})()
);
$2(".ant-modal-Link .icon-wrapper--TbIdu").one("click", function() {
$2(".ant-modal-Link").remove();
app.unmount();
});
$2(".ant-modal-Link .ant-modal-wrap").on("click", function(event) {
if ($2(event.target).closest(".ant-modal-content").length === 0) {
$2(".ant-modal-Link").remove();
app.unmount();
}
});
};
class Store {
constructor() {
this.prefix = "LGZS_";
}
getAliyun(key2 = "") {
let item = localStorage.getItem(key2);
if (!item) {
return "";
}
try {
return JSON.parse(item);
} catch (e) {
return item;
}
}
getItem(key2 = "") {
return this.getAliyun(this.prefix + key2);
}
setItem(key2 = "", value) {
localStorage.setItem(this.prefix + key2, value instanceof Object ? JSON.stringify(value) : value);
}
removeItem(key2) {
if (key2 == null || key2 == "") {
return;
}
localStorage.removeItem(this.prefix + key2);
}
}
const store = new Store();
const getDownloadUrl = (data) => axios2.post("/v2/file/get_download_url", data, {
headers: {
"x-canary": "client=web,app=adrive,version=v4.2.0"
}
});
const search = (data) => axios2.post("/adrive/v3/file/search", data, {
headers: {
"x-canary": "client=web,app=adrive,version=v4.2.0"
}
});
const videoUpdate = (data) => axios2.post("/adrive/v2/video/update", data);
const deviceLogout = () => axios2.post("/users/v1/users/device_logout", {});
const homeWidgets = () => axios2.post("/apps/v1/users/home/widgets", { "context": { "recentUsed": { "limit": 20 }, "recentSaved": { "limit": 1 } } });
const shareVideoInfo = (fileId, share_id, shareToken) => axios2({
method: "post",
url: "/v2/file/get_share_link_video_preview_play_info",
data: {
category: "live_transcoding",
file_id: fileId,
get_preview_url: true,
share_id,
template_id: "",
get_subtitle_info: true
},
headers: {
"content-type": "application/json;charset=UTF-8",
"x-share-token": shareToken
}
});
const videoPreviewPlayInfo = (data) => axios2.post("/v2/file/get_video_preview_play_info", data);
const shareLinkDownloadUrl = (data, shareToken) => axios2({
method: "post",
url: "/v2/file/get_share_link_download_url",
data: {
...data
},
headers: {
"content-type": "application/json;charset=UTF-8",
"x-share-token": shareToken,
"_token": false
}
});
const createSessionUrl = (data, signature2, deviceId) => axios2({
method: "post",
url: "/users/v1/users/device/create_session",
data: {
...data
},
headers: {
"content-type": "application/json;charset=UTF-8",
"x-canary": "client=web,app=adrive,version=v3.17.0",
"_token": false,
"x-signature": signature2,
"x-device-id": deviceId
}
});
const signInList = () => axios2({
method: "post",
url: "https://member.aliyundrive.com/v1/activity/sign_in_list",
data: {
"_rx-s": "mobile"
},
headers: {
"content-type": "application/json;charset=UTF-8",
"_token": false
}
});
const signInReward = (signInDay) => axios2({
method: "post",
url: "https://member.aliyundrive.com/v1/activity/sign_in_reward",
data: {
"signInDay": signInDay
},
headers: {
"content-type": "application/json;charset=UTF-8",
"_token": false
}
});
function copy(obj) {
if (typeof obj !== "object" || obj == null) {
return;
}
var newobj = obj.constructor === Array ? [] : {};
for (var i2 in obj) {
newobj[i2] = typeof obj[i2] === "object" ? copy(obj[i2]) : obj[i2];
}
return newobj;
}
class User {
constructor() {
this.is_login = false;
this.vip_status = 0;
this.mid = "";
this.uname = "";
this.has_init = false;
this.page = {
id: "",
order: "",
order_by: "",
// 当前路径文件夹名称
folderName: "",
items: []
};
this.video = {
id: "",
// 时长
duration: "",
// 播放的时长
play_cursor: "",
// 视频名称
name: "",
thumbnail: "",
// 0 首页自己的视频 1分享的视频
type: -1,
//当前视频所在的文件夹名称
folderName: "",
//跳转地址
href: "",
drive_id: ""
};
}
getVideoPage() {
return this.video;
}
/**
* 获取自动签到设置
*
*/
getSignInSet() {
let config = store.getItem("signIn_config");
return config == "" ? {} : config;
}
setSignInSet(signInInfo) {
return store.setItem("signIn_config", signInInfo);
}
//保存当前播放器设置
saveVideoPlayerSet(art) {
let playerSet = {
// 全屏
fullscreen: art.fullscreen,
//网页全屏
fullscreenWeb: art.fullscreenWeb,
// 播放速度
playbackRate: art.playbackRate,
// 清晰度
qualityHtml: art.qualityHtml,
//字幕大小
subtitleSize: art.subtitleSize || 20,
//字幕间距
subtitleMargin: art.subtitleMargin || 0,
//字幕偏移
subtitleOffset: art.subtitleOffset || 0,
//字幕颜色
subtitleColor: art.subtitleColor || "#FFF"
};
store.setItem("playerSet", playerSet);
}
// 获取播放器设置页面
getVideoPlayerSet() {
let playerSet = store.getItem("playerSet");
if (playerSet == "") {
playerSet = {};
}
return playerSet;
}
// 查看用户是否已经同意 或者 配置了 获取session 所需要的浏览器名称
isConfigSession() {
let deviceName = store.getItem("deviceName");
let modelName = store.getItem("modelName");
return !(deviceName == "" || modelName == "");
}
// 保存视频信息
saveVideoInfo(id, name2, progress, folderName, href, share2, play_cursor) {
let videoInfo = {
"category": "video",
"name": name2,
"progress": progress,
"id": id,
"folderName": folderName,
"href": href,
"share": share2,
"play_cursor": play_cursor
};
let list = store.getItem("historyVideo");
if (list == "") {
list = [];
}
let newList = [videoInfo];
list.forEach(function(item, index) {
if (item.id !== id && newList.length <= 5) {
newList.push(item);
}
});
store.setItem("historyVideo", newList);
}
clearSession() {
store.removeItem("LG_session");
store.removeItem("LG_session_Ref");
store.removeItem("x-device-id");
store.removeItem("x-signature");
store.removeItem("deviceName");
store.removeItem("modelName");
store.removeItem("signIn_config");
}
removeSession() {
store.removeItem("LG_session");
}
clearAll() {
user.clearSession();
user.clearVideoHistory();
}
clearVideoHistory() {
store.removeItem("historyVideo");
}
//获取视频历史列表
getVideoLookList() {
let historyVideo = store.getItem("historyVideo");
if (historyVideo == "") {
historyVideo = [];
}
return historyVideo;
}
getDeviceId() {
return store.getItem("x-device-id");
}
getSignature() {
return store.getItem("x-signature");
}
getPage() {
var page = this.page;
if (!page.items) {
page.items = [];
}
return page;
}
getAria2Set() {
let aria2Set = store.getItem("Aria2Set");
if (aria2Set == "") {
aria2Set = {
link: "http://localhost:6800/jsonrpc",
path: "D:/aliyundriveDownloads",
token: "",
dirCreate: false
};
}
return aria2Set;
}
getVideoSet() {
let videoSet = store.getItem("VideoSet");
if (videoSet == "") {
videoSet = {
quality: null
};
}
return videoSet;
}
setVideoSet(videoSet) {
store.setItem("VideoSet", videoSet);
}
setAria2Set(aria2Set) {
store.setItem("Aria2Set", aria2Set);
}
refSession() {
let now = new Date().getTime();
let time = store.getItem("LG_session") || 0;
let token = user.getToken();
if (token == null) {
showError$1("获取当前凭证失败,请刷新或重新登录");
return;
} else if (!user.isExpires(token)) {
showError$1("Token已失效,请刷新或重新登录");
return;
}
let d = user.getDeviceId();
let s2 = user.getSignature();
if (now - time > 18e4 && token.user_id || d == "" || s2 == "") {
store.setItem("LG_session", now);
store.setItem("LG_session_Ref", "true");
} else {
console.log("未到刷新时间或者时机");
return;
}
user.session(token, function(a, b) {
store.setItem("LG_session", new Date().getTime());
store.removeItem("LG_session_Ref");
});
}
session(token, callback) {
if (token == null) {
showError$1("刷新Session失败,token为空,请刷新或重新登录");
return {};
}
return new Promise((resolve, reject) => {
let deviceId = store.getAliyun("__ETAG__CNA__ID__");
if (deviceId == "") {
deviceId = token.user_id.split("").reverse().join("").substring(0, 20);
}
let userId = token.user_id;
unsafeWindow.luoGenSession(function(key2, pubStr, signature2, nd) {
deviceId = nd;
console.log("你好,罗根!");
let deviceName = store.getItem("deviceName");
let modelName = store.getItem("modelName");
createSessionUrl({
"deviceName": deviceName,
"modelName": modelName,
"refreshToken": "71a164a40eb84a40b35c1a39d2023499",
"pubKey": pubStr
}, signature2, deviceId).then((res) => {
if (!res.data.result) {
user.clearSession();
showError$1("设备超限,请下线其他设备,在刷新页面");
elementPlus.ElMessageBox.alert("请点击左下角退出登陆那个菜单,点击登陆设备管理,下线其他设备。然后刷新页面", "设备超限", {
confirmButtonText: "好的",
callback: (action) => {
}
});
return;
}
store.setItem("x-device-id", deviceId);
store.setItem("x-signature", signature2);
resolve({
deviceId,
signature: signature2
});
callback && callback(pubStr, signature2);
}).catch((e) => {
console.error("出现异常了...", e);
user.clearSession();
elementPlus.ElMessageBox.alert(e + "", "刷新session失败", {
confirmButtonText: "刷新试一试",
callback: (action) => {
location.href = location.href;
}
});
reject(e);
});
}, window.atob("NWRkZTRlMWJkZjllNDk2NmIzODdiYTU4ZjRiM2ZkYzM="), deviceId, userId);
});
}
/**
* 是否在首页
*/
home() {
return location.href.indexOf("/drive/file") > 0;
}
/**
* 是否在资源库
*/
resource() {
return location.href.indexOf("/drive/file/resource") > 0;
}
// 没过期返回true 过期 false
isExpires(item) {
if (item == null || !item.expire_time) {
return false;
}
let time = Date.parse(item.expire_time) - Date.now();
return time > 0;
}
getShareToken() {
return store.getAliyun("shareToken");
}
getToken() {
let token = localStorage.getItem(`token`);
if (token != null) {
return JSON.parse(token);
}
return token;
}
// 获取当前页面上所有的文件
getAllFileList() {
let fileList2 = this.getPage().items;
if (fileList2.length === 0) {
console.error("获取文件列表失败");
return [];
}
return copy(fileList2);
}
// 获取已选择的文件
selectedFileList() {
let jq = $2;
let selectedFileList = [], fileList2 = this.getAllFileList();
if (fileList2.length === 0) {
console.error("获取文件列表失败");
return [];
}
let node = "";
if (jq(".tbody--Na444 .tr--Ogi-3.tr--97U9T").length) {
node = jq(".tbody--Na444 .tr--Ogi-3.tr--97U9T");
} else if (jq(".outer-wrapper--JCodp").length) {
node = jq(".outer-wrapper--JCodp");
}
node.each(function(index) {
var $this = jq(node[index]);
if ($this.attr("data-is-selected") === "true") {
let data_index = $this.closest("[data-index]").attr("data-index");
data_index && selectedFileList.push(fileList2[data_index]);
}
});
return copy(selectedFileList);
}
}
const user = new User();
/*! Element Plus Icons Vue v2.0.10 */
var export_helper_default = (sfc, props) => {
let target = sfc.__vccOpts || sfc;
for (let [key2, val] of props)
target[key2] = val;
return target;
};
var refresh_vue_vue_type_script_lang_default = {
name: "Refresh"
};
var _hoisted_1217 = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
}, _hoisted_2217 = /* @__PURE__ */ vue.createElementVNode("path", {
fill: "currentColor",
d: "M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z"
}, null, -1), _hoisted_3216 = [
_hoisted_2217
];
function _sfc_render217(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1217, _hoisted_3216);
}
var refresh_default = /* @__PURE__ */ export_helper_default(refresh_vue_vue_type_script_lang_default, [["render", _sfc_render217], ["__file", "refresh.vue"]]);
const cssLoader = (e) => {
const t2 = GM_getResourceText(e), o = document.createElement("style");
return o.innerText = t2, document.head.append(o), t2;
};
cssLoader("element-plus/dist/index.css");
const Aria2Set_vue_vue_type_style_index_0_scoped_e5d83ee0_lang = "";
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key2, val] of props) {
target[key2] = val;
}
return target;
};
const _withScopeId$4 = (n) => (vue.pushScopeId("data-v-e5d83ee0"), n = n(), vue.popScopeId(), n);
const _hoisted_1$6 = {
key: 0,
class: "ant-modal-root",
id: "aria2-set-box"
};
const _hoisted_2$5 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "ant-modal-mask" }, null, -1));
const _hoisted_3$5 = {
tabindex: "-1",
class: "ant-modal-wrap",
role: "dialog",
id: "aria2_set_LuoGen"
};
const _hoisted_4$5 = {
role: "document",
class: "ant-modal modal-wrapper--2yJKO",
style: { "width": "340px", "transform-origin": "-14px 195px" }
};
const _hoisted_5$5 = { class: "ant-modal-content" };
const _hoisted_6$5 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "ant-modal-header" }, [
/* @__PURE__ */ vue.createElementVNode("div", { class: "ant-modal-title" }, " Aria2设置 ")
], -1));
const _hoisted_7$4 = { class: "ant-modal-body" };
const _hoisted_8$4 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("span", {
"data-role": "icon",
"data-render-as": "svg",
"data-icon-type": "PDSClose",
class: "close-icon--33bP0 icon--d-ejA"
}, [
/* @__PURE__ */ vue.createElementVNode("svg", {
t: "1685717543646",
class: "icon",
viewBox: "0 0 1024 1024",
version: "1.1",
xmlns: "http://www.w3.org/2000/svg",
"p-id": "2490",
id: "mx_n_1685717543647",
width: "16",
height: "16"
}, [
/* @__PURE__ */ vue.createElementVNode("path", {
d: "M849 896c-12 0-24.1-4.6-33.2-13.8l-674-674c-18.4-18.4-18.4-48.1 0-66.5s48.1-18.4 66.5 0l674 674c18.4 18.4 18.4 48.1 0 66.5A47.03 47.03 0 0 1 849 896z",
"p-id": "2491",
fill: "#cdcdcd"
}),
/* @__PURE__ */ vue.createElementVNode("path", {
d: "M175 896c-12 0-24.1-4.6-33.2-13.8-18.4-18.4-18.4-48.1 0-66.5l674-674c18.4-18.4 48.1-18.4 66.5 0s18.4 48.1 0 66.5l-674 674C199 891.4 187 896 175 896z",
"p-id": "2492",
fill: "#cdcdcd"
})
])
], -1));
const _hoisted_9$4 = [
_hoisted_8$4
];
const _hoisted_10$4 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("div", null, " 推送链接: ", -1));
const _hoisted_11$3 = { class: "content-wrapper--1_WJv" };
const _hoisted_12$3 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("div", null, " 推送路径: ", -1));
const _hoisted_13$3 = { class: "content-wrapper--1_WJv" };
const _hoisted_14$3 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("div", null, " RPC密钥: ", -1));
const _hoisted_15$2 = { class: "content-wrapper--1_WJv" };
const _hoisted_16$2 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("div", null, " 其他: ", -1));
const _hoisted_17$1 = {
key: 0,
class: "notice2"
};
const _hoisted_18$1 = {
key: 1,
class: "notice2"
};
const _hoisted_19$1 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_20$1 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_21$1 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_22$1 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_23$1 = {
key: 2,
class: "notice2"
};
const _hoisted_24$1 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_25 = { class: "ant-modal-footer" };
const _hoisted_26 = { class: "footer--3Q0je" };
const _sfc_main$7 = {
__name: "Aria2Set",
setup(__props, { expose }) {
const data = vue.reactive({
isShowAria2Set: false,
pushBtonText: "Aria2 推送",
aria2Model: user.getAria2Set()
});
const errorMsg = vue.ref(false);
function saveAria2() {
$2.ajax({
type: "POST",
url: data.aria2Model.link,
data: JSON.stringify({
"jsonrpc": "2.0",
"method": "aria2.getVersion",
"id": "1",
"params": [
"token:" + data.aria2Model.token
]
}),
crossDomain: true,
processData: false,
contentType: "application/json",
success: function(result) {
user.setAria2Set(data.aria2Model);
data.isShowAria2Set = false;
errorMsg.value = false;
showSuccess("Aria2配置保存成功", null, {
appendTo: ".ant-modal-header"
});
},
error: function(error) {
errorMsg.value = true;
showError$1("保存失败,连接不上Aria2配置", null, {
appendTo: "#aria2_set_LuoGen"
});
}
});
}
function aria2Push(fileList2, call) {
if (data.pushBtonText == "正在推送") {
return;
}
let folderName = "";
if (data.aria2Model.dirCreate) {
let dir = $2(".breadcrumb--2FqFQ[data-calc=true] > .breadcrumb-item--tV9dn > .breadcrumb-item-link--M-p4b");
folderName = "/阿里云盘";
for (let i2 = 0; i2 < dir.length; i2++) {
folderName += "/" + dir[i2].innerText;
}
}
let sendDownLoad = [];
fileList2.forEach(function(item, index) {
sendDownLoad.push({
id: "",
jsonrpc: "2.0",
method: "aria2.addUri",
params: [
"token:" + data.aria2Model.token,
[item.url],
{
out: item.name,
dir: data.aria2Model.path + folderName,
referer: "https://www.aliyundrive.com/",
"user-agent": navigator.userAgent
}
]
});
});
let text = data.pushBtonText;
data.pushBtonText = "正在推送";
$2.ajax({
type: "POST",
url: data.aria2Model.link,
data: JSON.stringify(sendDownLoad),
crossDomain: true,
processData: false,
contentType: "application/json",
success: function(result) {
showSuccess("Aria2推送成功", null, {
appendTo: ".ant-modal-header"
});
data.pushBtonText = text;
call(true);
},
error: function(error) {
showError$1("Aria2 推送失败,请检查配置", null, {
appendTo: ".ant-modal-header"
});
data.pushBtonText = text;
call(false);
}
});
}
function show() {
data.isShowAria2Set = true;
}
function hide() {
data.isShowAria2Set = false;
}
expose({
aria2Push,
show,
hide
});
return (_ctx, _cache) => {
return data.isShowAria2Set ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
_hoisted_2$5,
vue.createElementVNode("div", _hoisted_3$5, [
vue.createElementVNode("div", _hoisted_4$5, [
vue.createElementVNode("div", _hoisted_5$5, [
_hoisted_6$5,
vue.createElementVNode("div", _hoisted_7$4, [
vue.createElementVNode("div", {
class: "icon-wrapper--3dbbo",
id: "aria2-set-icon",
onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => data.isShowAria2Set = false, ["stop"]))
}, _hoisted_9$4),
_hoisted_10$4,
vue.createElementVNode("div", _hoisted_11$3, [
vue.createVNode(vue.unref(elementPlus.ElInput), {
id: "aria2-link",
modelValue: data.aria2Model.link,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => data.aria2Model.link = $event),
type: "text"
}, null, 8, ["modelValue"])
]),
_hoisted_12$3,
vue.createElementVNode("div", _hoisted_13$3, [
vue.createVNode(vue.unref(elementPlus.ElInput), {
id: "aria2-path",
modelValue: data.aria2Model.path,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => data.aria2Model.path = $event),
type: "text"
}, null, 8, ["modelValue"])
]),
_hoisted_14$3,
vue.createElementVNode("div", _hoisted_15$2, [
vue.createVNode(vue.unref(elementPlus.ElInput), {
id: "aria2-token",
modelValue: data.aria2Model.token,
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => data.aria2Model.token = $event),
type: "text"
}, null, 8, ["modelValue"])
]),
_hoisted_16$2,
vue.createTextVNode(" 不创建对应目录: "),
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
modelValue: data.aria2Model.dirCreate,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => data.aria2Model.dirCreate = $event)
}, null, 8, ["modelValue"]),
errorMsg.value ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_17$1, " 如果当前推送链接是http开头,则需要修改浏览器安全限制更改为允许。 ")) : vue.createCommentVNode("", true),
errorMsg.value ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_18$1, [
vue.createTextVNode("连接不上的原因:"),
_hoisted_19$1,
vue.createTextVNode(" 1.端口或链接填写错误"),
_hoisted_20$1,
vue.createTextVNode(" 2.密钥错误 "),
_hoisted_21$1,
vue.createTextVNode(" 3.未开启跨域请求"),
_hoisted_22$1
])) : vue.createCommentVNode("", true),
errorMsg.value ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_23$1, [
vue.createTextVNode(" ./aria2c.exe --enable-rpc --rpc-listen-all --rpc-secret 123 --rpc-allow-origin-all=true"),
_hoisted_24$1,
vue.createTextVNode(" 可以在Aria2的程序目录下,使用上面命令,RPC密钥为:123 ")
])) : vue.createCommentVNode("", true)
]),
vue.createElementVNode("div", _hoisted_25, [
vue.createElementVNode("div", _hoisted_26, [
vue.createVNode(vue.unref(elementPlus.ElButton), {
id: "aria2-set-save",
type: "primary",
onClick: vue.withModifiers(saveAria2, ["stop"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 检测 & 确定 ")
]),
_: 1
}, 8, ["onClick"])
])
])
])
])
])
])) : vue.createCommentVNode("", true);
};
}
};
const Aria2Set = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-e5d83ee0"]]);
const DwoloadPage_vue_vue_type_style_index_0_scoped_afdd0eed_lang = "";
const _withScopeId$3 = (n) => (vue.pushScopeId("data-v-afdd0eed"), n = n(), vue.popScopeId(), n);
const _hoisted_1$5 = { key: 0 };
const _hoisted_2$4 = { key: 1 };
const _hoisted_3$4 = { key: 0 };
const _hoisted_4$4 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice2" }, "注意: 如果大批量获取下载地址,会被官网限速!", -1));
const _hoisted_5$4 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "1. 因阿里云盘接口限制,短期大量请求会出现接口请求频繁,可以先选择需要下载的文件,在点击显示链接按钮。 ", -1));
const _hoisted_6$4 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "2. 接口请求频繁,也可尝试点击下载,不过文件名需要重新命名 ", -1));
const _hoisted_7$3 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "3. 在点击刷新按钮时,不要连续点击,可等几秒在点一次尝试获取 ", -1));
const _hoisted_8$3 = [
_hoisted_4$4,
_hoisted_5$4,
_hoisted_6$4,
_hoisted_7$3
];
const _hoisted_9$3 = { class: "notice" };
const _hoisted_10$3 = {
class: "item-list",
style: { "padding": "20px", "height": "410px", "overflow-y": "auto" }
};
const _hoisted_11$2 = { key: 0 };
const _hoisted_12$2 = { key: 1 };
const _hoisted_13$2 = { style: { "margin": "10px 0px", "overflow": "hidden", "white-space": "nowrap", "text-overflow": "ellipsis" } };
const _hoisted_14$2 = { class: "footer" };
const _sfc_main$6 = {
__name: "DwoloadPage",
setup(__props) {
let list = user.selectedFileList();
if (list.length == 0) {
list = user.getAllFileList();
}
list = list.filter(function(item) {
return item.type === "folder" || item.type === "file";
});
console.log(list);
const fileList2 = vue.reactive(list);
const aria2SetRef = vue.ref();
const data = vue.reactive({
pushBtonText: "Aria2 推送"
});
const home2 = vue.ref(user.home());
const resource = vue.ref(user.resource());
const laterLoad = vue.ref(getCount() != 0 && list == 0);
function getCount() {
let text = $2(".left-wrapper--zzDY4").text();
if (!text) {
return 0;
}
var reg = /\d+/g;
var num = text.match(reg);
if (num.length == 0) {
return 0;
}
return num[0];
}
function group(array, subGroupLength) {
var index = 0;
var newArray = [];
while (index < array.length) {
newArray.push(array.slice(index, index += subGroupLength));
}
return newArray;
}
function updateHref(id) {
var $a = $2(`a[data-id="${id}"]`);
var title2 = $a.attr("title");
$a.attr("href", title2);
}
var shareToken;
const shareTokenV = vue.reactive(user.getShareToken());
vue.onMounted(async () => {
if (!user.home()) {
shareToken = user.getShareToken();
if (!user.isExpires(shareToken)) {
showError$1("当前页面已过期,请刷新重试");
return;
}
}
var groupedCountries = group(fileList2, 1);
for (const index in groupedCountries) {
await loadingUrl(groupedCountries[index]);
}
function loadingUrl(array) {
return new Promise((resolve, reject) => {
let length = array.length;
let initLength = 0;
array.forEach((item) => {
if (item.type == "file") {
getFileUrl(item, function() {
initLength += 1;
if (initLength == length) {
resolve();
}
});
} else {
initLength += 1;
if (initLength == length) {
resolve();
}
}
});
});
}
});
function showSet() {
aria2SetRef.value.show();
}
function IDMPush() {
var content = "", referer = "https://www.aliyundrive.com/", userAgent = navigator.userAgent;
fileList2.forEach(function(item, index) {
if (item.url != "" && item.url != null) {
content += ["<", item.url, "referer: " + referer, "User-Agent: " + userAgent, ">"].join("\r\n") + "\r\n";
}
});
var a = document.createElement("a");
var blob = new Blob([content]);
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "IDM导出文件_阿里云盘.ef2";
a.click();
window.URL.revokeObjectURL(url);
}
function aria2Push() {
if (data.pushBtonText == "正在推送") {
return;
}
var text = data.pushBtonText;
data.pushBtonText = "正在推送";
aria2SetRef.value.aria2Push(fileList2, (res) => {
if (res == false) {
data.pushBtonText = "推送失败";
} else {
data.pushBtonText = text;
}
});
}
function getFileUrl(item, call) {
item.loading = true;
item.text = "正在获取下载地址中";
let showDnload;
if (item.share_id) {
showDnload = shareLinkDownloadUrl({
file_id: item.file_id,
share_id: item.share_id
}, shareToken.share_token).then((response) => {
item.error = false;
item.text = response.data.download_url;
item.url = response.data.download_url;
});
} else {
showDnload = getDownloadUrl({
expire_sec: 14400,
drive_id: item.drive_id,
file_id: item.file_id
}).then((response) => {
item.error = false;
item.text = response.data.url;
item.url = response.data.url;
});
}
showDnload.catch((e) => {
if (e && e + "" == "AxiosError: Request failed with status code 429") {
item.error = true;
item.text = "接口请求频繁,请稍后点击文件旁边的刷新按钮,重新获取 (也可点击我尝试跳转下载)";
} else {
item.text = "刷新失败,错误异常:" + e;
}
}).finally(() => {
item.loading = false;
call && call();
});
}
vue.onUnmounted(() => {
console.log("文件下载窗口关闭");
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(Aria2Set, {
ref_key: "aria2SetRef",
ref: aria2SetRef
}, null, 512),
laterLoad.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
vue.createVNode(vue.unref(elementPlus.ElResult), {
icon: "error",
title: "获取文件失败",
"sub-title": "请回到文件列表中,随便点击排序,看到已加载多少文件时,在回到这里吧"
})
])) : vue.createCommentVNode("", true),
!laterLoad.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$4, [
fileList2.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$4, _hoisted_8$3)) : vue.createCommentVNode("", true),
vue.createElementVNode("p", _hoisted_9$3, " 共加载了" + vue.toDisplayString(fileList2.length) + "个文件", 1),
vue.createElementVNode("div", _hoisted_10$3, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(fileList2, (item, index) => {
return vue.openBlock(), vue.createElementBlock("div", { key: index }, [
item.type == "folder" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_11$2, vue.toDisplayString(index + 1) + ". " + vue.toDisplayString(item.name), 1)) : vue.createCommentVNode("", true),
item.type == "file" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_12$2, [
vue.createTextVNode(vue.toDisplayString(index + 1) + ". " + vue.toDisplayString(item.name) + " ", 1),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
icon: vue.unref(refresh_default),
loading: item.loading,
circle: "",
size: "small",
onClick: vue.withModifiers(($event) => getFileUrl(item), ["stop"])
}, null, 8, ["icon", "loading", "onClick"])
])) : vue.createCommentVNode("", true),
vue.createElementVNode("p", _hoisted_13$2, [
item.type == "folder" ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElLink), {
key: 0,
type: "primary",
href: resource.value ? "/drive/file/resource/" + item.file_id : home2.value ? "/drive/file/backup/" + item.file_id : "/s/" + shareTokenV.share_id + "/folder/" + item.file_id
}, {
default: vue.withCtx(() => [
vue.createTextVNode("点击进入文件夹")
]),
_: 2
}, 1032, ["href"])) : vue.createCommentVNode("", true),
item.type == "file" && !item.error ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElLink), {
key: 1,
onMousedown: ($event) => updateHref(item.file_id),
onMouseup: ($event) => updateHref(item.file_id),
"data-id": item.file_id,
type: "primary",
title: item.url,
href: item.url
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.text), 1)
]),
_: 2
}, 1032, ["onMousedown", "onMouseup", "data-id", "title", "href"])) : vue.createCommentVNode("", true),
item.type == "file" && item.error ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElLink), {
key: 2,
type: "danger",
href: item.url
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.text), 1)
]),
_: 2
}, 1032, ["href"])) : vue.createCommentVNode("", true)
])
]);
}), 128))
]),
vue.createElementVNode("div", null, [
vue.createElementVNode("div", _hoisted_14$2, [
vue.createElementVNode("div", null, [
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => vue.unref(monkeyWindow).open("https://github.com/wyndem/ali-video", "_blank"), ["stop"]))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("❤️ 开源地址")
]),
_: 1
}),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => vue.unref(monkeyWindow).open("https://greasyfork.org/zh-CN/scripts/458626", "_blank"), ["stop"]))
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 点个赞")
]),
_: 1
}),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
onClick: vue.withModifiers(IDMPush, ["stop"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode("IDM 导出文件")
]),
_: 1
}, 8, ["onClick"]),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
onClick: vue.withModifiers(aria2Push, ["stop"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(data.pushBtonText), 1)
]),
_: 1
}, 8, ["onClick"]),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
style: { "margin-left": "10px", "width": "auto", "border": "0 solid transparent" },
class: "aria2-set",
onClick: vue.withModifiers(showSet, ["stop"]),
circle: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("⚙️")
]),
_: 1
}, 8, ["onClick"])
])
])
])
])) : vue.createCommentVNode("", true)
], 64);
};
}
};
const DwoloadPage = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-afdd0eed"]]);
function title(html2) {
let name2 = html2.split(" ")[1];
let css = "display:flex;flex-direction:row;align-items:center;";
let htmlDiv = `
`;
return htmlDiv;
}
function getVideoSrc(call) {
let videoPage = user.getVideoPage();
let showDnload;
if (!user.home()) {
let token = user.getShareToken();
if (token == "") {
showError$1("当前登录凭证失效,请刷新或重新登录");
return "";
}
showDnload = shareLinkDownloadUrl({
file_id: videoPage.id,
share_id: token.share_id
}, token.share_token).then((response) => {
call && call(response.data.download_url);
});
} else {
let token = user.getToken();
if (token == "") {
showError$1("当前登录凭证获取为空,请刷新或重新登录");
return "";
}
showDnload = getDownloadUrl({
expire_sec: 14400,
drive_id: token.default_drive_id,
file_id: videoPage.id
}).then((response) => {
call && call(response.data.url);
});
}
showDnload.catch((e) => {
if (e && e + "" == "AxiosError: Request failed with status code 429") {
showError$1("接口请求频繁");
} else {
showError$1("刷新失败,错误异常:" + e);
}
}).finally(() => {
call && call();
});
}
function getOptionUrl(option) {
console.log(option);
return new Promise((resolve, reject) => {
if (option.html != " 原画") {
resolve(option.url);
} else {
getVideoSrc((url) => {
if (url != "") {
resolve(url);
} else {
reject("获取地址视频错误");
}
});
}
});
}
function artplayPluginQuality(option) {
return async (art) => {
let def = option[option.length - 1];
let loc = user.getVideoPlayerSet().qualityHtml;
var storageQuality;
if (loc) {
let quality2 = option.find((item) => item.html === loc);
if (quality2) {
quality2["default"] = true;
storageQuality = quality2.html;
}
}
if (!storageQuality) {
storageQuality = def.html;
def["default"] = true;
}
let index = option.findIndex(function(item, index2) {
return item.html === storageQuality;
});
var quality = {
name: "quality",
position: "right",
html: title(storageQuality) || "Quality",
selector: option,
index: 2,
onSelect: async function(item) {
let url = await getOptionUrl(item);
console.log(item.html);
console.log(url);
art.qualityHtml = item.html;
art.switchQuality(url, item.html);
return title(item.html);
}
};
art.quality_ = quality;
art.controls.add(quality);
const quality1 = option[index];
if (quality1) {
art.url = await getOptionUrl(quality1);
art.qualityHtml = quality1.html;
} else {
art.url = await getOptionUrl(option[0]);
art.qualityHtml = option[0].html;
}
};
}
var cur = `
`;
function html(item, def) {
let htmlDiv = `
${def ? cur : ""}
${item.name}
`;
return htmlDiv;
}
function selector(call) {
let items = user.getPage().items;
if (items.length == 0 || $2("#videoHistory").length > 0) {
return (art) => {
};
}
let fileList2 = items;
let id = user.getVideoPage().id;
var videoList = fileList2.filter(function(item, index) {
return item.category === "video";
}), fileIndex = videoList.findIndex(function(item, index) {
return item.file_id === id;
});
if (!(fileIndex > -1 && videoList.length > 1))
return () => {
};
console.log("视频数量为::" + videoList.length);
return (art) => {
let option = [];
videoList.forEach((it, index) => {
option.push({
default: index == fileIndex,
index,
file: it,
html: html(it, index == fileIndex)
});
});
let svg = '
';
if (fileIndex + 1 < videoList.length) {
art.controls.add({
name: "next_selector",
position: "left",
html: `
` + svg + "",
tooltip: videoList[fileIndex + 1].name,
style: {
marginRight: "10px"
},
click: function() {
let item = videoList[fileIndex + 1];
call && call(item);
}
});
}
art.videoList = option;
art.controls.add({
name: "selector",
position: "right",
index: 1,
html: "选集",
click: function() {
if (art.fullscreen) {
art.fullscreen = false;
} else if (art.fullscreenWeb) {
art.fullscreen = false;
}
call && call();
}
});
};
}
function subtitle(click) {
return (art) => {
art.controls.add({
name: "subtitle",
position: "right",
html: "字幕",
index: 2,
style: {
marginLeft: "10px"
},
click: function() {
if (art.fullscreen) {
art.fullscreen = false;
} else if (art.fullscreenWeb) {
art.fullscreen = false;
}
click && click();
}
});
};
}
var doubleSpeed = function(art) {
art.notice.show = "倍速播放 x3";
art.playbackRate = 3;
};
function hotkey() {
return (art) => {
var rightCount = 0;
var playbackRate = null;
var rightInterval = null;
var logKey = false;
document.onkeyup = function(event) {
if (event.code === "ArrowRight") {
if (rightCount === 1) {
art.currentTime = art.currentTime + 5;
}
logKey = false;
if (rightInterval) {
window.clearInterval(rightInterval);
}
rightInterval = null;
rightCount = 0;
if (playbackRate) {
art.playbackRate = playbackRate;
playbackRate = null;
}
}
};
document.onkeydown = function(event) {
if (event.code === "ArrowRight") {
rightCount += 1;
if (!playbackRate) {
playbackRate = art.playbackRate;
}
if (!rightInterval) {
rightInterval = setInterval(function() {
if (rightCount > 100) {
rightCount = 2;
}
if (rightCount > 1 && !logKey) {
doubleSpeed(art);
logKey = true;
}
}, 100);
}
} else if (event.code === "ArrowLeft") {
art.currentTime = art.currentTime - 5;
} else if (event.code === "ArrowUp") {
art.volume = art.volume + 0.01;
} else if (event.code === "ArrowDown") {
art.volume = art.volume - 0.01;
} else if (event.code === "Space") {
art.toggle();
} else if (event.code === "Enter") {
art.fullscreen = !art.fullscreen;
}
};
};
}
function saveCloud(art) {
let token = user.getToken();
if (token == null) {
return;
}
let v = user.getVideoPage();
videoUpdate({
drive_id: token.default_drive_id,
duration: art.duration,
file_id: v.id,
play_cursor: art.currentTime
}).then((res) => {
});
}
function saveExit() {
return (art) => {
art.on("ready", () => {
let v = user.getVideoPage();
if (v.play_cursor) {
art.seek = v.play_cursor;
} else {
let list = user.getVideoLookList();
let index = list.findIndex((item) => {
return item.id == v.id;
});
if (index != -1) {
art.seek = list[index].play_cursor;
}
}
let plset = user.getVideoPlayerSet();
if (plset.fullscreen) {
art.fullscreen = true;
}
if (plset.fullscreenWeb) {
art.fullscreenWeb = true;
}
if (plset.playbackRate) {
art.playbackRate = plset.playbackRate;
}
if (plset.subtitleSize && plset.subtitleSize != 0) {
$2(".art-subtitle").css("font-size", plset.subtitleSize + "px");
art.subtitleSize = plset.subtitleSize;
}
if (plset.subtitleMargin && plset.subtitleSize != 0) {
$2(".art-subtitle").css("margin-bottom", plset.subtitleMargin + "px");
art.subtitleMargin = plset.subtitleMargin;
}
if (plset.subtitleOffset) {
art.subtitleOffset = plset.subtitleOffset;
art.subtitleOffset = plset.subtitleOffset;
}
if (plset.subtitleColor && plset.subtitleColor.indexOf("#") != -1) {
$2(".art-subtitle").css("color", plset.subtitleColor);
art.subtitleColor = plset.subtitleColor;
}
});
art.on("destroy", () => {
let v = user.getVideoPage();
if (v.type == 0) {
saveCloud(art);
}
user.saveVideoPlayerSet(art);
let currentTime = art.currentTime;
let progress = parseInt(currentTime / art.duration * 100);
try {
art.hls.destroy();
art.video.dispose();
} catch (error) {
}
let items = user.getPage().items;
let index = items.findIndex((it) => {
return it.file_id == v.id;
});
if (index != -1) {
if (!items[index].user_meta) {
items[index].user_meta = "{}";
}
let meta = JSON.parse(items[index].user_meta);
meta.play_cursor = currentTime;
items[index].user_meta = JSON.stringify(meta);
}
let folderName;
let href = v.href;
if (v.type == 1) {
folderName = "来自分享";
} else {
folderName = v.folderName;
}
user.saveVideoInfo(v.id, v.name, progress, folderName, href, v.type == 1, currentTime);
});
};
}
const SubTitle_vue_vue_type_style_index_0_scoped_d892bc01_lang = "";
const _withScopeId$2 = (n) => (vue.pushScopeId("data-v-d892bc01"), n = n(), vue.popScopeId(), n);
const _hoisted_1$4 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ vue.createElementVNode("div", { style: { "margin-top": "-20px" } }, [
/* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "页面链接就是先去找到字幕位置,然后再把当前页面的链接拷贝复制到下面输入框中,再点击跳转即可")
], -1));
const _hoisted_2$3 = { style: { "margin-bottom": "20px" } };
const _hoisted_3$3 = { class: "bread-container--xuGOj" };
const _hoisted_4$3 = {
class: "breadcrumb-wrap--Uq5Lb",
"data-align": "left"
};
const _hoisted_5$3 = {
class: "breadcrumb--gnRPG",
"data-calc": "true"
};
const _hoisted_6$3 = ["data-label", "onClick", "data-key"];
const _hoisted_7$2 = {
class: "breadcrumb-item-link--9zcQY",
"data-spm-anchor-id": "0.0.0.i5.54a06c75zaT9h6"
};
const _hoisted_8$2 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "breadcrumb-item-separator--MnbFV" }, "›", -1));
const _hoisted_9$2 = { key: 0 };
const _hoisted_10$2 = { id: "_fileList" };
const _hoisted_11$1 = {
class: "td--SGrZj td---v-kp",
"data-col-key": "name",
style: { "flex": "1 1 0%", "min-width": "160px" }
};
const _hoisted_12$1 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ vue.createElementVNode("div", {
class: "cover--Mn1Bt folder-cover--ExDmp",
"data-size": "XXS"
}, [
/* @__PURE__ */ vue.createElementVNode("img", {
alt: "folder",
class: "fileicon--Ob-Oj fileicon---webs",
draggable: "false",
src: "https://img.alicdn.com/imgextra/i3/O1CN01qSxjg71RMTCxOfTdi_!!6000000002097-2-tps-80-80.png"
})
], -1));
const _hoisted_13$1 = ["title"];
const _hoisted_14$1 = {
class: "td--SGrZj td---v-kp",
"data-col-key": "name",
style: { "flex": "1 1 0%", "min-width": "160px" }
};
const _hoisted_15$1 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ vue.createElementVNode("div", {
class: "cover--Mn1Bt folder-cover--ExDmp",
"data-size": "XXS"
}, [
/* @__PURE__ */ vue.createElementVNode("img", {
alt: "others",
class: "fileicon--Ob-Oj fileicon---webs",
draggable: "false",
src: "https://img.alicdn.com/imgextra/i2/O1CN01ROG7du1aV18hZukHC_!!6000000003334-2-tps-140-140.png"
})
], -1));
const _hoisted_16$1 = ["title"];
const _sfc_main$5 = {
__name: "SubTitle",
emits: ["selectSubTitle"],
setup(__props, { expose, emit }) {
const data = vue.ref([]);
const path = vue.ref([]);
const url = vue.ref();
vue.onMounted(() => {
getFileList("root", "全部文件");
});
function selectFile(fileInfo) {
elementPlus.ElMessageBox.confirm(
`确认加载《${fileInfo.name}》字幕文件吗?`,
"字幕选择",
{
confirmButtonText: "确认",
cancelButtonText: "取消"
}
).then(() => {
emit("selectSubTitle", fileInfo);
});
}
function getFileList(parent_file_id, name2) {
let loadingInstance = elementPlus.ElLoading.service({
target: "#_fileList",
text: "加载中"
});
try {
if (path.value.length != 0) {
let last = path.value[path.value.length - 1];
if (last.id == parent_file_id) {
return;
}
let index = path.value.findIndex((item, index2) => {
return item.id === parent_file_id;
});
if (index != -1) {
path.value = path.value.splice(0, index);
}
}
path.value.push({
id: parent_file_id,
name: name2
});
let token = user.getToken();
if (token == "" || token == null) {
showError$1("登录凭证失效,请重新登录重试");
return;
}
if (token.default_drive_id == null || token.default_drive_id == "") {
showError$1("设备id为空,请刷新重试");
console.log(token.default_drive_id);
return;
}
search({
"drive_id": token.default_drive_id,
"query": `parent_file_id = "${parent_file_id}" and (type = "folder" or file_extension in ["srt", "ass", "vtt"])`,
"order_by": "type ASC,updated_at DESC",
"limit": 20,
"image_thumbnail_process": "image/resize,w_256/format,jpeg",
"image_url_process": "image/resize,w_1920/format,jpeg/interlace,1",
"video_thumbnail_process": "video/snapshot,t_1000,f_jpg,ar_auto,w_256"
}).then((res) => {
data.value.length = 0;
data.value = res.data.items;
if (parent_file_id == "root") {
url.value = "https://www.aliyundrive.com/drive/file/backup";
} else {
url.value = "https://www.aliyundrive.com/drive/file/backup/" + parent_file_id;
}
}).catch((e) => {
console.log(e);
if (e && e + "" == "AxiosError: Request failed with status code 429") {
showError$1("您操作的太快了! 请稍候点击下方按钮,刷新尝试");
} else {
showError$1(e + "");
}
path.value.pop();
});
} finally {
loadingInstance.close();
}
}
function toUrlFile() {
var link = url.value;
if (link == "https://www.aliyundrive.com/drive") {
showError$1("如需跳首页,请点下方全部文件");
return;
}
var regex = /backup\/(.+?)(?:\/|\?|$)/;
var match = link.match(regex);
if (match) {
var value = match[1];
getFileList(value, "搜索结果");
} else {
showError$1("错误的链接");
}
}
function toCurrentPage() {
url.value = location.href;
toUrlFile();
}
expose({
getFileList
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", null, [
_hoisted_1$4,
vue.createElementVNode("div", _hoisted_2$3, [
vue.createVNode(vue.unref(elementPlus.ElInput), {
modelValue: url.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => url.value = $event),
placeholder: "Please input"
}, {
prepend: vue.withCtx(() => [
vue.createTextVNode("链接")
]),
append: vue.withCtx(() => [
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
onClick: toUrlFile
}, {
default: vue.withCtx(() => [
vue.createTextVNode("跳转")
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
link: "",
onClick: toCurrentPage
}, {
default: vue.withCtx(() => [
vue.createTextVNode("跳转到当前页面")
]),
_: 1
}),
vue.createElementVNode("div", _hoisted_3$3, [
vue.createElementVNode("div", _hoisted_4$3, [
vue.createElementVNode("div", _hoisted_5$3, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(path.value, (item, index) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: index,
class: "breadcrumb-item--j8J5H",
"data-label": item.name,
onClick: vue.withModifiers(($event) => getFileList(item.id, item.name), ["stop"]),
"data-key": item.id,
"data-hide": "false",
"data-more": "false"
}, [
vue.createElementVNode("div", _hoisted_7$2, vue.toDisplayString(item.name), 1),
_hoisted_8$2
], 8, _hoisted_6$3);
}), 128))
])
])
]),
data.value.length == 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$2, [
vue.createVNode(vue.unref(elementPlus.ElEmpty), { description: "文件夹为空" })
])) : vue.createCommentVNode("", true),
vue.createElementVNode("div", _hoisted_10$2, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(data.value, (item, index) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: index,
style: { "margin-top": "4px" }
}, [
item.type == "folder" ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElCard), {
key: 0,
"body-style": { "padding": "5px", "margin": "0px" },
shadow: "hover",
onClick: vue.withModifiers(($event) => getFileList(item.file_id, item.name), ["stop"])
}, {
default: vue.withCtx(() => [
vue.createElementVNode("div", _hoisted_11$1, [
_hoisted_12$1,
vue.createElementVNode("p", {
class: "text-primary--JzAb9",
title: item.name
}, vue.toDisplayString(item.name), 9, _hoisted_13$1)
])
]),
_: 2
}, 1032, ["onClick"])) : vue.createCommentVNode("", true),
item.type == "file" ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElCard), {
key: 1,
"body-style": { "padding": "5px", "margin": "0px" },
shadow: "hover",
onClick: vue.withModifiers(($event) => selectFile(item), ["stop"])
}, {
default: vue.withCtx(() => [
vue.createElementVNode("div", _hoisted_14$1, [
_hoisted_15$1,
vue.createElementVNode("p", {
class: "text-primary--JzAb9",
title: item.name
}, vue.toDisplayString(item.name), 9, _hoisted_16$1)
])
]),
_: 2
}, 1032, ["onClick"])) : vue.createCommentVNode("", true)
]);
}), 128))
])
]);
};
}
};
const SubTitle = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-d892bc01"]]);
const indicator = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiI+CiAgICA8cGF0aCBkPSJNMTYuMTE4IDMuNjY3aC4zODJhMy42NjcgMy42NjcgMCAwMTMuNjY3IDMuNjY3djcuMzMzYTMuNjY3IDMuNjY3IDAgMDEtMy42NjcgMy42NjdoLTExYTMuNjY3IDMuNjY3IDAgMDEtMy42NjctMy42NjdWNy4zMzNBMy42NjcgMy42NjcgMCAwMTUuNSAzLjY2NmguMzgyTDQuOTUgMi4wNTNhMS4xIDEuMSAwIDAxMS45MDYtMS4xbDEuNTY3IDIuNzE0aDUuMTU2TDE1LjE0Ni45NTNhMS4xMDEgMS4xMDEgMCAwMTEuOTA2IDEuMWwtLjkzNCAxLjYxNHoiIGZpbGw9IiMzMzMiPjwvcGF0aD4KICAgIDxwYXRoIGQ9Ik01LjU2MSA1LjE5NGgxMC44NzhhMi4yIDIuMiAwIDAxMi4yIDIuMnY3LjIxMWEyLjIgMi4yIDAgMDEtMi4yIDIuMkg1LjU2MWEyLjIgMi4yIDAgMDEtMi4yLTIuMlY3LjM5NGEyLjIgMi4yIDAgMDEyLjItMi4yeiIgZmlsbD0iI2ZmZiI+PC9wYXRoPgogICAgPHBhdGggZD0iTTYuOTY3IDguNTU2YTEuMSAxLjEgMCAwMTEuMSAxLjF2Mi42ODlhMS4xIDEuMSAwIDExLTIuMiAwVjkuNjU2YTEuMSAxLjEgMCAwMTEuMS0xLjF6TTE1LjAzMyA4LjU1NmExLjEgMS4xIDAgMDExLjEgMS4xdjIuNjg5YTEuMSAxLjEgMCAxMS0yLjIgMFY5LjY1NmExLjEgMS4xIDAgMDExLjEtMS4xeiIgZmlsbD0iIzMzMyI+PC9wYXRoPgo8L3N2Zz4=";
const state = "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgODAgODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGlkPSJwaWQtNjQtc3Znby1hIiBkPSJNMCAwaDgwdjgwSDB6Ij48L3BhdGg+PHBhdGggZD0iTTUyLjU0NiA4LjAxNGEzLjk5OCAzLjk5OCAwIDAxNC4yMjIgMy4wNzdjLjEwNC40NDYuMDkzLjgwOC4wMzkgMS4xMzhhMi43NCAyLjc0IDAgMDEtLjMxMi44ODFjLS4wNzMuMTMyLS4xNi4yNTQtLjI0Ni4zNzZsLS4yNTcuMzY2LS41MjEuNzNjLS43Ljk2OS0xLjQxNSAxLjkyNi0yLjE1NCAyLjg2NmwtLjAxNS4wMmEyNDAuOTQ1IDI0MC45NDUgMCAwMTUuOTg2LjM0MWwxLjY0My4xMjMuODIyLjA2Ni40MS4wMzQuMjA2LjAxOC4xMDMuMDA4LjExNS4wMTJjMS4yNjYuMTE2IDIuNTE2LjQ1IDMuNjc3Ljk3NWExMS42NjMgMTEuNjYzIDAgMDEzLjE2NiAyLjExNGMuOTMxLjg3IDEuNzE5IDEuODk1IDIuMzIxIDMuMDIyYTExLjU5NSAxMS41OTUgMCAwMTEuMjI0IDMuNjEzYy4wMy4xNTcuMDQ2LjMxNi4wNjguNDc0bC4wMTUuMTE5LjAxMy4xMTIuMDIyLjIwNi4wODUuODIyLjE1OSAxLjY0NmMuMSAxLjA5OC4xOSAyLjE5OC4yNyAzLjI5OC4zMTUgNC40LjQ2MyA4LjgyOS4zNiAxMy4yNTVhMTY2LjQ4OSAxNjYuNDg5IDAgMDEtLjg0MyAxMy4yMTNjLS4wMTIuMTI3LS4wMzQuMjk3LS4wNTMuNDU0YTcuNTg5IDcuNTg5IDAgMDEtLjA3Mi40NzVsLS4wNC4yMzctLjA1LjIzNmExMS43NjIgMTEuNzYyIDAgMDEtLjc0IDIuMjg3IDExLjc1NSAxMS43NTUgMCAwMS01LjExOCA1LjU3IDExLjcwNSAxMS43MDUgMCAwMS0zLjYyMyAxLjI2M2MtLjE1OC4wMjQtLjMxNi4wNTItLjQ3NS4wNzJsLS40NzcuMDUzLS44MjEuMDcxLTEuNjQ0LjEzNGMtMS4wOTYuMDg2LTIuMTkyLjE2LTMuMjg4LjIzYTI2MC4wOCAyNjAuMDggMCAwMS02LjU3OC4zMjVjLTguNzcyLjMyNC0xNy41NDYuMjItMjYuMzEzLS4zMDJhMjQyLjQ1OCAyNDIuNDU4IDAgMDEtMy4yODctLjIybC0xLjY0My0uMTI5LS44MjItLjA2OS0uNDEtLjAzNS0uMjA2LS4wMThjLS4wNjgtLjAwNi0uMTMzLS4wMS0uMjE4LS4wMmExMS41NjYgMTEuNTY2IDAgMDEtMy43LS45OTIgMTEuNzMyIDExLjczMiAwIDAxLTUuNDk3LTUuMTc4IDExLjczIDExLjczIDAgMDEtMS4yMTUtMy42MjdjLS4wMjQtLjE1OC0uMDUxLS4zMTYtLjA2Ny0uNDc1bC0uMDI2LS4yMzgtLjAxMy0uMTE5LS4wMS0uMTAzLS4wNy0uODIzLS4xMzItMS42NDhhMTkwLjYzNyAxOTAuNjM3IDAgMDEtLjIyLTMuMjk4Yy0uMjU2LTQuMzk5LS4zNTgtOC44MTctLjI1OC0xMy4yMzMuMDk5LTQuNDEyLjM3Mi04LjgxMS43ODgtMTMuMTk3YTExLjY1IDExLjY1IDAgMDEzLjAzOS02LjgzNSAxMS41ODUgMTEuNTg1IDAgMDE2LjU3Mi0zLjU2M2MuMTU3LS4wMjMuMzEyLS4wNTEuNDctLjA3bC40Ny0uMDUuODItLjA3IDEuNjQzLS4xM2EyMjguNDkzIDIyOC40OTMgMCAwMTYuNjQ3LS40MDVsLS4wNDEtLjA1YTg4LjE0NSA4OC4xNDUgMCAwMS0yLjE1NC0yLjg2N2wtLjUyLS43My0uMjU4LS4zNjZjLS4wODYtLjEyMi0uMTczLS4yNDQtLjI0Ni0uMzc2YTIuNzQgMi43NCAwIDAxLS4zMTItLjg4MSAyLjgwOCAyLjgwOCAwIDAxLjA0LTEuMTM4IDMuOTk4IDMuOTk4IDAgMDE0LjIyLTMuMDc3IDIuOCAyLjggMCAwMTEuMDkzLjMxM2MuMjk0LjE1NS41MzguMzQ3Ljc0Mi41NjguMTAyLjExLjE5LjIzLjI4LjM1bC4yNy4zNTkuNTMyLjcyYTg4LjA1OSA4OC4wNTkgMCAwMTIuMDYgMi45MzYgNzMuMDM2IDczLjAzNiAwIDAxMS45MjkgMy4wM2MuMTg3LjMxMy4zNzMuNjI4LjU1Ni45NDUgMi43MjQtLjA0NyA1LjQ0Ny0uMDU2IDguMTctLjAzOC43NDguMDA2IDEuNDk2LjAxNSAyLjI0NC4wMjYuMTgtLjMxMy4zNjQtLjYyNC41NDktLjkzNGE3My4yODEgNzMuMjgxIDAgMDExLjkzLTMuMDMgODguNzM3IDg4LjczNyAwIDAxMi4wNTktMi45MzVsLjUzMy0uNzIuMjY4LS4zNTljLjA5LS4xMi4xNzktLjI0LjI4MS0uMzVhMi44IDIuOCAwIDAxMS44MzQtLjg4MXpNMzAuMTMgMzQuNjMxYTQgNCAwIDAwLS40MTggMS40MiA5MS4xNTcgOTEuMTU3IDAgMDAtLjQ0NiA5LjEyOGMwIDIuODI4LjEyMSA1LjY1Ni4zNjQgOC40ODNsLjExIDEuMjEyYTQgNCAwIDAwNS44NTggMy4xNDNjMi44Mi0xLjQ5OCA1LjU1LTMuMDMzIDguMTkzLTQuNjA2YTE3Ny40MSAxNzcuNDEgMCAwMDUuODk2LTMuNjY2bDEuNDM0LS45NDJhNCA0IDAgMDAuMDQ3LTYuNjMyIDEzNy43MDMgMTM3LjcwMyAwIDAwLTcuMzc3LTQuNzA4IDE0Ni44OCAxNDYuODggMCAwMC02Ljg3OS0zLjg0OWwtMS40LS43MjVhNCA0IDAgMDAtNS4zODIgMS43NDJ6IiBpZD0icGlkLTY0LXN2Z28tZCI+PC9wYXRoPjxmaWx0ZXIgeD0iLTE1LjQlIiB5PSItMTYuMyUiIHdpZHRoPSIxMzAuOSUiIGhlaWdodD0iMTMyLjUlIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJwaWQtNjQtc3Znby1jIj48ZmVPZmZzZXQgZHk9IjIiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMSIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4zIDAiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4PjxmZU9mZnNldCBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIyIj48L2ZlT2Zmc2V0PjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMuNSIgaW49InNoYWRvd09mZnNldE91dGVyMiIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIyIj48L2ZlR2F1c3NpYW5CbHVyPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yIDAiIGluPSJzaGFkb3dCbHVyT3V0ZXIyIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMiI+PC9mZUNvbG9yTWF0cml4PjxmZU1lcmdlPjxmZU1lcmdlTm9kZSBpbj0ic2hhZG93TWF0cml4T3V0ZXIxIj48L2ZlTWVyZ2VOb2RlPjxmZU1lcmdlTm9kZSBpbj0ic2hhZG93TWF0cml4T3V0ZXIyIj48L2ZlTWVyZ2VOb2RlPjwvZmVNZXJnZT48L2ZpbHRlcj48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBvcGFjaXR5PSIuOCI+PG1hc2sgaWQ9InBpZC02NC1zdmdvLWIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI3BpZC02NC1zdmdvLWEiPjwvdXNlPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI3BpZC02NC1zdmdvLWIpIj48dXNlIGZpbGw9IiMwMDAiIGZpbHRlcj0idXJsKCNwaWQtNjQtc3Znby1jKSIgeGxpbms6aHJlZj0iI3BpZC02NC1zdmdvLWQiPjwvdXNlPjx1c2UgZmlsbD0iI0ZGRiIgeGxpbms6aHJlZj0iI3BpZC02NC1zdmdvLWQiPjwvdXNlPjwvZz48L2c+PC9zdmc+";
const Selector_vue_vue_type_style_index_0_scoped_d200ca3c_lang = "";
const _hoisted_1$3 = ["data-def"];
const _sfc_main$4 = {
__name: "Selector",
emits: ["next"],
setup(__props, { expose, emit }) {
const videoList = vue.ref([]);
const card = vue.ref();
vue.onMounted(() => {
});
function nextVideo(index) {
videoList.value.forEach((it, ix) => {
if (ix == index) {
it.default = true;
} else {
it.default = false;
}
});
emit("next", videoList.value[index]);
}
function loadingList(vList) {
console.log(vList);
videoList.value = vList;
scrollToData();
}
function scrollToData() {
let target = $2('div[data-def="true"]');
if (target.length == 0) {
setTimeout(scrollToData, 200);
return;
}
card.value.setScrollTop(target[0].offsetTop);
}
expose({
loadingList
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElScrollbar), {
class: "GoodList",
ref_key: "card",
ref: card
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(videoList.value, (item, index) => {
return vue.openBlock(), vue.createElementBlock("div", {
"data-def": item.default,
class: "card",
key: index
}, [
vue.createVNode(vue.unref(elementPlus.ElTooltip), {
content: item.file.name,
placement: "left-start",
effect: "light",
"hide-after": "10",
"show-after": "100"
}, {
default: vue.withCtx(() => [
vue.createVNode(vue.unref(elementPlus.ElCard), {
shadow: item.default ? "always" : "hover",
onClick: vue.withModifiers(($event) => nextVideo(index), ["stop"])
}, {
default: vue.withCtx(() => [
vue.createElementVNode("p", {
style: vue.normalizeStyle(item.default ? "color:#23ade5" : "")
}, vue.toDisplayString(item.file.name), 5)
]),
_: 2
}, 1032, ["shadow", "onClick"])
]),
_: 2
}, 1032, ["content"])
], 8, _hoisted_1$3);
}), 128))
]),
_: 1
}, 512);
};
}
};
const Selector = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-d200ca3c"]]);
const VideoPage_vue_vue_type_style_index_0_scoped_ee523f38_lang = "";
const _sfc_main$3 = {
__name: "VideoPage",
setup(__props) {
const artRef = vue.ref();
const subtitleRef = vue.ref();
const selectorRef = vue.ref();
const color = vue.ref("#fff");
const table = vue.ref(false);
const showSelector = vue.ref(false);
const retry = vue.reactive({
error: false,
text: "",
title: "",
loading: false
});
const transcoding = {
UHD: "4K 超清",
QHD: "2K 超清",
FHD: "1080 全高清",
HD: "720 高清",
SD: "540 标清",
LD: "360 流畅"
};
var options = {};
var retries = 3;
let instance;
vue.onMounted(() => {
getVideoInfo(artp);
});
function getOption(video) {
let vInfo = user.getVideoPage();
let yh = vInfo.name && getExt(vInfo.name) == "mp4" && false;
let play_info = video.video_preview_play_info;
let task_list = play_info.live_transcoding_task_list;
var option = [];
if (yh) {
option.push({
html: " 原画",
url: ""
});
}
task_list.forEach(function(item, index) {
let name2 = transcoding[item.template_id];
if (!name2) {
return;
}
if (item.url != "") {
option.push({
html: name2,
url: item.url || item.preview_url
});
}
});
return option;
}
function nextVideo(item) {
showSelector.value = false;
if (item.file) {
item = item.file;
}
instance.destroy(false);
let vInfo = user.getVideoPage();
vInfo.id = item.file_id;
if (!item.user_meta) {
item.user_meta = "{}";
}
let meta = JSON.parse(item.user_meta);
vInfo.duration = meta.duration;
vInfo.play_cursor = meta.play_cursor;
vInfo.name = item.name;
vInfo.thumbnail = item.thumbnail;
getVideoInfo(artp);
}
function artp(video) {
var option = getOption(video);
var plset = user.getVideoPlayerSet();
color.value = plset.subtitleColor || "#FFF";
instance = new Artplayer2({
container: artRef.value,
settings: [
{
html: "画中画",
icon: '
',
switch: false,
tooltip: "Close",
onSwitch: function(item, $dom, event) {
console.info(item, $dom, event);
const nextState = !item.switch;
instance.pip = nextState;
item.tooltip = nextState ? "Open" : "Close";
return nextState;
}
},
{
html: "字幕设置",
selector: [
{
html: "字体大小",
range: [plset.subtitleSize || 20, 10, 45, 5],
tooltip: (plset.subtitleSize || 20) + "px",
onChange: function(item, $dom, event) {
$2(".art-subtitle").css("font-size", item.range + "px");
instance.subtitleSize = item.range;
return item.range + "px";
}
},
{
html: "上下移动",
range: [plset.subtitleMargin || 0, 0, 150, 10],
tooltip: (plset.subtitleMargin || 0) + "px",
onChange: function(item, $dom, event) {
$2(".art-subtitle").css("margin-bottom", item.range + "px");
instance.subtitleMargin = item.range;
return item.range + "px";
}
},
{
html: "偏移",
tooltip: (plset.subtitleOffset || 0) + "s",
range: [plset.subtitleOffset || 0, -5, 5, 0.1],
onChange(item) {
instance.subtitleOffset = item.range;
return item.range + "s";
}
},
{
html: `
`,
switch: false,
onSwitch: function(item, $dom, event) {
var subtitle2 = $2(".art-subtitle");
elementPlus.ElMessageBox({
title: "颜色面板",
message: () => vue.h("p", null, [
vue.h("span", null, "请选择颜色"),
vue.h(elementPlus.ElColorPicker, {
model: color,
modelValue: color.value,
"onUpdate:modelValue": (val) => {
color.value = val;
}
})
]),
confirmButtonText: "确定",
cancelButtonText: "取消",
closeOnClickModal: false
}).then(() => {
subtitle2.css("color", color.value);
item.html = `
`;
item.switch = true;
instance.subtitleColor = color.value;
}).catch(() => {
});
return false;
}
}
]
}
],
plugins: [
// 清晰度
artplayPluginQuality(option),
// 上下集
selector(function(item) {
if (item == null) {
instance.pause();
showSelector.value = true;
return;
}
nextVideo(item);
}),
//快捷键
hotkey(),
// 字幕插件
subtitle(openSubTitle),
// 偏好设置
saveExit()
],
...options
});
instance.on("error", function(e) {
console.log(e);
});
instance.on("ready", () => {
let subtitle2 = video && video.video_preview_play_info && video.video_preview_play_info.live_transcoding_subtitle_task_list;
if (subtitle2 != null && subtitle2.length > 0) {
let subtitleType = getExt(subtitle2[0].url);
instance.subtitle.switch(subtitle2[0].url, {
type: subtitleType.length > 3 ? "srt" : subtitleType
});
}
instance.play();
});
instance.on("destroy", () => {
console.info("destroy");
});
}
function getExt(url) {
if (url.includes("?")) {
return getExt(url.split("?")[0]);
}
if (url.includes("#")) {
return getExt(url.split("#")[0]);
}
return url.trim().toLowerCase().split(".").pop();
}
function selectSubTitle(fileInfo) {
console.log(fileInfo.url);
table.value = false;
instance.subtitle.switch(fileInfo.url, {
type: getExt(fileInfo.name)
});
instance.play();
}
function openSubTitle() {
instance.pause();
table.value = true;
}
function retryClick() {
retries = 3;
retry.loading = true;
getVideoInfo(artp);
}
var hlsErrorHandler = function(event, data, art) {
if (art.hls.error == -1) {
console.log("在处理了");
return;
}
var errorType = data.type;
var errorDetails = data.details;
var errorFatal = data.fatal;
console.log(errorType);
console.log(errorDetails);
console.log(errorFatal);
if (art.hls.error) {
art.hls.error += 1;
} else {
art.hls.error = 1;
}
if (data.details == "fragLoadError" && (errorFatal || art.hls.error >= 4)) {
art.hls.error = -1;
retry403(art);
} else if (errorType == "networkError" && errorFatal) {
elementPlus.ElNotification({
title: "网络错误",
message: "请检查网络配置后,刷新页面",
type: "error"
});
}
};
function m3u8Hls(video, url, art) {
if (art.qualityHtml == " 原画") {
video.src = url;
return;
}
art.hls = new Hls2();
art.hls.loadSource(url);
art.hls.attachMedia(video);
video.addEventListener("loadstart", function(e) {
console.log("提示视频的元数据已加载" + video.src);
if (art.hlsCurrentTime403) {
video.currentTime = art.hlsCurrentTime403;
}
});
art.hls.on(Hls2.Events.ERROR, function(e, d) {
hlsErrorHandler(e, d, art);
});
}
function retry403(art) {
getVideoInfo(function(data) {
let option = getOption(data);
let index = option.findIndex(function(item2, index2) {
return item2.html === art.qualityHtml;
});
if (index == -1) {
index = option.length - 1;
}
let item = option[index];
item["default"] = true;
art.quality_.selector = option;
art.hlsCurrentTime403 = art.currentTime;
art.hls.destroy();
art.hls.error = 0;
art.hls = new Hls2();
art.hls.loadSource(item.url);
art.hls.attachMedia(art.video);
art.hls.on(Hls2.Events.ERROR, function(e, d) {
hlsErrorHandler(e, d, art);
});
});
}
function showSelectorOpen() {
selectorRef.value.loadingList(instance.videoList);
}
function closeSelector() {
instance.play();
}
function getVideoInfo(call) {
let token = user.getToken();
if (token == null) {
elementPlus.ElMessageBox.alert("当前登录凭证获取为空,请刷新或重新登录", {
confirmButtonText: "获取凭证失败",
callback: (action) => {
location.href = location.href;
}
});
return;
}
let videoInfo = user.getVideoPage();
let req;
if (videoInfo.type == 0) {
req = videoPreviewPlayInfo({
category: "live_transcoding",
drive_id: videoInfo.drive_id,
file_id: videoInfo.id,
template_id: "FHD|HD|SD|LD",
url_expire_sec: 14400,
get_subtitle_info: true
});
} else if (videoInfo.type == 1) {
let shareToken = user.getShareToken();
if (!user.isExpires(shareToken)) {
elementPlus.ElMessageBox.alert("很抱歉,当前页面太久没活动了,请点击刷新后再来观看吧", "分享凭证失效", {
confirmButtonText: "刷新",
callback: (action) => {
location.href = location.href;
}
});
}
req = shareVideoInfo(videoInfo.id, shareToken.share_id, shareToken.share_token);
}
req.then((res) => {
retry.error = false;
Artplayer2.ASPECT_RATIO = ["default", "1:1", "2:1", "4:3", "16:9", "21:9"];
options = {
id: videoInfo.id,
poster: videoInfo.thumbnail,
title: videoInfo.name,
type: "m3u8",
customType: {
m3u8: m3u8Hls
},
flip: true,
setting: true,
playbackRate: true,
aspectRatio: true,
fullscreen: true,
fullscreenWeb: true,
miniProgressBar: true,
autoplay: true,
screenshot: true,
hotkey: false,
airplay: true,
theme: "#23ade5",
volume: 1,
contextmenu: [],
icons: {
state: `
`,
indicator: `
`
}
};
if (videoInfo.type == 0) {
$2(".text--KBVB3").text(videoInfo.name);
} else if (videoInfo.type == 1) {
$2(".header-file-name--CN_fq").text(videoInfo.name);
}
call && call(res.data);
}).catch((e) => {
if (instance) {
instance.pause();
instance.destroy(false);
}
if (e.skip) {
return;
}
console.log(e);
if (retries != 0) {
retries = retries - 1;
getVideoInfo(call);
}
if (e && e + "" == "AxiosError: Request failed with status code 429") {
retry.text = "请稍候点击下方按钮,刷新尝试";
retry.title = "您操作的太快了";
} else {
retry.title = "接口问题";
retry.text = e + "";
}
retry.error = true;
}).finally(() => {
retry.loading = false;
});
}
vue.onUnmounted(() => {
if (instance) {
instance.destroy(false);
}
console.log("视频页面销毁");
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(vue.unref(elementPlus.ElDrawer), {
modelValue: table.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => table.value = $event),
title: "请选择字幕文件",
direction: "rtl",
size: "25%"
}, {
default: vue.withCtx(() => [
vue.createVNode(SubTitle, {
onSelectSubTitle: selectSubTitle,
ref_key: "subtitleRef",
ref: subtitleRef
}, null, 512)
]),
_: 1
}, 8, ["modelValue"]),
vue.createVNode(vue.unref(elementPlus.ElDrawer), {
modelValue: showSelector.value,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showSelector.value = $event),
title: "选集",
direction: "rtl",
size: "20%",
onOpen: showSelectorOpen,
onClose: closeSelector
}, {
default: vue.withCtx(() => [
vue.createVNode(Selector, {
videoList: _ctx.videoList,
ref_key: "selectorRef",
ref: selectorRef,
onNext: nextVideo
}, null, 8, ["videoList"])
]),
_: 1
}, 8, ["modelValue"]),
vue.withDirectives(vue.createElementVNode("div", {
class: "player",
ref_key: "artRef",
ref: artRef
}, null, 512), [
[vue.vShow, !retry.error]
]),
vue.withDirectives(vue.createVNode(vue.unref(elementPlus.ElResult), {
title: retry.title,
"sub-title": retry.text
}, {
extra: vue.withCtx(() => [
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
loading: retry.loading,
onClick: vue.withModifiers(retryClick, ["stop"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode("刷新")
]),
_: 1
}, 8, ["loading", "onClick"])
]),
_: 1
}, 8, ["title", "sub-title"]), [
[vue.vShow, retry.error]
])
], 64);
};
}
};
const VideoPage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-ee523f38"]]);
const _hoisted_1$2 = { style: { "padding-bottom": "10px" } };
const _hoisted_2$2 = { style: { "height": "410px", "overflow-y": "auto" } };
const _hoisted_3$2 = {
key: 0,
align: "center",
width: "100%",
color: "#1890ff",
size: "1/"
};
const _hoisted_4$2 = { style: { "padding-bottom": "13px" } };
const _hoisted_5$2 = ["onClick"];
const _hoisted_6$2 = /* @__PURE__ */ vue.createElementVNode("a", null, "清空本地历史", -1);
const _hoisted_7$1 = [
_hoisted_6$2
];
const _hoisted_8$1 = {
"data-index": "0",
class: "tr-wrapper--RxoAI",
style: { "height": "52px", "width": "100%" }
};
const _hoisted_9$1 = /* @__PURE__ */ vue.createElementVNode("div", {
class: "padding-element-horizontal--pMTS6",
style: { "width": "32px" }
}, null, -1);
const _hoisted_10$1 = {
class: "drop-wrapper--T27s",
"data-drop-target": "false"
};
const _hoisted_11 = {
"data-is-dragging": "false",
class: "drag-wrapper---smTQ",
draggable: "true"
};
const _hoisted_12 = {
class: "tr--Ogi-3 tr--97U9T",
"data-is-selected": "false",
"data-clickable": "true",
"data-has-checkbox": "true",
style: { "cursor": "pointer" }
};
const _hoisted_13 = ["onClick"];
const _hoisted_14 = /* @__PURE__ */ vue.createElementVNode("span", {
"data-role": "icon",
"data-render-as": "svg",
"data-icon-type": "PDSMore",
class: "ant-dropdown-trigger icon--d-ejA"
}, [
/* @__PURE__ */ vue.createElementVNode("svg", {
t: "1676180557921",
class: "icon",
viewBox: "0 0 1024 1024",
version: "1.1",
xmlns: "http://www.w3.org/2000/svg",
"p-id": "3478",
width: "16",
height: "16"
}, [
/* @__PURE__ */ vue.createElementVNode("path", {
d: "M374.6 636.5c4.4 0 8.5-1.2 12.1-3.3l171.7-100c8-3.6 13.6-11.9 13.6-21.5 0-8.8-4.8-16.6-11.9-20.7l-167.8-97.8c-4.3-5-10.7-8.1-17.7-8.1-13.1 0-23.6 10.7-23.6 23.8v1.3l-0.3 0.2 0.4 199.8c-0.1 0.8-0.1 1.6-0.1 2.5 0 13.2 10.6 23.8 23.6 23.8z",
fill: "#4D4D4D",
"p-id": "3479"
}),
/* @__PURE__ */ vue.createElementVNode("path", {
d: "M64.7 586.3a32.2 32.1 0 1 0 64.4 0 32.2 32.1 0 1 0-64.4 0Z",
fill: "#4D4D4D",
"p-id": "3480"
}),
/* @__PURE__ */ vue.createElementVNode("path", {
d: "M960 398.3c0.1-1.6 0.2-3.2 0.2-4.8 0-35-28.5-63.3-63.6-63.3-11.7 0-22.7 3.2-32.2 8.7l-0.5-0.3-31.5 18.2v-64.7c-0.1-73.1-59.9-133-133.1-133H197.4c-73.1 0-133 59.8-133 133v165.8h0.2c0 17.7 14.4 32.1 32.2 32.1s32.2-14.4 32.2-32.1h0.2V287c0-35.2 28.8-64 64-64h510.2c35.2 0 64 28.8 64 64v448.9c0 35.2-28.8 64-64 64H193.3c-35.2 0-64-28.8-64-64v-21.4c0-17.7-14.4-32.1-32.2-32.1-17.8 0-32.2 14.4-32.2 32.1h-0.4v15.3c0 73.2 59.9 133 133 133h501.9c73.2 0 133-59.8 133-133v-64.1l33.1 19.1 0.1-0.1c9.2 5.1 19.8 8 31 8 35.1 0 63.6-28.4 63.6-63.3 0-1.6-0.1-3.2-0.2-4.8V398.3z m-63.6 205.1c-0.3 7.8-6.9 14.1-15 14.1-2.7 0-5.3-0.7-7.5-2l-41.5-23.7V430.1l40.9-23.2c2.3-1.5 5.1-2.3 8.1-2.3 8.3 0 15 6.6 15 14.6v184.2z",
fill: "#4D4D4D",
"p-id": "3481"
})
])
], -1);
const _hoisted_15 = [
_hoisted_14
];
const _hoisted_16 = ["onClick"];
const _hoisted_17 = /* @__PURE__ */ vue.createElementVNode("div", {
class: "cover--Mn1Bt file-cover--tJG-H",
"data-size": "XXS",
"data-thumbnail": "normal"
}, [
/* @__PURE__ */ vue.createElementVNode("div", { class: "is-loaded--otXtL thumbnail-wrapper--aGcWv" }, [
/* @__PURE__ */ vue.createElementVNode("div", { class: "thumbnail--skb-6 fill-mode-cover--VWUJo size-xxs--oSITU" }, [
/* @__PURE__ */ vue.createElementVNode("img", {
alt: "video",
class: "fileicon--38wQG fileicon---webs",
draggable: "false",
src: "https://img.alicdn.com/imgextra/i2/O1CN01H7FCkb1P6mPJxDEFa_!!6000000001792-2-tps-80-80.png"
})
])
])
], -1);
const _hoisted_18 = ["title"];
const _hoisted_19 = ["onClick"];
const _hoisted_20 = { class: "text-secondary--kiARj" };
const _hoisted_21 = {
class: "td--SGrZj td---v-kp",
"data-col-key": "size",
style: { "width": "160px", "flex": "0 0 auto" }
};
const _hoisted_22 = { class: "text-secondary--kiARj" };
const _hoisted_23 = ["href"];
const _hoisted_24 = /* @__PURE__ */ vue.createElementVNode("div", {
class: "padding-element-horizontal--39l8Q",
style: { "width": "32px" }
}, null, -1);
const _sfc_main$2 = {
__name: "VideoHistoryPage",
setup(__props) {
let locList = vue.ref(user.getVideoLookList());
let clodList = vue.ref([]);
let listData = vue.ref([
{
key: "本地历史",
list: locList
},
{
key: "云端历史",
list: clodList
}
]);
vue.onMounted(() => {
videoHistoryList(listFuction);
});
function listFuction(data) {
if (data.length != 0) {
clodList.value = data;
}
}
function clearHistory() {
user.clearVideoHistory();
}
function playInfo(videoItem) {
if (videoItem.share) {
location.href = videoItem.href;
return;
}
let vInfo = user.getVideoPage();
vInfo.id = videoItem.id;
vInfo.play_cursor = videoItem.play_cursor;
vInfo.name = videoItem.name;
vInfo.thumbnail = "";
vInfo.folderName = videoItem.folderName;
vInfo.type = 0;
vInfo.href = videoItem.href;
let html2 = `
`;
$2("#root").append(html2);
var app = vue.createApp(VideoPage);
app.mount(
(() => {
const app2 = $2(`
`)[0];
$2(".previewer--g6qCF").replaceWith(app2);
$2(".ant-modal-Link .icon-wrapper--TbIdu").click();
return app2;
})()
);
$2("#header-close").one("click", function() {
app.unmount();
$2("#videoHistory").remove();
});
}
let videoHistoryList = function(callback) {
homeWidgets().then((res) => {
if (res.data && res.data.recentUsed) {
let videoList = res.data.recentUsed.items.filter(function(item, index) {
return item.category === "video";
});
videoList = videoList.map((item) => {
let href = "https://www.aliyundrive.com/drive/";
if (item.compilationId) {
let i2 = item.compilationId.indexOf("_");
let compilationId = item.compilationId.substring(i2 + 1, item.compilationId.length);
href = "https://www.aliyundrive.com/drive/folder/" + compilationId;
}
return {
"category": "video",
"name": item.name,
"progress": item.progressPercentage,
"id": item.fileId,
"folderName": item.fromSourceDescription,
"href": href,
"share": false,
"play_cursor": item.playCursor
};
});
callback && callback(videoList);
return;
}
callback && callback([]);
}).catch((err) => {
callback && callback([]);
});
};
vue.onUnmounted(() => {
console.log("历史页面销毁");
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", null, [
vue.createElementVNode("p", _hoisted_1$2, " 最近观看了" + vue.toDisplayString(vue.unref(locList).length + vue.unref(clodList).length) + "个视频", 1),
vue.createElementVNode("div", _hoisted_2$2, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(listData), (data, i1) => {
return vue.openBlock(), vue.createElementBlock("div", { key: i1 }, [
data.key == "云端历史" ? (vue.openBlock(), vue.createElementBlock("hr", _hoisted_3$2)) : vue.createCommentVNode("", true),
vue.createElementVNode("h1", _hoisted_4$2, vue.toDisplayString(data.key), 1),
data.key == "本地历史" ? (vue.openBlock(), vue.createElementBlock("p", {
key: 1,
class: "text-secondary--38-Of clearHistory",
style: { "padding-bottom": "13px" },
onClick: vue.withModifiers(clearHistory, ["stop"])
}, _hoisted_7$1, 8, _hoisted_5$2)) : vue.createCommentVNode("", true),
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(data.list, (item, index) => {
return vue.openBlock(), vue.createElementBlock("div", {
style: { "height": "52px", "width": "100%" },
key: index
}, [
vue.createElementVNode("div", _hoisted_8$1, [
_hoisted_9$1,
vue.createElementVNode("div", _hoisted_10$1, [
vue.createElementVNode("div", _hoisted_11, [
vue.createElementVNode("div", _hoisted_12, [
vue.createElementVNode("div", {
onClick: ($event) => playInfo(item),
class: "checkbox--P-zHa checkbox-container--t0ALJ",
role: "checkbox",
"aria-checked": "false",
"data-checked": "false",
"data-partial": "false",
"data-disabled": "false",
"data-no-padding": "false"
}, _hoisted_15, 8, _hoisted_13),
vue.createElementVNode("div", {
class: "td--SGrZj td---v-kp history_video",
compilationid: "",
"data-col-key": "name",
style: { "flex": "1 1 0%", "min-width": "160px" },
onClick: ($event) => playInfo(item)
}, [
_hoisted_17,
vue.createElementVNode("p", {
class: "text-primary--JzAb9",
title: item.name
}, vue.toDisplayString(item.name), 9, _hoisted_18)
], 8, _hoisted_16),
vue.createElementVNode("div", {
compilationid: "",
class: "history_video td--SGrZj td---v-kp",
"data-col-key": "updated_at",
style: { "width": "200px", "flex": "0 0 auto" },
onClick: ($event) => playInfo(item)
}, [
vue.createElementVNode("p", _hoisted_20, "已观看" + vue.toDisplayString(item.progress) + "%", 1)
], 8, _hoisted_19),
vue.createElementVNode("div", _hoisted_21, [
vue.createElementVNode("p", _hoisted_22, [
vue.createElementVNode("a", {
href: item.href
}, vue.toDisplayString(item.folderName), 9, _hoisted_23)
])
])
])
])
]),
_hoisted_24
])
]);
}), 128))
]);
}), 128))
])
]);
};
}
};
let showDownloadHomePage = function() {
let app = vue.createApp(DwoloadPage);
showDiv("文件下载", app);
};
function initMenuButton(menuName) {
if ($2(".button-download-aliyun").length !== 0) {
return;
}
var css = "#root header:eq(0)";
if ($2(css).length > 0) {
var html2 = "";
html2 += '
';
html2 += '
显示链接
';
$2(".history-video").remove();
$2(".button-download-aliyun").remove();
$2(css).append(html2);
$2(".button-download-aliyun").on("click", showDownloadHomePage);
$2(".history-video").on("click", () => {
let app = vue.createApp(_sfc_main$2);
showDiv(`
最近在看
`, app);
});
} else {
setTimeout(function() {
initMenuButton();
}, 1e3);
}
}
const home = (menuName) => {
initMenuButton();
};
function handler$2(res) {
let data = res.data;
let response = res.response;
let page = user.getPage();
let items = [];
if (page.id === data.parent_file_id && page.order === data.order_direction && page.order_by === data.order_by && page.drive_id === data.drive_id) {
items = response.items;
} else {
page.id = data.parent_file_id;
page.order = data.order_direction;
page.drive_id = data.drive_id;
page.order_by = data.order_by;
page.items = response.items;
}
let folderName = $2(".breadcrumb-item-link--9zcQY:last").text();
page.folderName = folderName;
if (items.length > 0) {
if (!page.items) {
page.items = [];
}
items.forEach(function(newItem) {
var existingItemIndex = page.items.findIndex(function(oldItem) {
return oldItem.file_id === newItem.file_id;
});
if (existingItemIndex !== -1) {
page.items[existingItemIndex] = newItem;
} else {
page.items.push(newItem);
}
});
}
console.log(`已加载${page.items.length}个文件`);
showSuccess(`已加载${page.items.length}个文件`);
if ($2(".button-download-aliyun").length <= 0 && user.home()) {
home();
}
}
const fileList = () => {
http.onResponse(function(res, url) {
let config = res.config;
try {
config.data = JSON.parse(config.data);
} catch (error) {
config.data = {};
}
let response = {
response: res.response,
data: config.data
};
if (url.indexOf("/file/list") > 0 || url.indexOf("/file/search") > 0 || url.indexOf("/adrive/v1/intelligent/movie") > 0 || url.indexOf("/adrive/v1/intelligent/tv") > 0) {
handler$2(response);
}
});
};
var interval;
function initVideoPlayer(videoFile) {
let node = $2(".video-previewer--6slx7");
if (node.length <= 0) {
if (interval == null) {
interval = setInterval(function() {
initVideoPlayer(videoFile);
}, 200);
}
return;
} else {
clearInterval(interval);
interval = null;
}
let vInfo = user.getVideoPage();
vInfo.id = videoFile.file_id;
if (videoFile.user_meta) {
try {
let meta = JSON.parse(videoFile.user_meta);
if (meta.duration) {
vInfo.duration = meta.duration;
}
if (meta.play_cursor) {
vInfo.play_cursor = meta.play_cursor;
}
} catch (error) {
console.error(error);
}
}
vInfo.name = videoFile.name;
vInfo.drive_id = videoFile.drive_id;
vInfo.thumbnail = videoFile.thumbnail;
vInfo.folderName = user.getPage().folderName;
vInfo.type = 0;
vInfo.href = location.href;
var app = vue.createApp(VideoPage);
app.mount(
(() => {
const app2 = $2(`
`)[0];
node.replaceWith(app2);
return app2;
})()
);
$2(".header-left--Kobd9").on("click", function() {
app.unmount();
});
}
function homeVideo(videoFile) {
if (interval != null) {
clearInterval(interval);
}
initVideoPlayer(videoFile);
}
function shareVideo$1(videoFile) {
let node = $2(".video-previewer--Rg9fI");
if (node.length <= 0) {
if (interval == null) {
interval = setInterval(function() {
shareVideo$1(videoFile);
}, 200);
}
return;
} else {
clearInterval(interval);
interval = null;
}
let it = user.getPage().items;
let index = it.findIndex((item) => {
return item.file_id == videoFile.file_id;
});
console.log(index);
if (index == -1) {
elementPlus.ElMessageBox.alert("手速太快啦,请回到文件列表中,随便点击排序,看到已加载多少文件时,在进来吧", "操作页面过快", {
confirmButtonText: "去排序",
callback: (action) => {
location.href = location.href;
}
});
return;
}
let v = it[index];
v.user_meta = "{}";
let vInfo = user.getVideoPage();
let list = user.getVideoLookList();
index = list.findIndex((item) => {
return item.id == videoFile.file_id;
});
if (index != -1) {
vInfo.play_cursor = list[index].play_cursor;
}
vInfo.id = v.file_id;
vInfo.name = v.name;
vInfo.thumbnail = v.thumbnail;
vInfo.type = 1;
vInfo.folderName = "来自分享";
vInfo.href = location.href;
var app = vue.createApp(VideoPage);
app.mount(
(() => {
const app2 = $2(`
`)[0];
node.replaceWith(app2);
return app2;
})()
);
$2(".header-icon--bJn--").on("click", function() {
app.unmount();
});
}
function handler$1(res) {
let response = res.response;
if (response.category && response.category === "video") {
homeVideo(response);
}
}
const fileGet = () => {
http.onResponse(function(res, url) {
let config = res.config;
try {
config.data = JSON.parse(config.data);
} catch (error) {
config.data = {};
}
let response = {
response: res.response,
data: config.data
};
if (url.endsWith("/file/get")) {
handler$1(response);
}
});
};
function handler(res) {
let response = res.response;
let shareToken = user.getShareToken();
if (!user.isExpires(shareToken) || shareToken.share_id != response.share_id) {
showError("当前页面已过期,请刷新重试");
return;
}
shareVideo$1(response);
}
const shareVideo = () => {
http.onResponse(function(res, url) {
let config = res.config;
try {
config.data = JSON.parse(config.data);
} catch (error) {
config.data = {};
}
let response = {
response: res.response,
data: config.data
};
if (url.indexOf("get_video_preview_play_info_by_share") > 0) {
handler(response);
}
});
};
const fileUpdate = () => {
http.onRequest(function(req) {
if (req.url.endsWith("v3/file/update")) {
let reqbody = JSON.parse(req.data[0]);
let name2 = reqbody.name;
let i2 = name2.lastIndexOf(".");
if (i2 === -1) {
return;
}
let newName = name2.substring(0, i2);
if (newName.lastIndexOf(".") !== -1) {
reqbody.name = newName;
req.data[0] = JSON.stringify(reqbody);
}
}
});
};
const logout = () => {
http.onRequest(function(req) {
if (req.url.endsWith("/users/v1/users/device_logout")) {
deviceLogout();
console.log("sadasd");
}
});
};
const xhrHandler = () => {
fileList();
fileGet();
shareVideo();
fileUpdate();
logout();
};
class XMLHttp {
constructor() {
__publicField(this, "request", function(param) {
});
__publicField(this, "response", function(param) {
});
__publicField(this, "onRequest", function(cal) {
this.requestListen.push(cal);
});
__publicField(this, "onResponse", function(cal) {
this.responseListen.push(cal);
});
this.responseListen = [];
this.requestListen = [];
}
}
function initXMLHttpRequest(http2) {
let open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(...args) {
let send = this.send;
let _this = this;
let post_data = [];
this.send = function(...data) {
post_data = data;
let dataBody = {
url: args[1],
method: args[0],
headers: {},
data
};
if (_this._header_) {
dataBody.headers = _this._header_;
}
if (_this._header_ && _this._header_["fileId"]) {
return send.apply(_this, data);
}
http2.request(dataBody);
return send.apply(_this, data);
};
this.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
let config = {
url: args[1],
status: this.status,
method: args[0],
data: post_data
};
let res = this.response;
if (_this._header_ && _this._header_["fileId"]) {
return;
}
if (typeof res == "string") {
try {
res = JSON.parse(this.response);
} catch (e) {
console.log("解析出问题了, ", e);
return;
}
}
http2.response({ config, response: res });
}
}, false);
return open.apply(this, args);
};
}
const http = new XMLHttp();
function listen() {
xhrHandler();
http.request = function(req) {
if (this.requestListen.length > 0) {
this.requestListen.forEach((i2) => {
i2(req);
});
}
};
http.response = function(res) {
if (this.responseListen.length > 0) {
let config = res.config;
this.responseListen.forEach((i2) => {
i2(res, config.url);
});
}
};
initXMLHttpRequest(http);
}
let shareId = function() {
var url = location.href;
var match = url.match(/(aliyundrive|alipan)\.com\/s\/([a-zA-Z\d]+)/);
return match ? match[2] : null;
};
let showDownloadSharePage = function() {
let shareToken = user.getShareToken();
if (!user.isExpires(shareToken)) {
showError$1("当前页面已过期,请刷新重试");
return;
} else if (shareId() != shareToken.share_id) {
location.reload();
return;
}
let app = vue.createApp(DwoloadPage);
showShareDiv("文件下载", app);
};
function initShareButton() {
if ($2(".button-download-aliyun").length !== 0) {
$2(".button-download-aliyun").remove();
}
if ($2("#root [class^=banner] [class^=right]").length !== 0 && $2(".button--fep7l").length == 0) {
var html2 = "";
html2 += '
';
$2("#root [class^=banner] [class^=right]").prepend(html2);
$2(".button-download-aliyun").on("click", showDownloadSharePage);
} else {
setTimeout(initShareButton, 1e3);
}
}
const share = () => {
initShareButton();
};
const SignInPage_vue_vue_type_style_index_0_scoped_46fc6531_lang = "";
const _withScopeId$1 = (n) => (vue.pushScopeId("data-v-46fc6531"), n = n(), vue.popScopeId(), n);
const _hoisted_1$1 = {
key: 0,
class: "notice"
};
const _hoisted_2$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_3$1 = {
key: 1,
class: "notice2"
};
const _hoisted_4$1 = {
key: 2,
class: "notice"
};
const _hoisted_5$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _hoisted_6$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("br", null, null, -1));
const _sfc_main$1 = {
__name: "SignInPage",
setup(__props) {
const signInSwitch = vue.ref(false);
const signInSet = vue.ref({
goods_info: {
name: "",
description: "",
notice: ""
}
});
const isSigIn = vue.computed(() => {
return isSignIn();
});
async function signIn() {
const data = await signInList();
if (data.status !== 200) {
showError$1("签到失败,服务器响应:" + data.status);
return;
}
let signin_count = data.data["result"]["signInCount"];
console.log(signin_count);
var reward = await signInReward(signin_count);
if (data.status !== 200) {
showError$1("领取奖励失败,服务器响应:" + reward.status);
return;
}
const res = reward.data;
let rewardName = res["result"]["name"];
let rewardDescription = res["result"]["description"];
let rewardNotice = res["result"]["notice"];
signInSet.value["last_siginIn"] = getNowDate();
signInSet.value["goods_info"] = {
name: rewardName,
description: rewardDescription,
notice: rewardNotice
};
showSuccess(rewardNotice);
user.setSignInSet(signInSet.value);
}
const changeEvent = () => {
signInSet.value["status"] = signInSwitch.value;
if (!isSignIn() && signInSwitch.value) {
signIn();
}
user.setSignInSet(signInSet.value);
};
function getNowDate() {
var currentDate = new Date();
var year = currentDate.getFullYear();
var month = currentDate.getMonth() + 1;
var day = currentDate.getDate();
return year + "" + month + day;
}
function isSignIn() {
const now = getNowDate();
return signInSet.value["last_siginIn"] == now;
}
vue.onMounted(async () => {
let _signInSet = user.getSignInSet();
if (Object.keys(_signInSet).length > 0) {
signInSet.value = _signInSet;
}
signInSwitch.value = _signInSet["status"] == true;
if (!isSignIn() && signInSwitch.value) {
signIn();
}
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createElementVNode("p", null, [
vue.unref(isSigIn) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$1, "今日:已签到")) : vue.createCommentVNode("", true),
vue.createTextVNode(),
_hoisted_2$1,
!vue.unref(isSigIn) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$1, "今日:末签到")) : vue.createCommentVNode("", true),
vue.unref(isSigIn) ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4$1, [
vue.createTextVNode(vue.toDisplayString(signInSet.value.goods_info.name), 1),
_hoisted_5$1,
vue.createTextVNode(" " + vue.toDisplayString(signInSet.value.goods_info.description), 1),
_hoisted_6$1
])) : vue.createCommentVNode("", true)
]),
vue.createVNode(vue.unref(elementPlus.ElForm), { style: { "max-width": "100%" } }, {
default: vue.withCtx(() => [
vue.createVNode(vue.unref(elementPlus.ElFormItem), { label: "自动签到" }, {
default: vue.withCtx(() => [
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
modelValue: signInSwitch.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => signInSwitch.value = $event),
"inline-prompt": "",
"active-text": "是",
"inactive-text": "否",
onChange: changeEvent
}, null, 8, ["modelValue"])
]),
_: 1
})
]),
_: 1
})
], 64);
};
}
};
const SignIn = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-46fc6531"]]);
var globalMenuName;
function showHomeUi(menuName) {
globalMenuName = menuName;
console.log(globalMenuName);
if (menuName === "文件" || menuName === "收藏夹" || menuName === "密码箱") {
setTimeout(function() {
home();
}, 200);
}
}
function initHomeUi() {
let menu = $2(".nav-menu--Lm1q6");
if (menu.length !== 0) {
$2(".nav-tab-item--WhAQf").on("click", function(e) {
showHomeUi(e.currentTarget.textContent);
});
setInterval(function() {
let node = $2(".is-active--8atYr:eq(0)");
if (node.length > 0) {
if (node.text() !== globalMenuName) {
showHomeUi(node.text());
}
}
}, 700);
setTimeout(function() {
let node = $2(".is-active--8atYr:eq(0)");
if (node.length > 0) {
showHomeUi(node.text());
}
}, 300);
} else {
setTimeout(initHomeUi, 500);
}
}
function signInUi() {
let storage = $2(".storage-wrapper--h-rcS");
if (storage.length !== 0) {
let app = vue.createApp(SignIn);
app.mount(
(() => {
const app2 = document.createElement("div");
storage.prepend(app2);
return app2;
})()
);
} else {
setTimeout(signInUi, 500);
}
}
const ui = () => {
if (user.home()) {
initHomeUi();
signInUi();
} else {
share();
}
};
var sessionLoadding = false;
var listenArray = new Array();
let interceptRequest = function() {
axios2.interceptors.request.use(async function(config) {
let token = user.getToken();
if (token == null) {
showError$1("当前登录凭证获取为空,请刷新或重新登录");
throw "token 为空了";
} else if (!user.isExpires(token)) {
showError$1("Token已失效,请刷新或重新登录");
throw "Token已失效,请刷新或重新登录";
}
let isToken = config.headers._token;
config.headers["authorization"] = "".concat(token.token_type || "", " ").concat(token.access_token || "");
config.headers["fileId"] = token.user_id;
if (isToken != null && isToken == false) {
delete config.headers._token;
return config;
}
let session_ref = store.getItem("LG_session_Ref");
if (session_ref != "" && session_ref == "true") {
await new Promise((resolve, reject) => {
function check() {
if (store.getItem("LG_session_Ref") == "") {
resolve();
} else {
setTimeout(check, 200);
}
}
check();
});
}
if (sessionLoadding) {
await new Promise((resolve, reject) => {
listenArray.push(function() {
resolve();
});
});
}
let d = user.getDeviceId();
let s2 = user.getSignature();
if (d == "" || s2 == "") {
sessionLoadding = true;
let rest = await user.session(token, function() {
});
if (rest.deviceId) {
d = rest.deviceId;
}
if (rest.signature) {
s2 = rest.signature;
}
}
sessionLoadding = false;
if (listenArray.length > 0) {
listenArray.forEach((i2) => {
i2 && i2();
});
listenArray = new Array();
}
config.headers["x-device-id"] = d;
config.headers["x-signature"] = s2;
return config;
}, function(error) {
console.log("出现异常", error);
return Promise.reject(error);
});
axios2.interceptors.response.use(function(response) {
return response;
}, function(error) {
let repsonse = error.response;
if (repsonse && repsonse.status == 401 && repsonse.data.code == "UserDeviceOffline") {
user.clearSession();
showError$1("当前设备已失效,请刷新重试");
elementPlus.ElMessageBox.alert("请确认是否有下线设备操作,当前设备已失效", "刷新session失败", {
confirmButtonText: "刷新试一试",
callback: (action) => {
location.href = location.href;
}
});
}
if (repsonse && repsonse.status == 400 && repsonse.data.code == "DeviceSessionSignatureInvalid") {
user.removeSession();
elementPlus.ElMessageBox.alert("当前设备session过去,点击刷新session", "session过期", {
confirmButtonText: "刷新",
callback: (action) => {
location.href = location.href;
}
});
error.skip = true;
}
if (repsonse && repsonse.status == 400 && repsonse.data.message == "not found device info") {
user.clearSession();
showError$1("当前设备已失效,请刷新重试");
elementPlus.ElMessageBox.alert("请确认是否有下线设备操作,当前设备已失效", "设备失效", {
confirmButtonText: "刷新试一试",
callback: (action) => {
location.href = location.href;
}
});
}
console.error("错误信息:", repsonse.data.message);
return Promise.reject(error);
});
};
const apiConfig = () => {
axios2.defaults.baseURL = "https://api.aliyundrive.com";
interceptRequest();
};
var exports$2 = {};
function isSurrogatePair$1(msg, i2) {
if ((msg.charCodeAt(i2) & 64512) !== 55296) {
return false;
}
if (i2 < 0 || i2 + 1 >= msg.length) {
return false;
}
return (msg.charCodeAt(i2 + 1) & 64512) === 56320;
}
function toArray$1(msg, enc) {
if (Array.isArray(msg))
return msg.slice();
if (!msg)
return [];
var res = [];
if (typeof msg === "string") {
if (!enc) {
var p = 0;
for (var i2 = 0; i2 < msg.length; i2++) {
var c = msg.charCodeAt(i2);
if (c < 128) {
res[p++] = c;
} else if (c < 2048) {
res[p++] = c >> 6 | 192;
res[p++] = c & 63 | 128;
} else if (isSurrogatePair$1(msg, i2)) {
c = 65536 + ((c & 1023) << 10) + (msg.charCodeAt(++i2) & 1023);
res[p++] = c >> 18 | 240;
res[p++] = c >> 12 & 63 | 128;
res[p++] = c >> 6 & 63 | 128;
res[p++] = c & 63 | 128;
} else {
res[p++] = c >> 12 | 224;
res[p++] = c >> 6 & 63 | 128;
res[p++] = c & 63 | 128;
}
}
} else if (enc === "hex") {
msg = msg.replace(/[^a-z0-9]+/ig, "");
if (msg.length % 2 !== 0)
msg = "0" + msg;
for (i2 = 0; i2 < msg.length; i2 += 2)
res.push(parseInt(msg[i2] + msg[i2 + 1], 16));
}
} else {
for (i2 = 0; i2 < msg.length; i2++)
res[i2] = msg[i2] | 0;
}
return res;
}
exports$2.toArray = toArray$1;
function toHex$2(msg) {
var res = "";
for (var i2 = 0; i2 < msg.length; i2++)
res += zero2$1(msg[i2].toString(16));
return res;
}
exports$2.toHex = toHex$2;
function htonl$1(w) {
var res = w >>> 24 | w >>> 8 & 65280 | w << 8 & 16711680 | (w & 255) << 24;
return res >>> 0;
}
exports$2.htonl = htonl$1;
function toHex32$1(msg, endian) {
var res = "";
for (var i2 = 0; i2 < msg.length; i2++) {
var w = msg[i2];
if (endian === "little")
w = htonl$1(w);
res += zero8$1(w.toString(16));
}
return res;
}
exports$2.toHex32 = toHex32$1;
function zero2$1(word) {
if (word.length === 1)
return "0" + word;
else
return word;
}
exports$2.zero2 = zero2$1;
function zero8$1(word) {
if (word.length === 7)
return "0" + word;
else if (word.length === 6)
return "00" + word;
else if (word.length === 5)
return "000" + word;
else if (word.length === 4)
return "0000" + word;
else if (word.length === 3)
return "00000" + word;
else if (word.length === 2)
return "000000" + word;
else if (word.length === 1)
return "0000000" + word;
else
return word;
}
exports$2.zero8 = zero8$1;
function join32$1(msg, start2, end, endian) {
var len2 = end - start2;
var res = new Array(len2 / 4);
for (var i2 = 0, k = start2; i2 < res.length; i2++, k += 4) {
var w;
if (endian === "big")
w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];
else
w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];
res[i2] = w >>> 0;
}
return res;
}
exports$2.join32 = join32$1;
function split32$1(msg, endian) {
var res = new Array(msg.length * 4);
for (var i2 = 0, k = 0; i2 < msg.length; i2++, k += 4) {
var m = msg[i2];
if (endian === "big") {
res[k] = m >>> 24;
res[k + 1] = m >>> 16 & 255;
res[k + 2] = m >>> 8 & 255;
res[k + 3] = m & 255;
} else {
res[k + 3] = m >>> 24;
res[k + 2] = m >>> 16 & 255;
res[k + 1] = m >>> 8 & 255;
res[k] = m & 255;
}
}
return res;
}
exports$2.split32 = split32$1;
function rotr32$3(w, b) {
return w >>> b | w << 32 - b;
}
exports$2.rotr32 = rotr32$3;
function rotl32$3(w, b) {
return w << b | w >>> 32 - b;
}
exports$2.rotl32 = rotl32$3;
function sum32$5(a, b) {
return a + b >>> 0;
}
exports$2.sum32 = sum32$5;
function sum32_3$2(a, b, c) {
return a + b + c >>> 0;
}
exports$2.sum32_3 = sum32_3$2;
function sum32_4$4(a, b, c, d) {
return a + b + c + d >>> 0;
}
exports$2.sum32_4 = sum32_4$4;
function sum32_5$4(a, b, c, d, e) {
return a + b + c + d + e >>> 0;
}
exports$2.sum32_5 = sum32_5$4;
function sum64$2(buf, pos, ah, al) {
var bh = buf[pos];
var bl = buf[pos + 1];
var lo = al + bl >>> 0;
var hi = (lo < al ? 1 : 0) + ah + bh;
buf[pos] = hi >>> 0;
buf[pos + 1] = lo;
}
exports$2.sum64 = sum64$2;
function sum64_hi$2(ah, al, bh, bl) {
var lo = al + bl >>> 0;
var hi = (lo < al ? 1 : 0) + ah + bh;
return hi >>> 0;
}
exports$2.sum64_hi = sum64_hi$2;
function sum64_lo$2(ah, al, bh, bl) {
var lo = al + bl;
return lo >>> 0;
}
exports$2.sum64_lo = sum64_lo$2;
function sum64_4_hi$2(ah, al, bh, bl, ch, cl, dh, dl) {
var carry = 0;
var lo = al;
lo = lo + bl >>> 0;
carry += lo < al ? 1 : 0;
lo = lo + cl >>> 0;
carry += lo < cl ? 1 : 0;
lo = lo + dl >>> 0;
carry += lo < dl ? 1 : 0;
var hi = ah + bh + ch + dh + carry;
return hi >>> 0;
}
exports$2.sum64_4_hi = sum64_4_hi$2;
function sum64_4_lo$2(ah, al, bh, bl, ch, cl, dh, dl) {
var lo = al + bl + cl + dl;
return lo >>> 0;
}
exports$2.sum64_4_lo = sum64_4_lo$2;
function sum64_5_hi$2(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
var carry = 0;
var lo = al;
lo = lo + bl >>> 0;
carry += lo < al ? 1 : 0;
lo = lo + cl >>> 0;
carry += lo < cl ? 1 : 0;
lo = lo + dl >>> 0;
carry += lo < dl ? 1 : 0;
lo = lo + el >>> 0;
carry += lo < el ? 1 : 0;
var hi = ah + bh + ch + dh + eh + carry;
return hi >>> 0;
}
exports$2.sum64_5_hi = sum64_5_hi$2;
function sum64_5_lo$2(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
var lo = al + bl + cl + dl + el;
return lo >>> 0;
}
exports$2.sum64_5_lo = sum64_5_lo$2;
function rotr64_hi$2(ah, al, num) {
var r2 = al << 32 - num | ah >>> num;
return r2 >>> 0;
}
exports$2.rotr64_hi = rotr64_hi$2;
function rotr64_lo$2(ah, al, num) {
var r2 = ah << 32 - num | al >>> num;
return r2 >>> 0;
}
exports$2.rotr64_lo = rotr64_lo$2;
function shr64_hi$2(ah, al, num) {
return ah >>> num;
}
exports$2.shr64_hi = shr64_hi$2;
function shr64_lo$2(ah, al, num) {
var r2 = ah << 32 - num | al >>> num;
return r2 >>> 0;
}
exports$2.shr64_lo = shr64_lo$2;
exports$2.inherits = function(subClass, superClass) {
var F = function() {
};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.prototype.constructor = subClass;
};
const utils$n = {
...exports$2
};
function BlockHash$5() {
this.pending = null;
this.pendingTotal = 0;
this.blockSize = this.constructor.blockSize;
this.outSize = this.constructor.outSize;
this.hmacStrength = this.constructor.hmacStrength;
this.padLength = this.constructor.padLength / 8;
this.endian = "big";
this._delta8 = this.blockSize / 8;
this._delta32 = this.blockSize / 32;
}
BlockHash$5.prototype.update = function update(msg, enc) {
msg = utils$n.toArray(msg, enc);
if (!this.pending)
this.pending = msg;
else
this.pending = this.pending.concat(msg);
this.pendingTotal += msg.length;
if (this.pending.length >= this._delta8) {
msg = this.pending;
var r2 = msg.length % this._delta8;
this.pending = msg.slice(msg.length - r2, msg.length);
if (this.pending.length === 0)
this.pending = null;
msg = utils$n.join32(msg, 0, msg.length - r2, this.endian);
for (var i2 = 0; i2 < msg.length; i2 += this._delta32)
this._update(msg, i2, i2 + this._delta32);
}
return this;
};
BlockHash$5.prototype.digest = function digest(enc) {
this.update(this._pad());
return this._digest(enc);
};
BlockHash$5.prototype._pad = function pad() {
var len2 = this.pendingTotal;
var bytes = this._delta8;
var k = bytes - (len2 + this.padLength) % bytes;
var res = new Array(k + this.padLength);
res[0] = 128;
for (var i2 = 1; i2 < k; i2++)
res[i2] = 0;
len2 <<= 3;
if (this.endian === "big") {
for (var t2 = 8; t2 < this.padLength; t2++)
res[i2++] = 0;
res[i2++] = 0;
res[i2++] = 0;
res[i2++] = 0;
res[i2++] = 0;
res[i2++] = len2 >>> 24 & 255;
res[i2++] = len2 >>> 16 & 255;
res[i2++] = len2 >>> 8 & 255;
res[i2++] = len2 & 255;
} else {
res[i2++] = len2 & 255;
res[i2++] = len2 >>> 8 & 255;
res[i2++] = len2 >>> 16 & 255;
res[i2++] = len2 >>> 24 & 255;
res[i2++] = 0;
res[i2++] = 0;
res[i2++] = 0;
res[i2++] = 0;
for (t2 = 8; t2 < this.padLength; t2++)
res[i2++] = 0;
}
return res;
};
var rotr32$2 = utils$n.rotr32;
var exports$1 = {};
function ft_1$2(s2, x, y, z) {
if (s2 === 0)
return ch32$3(x, y, z);
if (s2 === 1 || s2 === 3)
return p32$1(x, y, z);
if (s2 === 2)
return maj32$3(x, y, z);
}
exports$1.ft_1 = ft_1$2;
function ch32$3(x, y, z) {
return x & y ^ ~x & z;
}
exports$1.ch32 = ch32$3;
function maj32$3(x, y, z) {
return x & y ^ x & z ^ y & z;
}
exports$1.maj32 = maj32$3;
function p32$1(x, y, z) {
return x ^ y ^ z;
}
exports$1.p32 = p32$1;
function s0_256$3(x) {
return rotr32$2(x, 2) ^ rotr32$2(x, 13) ^ rotr32$2(x, 22);
}
exports$1.s0_256 = s0_256$3;
function s1_256$3(x) {
return rotr32$2(x, 6) ^ rotr32$2(x, 11) ^ rotr32$2(x, 25);
}
exports$1.s1_256 = s1_256$3;
function g0_256$3(x) {
return rotr32$2(x, 7) ^ rotr32$2(x, 18) ^ x >>> 3;
}
exports$1.g0_256 = g0_256$3;
function g1_256$3(x) {
return rotr32$2(x, 17) ^ rotr32$2(x, 19) ^ x >>> 10;
}
exports$1.g1_256 = g1_256$3;
const shaCommon$2 = {
...exports$1
};
var sum32$4 = utils$n.sum32;
var sum32_4$3 = utils$n.sum32_4;
var sum32_5$3 = utils$n.sum32_5;
var ch32$2 = shaCommon$2.ch32;
var maj32$2 = shaCommon$2.maj32;
var s0_256$2 = shaCommon$2.s0_256;
var s1_256$2 = shaCommon$2.s1_256;
var g0_256$2 = shaCommon$2.g0_256;
var g1_256$2 = shaCommon$2.g1_256;
var sha256_K$1 = [
1116352408,
1899447441,
3049323471,
3921009573,
961987163,
1508970993,
2453635748,
2870763221,
3624381080,
310598401,
607225278,
1426881987,
1925078388,
2162078206,
2614888103,
3248222580,
3835390401,
4022224774,
264347078,
604807628,
770255983,
1249150122,
1555081692,
1996064986,
2554220882,
2821834349,
2952996808,
3210313671,
3336571891,
3584528711,
113926993,
338241895,
666307205,
773529912,
1294757372,
1396182291,
1695183700,
1986661051,
2177026350,
2456956037,
2730485921,
2820302411,
3259730800,
3345764771,
3516065817,
3600352804,
4094571909,
275423344,
430227734,
506948616,
659060556,
883997877,
958139571,
1322822218,
1537002063,
1747873779,
1955562222,
2024104815,
2227730452,
2361852424,
2428436474,
2756734187,
3204031479,
3329325298
];
function SHA256$2() {
if (!(this instanceof SHA256$2))
return new SHA256$2();
BlockHash$5.call(this);
this.h = [
1779033703,
3144134277,
1013904242,
2773480762,
1359893119,
2600822924,
528734635,
1541459225
];
this.k = sha256_K$1;
this.W = new Array(64);
}
utils$n.inherits(SHA256$2, BlockHash$5);
SHA256$2.blockSize = 512;
SHA256$2.outSize = 256;
SHA256$2.hmacStrength = 192;
SHA256$2.padLength = 64;
SHA256$2.prototype._update = function _update(msg, start2) {
var W = this.W;
for (var i2 = 0; i2 < 16; i2++)
W[i2] = msg[start2 + i2];
for (; i2 < W.length; i2++)
W[i2] = sum32_4$3(g1_256$2(W[i2 - 2]), W[i2 - 7], g0_256$2(W[i2 - 15]), W[i2 - 16]);
var a = this.h[0];
var b = this.h[1];
var c = this.h[2];
var d = this.h[3];
var e = this.h[4];
var f2 = this.h[5];
var g = this.h[6];
var h = this.h[7];
for (i2 = 0; i2 < W.length; i2++) {
var T1 = sum32_5$3(h, s1_256$2(e), ch32$2(e, f2, g), this.k[i2], W[i2]);
var T2 = sum32$4(s0_256$2(a), maj32$2(a, b, c));
h = g;
g = f2;
f2 = e;
e = sum32$4(d, T1);
d = c;
c = b;
b = a;
a = sum32$4(T1, T2);
}
this.h[0] = sum32$4(this.h[0], a);
this.h[1] = sum32$4(this.h[1], b);
this.h[2] = sum32$4(this.h[2], c);
this.h[3] = sum32$4(this.h[3], d);
this.h[4] = sum32$4(this.h[4], e);
this.h[5] = sum32$4(this.h[5], f2);
this.h[6] = sum32$4(this.h[6], g);
this.h[7] = sum32$4(this.h[7], h);
};
SHA256$2.prototype._digest = function digest(enc) {
if (enc === "hex")
return utils$n.toHex32(this.h, "big");
else
return utils$n.split32(this.h, "big");
};
function safeAdd(x, y) {
var lsw = (x & 65535) + (y & 65535);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return msw << 16 | lsw & 65535;
}
function bitRotateLeft(num, cnt) {
return num << cnt | num >>> 32 - cnt;
}
function md5cmn(q, a, b, x, s2, t2) {
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t2)), s2), b);
}
function md5ff(a, b, c, d, x, s2, t2) {
return md5cmn(b & c | ~b & d, a, b, x, s2, t2);
}
function md5gg(a, b, c, d, x, s2, t2) {
return md5cmn(b & d | c & ~d, a, b, x, s2, t2);
}
function md5hh(a, b, c, d, x, s2, t2) {
return md5cmn(b ^ c ^ d, a, b, x, s2, t2);
}
function md5ii(a, b, c, d, x, s2, t2) {
return md5cmn(c ^ (b | ~d), a, b, x, s2, t2);
}
function binlMD5(x, len2) {
x[len2 >> 5] |= 128 << len2 % 32;
x[(len2 + 64 >>> 9 << 4) + 14] = len2;
var i2;
var olda;
var oldb;
var oldc;
var oldd;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for (i2 = 0; i2 < x.length; i2 += 16) {
olda = a;
oldb = b;
oldc = c;
oldd = d;
a = md5ff(a, b, c, d, x[i2], 7, -680876936);
d = md5ff(d, a, b, c, x[i2 + 1], 12, -389564586);
c = md5ff(c, d, a, b, x[i2 + 2], 17, 606105819);
b = md5ff(b, c, d, a, x[i2 + 3], 22, -1044525330);
a = md5ff(a, b, c, d, x[i2 + 4], 7, -176418897);
d = md5ff(d, a, b, c, x[i2 + 5], 12, 1200080426);
c = md5ff(c, d, a, b, x[i2 + 6], 17, -1473231341);
b = md5ff(b, c, d, a, x[i2 + 7], 22, -45705983);
a = md5ff(a, b, c, d, x[i2 + 8], 7, 1770035416);
d = md5ff(d, a, b, c, x[i2 + 9], 12, -1958414417);
c = md5ff(c, d, a, b, x[i2 + 10], 17, -42063);
b = md5ff(b, c, d, a, x[i2 + 11], 22, -1990404162);
a = md5ff(a, b, c, d, x[i2 + 12], 7, 1804603682);
d = md5ff(d, a, b, c, x[i2 + 13], 12, -40341101);
c = md5ff(c, d, a, b, x[i2 + 14], 17, -1502002290);
b = md5ff(b, c, d, a, x[i2 + 15], 22, 1236535329);
a = md5gg(a, b, c, d, x[i2 + 1], 5, -165796510);
d = md5gg(d, a, b, c, x[i2 + 6], 9, -1069501632);
c = md5gg(c, d, a, b, x[i2 + 11], 14, 643717713);
b = md5gg(b, c, d, a, x[i2], 20, -373897302);
a = md5gg(a, b, c, d, x[i2 + 5], 5, -701558691);
d = md5gg(d, a, b, c, x[i2 + 10], 9, 38016083);
c = md5gg(c, d, a, b, x[i2 + 15], 14, -660478335);
b = md5gg(b, c, d, a, x[i2 + 4], 20, -405537848);
a = md5gg(a, b, c, d, x[i2 + 9], 5, 568446438);
d = md5gg(d, a, b, c, x[i2 + 14], 9, -1019803690);
c = md5gg(c, d, a, b, x[i2 + 3], 14, -187363961);
b = md5gg(b, c, d, a, x[i2 + 8], 20, 1163531501);
a = md5gg(a, b, c, d, x[i2 + 13], 5, -1444681467);
d = md5gg(d, a, b, c, x[i2 + 2], 9, -51403784);
c = md5gg(c, d, a, b, x[i2 + 7], 14, 1735328473);
b = md5gg(b, c, d, a, x[i2 + 12], 20, -1926607734);
a = md5hh(a, b, c, d, x[i2 + 5], 4, -378558);
d = md5hh(d, a, b, c, x[i2 + 8], 11, -2022574463);
c = md5hh(c, d, a, b, x[i2 + 11], 16, 1839030562);
b = md5hh(b, c, d, a, x[i2 + 14], 23, -35309556);
a = md5hh(a, b, c, d, x[i2 + 1], 4, -1530992060);
d = md5hh(d, a, b, c, x[i2 + 4], 11, 1272893353);
c = md5hh(c, d, a, b, x[i2 + 7], 16, -155497632);
b = md5hh(b, c, d, a, x[i2 + 10], 23, -1094730640);
a = md5hh(a, b, c, d, x[i2 + 13], 4, 681279174);
d = md5hh(d, a, b, c, x[i2], 11, -358537222);
c = md5hh(c, d, a, b, x[i2 + 3], 16, -722521979);
b = md5hh(b, c, d, a, x[i2 + 6], 23, 76029189);
a = md5hh(a, b, c, d, x[i2 + 9], 4, -640364487);
d = md5hh(d, a, b, c, x[i2 + 12], 11, -421815835);
c = md5hh(c, d, a, b, x[i2 + 15], 16, 530742520);
b = md5hh(b, c, d, a, x[i2 + 2], 23, -995338651);
a = md5ii(a, b, c, d, x[i2], 6, -198630844);
d = md5ii(d, a, b, c, x[i2 + 7], 10, 1126891415);
c = md5ii(c, d, a, b, x[i2 + 14], 15, -1416354905);
b = md5ii(b, c, d, a, x[i2 + 5], 21, -57434055);
a = md5ii(a, b, c, d, x[i2 + 12], 6, 1700485571);
d = md5ii(d, a, b, c, x[i2 + 3], 10, -1894986606);
c = md5ii(c, d, a, b, x[i2 + 10], 15, -1051523);
b = md5ii(b, c, d, a, x[i2 + 1], 21, -2054922799);
a = md5ii(a, b, c, d, x[i2 + 8], 6, 1873313359);
d = md5ii(d, a, b, c, x[i2 + 15], 10, -30611744);
c = md5ii(c, d, a, b, x[i2 + 6], 15, -1560198380);
b = md5ii(b, c, d, a, x[i2 + 13], 21, 1309151649);
a = md5ii(a, b, c, d, x[i2 + 4], 6, -145523070);
d = md5ii(d, a, b, c, x[i2 + 11], 10, -1120210379);
c = md5ii(c, d, a, b, x[i2 + 2], 15, 718787259);
b = md5ii(b, c, d, a, x[i2 + 9], 21, -343485551);
a = safeAdd(a, olda);
b = safeAdd(b, oldb);
c = safeAdd(c, oldc);
d = safeAdd(d, oldd);
}
return [a, b, c, d];
}
function binl2rstr(input) {
var i2;
var output = "";
var length32 = input.length * 32;
for (i2 = 0; i2 < length32; i2 += 8) {
output += String.fromCharCode(input[i2 >> 5] >>> i2 % 32 & 255);
}
return output;
}
function rstr2binl(input) {
var i2;
var output = [];
output[(input.length >> 2) - 1] = void 0;
for (i2 = 0; i2 < output.length; i2 += 1) {
output[i2] = 0;
}
var length8 = input.length * 8;
for (i2 = 0; i2 < length8; i2 += 8) {
output[i2 >> 5] |= (input.charCodeAt(i2 / 8) & 255) << i2 % 32;
}
return output;
}
function rstrMD5(s2) {
return binl2rstr(binlMD5(rstr2binl(s2), s2.length * 8));
}
function rstrHMACMD5(key2, data) {
var i2;
var bkey = rstr2binl(key2);
var ipad = [];
var opad = [];
var hash2;
ipad[15] = opad[15] = void 0;
if (bkey.length > 16) {
bkey = binlMD5(bkey, key2.length * 8);
}
for (i2 = 0; i2 < 16; i2 += 1) {
ipad[i2] = bkey[i2] ^ 909522486;
opad[i2] = bkey[i2] ^ 1549556828;
}
hash2 = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binlMD5(opad.concat(hash2), 512 + 128));
}
function rstr2hex(input) {
var hexTab = "0123456789abcdef";
var output = "";
var x;
var i2;
for (i2 = 0; i2 < input.length; i2 += 1) {
x = input.charCodeAt(i2);
output += hexTab.charAt(x >>> 4 & 15) + hexTab.charAt(x & 15);
}
return output;
}
function str2rstrUTF8(input) {
return unescape(encodeURIComponent(input));
}
function rawMD5(s2) {
return rstrMD5(str2rstrUTF8(s2));
}
function hexMD5(s2) {
return rstr2hex(rawMD5(s2));
}
function rawHMACMD5(k, d) {
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
}
function hexHMACMD5(k, d) {
return rstr2hex(rawHMACMD5(k, d));
}
function md5(string, key2, raw) {
if (!key2) {
if (!raw) {
return hexMD5(string);
}
return rawMD5(string);
}
if (!raw) {
return hexHMACMD5(key2, string);
}
return rawHMACMD5(key2, string);
}
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getAugmentedNamespace(n) {
if (n.__esModule)
return n;
var f2 = n.default;
if (typeof f2 == "function") {
var a = function a2() {
if (this instanceof a2) {
var args = [null];
args.push.apply(args, arguments);
var Ctor = Function.bind.apply(f2, args);
return new Ctor();
}
return f2.apply(this, arguments);
};
a.prototype = f2.prototype;
} else
a = {};
Object.defineProperty(a, "__esModule", { value: true });
Object.keys(n).forEach(function(k) {
var d = Object.getOwnPropertyDescriptor(n, k);
Object.defineProperty(a, k, d.get ? d : {
enumerable: true,
get: function() {
return n[k];
}
});
});
return a;
}
const errors = {
IMPOSSIBLE_CASE: "Impossible case. Please create issue.",
TWEAK_ADD: "The tweak was out of range or the resulted private key is invalid",
TWEAK_MUL: "The tweak was out of range or equal to zero",
CONTEXT_RANDOMIZE_UNKNOW: "Unknow error on context randomization",
SECKEY_INVALID: "Private Key is invalid",
PUBKEY_PARSE: "Public Key could not be parsed",
PUBKEY_SERIALIZE: "Public Key serialization error",
PUBKEY_COMBINE: "The sum of the public keys is not valid",
SIG_PARSE: "Signature could not be parsed",
SIGN: "The nonce generation function failed, or the private key was invalid",
RECOVER: "Public key could not be recover",
ECDH: "Scalar was invalid (zero or overflow)"
};
function assert$g(cond, msg) {
if (!cond)
throw new Error(msg);
}
function isUint8Array(name2, value, length) {
assert$g(value instanceof Uint8Array, `Expected ${name2} to be an Uint8Array`);
if (length !== void 0) {
if (Array.isArray(length)) {
const numbers = length.join(", ");
const msg = `Expected ${name2} to be an Uint8Array with length [${numbers}]`;
assert$g(length.includes(value.length), msg);
} else {
const msg = `Expected ${name2} to be an Uint8Array with length ${length}`;
assert$g(value.length === length, msg);
}
}
}
function isCompressed(value) {
assert$g(toTypeString(value) === "Boolean", "Expected compressed to be a Boolean");
}
function getAssertedOutput(output = (len2) => new Uint8Array(len2), length) {
if (typeof output === "function")
output = output(length);
isUint8Array("output", output, length);
return output;
}
function toTypeString(value) {
return Object.prototype.toString.call(value).slice(8, -1);
}
var lib = (secp256k12) => {
return {
contextRandomize(seed) {
assert$g(
seed === null || seed instanceof Uint8Array,
"Expected seed to be an Uint8Array or null"
);
if (seed !== null)
isUint8Array("seed", seed, 32);
switch (secp256k12.contextRandomize(seed)) {
case 1:
throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW);
}
},
privateKeyVerify(seckey) {
isUint8Array("private key", seckey, 32);
return secp256k12.privateKeyVerify(seckey) === 0;
},
privateKeyNegate(seckey) {
isUint8Array("private key", seckey, 32);
switch (secp256k12.privateKeyNegate(seckey)) {
case 0:
return seckey;
case 1:
throw new Error(errors.IMPOSSIBLE_CASE);
}
},
privateKeyTweakAdd(seckey, tweak) {
isUint8Array("private key", seckey, 32);
isUint8Array("tweak", tweak, 32);
switch (secp256k12.privateKeyTweakAdd(seckey, tweak)) {
case 0:
return seckey;
case 1:
throw new Error(errors.TWEAK_ADD);
}
},
privateKeyTweakMul(seckey, tweak) {
isUint8Array("private key", seckey, 32);
isUint8Array("tweak", tweak, 32);
switch (secp256k12.privateKeyTweakMul(seckey, tweak)) {
case 0:
return seckey;
case 1:
throw new Error(errors.TWEAK_MUL);
}
},
publicKeyVerify(pubkey) {
isUint8Array("public key", pubkey, [33, 65]);
return secp256k12.publicKeyVerify(pubkey) === 0;
},
publicKeyCreate(seckey, compressed = true, output) {
isUint8Array("private key", seckey, 32);
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.publicKeyCreate(output, seckey)) {
case 0:
return output;
case 1:
throw new Error(errors.SECKEY_INVALID);
case 2:
throw new Error(errors.PUBKEY_SERIALIZE);
}
},
publicKeyConvert(pubkey, compressed = true, output) {
isUint8Array("public key", pubkey, [33, 65]);
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.publicKeyConvert(output, pubkey)) {
case 0:
return output;
case 1:
throw new Error(errors.PUBKEY_PARSE);
case 2:
throw new Error(errors.PUBKEY_SERIALIZE);
}
},
publicKeyNegate(pubkey, compressed = true, output) {
isUint8Array("public key", pubkey, [33, 65]);
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.publicKeyNegate(output, pubkey)) {
case 0:
return output;
case 1:
throw new Error(errors.PUBKEY_PARSE);
case 2:
throw new Error(errors.IMPOSSIBLE_CASE);
case 3:
throw new Error(errors.PUBKEY_SERIALIZE);
}
},
publicKeyCombine(pubkeys, compressed = true, output) {
assert$g(Array.isArray(pubkeys), "Expected public keys to be an Array");
assert$g(pubkeys.length > 0, "Expected public keys array will have more than zero items");
for (const pubkey of pubkeys) {
isUint8Array("public key", pubkey, [33, 65]);
}
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.publicKeyCombine(output, pubkeys)) {
case 0:
return output;
case 1:
throw new Error(errors.PUBKEY_PARSE);
case 2:
throw new Error(errors.PUBKEY_COMBINE);
case 3:
throw new Error(errors.PUBKEY_SERIALIZE);
}
},
publicKeyTweakAdd(pubkey, tweak, compressed = true, output) {
isUint8Array("public key", pubkey, [33, 65]);
isUint8Array("tweak", tweak, 32);
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.publicKeyTweakAdd(output, pubkey, tweak)) {
case 0:
return output;
case 1:
throw new Error(errors.PUBKEY_PARSE);
case 2:
throw new Error(errors.TWEAK_ADD);
}
},
publicKeyTweakMul(pubkey, tweak, compressed = true, output) {
isUint8Array("public key", pubkey, [33, 65]);
isUint8Array("tweak", tweak, 32);
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.publicKeyTweakMul(output, pubkey, tweak)) {
case 0:
return output;
case 1:
throw new Error(errors.PUBKEY_PARSE);
case 2:
throw new Error(errors.TWEAK_MUL);
}
},
signatureNormalize(sig) {
isUint8Array("signature", sig, 64);
switch (secp256k12.signatureNormalize(sig)) {
case 0:
return sig;
case 1:
throw new Error(errors.SIG_PARSE);
}
},
signatureExport(sig, output) {
isUint8Array("signature", sig, 64);
output = getAssertedOutput(output, 72);
const obj = { output, outputlen: 72 };
switch (secp256k12.signatureExport(obj, sig)) {
case 0:
return output.slice(0, obj.outputlen);
case 1:
throw new Error(errors.SIG_PARSE);
case 2:
throw new Error(errors.IMPOSSIBLE_CASE);
}
},
signatureImport(sig, output) {
isUint8Array("signature", sig);
output = getAssertedOutput(output, 64);
switch (secp256k12.signatureImport(output, sig)) {
case 0:
return output;
case 1:
throw new Error(errors.SIG_PARSE);
case 2:
throw new Error(errors.IMPOSSIBLE_CASE);
}
},
ecdsaSign(msg32, seckey, options = {}, output) {
isUint8Array("message", msg32, 32);
isUint8Array("private key", seckey, 32);
assert$g(toTypeString(options) === "Object", "Expected options to be an Object");
if (options.data !== void 0)
isUint8Array("options.data", options.data);
if (options.noncefn !== void 0)
assert$g(toTypeString(options.noncefn) === "Function", "Expected options.noncefn to be a Function");
output = getAssertedOutput(output, 64);
const obj = { signature: output, recid: null };
switch (secp256k12.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {
case 0:
return obj;
case 1:
throw new Error(errors.SIGN);
case 2:
throw new Error(errors.IMPOSSIBLE_CASE);
}
},
ecdsaVerify(sig, msg32, pubkey) {
isUint8Array("signature", sig, 64);
isUint8Array("message", msg32, 32);
isUint8Array("public key", pubkey, [33, 65]);
switch (secp256k12.ecdsaVerify(sig, msg32, pubkey)) {
case 0:
return true;
case 3:
return false;
case 1:
throw new Error(errors.SIG_PARSE);
case 2:
throw new Error(errors.PUBKEY_PARSE);
}
},
ecdsaRecover(sig, recid, msg32, compressed = true, output) {
isUint8Array("signature", sig, 64);
assert$g(
toTypeString(recid) === "Number" && recid >= 0 && recid <= 3,
"Expected recovery id to be a Number within interval [0, 3]"
);
isUint8Array("message", msg32, 32);
isCompressed(compressed);
output = getAssertedOutput(output, compressed ? 33 : 65);
switch (secp256k12.ecdsaRecover(output, sig, recid, msg32)) {
case 0:
return output;
case 1:
throw new Error(errors.SIG_PARSE);
case 2:
throw new Error(errors.RECOVER);
case 3:
throw new Error(errors.IMPOSSIBLE_CASE);
}
},
ecdh(pubkey, seckey, options = {}, output) {
isUint8Array("public key", pubkey, [33, 65]);
isUint8Array("private key", seckey, 32);
assert$g(toTypeString(options) === "Object", "Expected options to be an Object");
if (options.data !== void 0)
isUint8Array("options.data", options.data);
if (options.hashfn !== void 0) {
assert$g(toTypeString(options.hashfn) === "Function", "Expected options.hashfn to be a Function");
if (options.xbuf !== void 0)
isUint8Array("options.xbuf", options.xbuf, 32);
if (options.ybuf !== void 0)
isUint8Array("options.ybuf", options.ybuf, 32);
isUint8Array("output", output);
} else {
output = getAssertedOutput(output, 32);
}
switch (secp256k12.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {
case 0:
return output;
case 1:
throw new Error(errors.PUBKEY_PARSE);
case 2:
throw new Error(errors.ECDH);
}
}
};
};
var elliptic$2 = {};
const name = "elliptic";
const version = "6.5.4";
const description = "EC cryptography";
const main = "lib/elliptic.js";
const files = [
"lib"
];
const scripts = {
lint: "eslint lib test",
"lint:fix": "npm run lint -- --fix",
unit: "istanbul test _mocha --reporter=spec test/index.js",
test: "npm run lint && npm run unit",
version: "grunt dist && git add dist/"
};
const repository = {
type: "git",
url: "
[email protected]:indutny/elliptic"
};
const keywords = [
"EC",
"Elliptic",
"curve",
"Cryptography"
];
const author = "Fedor Indutny
";
const license = "MIT";
const bugs = {
url: "https://github.com/indutny/elliptic/issues"
};
const homepage = "https://github.com/indutny/elliptic";
const devDependencies = {
brfs: "^2.0.2",
coveralls: "^3.1.0",
eslint: "^7.6.0",
grunt: "^1.2.1",
"grunt-browserify": "^5.3.0",
"grunt-cli": "^1.3.2",
"grunt-contrib-connect": "^3.0.0",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-uglify": "^5.0.0",
"grunt-mocha-istanbul": "^5.0.2",
"grunt-saucelabs": "^9.0.1",
istanbul: "^0.4.5",
mocha: "^8.0.1"
};
const dependencies = {
"bn.js": "^4.11.9",
brorand: "^1.1.0",
"hash.js": "^1.0.0",
"hmac-drbg": "^1.0.1",
inherits: "^2.0.4",
"minimalistic-assert": "^1.0.1",
"minimalistic-crypto-utils": "^1.0.1"
};
const require$$0$1 = {
name,
version,
description,
main,
files,
scripts,
repository,
keywords,
author,
license,
bugs,
homepage,
devDependencies,
dependencies
};
var utils$m = {};
var bnExports = {};
var bn = {
get exports() {
return bnExports;
},
set exports(v) {
bnExports = v;
}
};
const __viteBrowserExternal = {};
const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
default: __viteBrowserExternal
}, Symbol.toStringTag, { value: "Module" }));
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);
(function(module) {
(function(module2, exports) {
function assert2(val, msg) {
if (!val)
throw new Error(msg || "Assertion failed");
}
function inherits2(ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function() {
};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
function BN2(number, base2, endian) {
if (BN2.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
this.red = null;
if (number !== null) {
if (base2 === "le" || base2 === "be") {
endian = base2;
base2 = 10;
}
this._init(number || 0, base2 || 10, endian || "be");
}
}
if (typeof module2 === "object") {
module2.exports = BN2;
} else {
exports.BN = BN2;
}
BN2.BN = BN2;
BN2.wordSize = 26;
var Buffer3;
try {
if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") {
Buffer3 = window.Buffer;
} else {
Buffer3 = require$$0.Buffer;
}
} catch (e) {
}
BN2.isBN = function isBN(num) {
if (num instanceof BN2) {
return true;
}
return num !== null && typeof num === "object" && num.constructor.wordSize === BN2.wordSize && Array.isArray(num.words);
};
BN2.max = function max(left, right) {
if (left.cmp(right) > 0)
return left;
return right;
};
BN2.min = function min(left, right) {
if (left.cmp(right) < 0)
return left;
return right;
};
BN2.prototype._init = function init(number, base2, endian) {
if (typeof number === "number") {
return this._initNumber(number, base2, endian);
}
if (typeof number === "object") {
return this._initArray(number, base2, endian);
}
if (base2 === "hex") {
base2 = 16;
}
assert2(base2 === (base2 | 0) && base2 >= 2 && base2 <= 36);
number = number.toString().replace(/\s+/g, "");
var start2 = 0;
if (number[0] === "-") {
start2++;
this.negative = 1;
}
if (start2 < number.length) {
if (base2 === 16) {
this._parseHex(number, start2, endian);
} else {
this._parseBase(number, base2, start2);
if (endian === "le") {
this._initArray(this.toArray(), base2, endian);
}
}
}
};
BN2.prototype._initNumber = function _initNumber(number, base2, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 67108864) {
this.words = [number & 67108863];
this.length = 1;
} else if (number < 4503599627370496) {
this.words = [
number & 67108863,
number / 67108864 & 67108863
];
this.length = 2;
} else {
assert2(number < 9007199254740992);
this.words = [
number & 67108863,
number / 67108864 & 67108863,
1
];
this.length = 3;
}
if (endian !== "le")
return;
this._initArray(this.toArray(), base2, endian);
};
BN2.prototype._initArray = function _initArray(number, base2, endian) {
assert2(typeof number.length === "number");
if (number.length <= 0) {
this.words = [0];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i2 = 0; i2 < this.length; i2++) {
this.words[i2] = 0;
}
var j, w;
var off = 0;
if (endian === "be") {
for (i2 = number.length - 1, j = 0; i2 >= 0; i2 -= 3) {
w = number[i2] | number[i2 - 1] << 8 | number[i2 - 2] << 16;
this.words[j] |= w << off & 67108863;
this.words[j + 1] = w >>> 26 - off & 67108863;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === "le") {
for (i2 = 0, j = 0; i2 < number.length; i2 += 3) {
w = number[i2] | number[i2 + 1] << 8 | number[i2 + 2] << 16;
this.words[j] |= w << off & 67108863;
this.words[j + 1] = w >>> 26 - off & 67108863;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits(string, index) {
var c = string.charCodeAt(index);
if (c >= 65 && c <= 70) {
return c - 55;
} else if (c >= 97 && c <= 102) {
return c - 87;
} else {
return c - 48 & 15;
}
}
function parseHexByte(string, lowerBound, index) {
var r2 = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r2 |= parseHex4Bits(string, index - 1) << 4;
}
return r2;
}
BN2.prototype._parseHex = function _parseHex(number, start2, endian) {
this.length = Math.ceil((number.length - start2) / 6);
this.words = new Array(this.length);
for (var i2 = 0; i2 < this.length; i2++) {
this.words[i2] = 0;
}
var off = 0;
var j = 0;
var w;
if (endian === "be") {
for (i2 = number.length - 1; i2 >= start2; i2 -= 2) {
w = parseHexByte(number, start2, i2) << off;
this.words[j] |= w & 67108863;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start2;
for (i2 = parseLength % 2 === 0 ? start2 + 1 : start2; i2 < number.length; i2 += 2) {
w = parseHexByte(number, start2, i2) << off;
this.words[j] |= w & 67108863;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase(str, start2, end, mul) {
var r2 = 0;
var len2 = Math.min(str.length, end);
for (var i2 = start2; i2 < len2; i2++) {
var c = str.charCodeAt(i2) - 48;
r2 *= mul;
if (c >= 49) {
r2 += c - 49 + 10;
} else if (c >= 17) {
r2 += c - 17 + 10;
} else {
r2 += c;
}
}
return r2;
}
BN2.prototype._parseBase = function _parseBase(number, base2, start2) {
this.words = [0];
this.length = 1;
for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base2) {
limbLen++;
}
limbLen--;
limbPow = limbPow / base2 | 0;
var total = number.length - start2;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start2;
var word = 0;
for (var i2 = start2; i2 < end; i2 += limbLen) {
word = parseBase(number, i2, i2 + limbLen, base2);
this.imuln(limbPow);
if (this.words[0] + word < 67108864) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i2, number.length, base2);
for (i2 = 0; i2 < mod; i2++) {
pow *= base2;
}
this.imuln(pow);
if (this.words[0] + word < 67108864) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN2.prototype.copy = function copy2(dest) {
dest.words = new Array(this.length);
for (var i2 = 0; i2 < this.length; i2++) {
dest.words[i2] = this.words[i2];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN2.prototype.clone = function clone() {
var r2 = new BN2(null);
this.copy(r2);
return r2;
};
BN2.prototype._expand = function _expand(size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
BN2.prototype.strip = function strip() {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN2.prototype._normSign = function _normSign() {
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN2.prototype.inspect = function inspect() {
return (this.red ? "";
};
var zeros = [
"",
"0",
"00",
"000",
"0000",
"00000",
"000000",
"0000000",
"00000000",
"000000000",
"0000000000",
"00000000000",
"000000000000",
"0000000000000",
"00000000000000",
"000000000000000",
"0000000000000000",
"00000000000000000",
"000000000000000000",
"0000000000000000000",
"00000000000000000000",
"000000000000000000000",
"0000000000000000000000",
"00000000000000000000000",
"000000000000000000000000",
"0000000000000000000000000"
];
var groupSizes = [
0,
0,
25,
16,
12,
11,
10,
9,
8,
8,
7,
7,
7,
7,
6,
6,
6,
6,
6,
6,
6,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5
];
var groupBases = [
0,
0,
33554432,
43046721,
16777216,
48828125,
60466176,
40353607,
16777216,
43046721,
1e7,
19487171,
35831808,
62748517,
7529536,
11390625,
16777216,
24137569,
34012224,
47045881,
64e6,
4084101,
5153632,
6436343,
7962624,
9765625,
11881376,
14348907,
17210368,
20511149,
243e5,
28629151,
33554432,
39135393,
45435424,
52521875,
60466176
];
BN2.prototype.toString = function toString2(base2, padding) {
base2 = base2 || 10;
padding = padding | 0 || 1;
var out;
if (base2 === 16 || base2 === "hex") {
out = "";
var off = 0;
var carry = 0;
for (var i2 = 0; i2 < this.length; i2++) {
var w = this.words[i2];
var word = ((w << off | carry) & 16777215).toString(16);
carry = w >>> 24 - off & 16777215;
if (carry !== 0 || i2 !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i2--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = "0" + out;
}
if (this.negative !== 0) {
out = "-" + out;
}
return out;
}
if (base2 === (base2 | 0) && base2 >= 2 && base2 <= 36) {
var groupSize = groupSizes[base2];
var groupBase = groupBases[base2];
out = "";
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r2 = c.modn(groupBase).toString(base2);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r2.length] + r2 + out;
} else {
out = r2 + out;
}
}
if (this.isZero()) {
out = "0" + out;
}
while (out.length % padding !== 0) {
out = "0" + out;
}
if (this.negative !== 0) {
out = "-" + out;
}
return out;
}
assert2(false, "Base should be between 2 and 36");
};
BN2.prototype.toNumber = function toNumber() {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 67108864;
} else if (this.length === 3 && this.words[2] === 1) {
ret += 4503599627370496 + this.words[1] * 67108864;
} else if (this.length > 2) {
assert2(false, "Number can only safely store up to 53 bits");
}
return this.negative !== 0 ? -ret : ret;
};
BN2.prototype.toJSON = function toJSON() {
return this.toString(16);
};
BN2.prototype.toBuffer = function toBuffer(endian, length) {
assert2(typeof Buffer3 !== "undefined");
return this.toArrayLike(Buffer3, endian, length);
};
BN2.prototype.toArray = function toArray2(endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN2.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
var byteLength2 = this.byteLength();
var reqLength = length || Math.max(1, byteLength2);
assert2(byteLength2 <= reqLength, "byte array longer than desired length");
assert2(reqLength > 0, "Requested array length <= 0");
this.strip();
var littleEndian = endian === "le";
var res = new ArrayType(reqLength);
var b, i2;
var q = this.clone();
if (!littleEndian) {
for (i2 = 0; i2 < reqLength - byteLength2; i2++) {
res[i2] = 0;
}
for (i2 = 0; !q.isZero(); i2++) {
b = q.andln(255);
q.iushrn(8);
res[reqLength - i2 - 1] = b;
}
} else {
for (i2 = 0; !q.isZero(); i2++) {
b = q.andln(255);
q.iushrn(8);
res[i2] = b;
}
for (; i2 < reqLength; i2++) {
res[i2] = 0;
}
}
return res;
};
if (Math.clz32) {
BN2.prototype._countBits = function _countBits(w) {
return 32 - Math.clz32(w);
};
} else {
BN2.prototype._countBits = function _countBits(w) {
var t2 = w;
var r2 = 0;
if (t2 >= 4096) {
r2 += 13;
t2 >>>= 13;
}
if (t2 >= 64) {
r2 += 7;
t2 >>>= 7;
}
if (t2 >= 8) {
r2 += 4;
t2 >>>= 4;
}
if (t2 >= 2) {
r2 += 2;
t2 >>>= 2;
}
return r2 + t2;
};
}
BN2.prototype._zeroBits = function _zeroBits(w) {
if (w === 0)
return 26;
var t2 = w;
var r2 = 0;
if ((t2 & 8191) === 0) {
r2 += 13;
t2 >>>= 13;
}
if ((t2 & 127) === 0) {
r2 += 7;
t2 >>>= 7;
}
if ((t2 & 15) === 0) {
r2 += 4;
t2 >>>= 4;
}
if ((t2 & 3) === 0) {
r2 += 2;
t2 >>>= 2;
}
if ((t2 & 1) === 0) {
r2++;
}
return r2;
};
BN2.prototype.bitLength = function bitLength() {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray(num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = bit / 26 | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & 1 << wbit) >>> wbit;
}
return w;
}
BN2.prototype.zeroBits = function zeroBits() {
if (this.isZero())
return 0;
var r2 = 0;
for (var i2 = 0; i2 < this.length; i2++) {
var b = this._zeroBits(this.words[i2]);
r2 += b;
if (b !== 26)
break;
}
return r2;
};
BN2.prototype.byteLength = function byteLength2() {
return Math.ceil(this.bitLength() / 8);
};
BN2.prototype.toTwos = function toTwos(width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN2.prototype.fromTwos = function fromTwos(width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN2.prototype.isNeg = function isNeg() {
return this.negative !== 0;
};
BN2.prototype.neg = function neg() {
return this.clone().ineg();
};
BN2.prototype.ineg = function ineg() {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
BN2.prototype.iuor = function iuor(num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i2 = 0; i2 < num.length; i2++) {
this.words[i2] = this.words[i2] | num.words[i2];
}
return this.strip();
};
BN2.prototype.ior = function ior(num) {
assert2((this.negative | num.negative) === 0);
return this.iuor(num);
};
BN2.prototype.or = function or(num) {
if (this.length > num.length)
return this.clone().ior(num);
return num.clone().ior(this);
};
BN2.prototype.uor = function uor(num) {
if (this.length > num.length)
return this.clone().iuor(num);
return num.clone().iuor(this);
};
BN2.prototype.iuand = function iuand(num) {
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i2 = 0; i2 < b.length; i2++) {
this.words[i2] = this.words[i2] & num.words[i2];
}
this.length = b.length;
return this.strip();
};
BN2.prototype.iand = function iand(num) {
assert2((this.negative | num.negative) === 0);
return this.iuand(num);
};
BN2.prototype.and = function and(num) {
if (this.length > num.length)
return this.clone().iand(num);
return num.clone().iand(this);
};
BN2.prototype.uand = function uand(num) {
if (this.length > num.length)
return this.clone().iuand(num);
return num.clone().iuand(this);
};
BN2.prototype.iuxor = function iuxor(num) {
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i2 = 0; i2 < b.length; i2++) {
this.words[i2] = a.words[i2] ^ b.words[i2];
}
if (this !== a) {
for (; i2 < a.length; i2++) {
this.words[i2] = a.words[i2];
}
}
this.length = a.length;
return this.strip();
};
BN2.prototype.ixor = function ixor(num) {
assert2((this.negative | num.negative) === 0);
return this.iuxor(num);
};
BN2.prototype.xor = function xor(num) {
if (this.length > num.length)
return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN2.prototype.uxor = function uxor(num) {
if (this.length > num.length)
return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
BN2.prototype.inotn = function inotn(width) {
assert2(typeof width === "number" && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
for (var i2 = 0; i2 < bytesNeeded; i2++) {
this.words[i2] = ~this.words[i2] & 67108863;
}
if (bitsLeft > 0) {
this.words[i2] = ~this.words[i2] & 67108863 >> 26 - bitsLeft;
}
return this.strip();
};
BN2.prototype.notn = function notn(width) {
return this.clone().inotn(width);
};
BN2.prototype.setn = function setn(bit, val) {
assert2(typeof bit === "number" && bit >= 0);
var off = bit / 26 | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | 1 << wbit;
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
BN2.prototype.iadd = function iadd(num) {
var r2;
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r2 = this.isub(num);
this.negative ^= 1;
return this._normSign();
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r2 = this.isub(num);
num.negative = 1;
return r2._normSign();
}
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i2 = 0; i2 < b.length; i2++) {
r2 = (a.words[i2] | 0) + (b.words[i2] | 0) + carry;
this.words[i2] = r2 & 67108863;
carry = r2 >>> 26;
}
for (; carry !== 0 && i2 < a.length; i2++) {
r2 = (a.words[i2] | 0) + carry;
this.words[i2] = r2 & 67108863;
carry = r2 >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
} else if (a !== this) {
for (; i2 < a.length; i2++) {
this.words[i2] = a.words[i2];
}
}
return this;
};
BN2.prototype.add = function add(num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length)
return this.clone().iadd(num);
return num.clone().iadd(this);
};
BN2.prototype.isub = function isub(num) {
if (num.negative !== 0) {
num.negative = 0;
var r2 = this.iadd(num);
num.negative = 1;
return r2._normSign();
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
var cmp = this.cmp(num);
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i2 = 0; i2 < b.length; i2++) {
r2 = (a.words[i2] | 0) - (b.words[i2] | 0) + carry;
carry = r2 >> 26;
this.words[i2] = r2 & 67108863;
}
for (; carry !== 0 && i2 < a.length; i2++) {
r2 = (a.words[i2] | 0) + carry;
carry = r2 >> 26;
this.words[i2] = r2 & 67108863;
}
if (carry === 0 && i2 < a.length && a !== this) {
for (; i2 < a.length; i2++) {
this.words[i2] = a.words[i2];
}
}
this.length = Math.max(this.length, i2);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
BN2.prototype.sub = function sub(num) {
return this.clone().isub(num);
};
function smallMulTo(self2, num, out) {
out.negative = num.negative ^ self2.negative;
var len2 = self2.length + num.length | 0;
out.length = len2;
len2 = len2 - 1 | 0;
var a = self2.words[0] | 0;
var b = num.words[0] | 0;
var r2 = a * b;
var lo = r2 & 67108863;
var carry = r2 / 67108864 | 0;
out.words[0] = lo;
for (var k = 1; k < len2; k++) {
var ncarry = carry >>> 26;
var rword = carry & 67108863;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) {
var i2 = k - j | 0;
a = self2.words[i2] | 0;
b = num.words[j] | 0;
r2 = a * b + rword;
ncarry += r2 / 67108864 | 0;
rword = r2 & 67108863;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
var comb10MulTo = function comb10MulTo2(self2, num, out) {
var a = self2.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 8191;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 8191;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 8191;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 8191;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 8191;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 8191;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 8191;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 8191;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 8191;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 8191;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 8191;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 8191;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 8191;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 8191;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 8191;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 8191;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 8191;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 8191;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 8191;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 8191;
var bh9 = b9 >>> 13;
out.negative = self2.negative ^ num.negative;
out.length = 19;
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = mid + Math.imul(ah0, bl0) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
w0 &= 67108863;
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = mid + Math.imul(ah1, bl0) | 0;
hi = Math.imul(ah1, bh0);
lo = lo + Math.imul(al0, bl1) | 0;
mid = mid + Math.imul(al0, bh1) | 0;
mid = mid + Math.imul(ah0, bl1) | 0;
hi = hi + Math.imul(ah0, bh1) | 0;
var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
w1 &= 67108863;
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = mid + Math.imul(ah2, bl0) | 0;
hi = Math.imul(ah2, bh0);
lo = lo + Math.imul(al1, bl1) | 0;
mid = mid + Math.imul(al1, bh1) | 0;
mid = mid + Math.imul(ah1, bl1) | 0;
hi = hi + Math.imul(ah1, bh1) | 0;
lo = lo + Math.imul(al0, bl2) | 0;
mid = mid + Math.imul(al0, bh2) | 0;
mid = mid + Math.imul(ah0, bl2) | 0;
hi = hi + Math.imul(ah0, bh2) | 0;
var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
w2 &= 67108863;
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = mid + Math.imul(ah3, bl0) | 0;
hi = Math.imul(ah3, bh0);
lo = lo + Math.imul(al2, bl1) | 0;
mid = mid + Math.imul(al2, bh1) | 0;
mid = mid + Math.imul(ah2, bl1) | 0;
hi = hi + Math.imul(ah2, bh1) | 0;
lo = lo + Math.imul(al1, bl2) | 0;
mid = mid + Math.imul(al1, bh2) | 0;
mid = mid + Math.imul(ah1, bl2) | 0;
hi = hi + Math.imul(ah1, bh2) | 0;
lo = lo + Math.imul(al0, bl3) | 0;
mid = mid + Math.imul(al0, bh3) | 0;
mid = mid + Math.imul(ah0, bl3) | 0;
hi = hi + Math.imul(ah0, bh3) | 0;
var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
w3 &= 67108863;
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = mid + Math.imul(ah4, bl0) | 0;
hi = Math.imul(ah4, bh0);
lo = lo + Math.imul(al3, bl1) | 0;
mid = mid + Math.imul(al3, bh1) | 0;
mid = mid + Math.imul(ah3, bl1) | 0;
hi = hi + Math.imul(ah3, bh1) | 0;
lo = lo + Math.imul(al2, bl2) | 0;
mid = mid + Math.imul(al2, bh2) | 0;
mid = mid + Math.imul(ah2, bl2) | 0;
hi = hi + Math.imul(ah2, bh2) | 0;
lo = lo + Math.imul(al1, bl3) | 0;
mid = mid + Math.imul(al1, bh3) | 0;
mid = mid + Math.imul(ah1, bl3) | 0;
hi = hi + Math.imul(ah1, bh3) | 0;
lo = lo + Math.imul(al0, bl4) | 0;
mid = mid + Math.imul(al0, bh4) | 0;
mid = mid + Math.imul(ah0, bl4) | 0;
hi = hi + Math.imul(ah0, bh4) | 0;
var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
w4 &= 67108863;
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = mid + Math.imul(ah5, bl0) | 0;
hi = Math.imul(ah5, bh0);
lo = lo + Math.imul(al4, bl1) | 0;
mid = mid + Math.imul(al4, bh1) | 0;
mid = mid + Math.imul(ah4, bl1) | 0;
hi = hi + Math.imul(ah4, bh1) | 0;
lo = lo + Math.imul(al3, bl2) | 0;
mid = mid + Math.imul(al3, bh2) | 0;
mid = mid + Math.imul(ah3, bl2) | 0;
hi = hi + Math.imul(ah3, bh2) | 0;
lo = lo + Math.imul(al2, bl3) | 0;
mid = mid + Math.imul(al2, bh3) | 0;
mid = mid + Math.imul(ah2, bl3) | 0;
hi = hi + Math.imul(ah2, bh3) | 0;
lo = lo + Math.imul(al1, bl4) | 0;
mid = mid + Math.imul(al1, bh4) | 0;
mid = mid + Math.imul(ah1, bl4) | 0;
hi = hi + Math.imul(ah1, bh4) | 0;
lo = lo + Math.imul(al0, bl5) | 0;
mid = mid + Math.imul(al0, bh5) | 0;
mid = mid + Math.imul(ah0, bl5) | 0;
hi = hi + Math.imul(ah0, bh5) | 0;
var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
w5 &= 67108863;
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = mid + Math.imul(ah6, bl0) | 0;
hi = Math.imul(ah6, bh0);
lo = lo + Math.imul(al5, bl1) | 0;
mid = mid + Math.imul(al5, bh1) | 0;
mid = mid + Math.imul(ah5, bl1) | 0;
hi = hi + Math.imul(ah5, bh1) | 0;
lo = lo + Math.imul(al4, bl2) | 0;
mid = mid + Math.imul(al4, bh2) | 0;
mid = mid + Math.imul(ah4, bl2) | 0;
hi = hi + Math.imul(ah4, bh2) | 0;
lo = lo + Math.imul(al3, bl3) | 0;
mid = mid + Math.imul(al3, bh3) | 0;
mid = mid + Math.imul(ah3, bl3) | 0;
hi = hi + Math.imul(ah3, bh3) | 0;
lo = lo + Math.imul(al2, bl4) | 0;
mid = mid + Math.imul(al2, bh4) | 0;
mid = mid + Math.imul(ah2, bl4) | 0;
hi = hi + Math.imul(ah2, bh4) | 0;
lo = lo + Math.imul(al1, bl5) | 0;
mid = mid + Math.imul(al1, bh5) | 0;
mid = mid + Math.imul(ah1, bl5) | 0;
hi = hi + Math.imul(ah1, bh5) | 0;
lo = lo + Math.imul(al0, bl6) | 0;
mid = mid + Math.imul(al0, bh6) | 0;
mid = mid + Math.imul(ah0, bl6) | 0;
hi = hi + Math.imul(ah0, bh6) | 0;
var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
w6 &= 67108863;
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = mid + Math.imul(ah7, bl0) | 0;
hi = Math.imul(ah7, bh0);
lo = lo + Math.imul(al6, bl1) | 0;
mid = mid + Math.imul(al6, bh1) | 0;
mid = mid + Math.imul(ah6, bl1) | 0;
hi = hi + Math.imul(ah6, bh1) | 0;
lo = lo + Math.imul(al5, bl2) | 0;
mid = mid + Math.imul(al5, bh2) | 0;
mid = mid + Math.imul(ah5, bl2) | 0;
hi = hi + Math.imul(ah5, bh2) | 0;
lo = lo + Math.imul(al4, bl3) | 0;
mid = mid + Math.imul(al4, bh3) | 0;
mid = mid + Math.imul(ah4, bl3) | 0;
hi = hi + Math.imul(ah4, bh3) | 0;
lo = lo + Math.imul(al3, bl4) | 0;
mid = mid + Math.imul(al3, bh4) | 0;
mid = mid + Math.imul(ah3, bl4) | 0;
hi = hi + Math.imul(ah3, bh4) | 0;
lo = lo + Math.imul(al2, bl5) | 0;
mid = mid + Math.imul(al2, bh5) | 0;
mid = mid + Math.imul(ah2, bl5) | 0;
hi = hi + Math.imul(ah2, bh5) | 0;
lo = lo + Math.imul(al1, bl6) | 0;
mid = mid + Math.imul(al1, bh6) | 0;
mid = mid + Math.imul(ah1, bl6) | 0;
hi = hi + Math.imul(ah1, bh6) | 0;
lo = lo + Math.imul(al0, bl7) | 0;
mid = mid + Math.imul(al0, bh7) | 0;
mid = mid + Math.imul(ah0, bl7) | 0;
hi = hi + Math.imul(ah0, bh7) | 0;
var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
w7 &= 67108863;
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = mid + Math.imul(ah8, bl0) | 0;
hi = Math.imul(ah8, bh0);
lo = lo + Math.imul(al7, bl1) | 0;
mid = mid + Math.imul(al7, bh1) | 0;
mid = mid + Math.imul(ah7, bl1) | 0;
hi = hi + Math.imul(ah7, bh1) | 0;
lo = lo + Math.imul(al6, bl2) | 0;
mid = mid + Math.imul(al6, bh2) | 0;
mid = mid + Math.imul(ah6, bl2) | 0;
hi = hi + Math.imul(ah6, bh2) | 0;
lo = lo + Math.imul(al5, bl3) | 0;
mid = mid + Math.imul(al5, bh3) | 0;
mid = mid + Math.imul(ah5, bl3) | 0;
hi = hi + Math.imul(ah5, bh3) | 0;
lo = lo + Math.imul(al4, bl4) | 0;
mid = mid + Math.imul(al4, bh4) | 0;
mid = mid + Math.imul(ah4, bl4) | 0;
hi = hi + Math.imul(ah4, bh4) | 0;
lo = lo + Math.imul(al3, bl5) | 0;
mid = mid + Math.imul(al3, bh5) | 0;
mid = mid + Math.imul(ah3, bl5) | 0;
hi = hi + Math.imul(ah3, bh5) | 0;
lo = lo + Math.imul(al2, bl6) | 0;
mid = mid + Math.imul(al2, bh6) | 0;
mid = mid + Math.imul(ah2, bl6) | 0;
hi = hi + Math.imul(ah2, bh6) | 0;
lo = lo + Math.imul(al1, bl7) | 0;
mid = mid + Math.imul(al1, bh7) | 0;
mid = mid + Math.imul(ah1, bl7) | 0;
hi = hi + Math.imul(ah1, bh7) | 0;
lo = lo + Math.imul(al0, bl8) | 0;
mid = mid + Math.imul(al0, bh8) | 0;
mid = mid + Math.imul(ah0, bl8) | 0;
hi = hi + Math.imul(ah0, bh8) | 0;
var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
w8 &= 67108863;
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = mid + Math.imul(ah9, bl0) | 0;
hi = Math.imul(ah9, bh0);
lo = lo + Math.imul(al8, bl1) | 0;
mid = mid + Math.imul(al8, bh1) | 0;
mid = mid + Math.imul(ah8, bl1) | 0;
hi = hi + Math.imul(ah8, bh1) | 0;
lo = lo + Math.imul(al7, bl2) | 0;
mid = mid + Math.imul(al7, bh2) | 0;
mid = mid + Math.imul(ah7, bl2) | 0;
hi = hi + Math.imul(ah7, bh2) | 0;
lo = lo + Math.imul(al6, bl3) | 0;
mid = mid + Math.imul(al6, bh3) | 0;
mid = mid + Math.imul(ah6, bl3) | 0;
hi = hi + Math.imul(ah6, bh3) | 0;
lo = lo + Math.imul(al5, bl4) | 0;
mid = mid + Math.imul(al5, bh4) | 0;
mid = mid + Math.imul(ah5, bl4) | 0;
hi = hi + Math.imul(ah5, bh4) | 0;
lo = lo + Math.imul(al4, bl5) | 0;
mid = mid + Math.imul(al4, bh5) | 0;
mid = mid + Math.imul(ah4, bl5) | 0;
hi = hi + Math.imul(ah4, bh5) | 0;
lo = lo + Math.imul(al3, bl6) | 0;
mid = mid + Math.imul(al3, bh6) | 0;
mid = mid + Math.imul(ah3, bl6) | 0;
hi = hi + Math.imul(ah3, bh6) | 0;
lo = lo + Math.imul(al2, bl7) | 0;
mid = mid + Math.imul(al2, bh7) | 0;
mid = mid + Math.imul(ah2, bl7) | 0;
hi = hi + Math.imul(ah2, bh7) | 0;
lo = lo + Math.imul(al1, bl8) | 0;
mid = mid + Math.imul(al1, bh8) | 0;
mid = mid + Math.imul(ah1, bl8) | 0;
hi = hi + Math.imul(ah1, bh8) | 0;
lo = lo + Math.imul(al0, bl9) | 0;
mid = mid + Math.imul(al0, bh9) | 0;
mid = mid + Math.imul(ah0, bl9) | 0;
hi = hi + Math.imul(ah0, bh9) | 0;
var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
w9 &= 67108863;
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = mid + Math.imul(ah9, bl1) | 0;
hi = Math.imul(ah9, bh1);
lo = lo + Math.imul(al8, bl2) | 0;
mid = mid + Math.imul(al8, bh2) | 0;
mid = mid + Math.imul(ah8, bl2) | 0;
hi = hi + Math.imul(ah8, bh2) | 0;
lo = lo + Math.imul(al7, bl3) | 0;
mid = mid + Math.imul(al7, bh3) | 0;
mid = mid + Math.imul(ah7, bl3) | 0;
hi = hi + Math.imul(ah7, bh3) | 0;
lo = lo + Math.imul(al6, bl4) | 0;
mid = mid + Math.imul(al6, bh4) | 0;
mid = mid + Math.imul(ah6, bl4) | 0;
hi = hi + Math.imul(ah6, bh4) | 0;
lo = lo + Math.imul(al5, bl5) | 0;
mid = mid + Math.imul(al5, bh5) | 0;
mid = mid + Math.imul(ah5, bl5) | 0;
hi = hi + Math.imul(ah5, bh5) | 0;
lo = lo + Math.imul(al4, bl6) | 0;
mid = mid + Math.imul(al4, bh6) | 0;
mid = mid + Math.imul(ah4, bl6) | 0;
hi = hi + Math.imul(ah4, bh6) | 0;
lo = lo + Math.imul(al3, bl7) | 0;
mid = mid + Math.imul(al3, bh7) | 0;
mid = mid + Math.imul(ah3, bl7) | 0;
hi = hi + Math.imul(ah3, bh7) | 0;
lo = lo + Math.imul(al2, bl8) | 0;
mid = mid + Math.imul(al2, bh8) | 0;
mid = mid + Math.imul(ah2, bl8) | 0;
hi = hi + Math.imul(ah2, bh8) | 0;
lo = lo + Math.imul(al1, bl9) | 0;
mid = mid + Math.imul(al1, bh9) | 0;
mid = mid + Math.imul(ah1, bl9) | 0;
hi = hi + Math.imul(ah1, bh9) | 0;
var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
w10 &= 67108863;
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = mid + Math.imul(ah9, bl2) | 0;
hi = Math.imul(ah9, bh2);
lo = lo + Math.imul(al8, bl3) | 0;
mid = mid + Math.imul(al8, bh3) | 0;
mid = mid + Math.imul(ah8, bl3) | 0;
hi = hi + Math.imul(ah8, bh3) | 0;
lo = lo + Math.imul(al7, bl4) | 0;
mid = mid + Math.imul(al7, bh4) | 0;
mid = mid + Math.imul(ah7, bl4) | 0;
hi = hi + Math.imul(ah7, bh4) | 0;
lo = lo + Math.imul(al6, bl5) | 0;
mid = mid + Math.imul(al6, bh5) | 0;
mid = mid + Math.imul(ah6, bl5) | 0;
hi = hi + Math.imul(ah6, bh5) | 0;
lo = lo + Math.imul(al5, bl6) | 0;
mid = mid + Math.imul(al5, bh6) | 0;
mid = mid + Math.imul(ah5, bl6) | 0;
hi = hi + Math.imul(ah5, bh6) | 0;
lo = lo + Math.imul(al4, bl7) | 0;
mid = mid + Math.imul(al4, bh7) | 0;
mid = mid + Math.imul(ah4, bl7) | 0;
hi = hi + Math.imul(ah4, bh7) | 0;
lo = lo + Math.imul(al3, bl8) | 0;
mid = mid + Math.imul(al3, bh8) | 0;
mid = mid + Math.imul(ah3, bl8) | 0;
hi = hi + Math.imul(ah3, bh8) | 0;
lo = lo + Math.imul(al2, bl9) | 0;
mid = mid + Math.imul(al2, bh9) | 0;
mid = mid + Math.imul(ah2, bl9) | 0;
hi = hi + Math.imul(ah2, bh9) | 0;
var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
w11 &= 67108863;
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = mid + Math.imul(ah9, bl3) | 0;
hi = Math.imul(ah9, bh3);
lo = lo + Math.imul(al8, bl4) | 0;
mid = mid + Math.imul(al8, bh4) | 0;
mid = mid + Math.imul(ah8, bl4) | 0;
hi = hi + Math.imul(ah8, bh4) | 0;
lo = lo + Math.imul(al7, bl5) | 0;
mid = mid + Math.imul(al7, bh5) | 0;
mid = mid + Math.imul(ah7, bl5) | 0;
hi = hi + Math.imul(ah7, bh5) | 0;
lo = lo + Math.imul(al6, bl6) | 0;
mid = mid + Math.imul(al6, bh6) | 0;
mid = mid + Math.imul(ah6, bl6) | 0;
hi = hi + Math.imul(ah6, bh6) | 0;
lo = lo + Math.imul(al5, bl7) | 0;
mid = mid + Math.imul(al5, bh7) | 0;
mid = mid + Math.imul(ah5, bl7) | 0;
hi = hi + Math.imul(ah5, bh7) | 0;
lo = lo + Math.imul(al4, bl8) | 0;
mid = mid + Math.imul(al4, bh8) | 0;
mid = mid + Math.imul(ah4, bl8) | 0;
hi = hi + Math.imul(ah4, bh8) | 0;
lo = lo + Math.imul(al3, bl9) | 0;
mid = mid + Math.imul(al3, bh9) | 0;
mid = mid + Math.imul(ah3, bl9) | 0;
hi = hi + Math.imul(ah3, bh9) | 0;
var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
w12 &= 67108863;
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = mid + Math.imul(ah9, bl4) | 0;
hi = Math.imul(ah9, bh4);
lo = lo + Math.imul(al8, bl5) | 0;
mid = mid + Math.imul(al8, bh5) | 0;
mid = mid + Math.imul(ah8, bl5) | 0;
hi = hi + Math.imul(ah8, bh5) | 0;
lo = lo + Math.imul(al7, bl6) | 0;
mid = mid + Math.imul(al7, bh6) | 0;
mid = mid + Math.imul(ah7, bl6) | 0;
hi = hi + Math.imul(ah7, bh6) | 0;
lo = lo + Math.imul(al6, bl7) | 0;
mid = mid + Math.imul(al6, bh7) | 0;
mid = mid + Math.imul(ah6, bl7) | 0;
hi = hi + Math.imul(ah6, bh7) | 0;
lo = lo + Math.imul(al5, bl8) | 0;
mid = mid + Math.imul(al5, bh8) | 0;
mid = mid + Math.imul(ah5, bl8) | 0;
hi = hi + Math.imul(ah5, bh8) | 0;
lo = lo + Math.imul(al4, bl9) | 0;
mid = mid + Math.imul(al4, bh9) | 0;
mid = mid + Math.imul(ah4, bl9) | 0;
hi = hi + Math.imul(ah4, bh9) | 0;
var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
w13 &= 67108863;
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = mid + Math.imul(ah9, bl5) | 0;
hi = Math.imul(ah9, bh5);
lo = lo + Math.imul(al8, bl6) | 0;
mid = mid + Math.imul(al8, bh6) | 0;
mid = mid + Math.imul(ah8, bl6) | 0;
hi = hi + Math.imul(ah8, bh6) | 0;
lo = lo + Math.imul(al7, bl7) | 0;
mid = mid + Math.imul(al7, bh7) | 0;
mid = mid + Math.imul(ah7, bl7) | 0;
hi = hi + Math.imul(ah7, bh7) | 0;
lo = lo + Math.imul(al6, bl8) | 0;
mid = mid + Math.imul(al6, bh8) | 0;
mid = mid + Math.imul(ah6, bl8) | 0;
hi = hi + Math.imul(ah6, bh8) | 0;
lo = lo + Math.imul(al5, bl9) | 0;
mid = mid + Math.imul(al5, bh9) | 0;
mid = mid + Math.imul(ah5, bl9) | 0;
hi = hi + Math.imul(ah5, bh9) | 0;
var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
w14 &= 67108863;
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = mid + Math.imul(ah9, bl6) | 0;
hi = Math.imul(ah9, bh6);
lo = lo + Math.imul(al8, bl7) | 0;
mid = mid + Math.imul(al8, bh7) | 0;
mid = mid + Math.imul(ah8, bl7) | 0;
hi = hi + Math.imul(ah8, bh7) | 0;
lo = lo + Math.imul(al7, bl8) | 0;
mid = mid + Math.imul(al7, bh8) | 0;
mid = mid + Math.imul(ah7, bl8) | 0;
hi = hi + Math.imul(ah7, bh8) | 0;
lo = lo + Math.imul(al6, bl9) | 0;
mid = mid + Math.imul(al6, bh9) | 0;
mid = mid + Math.imul(ah6, bl9) | 0;
hi = hi + Math.imul(ah6, bh9) | 0;
var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
w15 &= 67108863;
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = mid + Math.imul(ah9, bl7) | 0;
hi = Math.imul(ah9, bh7);
lo = lo + Math.imul(al8, bl8) | 0;
mid = mid + Math.imul(al8, bh8) | 0;
mid = mid + Math.imul(ah8, bl8) | 0;
hi = hi + Math.imul(ah8, bh8) | 0;
lo = lo + Math.imul(al7, bl9) | 0;
mid = mid + Math.imul(al7, bh9) | 0;
mid = mid + Math.imul(ah7, bl9) | 0;
hi = hi + Math.imul(ah7, bh9) | 0;
var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
w16 &= 67108863;
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = mid + Math.imul(ah9, bl8) | 0;
hi = Math.imul(ah9, bh8);
lo = lo + Math.imul(al8, bl9) | 0;
mid = mid + Math.imul(al8, bh9) | 0;
mid = mid + Math.imul(ah8, bl9) | 0;
hi = hi + Math.imul(ah8, bh9) | 0;
var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
w17 &= 67108863;
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = mid + Math.imul(ah9, bl9) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
w18 &= 67108863;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo(self2, num, out) {
out.negative = num.negative ^ self2.negative;
out.length = self2.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 67108863;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) {
var i2 = k - j;
var a = self2.words[i2] | 0;
var b = num.words[j] | 0;
var r2 = a * b;
var lo = r2 & 67108863;
ncarry = ncarry + (r2 / 67108864 | 0) | 0;
lo = lo + rword | 0;
rword = lo & 67108863;
ncarry = ncarry + (lo >>> 26) | 0;
hncarry += ncarry >>> 26;
ncarry &= 67108863;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo(self2, num, out) {
var fftm = new FFTM();
return fftm.mulp(self2, num, out);
}
BN2.prototype.mulTo = function mulTo(num, out) {
var res;
var len2 = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len2 < 63) {
res = smallMulTo(this, num, out);
} else if (len2 < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
function FFTM(x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT(N) {
var t2 = new Array(N);
var l = BN2.prototype._countBits(N) - 1;
for (var i2 = 0; i2 < N; i2++) {
t2[i2] = this.revBin(i2, l, N);
}
return t2;
};
FFTM.prototype.revBin = function revBin(x, l, N) {
if (x === 0 || x === N - 1)
return x;
var rb = 0;
for (var i2 = 0; i2 < l; i2++) {
rb |= (x & 1) << l - i2 - 1;
x >>= 1;
}
return rb;
};
FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
for (var i2 = 0; i2 < N; i2++) {
rtws[i2] = rws[rbt[i2]];
itws[i2] = iws[rbt[i2]];
}
};
FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s2 = 1; s2 < N; s2 <<= 1) {
var l = s2 << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s2; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s2];
var io = itws[p + j + s2];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s2] = re - ro;
itws[p + j + s2] = ie - io;
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i2 = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i2++;
}
return 1 << i2 + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
if (N <= 1)
return;
for (var i2 = 0; i2 < N / 2; i2++) {
var t2 = rws[i2];
rws[i2] = rws[N - i2 - 1];
rws[N - i2 - 1] = t2;
t2 = iws[i2];
iws[i2] = -iws[N - i2 - 1];
iws[N - i2 - 1] = -t2;
}
};
FFTM.prototype.normalize13b = function normalize13b(ws, N) {
var carry = 0;
for (var i2 = 0; i2 < N / 2; i2++) {
var w = Math.round(ws[2 * i2 + 1] / N) * 8192 + Math.round(ws[2 * i2] / N) + carry;
ws[i2] = w & 67108863;
if (w < 67108864) {
carry = 0;
} else {
carry = w / 67108864 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b(ws, len2, rws, N) {
var carry = 0;
for (var i2 = 0; i2 < len2; i2++) {
carry = carry + (ws[i2] | 0);
rws[2 * i2] = carry & 8191;
carry = carry >>> 13;
rws[2 * i2 + 1] = carry & 8191;
carry = carry >>> 13;
}
for (i2 = 2 * len2; i2 < N; ++i2) {
rws[i2] = 0;
}
assert2(carry === 0);
assert2((carry & ~8191) === 0);
};
FFTM.prototype.stub = function stub(N) {
var ph = new Array(N);
for (var i2 = 0; i2 < N; i2++) {
ph[i2] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp(x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i2 = 0; i2 < N; i2++) {
var rx = rwst[i2] * nrwst[i2] - iwst[i2] * niwst[i2];
iwst[i2] = rwst[i2] * niwst[i2] + iwst[i2] * nrwst[i2];
rwst[i2] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
BN2.prototype.mul = function mul(num) {
var out = new BN2(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
BN2.prototype.mulf = function mulf(num) {
var out = new BN2(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
BN2.prototype.imul = function imul(num) {
return this.clone().mulTo(num, this);
};
BN2.prototype.imuln = function imuln(num) {
assert2(typeof num === "number");
assert2(num < 67108864);
var carry = 0;
for (var i2 = 0; i2 < this.length; i2++) {
var w = (this.words[i2] | 0) * num;
var lo = (w & 67108863) + (carry & 67108863);
carry >>= 26;
carry += w / 67108864 | 0;
carry += lo >>> 26;
this.words[i2] = lo & 67108863;
}
if (carry !== 0) {
this.words[i2] = carry;
this.length++;
}
return this;
};
BN2.prototype.muln = function muln(num) {
return this.clone().imuln(num);
};
BN2.prototype.sqr = function sqr() {
return this.mul(this);
};
BN2.prototype.isqr = function isqr() {
return this.imul(this.clone());
};
BN2.prototype.pow = function pow(num) {
var w = toBitArray(num);
if (w.length === 0)
return new BN2(1);
var res = this;
for (var i2 = 0; i2 < w.length; i2++, res = res.sqr()) {
if (w[i2] !== 0)
break;
}
if (++i2 < w.length) {
for (var q = res.sqr(); i2 < w.length; i2++, q = q.sqr()) {
if (w[i2] === 0)
continue;
res = res.mul(q);
}
}
return res;
};
BN2.prototype.iushln = function iushln(bits) {
assert2(typeof bits === "number" && bits >= 0);
var r2 = bits % 26;
var s2 = (bits - r2) / 26;
var carryMask = 67108863 >>> 26 - r2 << 26 - r2;
var i2;
if (r2 !== 0) {
var carry = 0;
for (i2 = 0; i2 < this.length; i2++) {
var newCarry = this.words[i2] & carryMask;
var c = (this.words[i2] | 0) - newCarry << r2;
this.words[i2] = c | carry;
carry = newCarry >>> 26 - r2;
}
if (carry) {
this.words[i2] = carry;
this.length++;
}
}
if (s2 !== 0) {
for (i2 = this.length - 1; i2 >= 0; i2--) {
this.words[i2 + s2] = this.words[i2];
}
for (i2 = 0; i2 < s2; i2++) {
this.words[i2] = 0;
}
this.length += s2;
}
return this.strip();
};
BN2.prototype.ishln = function ishln(bits) {
assert2(this.negative === 0);
return this.iushln(bits);
};
BN2.prototype.iushrn = function iushrn(bits, hint, extended) {
assert2(typeof bits === "number" && bits >= 0);
var h;
if (hint) {
h = (hint - hint % 26) / 26;
} else {
h = 0;
}
var r2 = bits % 26;
var s2 = Math.min((bits - r2) / 26, this.length);
var mask = 67108863 ^ 67108863 >>> r2 << r2;
var maskedWords = extended;
h -= s2;
h = Math.max(0, h);
if (maskedWords) {
for (var i2 = 0; i2 < s2; i2++) {
maskedWords.words[i2] = this.words[i2];
}
maskedWords.length = s2;
}
if (s2 === 0)
;
else if (this.length > s2) {
this.length -= s2;
for (i2 = 0; i2 < this.length; i2++) {
this.words[i2] = this.words[i2 + s2];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i2 = this.length - 1; i2 >= 0 && (carry !== 0 || i2 >= h); i2--) {
var word = this.words[i2] | 0;
this.words[i2] = carry << 26 - r2 | word >>> r2;
carry = word & mask;
}
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN2.prototype.ishrn = function ishrn(bits, hint, extended) {
assert2(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
BN2.prototype.shln = function shln(bits) {
return this.clone().ishln(bits);
};
BN2.prototype.ushln = function ushln(bits) {
return this.clone().iushln(bits);
};
BN2.prototype.shrn = function shrn(bits) {
return this.clone().ishrn(bits);
};
BN2.prototype.ushrn = function ushrn(bits) {
return this.clone().iushrn(bits);
};
BN2.prototype.testn = function testn(bit) {
assert2(typeof bit === "number" && bit >= 0);
var r2 = bit % 26;
var s2 = (bit - r2) / 26;
var q = 1 << r2;
if (this.length <= s2)
return false;
var w = this.words[s2];
return !!(w & q);
};
BN2.prototype.imaskn = function imaskn(bits) {
assert2(typeof bits === "number" && bits >= 0);
var r2 = bits % 26;
var s2 = (bits - r2) / 26;
assert2(this.negative === 0, "imaskn works only with positive numbers");
if (this.length <= s2) {
return this;
}
if (r2 !== 0) {
s2++;
}
this.length = Math.min(s2, this.length);
if (r2 !== 0) {
var mask = 67108863 ^ 67108863 >>> r2 << r2;
this.words[this.length - 1] &= mask;
}
return this.strip();
};
BN2.prototype.maskn = function maskn(bits) {
return this.clone().imaskn(bits);
};
BN2.prototype.iaddn = function iaddn(num) {
assert2(typeof num === "number");
assert2(num < 67108864);
if (num < 0)
return this.isubn(-num);
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
return this._iaddn(num);
};
BN2.prototype._iaddn = function _iaddn(num) {
this.words[0] += num;
for (var i2 = 0; i2 < this.length && this.words[i2] >= 67108864; i2++) {
this.words[i2] -= 67108864;
if (i2 === this.length - 1) {
this.words[i2 + 1] = 1;
} else {
this.words[i2 + 1]++;
}
}
this.length = Math.max(this.length, i2 + 1);
return this;
};
BN2.prototype.isubn = function isubn(num) {
assert2(typeof num === "number");
assert2(num < 67108864);
if (num < 0)
return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
for (var i2 = 0; i2 < this.length && this.words[i2] < 0; i2++) {
this.words[i2] += 67108864;
this.words[i2 + 1] -= 1;
}
}
return this.strip();
};
BN2.prototype.addn = function addn(num) {
return this.clone().iaddn(num);
};
BN2.prototype.subn = function subn(num) {
return this.clone().isubn(num);
};
BN2.prototype.iabs = function iabs() {
this.negative = 0;
return this;
};
BN2.prototype.abs = function abs() {
return this.clone().iabs();
};
BN2.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
var len2 = num.length + shift;
var i2;
this._expand(len2);
var w;
var carry = 0;
for (i2 = 0; i2 < num.length; i2++) {
w = (this.words[i2 + shift] | 0) + carry;
var right = (num.words[i2] | 0) * mul;
w -= right & 67108863;
carry = (w >> 26) - (right / 67108864 | 0);
this.words[i2 + shift] = w & 67108863;
}
for (; i2 < this.length - shift; i2++) {
w = (this.words[i2 + shift] | 0) + carry;
carry = w >> 26;
this.words[i2 + shift] = w & 67108863;
}
if (carry === 0)
return this.strip();
assert2(carry === -1);
carry = 0;
for (i2 = 0; i2 < this.length; i2++) {
w = -(this.words[i2] | 0) + carry;
carry = w >> 26;
this.words[i2] = w & 67108863;
}
this.negative = 1;
return this.strip();
};
BN2.prototype._wordDiv = function _wordDiv(num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
var m = a.length - b.length;
var q;
if (mode !== "mod") {
q = new BN2(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i2 = 0; i2 < q.length; i2++) {
q.words[i2] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
qj = Math.min(qj / bhi | 0, 67108863);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
if (mode !== "div" && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
BN2.prototype.divmod = function divmod(num, mode, positive) {
assert2(!num.isZero());
if (this.isZero()) {
return {
div: new BN2(0),
mod: new BN2(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== "mod") {
div = res.div.neg();
}
if (mode !== "div") {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div,
mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== "mod") {
div = res.div.neg();
}
return {
div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== "div") {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod
};
}
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN2(0),
mod: this
};
}
if (num.length === 1) {
if (mode === "div") {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === "mod") {
return {
div: null,
mod: new BN2(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN2(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
BN2.prototype.div = function div(num) {
return this.divmod(num, "div", false).div;
};
BN2.prototype.mod = function mod(num) {
return this.divmod(num, "mod", false).mod;
};
BN2.prototype.umod = function umod(num) {
return this.divmod(num, "mod", true).mod;
};
BN2.prototype.divRound = function divRound(num) {
var dm = this.divmod(num);
if (dm.mod.isZero())
return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
if (cmp < 0 || r2 === 1 && cmp === 0)
return dm.div;
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN2.prototype.modn = function modn(num) {
assert2(num <= 67108863);
var p = (1 << 26) % num;
var acc = 0;
for (var i2 = this.length - 1; i2 >= 0; i2--) {
acc = (p * acc + (this.words[i2] | 0)) % num;
}
return acc;
};
BN2.prototype.idivn = function idivn(num) {
assert2(num <= 67108863);
var carry = 0;
for (var i2 = this.length - 1; i2 >= 0; i2--) {
var w = (this.words[i2] | 0) + carry * 67108864;
this.words[i2] = w / num | 0;
carry = w % num;
}
return this.strip();
};
BN2.prototype.divn = function divn(num) {
return this.clone().idivn(num);
};
BN2.prototype.egcd = function egcd(p) {
assert2(p.negative === 0);
assert2(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
var A = new BN2(1);
var B = new BN2(0);
var C = new BN2(0);
var D = new BN2(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i2 = 0, im = 1; (x.words[0] & im) === 0 && i2 < 26; ++i2, im <<= 1)
;
if (i2 > 0) {
x.iushrn(i2);
while (i2-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1)
;
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
BN2.prototype._invmp = function _invmp(p) {
assert2(p.negative === 0);
assert2(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN2(1);
var x2 = new BN2(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i2 = 0, im = 1; (a.words[0] & im) === 0 && i2 < 26; ++i2, im <<= 1)
;
if (i2 > 0) {
a.iushrn(i2);
while (i2-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1)
;
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN2.prototype.gcd = function gcd(num) {
if (this.isZero())
return num.abs();
if (num.isZero())
return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r2 = a.cmp(b);
if (r2 < 0) {
var t2 = a;
a = b;
b = t2;
} else if (r2 === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
BN2.prototype.invm = function invm(num) {
return this.egcd(num).a.umod(num);
};
BN2.prototype.isEven = function isEven() {
return (this.words[0] & 1) === 0;
};
BN2.prototype.isOdd = function isOdd() {
return (this.words[0] & 1) === 1;
};
BN2.prototype.andln = function andln(num) {
return this.words[0] & num;
};
BN2.prototype.bincn = function bincn(bit) {
assert2(typeof bit === "number");
var r2 = bit % 26;
var s2 = (bit - r2) / 26;
var q = 1 << r2;
if (this.length <= s2) {
this._expand(s2 + 1);
this.words[s2] |= q;
return this;
}
var carry = q;
for (var i2 = s2; carry !== 0 && i2 < this.length; i2++) {
var w = this.words[i2] | 0;
w += carry;
carry = w >>> 26;
w &= 67108863;
this.words[i2] = w;
}
if (carry !== 0) {
this.words[i2] = carry;
this.length++;
}
return this;
};
BN2.prototype.isZero = function isZero() {
return this.length === 1 && this.words[0] === 0;
};
BN2.prototype.cmpn = function cmpn(num) {
var negative = num < 0;
if (this.negative !== 0 && !negative)
return -1;
if (this.negative === 0 && negative)
return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert2(num <= 67108863, "Number is too big");
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0)
return -res | 0;
return res;
};
BN2.prototype.cmp = function cmp(num) {
if (this.negative !== 0 && num.negative === 0)
return -1;
if (this.negative === 0 && num.negative !== 0)
return 1;
var res = this.ucmp(num);
if (this.negative !== 0)
return -res | 0;
return res;
};
BN2.prototype.ucmp = function ucmp(num) {
if (this.length > num.length)
return 1;
if (this.length < num.length)
return -1;
var res = 0;
for (var i2 = this.length - 1; i2 >= 0; i2--) {
var a = this.words[i2] | 0;
var b = num.words[i2] | 0;
if (a === b)
continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN2.prototype.gtn = function gtn(num) {
return this.cmpn(num) === 1;
};
BN2.prototype.gt = function gt(num) {
return this.cmp(num) === 1;
};
BN2.prototype.gten = function gten(num) {
return this.cmpn(num) >= 0;
};
BN2.prototype.gte = function gte(num) {
return this.cmp(num) >= 0;
};
BN2.prototype.ltn = function ltn(num) {
return this.cmpn(num) === -1;
};
BN2.prototype.lt = function lt(num) {
return this.cmp(num) === -1;
};
BN2.prototype.lten = function lten(num) {
return this.cmpn(num) <= 0;
};
BN2.prototype.lte = function lte(num) {
return this.cmp(num) <= 0;
};
BN2.prototype.eqn = function eqn(num) {
return this.cmpn(num) === 0;
};
BN2.prototype.eq = function eq(num) {
return this.cmp(num) === 0;
};
BN2.red = function red(num) {
return new Red(num);
};
BN2.prototype.toRed = function toRed(ctx) {
assert2(!this.red, "Already a number in reduction context");
assert2(this.negative === 0, "red works only with positives");
return ctx.convertTo(this)._forceRed(ctx);
};
BN2.prototype.fromRed = function fromRed() {
assert2(this.red, "fromRed works only with numbers in reduction context");
return this.red.convertFrom(this);
};
BN2.prototype._forceRed = function _forceRed(ctx) {
this.red = ctx;
return this;
};
BN2.prototype.forceRed = function forceRed(ctx) {
assert2(!this.red, "Already a number in reduction context");
return this._forceRed(ctx);
};
BN2.prototype.redAdd = function redAdd(num) {
assert2(this.red, "redAdd works only with red numbers");
return this.red.add(this, num);
};
BN2.prototype.redIAdd = function redIAdd(num) {
assert2(this.red, "redIAdd works only with red numbers");
return this.red.iadd(this, num);
};
BN2.prototype.redSub = function redSub(num) {
assert2(this.red, "redSub works only with red numbers");
return this.red.sub(this, num);
};
BN2.prototype.redISub = function redISub(num) {
assert2(this.red, "redISub works only with red numbers");
return this.red.isub(this, num);
};
BN2.prototype.redShl = function redShl(num) {
assert2(this.red, "redShl works only with red numbers");
return this.red.shl(this, num);
};
BN2.prototype.redMul = function redMul(num) {
assert2(this.red, "redMul works only with red numbers");
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN2.prototype.redIMul = function redIMul(num) {
assert2(this.red, "redMul works only with red numbers");
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN2.prototype.redSqr = function redSqr() {
assert2(this.red, "redSqr works only with red numbers");
this.red._verify1(this);
return this.red.sqr(this);
};
BN2.prototype.redISqr = function redISqr() {
assert2(this.red, "redISqr works only with red numbers");
this.red._verify1(this);
return this.red.isqr(this);
};
BN2.prototype.redSqrt = function redSqrt() {
assert2(this.red, "redSqrt works only with red numbers");
this.red._verify1(this);
return this.red.sqrt(this);
};
BN2.prototype.redInvm = function redInvm() {
assert2(this.red, "redInvm works only with red numbers");
this.red._verify1(this);
return this.red.invm(this);
};
BN2.prototype.redNeg = function redNeg() {
assert2(this.red, "redNeg works only with red numbers");
this.red._verify1(this);
return this.red.neg(this);
};
BN2.prototype.redPow = function redPow(num) {
assert2(this.red && !num.red, "redPow(normalNum)");
this.red._verify1(this);
return this.red.pow(this, num);
};
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
function MPrime(name2, p) {
this.name = name2;
this.p = new BN2(p, 16);
this.n = this.p.bitLength();
this.k = new BN2(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp() {
var tmp = new BN2(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce(num) {
var r2 = num;
var rlen;
do {
this.split(r2, this.tmp);
r2 = this.imulK(r2);
r2 = r2.iadd(this.tmp);
rlen = r2.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r2.ucmp(this.p);
if (cmp === 0) {
r2.words[0] = 0;
r2.length = 1;
} else if (cmp > 0) {
r2.isub(this.p);
} else {
if (r2.strip !== void 0) {
r2.strip();
} else {
r2._strip();
}
}
return r2;
};
MPrime.prototype.split = function split(input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK(num) {
return num.imul(this.k);
};
function K256() {
MPrime.call(
this,
"k256",
"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"
);
}
inherits2(K256, MPrime);
K256.prototype.split = function split(input, output) {
var mask = 4194303;
var outLen = Math.min(input.length, 9);
for (var i2 = 0; i2 < outLen; i2++) {
output.words[i2] = input.words[i2];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i2 = 10; i2 < input.length; i2++) {
var next = input.words[i2] | 0;
input.words[i2 - 10] = (next & mask) << 4 | prev >>> 22;
prev = next;
}
prev >>>= 22;
input.words[i2 - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK(num) {
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
var lo = 0;
for (var i2 = 0; i2 < num.length; i2++) {
var w = num.words[i2] | 0;
lo += w * 977;
num.words[i2] = lo & 67108863;
lo = w * 64 + (lo / 67108864 | 0);
}
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224() {
MPrime.call(
this,
"p224",
"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"
);
}
inherits2(P224, MPrime);
function P192() {
MPrime.call(
this,
"p192",
"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"
);
}
inherits2(P192, MPrime);
function P25519() {
MPrime.call(
this,
"25519",
"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"
);
}
inherits2(P25519, MPrime);
P25519.prototype.imulK = function imulK(num) {
var carry = 0;
for (var i2 = 0; i2 < num.length; i2++) {
var hi = (num.words[i2] | 0) * 19 + carry;
var lo = hi & 67108863;
hi >>>= 26;
num.words[i2] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
BN2._prime = function prime(name2) {
if (primes[name2])
return primes[name2];
var prime2;
if (name2 === "k256") {
prime2 = new K256();
} else if (name2 === "p224") {
prime2 = new P224();
} else if (name2 === "p192") {
prime2 = new P192();
} else if (name2 === "p25519") {
prime2 = new P25519();
} else {
throw new Error("Unknown prime " + name2);
}
primes[name2] = prime2;
return prime2;
};
function Red(m) {
if (typeof m === "string") {
var prime = BN2._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert2(m.gtn(1), "modulus must be greater than 1");
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1(a) {
assert2(a.negative === 0, "red works only with positives");
assert2(a.red, "red works only with red numbers");
};