// ==UserScript== // @name 全网影视收藏助手 // @namespace FBin001-JVideoCollector // @version 2.0.2 // @description 跨站点影视追剧收藏工具:追剧片单、想看/已看标记,自动记录观看集数与播放进度,海报墙浏览,豆瓣评分,全网搜索与跨站直达,站点换域名也能照常跳转。支持低端影视(低调影视/ddrk)、厂长资源(czzy)、嘀嗒影视、韩剧TV(hanjuc)、LIBVIO、毒舌电影、注视影视、片库、开心影院、追影、太乙电影、极速追剧、懂片帝、韩剧网等站点 video watchlist drama tracker // @author FBin001 // @match *://*/* // @match *://*.didahd.xyz/* // @match *://*.4kcz.com/* // @match *://*.czzy.top/* // @match *://*.cz4k.com/* // @match *://*.hanjuc.com/* // @match *://*.hantv.net/* // @match *://*.hantvz.com/* // @match *://*.ddys.app/* // @match *://*.ddys.ai/* // @match *://*.libvio.host/* // @match *://*.libvio.mov/* // @match *://*.libvios.com/* // @match *://*.libhd.com/* // @match *://*.libviobd.com/* // @match *://*.libvio.in/* // @match *://*.libvio.io/* // @match *://*.duse2.com/* // @match *://*.duse3.com/* // @match *://*.duse4.com/* // @match *://*.dushe3.app/* // @match *://*.dushe05.com/* // @match *://*.dushe06.com/* // @match *://*.gaze.red/* // @match *://*.gazes.store/* // @match *://*.gazes.top/* // @match *://*.gaze.show/* // @match *://*.gazes.host/* // @include /^https?:\/\/([^/]*\.)?didahd\./ // @include /^https?:\/\/([^/]*\.)?(4kcz|czzy|cz4k)\./ // @include /^https?:\/\/([^/]*\.)?(hantv[a-z]?|hanju[a-z])\./ // @include /^https?:\/\/([^/]*\.)?ddys\./ // @include /^https?:\/\/([^/]*\.)?(libvio|libvios|libviobd|libhd)\./ // @include /^https?:\/\/([^/]*\.)?dush?e\d+\./ // @include /^https?:\/\/([^/]*\.)?gazes?\d*\./ // @connect * // @connect www.didahd.xyz // @connect www.4kcz.com // @connect czzy.top // @connect www.cz4k.com // @connect hanjuc.com // @connect hantv.net // @connect www.hantv.net // @connect hantvz.com // @connect www.hantvz.com // @connect ddys.app // @connect ddys.ai // @connect libvio.host // @connect www.libvio.mov // @connect www.libvios.com // @connect www.libhd.com // @connect libviobd.com // @connect www.libvio.in // @connect www.libvio.io // @connect www.duse2.com // @connect www.duse3.com // @connect www.duse4.com // @connect www.dushe3.app // @connect www.dushe05.com // @connect www.dushe06.com // @connect gaze.red // @connect gazes.store // @connect gazes.top // @connect gaze.show // @connect gazes.host // @connect 4k01.pianku.online // @connect 4k.pianku.online // @connect 4k02.pianku.online // @connect 4k03.pianku.online // @connect tv.time1080.xyz // @connect zndy.top // @connect zhuiying3.cc // @connect www.vv3nwjk.com // @connect jisuzhuiju.com // @connect www.kankanya.me // @connect www.kxyy1.cc // @connect dmxq30.com // @connect gitee.com // @connect raw.giteeusercontent.com // @connect api.douban.com // @connect movie.douban.com // @connect frodo.douban.com // @license MIT // @grant GM_setValue // @grant GM_getValue // @grant GM_addValueChangeListener // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @run-at document-start // ==/UserScript== (()=>{var bf=Object.defineProperty; var o=(t,e)=>bf(t,"name",{value:e,configurable:true}); function ar(t,e){return t.replace(/\{\{(\w+)\}\}/g,(n,r)=>e[r]??"")} o(ar,"interpolate"); var yf={"&":"&","<":"<",">":">",'"':""","'":"'"}; function ht(t){if(t===void 0||t===null)return"";return String(t).replace(/[&<>"']/g,e=>yf[e])} o(ht,"escapeHtml"); function xn(t){const e=String(t||"").trim();return/^(https?:\/\/|data:image\/|blob:)/i.test(e)?e:""} o(xn,"safeUrl"); function en(t){const e=typeof t==="string"?t:t?JSON.stringify(t)||"":"";try{return new TextEncoder().encode(e).length}catch(n){return e.length}} o(en,"utf8Bytes"); function Ht(t){const e=Number(t)||0;if(e>=1024*1024)return(e/1024/1024).toFixed(2)+"MB";return(e/1024).toFixed(1)+"KB"} o(Ht,"formatBytes"); function Tc(t){if(!t)return"";const e=new Date(t);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${n(e.getMonth()+1)}-${n(e.getDate())} ${n(e.getHours())}:${n(e.getMinutes())}`} o(Tc,"formatDateShort"); function Ac(t){if(!t)return"";const e=new Date(t);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())} ${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}`} o(Ac,"formatDateFull"); function xe(t){if(!t||t<=0)return"";const e=Math.floor(t);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${n(Math.floor(e/3600))}:${n(Math.floor(e%3600/60))}:${n(e%60)}`} o(xe,"formatDuration"); function nn(t){return(t||"").replace(/\s*[((][^))]*[))]\s*/g,"").trim()} o(nn,"stripParens"); function sr(t){if(t===null||t===void 0)return"";return typeof t==="string"?t:String(t)} o(sr,"asText"); var kc={\u96F6:0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9}; function xf(t){let e=0,n=0,r=false;for(const i of String(t)){if(i in kc){n=kc[i];r=true}else if(i==="\u5341"){e+=(n||1)*10;n=0;r=true}else if(i==="\u767E"){e+=(n||1)*100;n=0;r=true}else return NaN}return r?e+n:NaN} o(xf,"cnToNumber"); function Lo(t){const e=String(t==null?"":t);if(/^[0-9]+$/.test(e))return Number(e);return xf(e)} o(Lo,"epNumber"); var cr="0-9\u96F6\u4E00\u4E8C\u4E24\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u767E"; function wn(t){const e=sr(t).trim().match(new RegExp(`^\u7B2C?\\s*([${cr}]+)\\s*\u96C6?$`));if(!e)return"";const n=Lo(e[1]);return n>0?`\u7B2C${n}\u96C6`:""} o(wn,"numberToEpisode"); function lr(t){const e=sr(t).trim();return wn(e)||e} o(lr,"episodeLabel"); function Sn(t){const e=sr(t).trim();return new RegExp(`^\u7B2C\\s*[${cr}]+\\s*\u96C6$`).test(e)||/^S\d+E\d+$/i.test(e)||/^S\d+\s*第\s*\d+\s*集$/i.test(e)} o(Sn,"isEpisodeLabel"); function qt(t){const e=sr(t).trim();const n=o(p=>String(p).padStart(2,"0"),"pad");const r=e.match(/^S(\d{1,2})\s*第\s*(\d{1,3})\s*集$/i)||e.match(/^S(\d{1,2})E(\d{1,3})$/i);if(r)return`S${n(r[1])}E${n(r[2])}`;const i=e.match(/^S(\d{1,2})$/i);if(i)return`S${n(i[1])}`;const c=e.match(new RegExp(`^\u7B2C?\\s*([${cr}]+)\\s*\u96C6?$`));if(c){const p=Lo(c[1]);return p>0?`E${n(p)}`:e}const a=e.match(new RegExp(`\u7B2C\\s*([${cr}]+)\\s*\u96C6\\s*$`));if(!a)return e;const s=Lo(a[1]);if(!(s>0))return e;const l=Co(J(e));if(l)return`S${n(l)}E${n(s)}`;const f=e.slice(0,a.index).trim();return f?`${f} E${n(s)}`:`E${n(s)}`} o(qt,"formatEpisodeShort"); function Lc(t){const e=(t||"").match(/background-image:\s*url\(["']?([^"')]+)["']?\)/i);return e?e[1]:""} o(Lc,"parseBgImage"); function Et(t){if(!t)return true;if(/load\.gif|loading\.gif|placeholder|^data:image|\.svg$/i.test(t))return true;if(/favicon|(?:^|[/_.-])(?:site[-_]?)?(?:logo|ico|icon|default|blank|loading|placeholder|spacer|avatar|no-?(?:img|pic|poster|cover|image))\d*[.\-_/]/i.test(t))return true;if(/(?:^|[/_.-])(?:banner|ads?|adv)\//i.test(t))return true;return false} o(Et,"isPlaceholderImage"); var Rt={OK:"ok",MISSING:"missing",BROKEN:"broken",ABANDONED:"abandoned"}; var ur={PAGE:"page"}; function wf(t){const e=t&&t.coverState;return e===Rt.BROKEN||e===Rt.MISSING||e===Rt.ABANDONED} o(wf,"isCoverUnusable"); function En(t){return!!(t&&t.cover&&!Et(t.cover)&&!wf(t))} o(En,"isCoverUsable"); var Sf=/更新至|更新到|全集|完结|在线观看|在线播放|免费观看|抢先版|正版资源|未删减|高清片|中字/g; var Ef=/(4k|8k|1080p?|2160p?|720p?|hdr10?|hdr|dv|杜比视界|杜比全景声|atmos|remux|blu-?ray|bdrip|web-?dl|webrip|hdts|hdtv|hdrip|x26[45]|h\.?26[45])/gi; var _f=/[\u4e00-\u9fff0-9][::||]+/; var kf=/[\u4e00-\u9fff][\s\-()()【】\[\]]+/; var Tf=2; var Af=/[!?!?]+\s*[0-9]{1,2}$/; function Lf(t){return t.replace(Af,"").trim()} o(Lf,"stripSequelSuffix"); function Cf(t){const e=_f.exec(t);const n=kf.exec(t);let r=null;if(e&&n)r=e.index<=n.index?e:n;else r=e||n;if(!r)return t;const i=t.slice(0,r.index+1).trim();return i.length>=Tf?i:t} o(Cf,"headOfName"); function dr(t){const e=String(t||"").replace(/\s+/g," ").trim();if(!e)return[];const n=Lf(Cf(e));return[e,n,n.replace(Sf," ").replace(Ef," ")].map(r=>r.replace(/\s+/g," ").trim()).filter((r,i,c)=>r.length>=2&&c.indexOf(r)===i)} o(dr,"searchVariants"); var Mf={"\u2160":"1","\u2161":"2","\u2162":"3","\u2163":"4","\u2164":"5","\u2165":"6","\u2166":"7","\u2167":"8","\u2168":"9","\u2169":"10","\u216A":"11","\u216B":"12","\u2170":"1","\u2171":"2","\u2172":"3","\u2173":"4","\u2174":"5","\u2175":"6","\u2176":"7","\u2177":"8","\u2178":"9","\u2179":"10","\u217A":"11","\u217B":"12"}; var yn={"\u3007":0,"\u4E00":1,"\u4E8C":2,"\u4E09":3,"\u56DB":4,"\u4E94":5,"\u516D":6,"\u4E03":7,"\u516B":8,"\u4E5D":9}; function If(t){if(t==="\u5341")return 10;const e=/^([一二三四五六七八九])?十([一二三四五六七八九])?$/.exec(t);if(e)return(e[1]?yn[e[1]]:1)*10+(e[2]?yn[e[2]]:0);if(/^[〇一二三四五六七八九]+$/.test(t)){return Number(Array.from(t).map(n=>yn[n]).join(""))}return yn[t]!=null?yn[t]:null} o(If,"cnNumToInt"); var Pf=/[\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e\u2018\u2019\u201c\u201d\u2020-\u2027\u3000-\u3006\u3008-\u303f\uffe5]/g; function J(t){if(!t)return"";let e=String(t);e=e.replace(/[!-~]/g,n=>String.fromCharCode(n.charCodeAt(0)-65248));e=e.replace(/[Ⅰ-Ⅻⅰ-ⅻ]/g,n=>Mf[n]||n);e=e.replace(/第([〇一二三四五六七八九十]+)(季|集)/g,(n,r,i)=>{const c=If(r);return c?"\u7B2C"+c+i:n});e=e.replace(Pf,"").toLowerCase();e=e.replace(/([\u4e00-\u9fff])0*(\d{1,2})$/,(n,r,i)=>r+"s"+Number(i));e=e.replace(/第0*(\d{1,2})季/g,(n,r)=>"s"+Number(r));e=e.replace(/season0*(\d{1,2})/g,(n,r)=>"s"+Number(r));e=e.replace(/(^|[^a-z])s0*(\d{1,2})(?![a-z0-9])/g,(n,r,i)=>r+"s"+Number(i));return e} o(J,"normalizeName"); function Co(t){const e=t.match(/(^|[^a-z])s(\d{1,2})(?![a-z0-9])/);return e?Number(e[2]):null} o(Co,"seasonOf"); var Of=6; function Mo(t){return t.replace(/(^|[^a-z])s\d{1,2}(?![a-z0-9])/g,"$1")} o(Mo,"stripSeason"); var Rf=["\u7279\u522B\u7BC7","\u7279\u522B\u7248","\u7279\u522B\u5B63","\u756A\u5916\u7BC7","\u756A\u5916","\u5916\u4F20","\u524D\u4F20","\u540E\u4F20","\u5267\u573A\u7248","\u7535\u5F71\u7248","\u771F\u4EBA\u7248","\u91CD\u5236\u7248","ova","oad","sp"]; function Io(t){for(const e of Rf){if(t.length>e.length&&t.endsWith(e)){return{base:t.slice(0,t.length-e.length),tag:e}}}return{base:t,tag:""}} o(Io,"splitSuffix"); function je(t,e){return Po(J(t),J(e))} o(je,"isSameName"); function Po(t,e){if(!t||!e)return false;if(t===e)return true;const n=Io(t);const r=Io(e);if(n.tag!==r.tag)return false;const i=n.base;const c=r.base;if(i===c)return true;const a=Co(i);const s=Co(c);const l=a===null&&s===1||a===1&&s===null;if(a!==s&&!l)return false;if(Mo(i)===Mo(c))return true;const f=i.length<=c.length?i:c;const p=f===i?c:i;return f.length>=Of&&p.startsWith(f)} o(Po,"sameNormalizedName"); function Oo(){const t=new Map;function e(c){const a=c||"";let s=t.get(a);if(s)return s;const l=J(a);s={norm:l,stripped:l?Mo(Io(l).base):""};t.set(a,s);return s}o(e,"compile");function n(c,a){if(!c.norm||!a.norm)return false;if(c.norm===a.norm)return true;const s=c.stripped.length<=a.stripped.length?c.stripped:a.stripped;const l=s===c.stripped?a.stripped:c.stripped;return l.startsWith(s)}o(n,"mayMatch");function r(c,a){const s=e(a);if(!s.norm)return-1;for(let l=0;l{};if(we.some(r=>r.node===t))return()=>{};we.push({node:t,parent:e});if(!Ro){Ro=new MutationObserver(()=>{if(we.some(r=>!r.node.isConnected))Df()});Ro.observe(document.body,{childList:true})}const n=we[we.length-1];return()=>{const r=we.indexOf(n);if(r>=0)we.splice(r,1)}} o(Se,"keepMounted"); function Df(){we.forEach(({node:t,parent:e})=>{if(t.isConnected)return;const n=e&&e.isConnected?e:document.body;if(n&&n.isConnected)n.appendChild(t)})} o(Df,"remountAll"); function Q(t){if(!t||!t.getAttribute)return"";const e=[t.getAttribute("data-original"),t.getAttribute("data-src"),t.getAttribute("data-lazy-src")];if(t.tagName==="IMG")e.push(t.getAttribute("src"),t.src);return e.find(n=>!Et(n))||""} o(Q,"pickImageSrc"); var Mc=".vc-preview-img"; var Cc="vc-preview-enter"; var _n=0; function Nf(t){let e=document.querySelector(".vc-image-preview");if(!e){e=document.createElement("div");e.className="vc-image-preview";e.addEventListener("click",Do);document.body.appendChild(e)}if(t||!e.querySelector(Mc)){e.replaceChildren();[0,1].forEach(()=>{const n=document.createElement("img");n.className="vc-preview-img";n.alt="\u5C01\u9762\u9884\u89C8";e.appendChild(n)})}return e} o(Nf,"ensurePreviewEl"); function Ic(t){return Array.from(t.querySelectorAll(Mc))} o(Ic,"previewLayers"); function Do(){const t=document.querySelector(".vc-image-preview");if(t)t.classList.remove("vc-show");_n++} o(Do,"closeImagePreview"); function No(t){const e=Nf(true);_n++;if(t){const n=Ic(e);if(n[0]){n[0].classList.add("vc-active");n[0].src=t}}void e.offsetWidth;e.classList.add("vc-show")} o(No,"openImagePreview"); function qo(t){const e=document.querySelector(".vc-image-preview");if(!t||!e||!e.classList.contains("vc-show"))return;const n=Ic(e);const r=n.find(l=>l.classList.contains("vc-active"))||n[0];const i=n.find(l=>l!==r);if(!r||!i||r.getAttribute("src")===t)return;const c=++_n;const a=o(()=>{if(c!==_n)return;if(!e.classList.contains("vc-show"))return;i.classList.add(Cc);i.addEventListener("animationend",()=>i.classList.remove(Cc),{once:true});i.classList.add("vc-active");r.classList.remove("vc-active")},"swap");const s=new Image;s.onload=()=>{i.src=t;const l=typeof i.decode==="function"?i.decode().catch(()=>{}):Promise.resolve();l.then(()=>{if(c!==_n)return;requestAnimationFrame(()=>requestAnimationFrame(a))})};s.src=t} o(qo,"updateImagePreview"); var qf=/^(?:豆瓣\s*[::]?\s*)?(\d+(?:\.\d+)?)\s*分?$/; var Ff=/^豆瓣\s*[::]?\s*(\d+(?:\.\d+)?)\s*分?$/; function Pc(t){if(!t)return"";const e=Number(t[1]);if(!(e>0&&e<=10))return"";return String(e)} o(Pc,"scoreOf"); function pr(t){return Pc(qf.exec(String(t||"").trim()))} o(pr,"parseDoubanScore"); function Fo(t){return Pc(Ff.exec(String(t||"").trim()))} o(Fo,"parseDoubanLabeledScore"); function Bo(t){const e=/movie\.douban\.com\/subject\/(\d+)/.exec(String(t||""));return e?e[1]:""} o(Bo,"doubanSubjectId"); function jo(t){const e=Bo(t);return e?"https://movie.douban.com/subject/"+e+"/":""} o(jo,"doubanSubjectUrl"); function Bf(t){const e=t&&t.querySelector?t.querySelector('a[href*="movie.douban.com/subject/"]'):null;if(!e)return null;const n=jo(e.getAttribute("href"));if(!n)return null;return{score:pr(e.textContent),url:n}} o(Bf,"findDoubanLink"); function jf(t){if(!t||!t.querySelectorAll)return null;const e=t.querySelectorAll("span, div, a, em, p, h1, h2, h3, h4, h5");for(const n of e){if(n.children.length)continue;const r=Fo(n.textContent);if(r)return{score:r}}return null} o(jf,"findByDoubanText"); function Ut(t,e,n){if(!t)return null;let r=t;if(t===document){if(!n)return null;r=document.querySelector(n);if(!r)return null}const i=Bf(r);if(i&&i.score)return i;if(Array.isArray(e)){for(const a of e){const s=r.querySelector(a);const l=pr(s&&s.textContent);if(l)return{score:l,url:i?i.url:""}}}const c=jf(r);if(c)return{score:c.score,url:i?i.url:""};return null} o(Ut,"readDoubanRating"); var $f=72; var fr=2; function rn(t,e,n){const r=e.getBoundingClientRect();const i=t.getBoundingClientRect();let c=0;t.querySelectorAll(n).forEach(a=>{const s=a.getBoundingClientRect();if(!s.width||!s.height)return;const l=s.bottom-i.top;if(l>$f)return;const f=s.leftr.left-fr&&s.topr.top-fr;if(f)c=Math.max(c,l)});return Math.round(c)} o(rn,"overlappingTagBottom"); function Oc(t){if(!t)return false;const e=o(()=>{const n=document.createElement("textarea");n.value=t;n.style.position="fixed";n.style.opacity="0";document.body.appendChild(n);n.select();let r=false;try{r=document.execCommand("copy")}catch(i){r=false}document.body.removeChild(n);return r},"fallback");if(navigator.clipboard&&window.isSecureContext){navigator.clipboard.writeText(t).catch(()=>e());return true}return e()} o(Oc,"copyText"); var Rc={id:"dida",name:"\u5600\u55D2\u5F71\u89C6",domains:["www.didahd.xyz"],matches:["*://*.didahd.xyz/*"],include:["/^https?:\\/\\/([^/]*\\.)?didahd\\./"],searchPath:o(t=>"/search/-------------.html?wd="+encodeURIComponent(t),"searchPath"),pageType(){const t=location.pathname;if(t.startsWith("/detail/"))return"detail";if(t.startsWith("/play/"))return"play";if(t.startsWith("/search/"))return"search";if(document.querySelector(".myui-vodlist"))return"list";return"other"},listCardSelector:".myui-vodlist__box, #searchList li",getListCards(){const t=[];const e=new Set;document.querySelectorAll(".myui-vodlist__box").forEach(n=>{if(e.has(n))return;const r=n.querySelector("a.myui-vodlist__thumb");if(!r)return;const i=(r.getAttribute("title")||"").trim();const c=Q(r)||Q(r.querySelector("img"));if(i){e.add(n);t.push({element:n,name:i,cover:c,path:r.pathname})}});document.querySelectorAll("#searchList li").forEach(n=>{if(e.has(n))return;const r=n.querySelector("a.myui-vodlist__thumb");if(!r)return;const i=n.querySelector("a.searchkey");const c=((i==null?void 0:i.textContent)||r.getAttribute("title")||"").trim();const a=Q(r)||Q(r.querySelector("img"));if(c){e.add(n);t.push({element:n,name:c,cover:a,path:r.pathname})}});return t},getDetailInfo(){const t=document.querySelector(".myui-content__thumb img");const e=document.querySelector(".myui-content__detail .title");const n=document.querySelector(".myui-content__thumb a");const r=((e==null?void 0:e.textContent)||"").trim();if(!r)return null;const i=Q(t);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getSiteRating(t){if(!t||t===document){return Ut(document,["#rating .branch",".branch"],".myui-content__detail, #desc")}return Ut(t,[".pic-tag-right",".pic-tag"])},getPlayInfo(){const t=document.querySelector("#player-sidebar .myui-panel__head h3.title");let e="";if(t){const n=t.cloneNode(true);n.querySelectorAll("small").forEach(r=>r.remove());e=n.textContent.trim()}if(!e)return null;return{name:e,path:location.pathname}}}; var Dc={id:"czzy",name:"\u5382\u957F\u8D44\u6E90",domains:["www.4kcz.com","czzy.top","www.cz4k.com"],matches:["*://*.4kcz.com/*","*://*.czzy.top/*","*://*.cz4k.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?(4kcz|czzy|cz4k)\\./"],searchPath:o(t=>"/#vc-search="+encodeURIComponent(t),"searchPath"),onPageReady(){const t=location.hash.match(/vc-search=([^&]+)/);if(!t)return;const e=decodeURIComponent(t[1]);let n=0;const r=o(()=>{if(n++>10)return;const i=document.querySelector("#sosuobox form, form.w-search-form");const c=i==null?void 0:i.querySelector("input[name]");const a=i==null?void 0:i.getAttribute("action");if(i&&c&&a){const s=new URL(a,location.href);s.searchParams.set(c.getAttribute("name"),e);location.href=s.href;return}setTimeout(r,300)},"trySearch");r()},pageType(){const t=location.pathname;if(t.startsWith("/movie/"))return"detail";if(t.startsWith("/v_play/"))return"play";if(/^\/(boss1O1|nimasile)\b/.test(t))return"search";if(document.querySelector(".bt_img, .bt_image"))return"list";return"other"},listCardSelector:".bt_img li, .bt_image li",statusOffset(t,e){const n=rn(t,e,".hdinfo, .furk, .jidi");return n?{top:n+6,left:8}:null},getSiteRating(t){if(!t||t===document){return Ut(document,[".dbpingfen"],".mi_ne_kd.dypre")}return Ut(t,[".rating"])},getListCards(){const t=[];const e=new Set;document.querySelectorAll(".bt_img li, .bt_image li").forEach(n=>{if(e.has(n))return;const r=n.querySelector("a");const i=n.querySelector("img");const c=n.querySelector(".dytit");if(!r)return;const a=((c==null?void 0:c.textContent)||(i==null?void 0:i.alt)||"").trim();const s=Q(i);if(a){e.add(n);t.push({element:n,name:a,cover:s,path:r.pathname})}});return t},getDetailInfo(){const t=document.querySelector(".dyimg img");const e=document.querySelector(".dytext h1");const n=document.querySelector(".paly_list_btn a");const r=((e==null?void 0:e.textContent)||"").trim();if(!r)return null;const i=Q(t);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getPlayInfo(){const t=document.querySelector(".ptit a");if(!t)return null;const e=(t.textContent||"").trim();if(!e)return null;return{name:e,path:t.pathname}}}; var $o=".myui-vodbox-content"; var Nc={id:"hantv",name:"\u97E9\u5267tv",domains:["hanjuc.com","hantv.net","www.hantv.net","hantvz.com","www.hantvz.com"],matches:["*://*.hanjuc.com/*","*://*.hantv.net/*","*://*.hantvz.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?(hantv[a-z]?|hanju[a-z])\\./"],searchPath:o(t=>"/vodsearch.html?wd="+encodeURIComponent(t),"searchPath"),pageType(){const t=location.pathname;if(t.startsWith("/nf-detail/"))return"detail";if(t.startsWith("/nf-play/"))return"play";if(t.startsWith("/vodsearch"))return"search";if(document.querySelector($o))return"list";return"other"},listCardSelector:$o,getListCards(){const t=[];document.querySelectorAll($o).forEach(e=>{var i;const n=e.querySelector('a[href*="/nf-detail/"]');if(!n)return;const r=(((i=n.querySelector(".card-info .title"))==null?void 0:i.textContent)||"").trim();if(!r)return;t.push({element:e.querySelector(".content-card")||n,name:r,cover:Q(n.querySelector(".myui-vodlist__thumb img")),path:n.pathname})});return t},statusOffset(t,e){const n=rn(t,e,".tag-box");return n?{top:n+6,left:8}:null},getDetailInfo(){var n;const t=document.querySelector(".vod-detail-box");if(!t)return null;const e=(((n=t.querySelector(".title-box h1.title"))==null?void 0:n.textContent)||"").trim();if(!e)return null;return{name:e,cover:Q(t.querySelector(".img-box img")),path:location.pathname}},getPlayInfo(){var r;const t=document.querySelector("h1.title_name");const e=t==null?void 0:t.closest('a[href*="/nf-detail/"]');const n=((t==null?void 0:t.textContent)||"").trim()||(((r=document.querySelector(".player-head .video_title"))==null?void 0:r.textContent)||"").trim();if(!n)return null;return{name:n,path:e?e.pathname:zf()}}}; function zf(){var e;const t=(e=location.pathname.match(/^\/nf-play\/(\d+)/))==null?void 0:e[1];return t?`/nf-detail/${t}.html`:location.pathname} o(zf,"detailPathFromPlay"); var zo=15; var qc=200; var Fc=3e3; var Bc=120; var jc=400; var $c=300; var zc=120; var Hc="vc_debug_log"; var Uc=["javbus.com","www.javbus.com","javlibrary.com","www.javlibrary.com"]; var Vc="video_collector_drama_data"; var Gc="video_collector_drama_position"; var Ho="video_collector_drama_fab_pos"; var kn="video_collector_drama_xjump_pos"; var Tn="video_collector_drama_img_cache"; var An="vc_drama_play_tabs_alive"; var Kc="video_collector_drama_domain_alive"; var Yc="video_collector_drama_last_domain"; var $e="video_collector_drama_playback"; var Uo="video_collector_drama_playback_bak"; var on="video_collector_drama_meta"; var vr="video_collector_drama_meta_hits"; var Vo="video_collector_drama_meta_block"; var Wc="https://frodo.douban.com/api/v2/search/movie?q="; var Xc="0ac44ae016490db2204ce0a042db2916"; var Jc="MicroMessenger/"; var Zc="https://servicewechat.com/wx2f9b06c1de1ccfca"; var Qc="https://movie.douban.com/j/subject_abstract?subject_id="; var ta=/异常请求|检测到有异常请求|登录豆瓣|验证码|安全验证|人机验证|滑动验证/i; var Go=10; var Ko=.05; var ea=3e4; var na=5; var ra=30; var mr="video_collector_drama_player_probe"; var Yo="https://raw.giteeusercontent.com/xiaobin90/jVideoCollector/raw/main/sites-domains.json"; var hr="video_collector_drama_domain_list"; var Ln="video_collector_drama_web_search_excluded"; var Cn=[{id:"pianku",name:"\u7247\u5E93",domains:["4k01.pianku.online","4k.pianku.online","4k02.pianku.online","4k03.pianku.online"],searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath")},{id:"shiguang",name:"\u62FE\u5149\u5F71\u89C6",domains:["tv.time1080.xyz"],fold:true,searchPath:o(t=>"/search.php?wd="+encodeURIComponent(t),"searchPath")},{id:"zndy",name:"\u5B85\u7537\u5F71\u89C6",domains:["zndy.top"],fold:true,searchPath:o(t=>"/index.php?wd="+encodeURIComponent(t)+"&source=official","searchPath")},{id:"zhuiying",name:"\u8FFD\u5F71",domains:["zhuiying3.cc"],fold:true,searchPath:o(t=>"/vod/search/wd/"+encodeURIComponent(t)+".html","searchPath")},{id:"jinpai",name:"\u91D1\u724C\u5F71\u9662",domains:["www.vv3nwjk.com"],fold:true,searchPath:o(t=>"/vod/search/"+encodeURIComponent(t),"searchPath")},{id:"jisu",name:"\u6781\u901F\u8FFD\u5267",domains:["jisuzhuiju.com"],fold:true,searchPath:o(t=>"/search?keyword="+encodeURIComponent(t),"searchPath")},{id:"kankanya",name:"\u770B\u770B\u9E2D",domains:["www.kankanya.me"],fold:true,searchPath:o(t=>"/search/-------------.html?wd="+encodeURIComponent(t),"searchPath")},{id:"kxyy",name:"\u5F00\u5FC3\u5F71\u9662",domains:["www.kxyy1.cc"],fold:true,searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath")},{id:"dmxq",name:"\u5927\u7C73\u661F\u7403",domains:["dmxq30.com"],fold:true,searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath")}]; var ge="video_collector_drama_engine_enabled"; var gr="video_collector_drama_site_names"; var Wo="video_collector_drama_video_hosts"; var Jo=/第\s*(\d{1,2})\s*季/; var Hf="v2"; var Xo="ddys_auto_node"; var Uf=/(ova|oad|特别篇|特别版|剧场版|番外|外传)/; function Mn(t){const e=String(t||"").match(/[((][^))]*[))]/g)||[];for(const n of e){const r=Jo.exec(n);if(r)return Number(r[1])}return 0} o(Mn,"seasonFromTitle"); function br(){const t=document.querySelector(".ddys-season-menu .ddys-season-tab.is-active");const e=t?Jo.exec(t.textContent||""):null;return e?Number(e[1]):0} o(br,"seasonFromTab"); function yr(t,e){const n=nn(t);return e?n+" \u7B2C"+e+"\u5B63":n} o(yr,"nameWithSeason"); function Vf(t,e){const n=t.querySelector(".title");const r=n?n.textContent||"":"";const i=J(r);if(!i||!e)return 0;if(Uf.test(i))return 0;if(i.indexOf(e)!==0)return 0;const c=/^(?:s(\d{1,2})|(\d{1,2}))(?!\d)/.exec(i.slice(e.length));return c?Number(c[1]||c[2]):1} o(Vf,"seasonOfBlock"); function oa(t,e,n){const r=t.filter(c=>Vf(c,n)===e);if(!r.length)return null;const i=r.filter(c=>!/part/.test(J((c.querySelector(".title")||{}).textContent||"")));return i[0]||r[0]} o(oa,"pickSeasonBlock"); var ia=["ddys.app","ddys.ai"]; function la(){try{const t=JSON.parse(GM_getValue($e,"{}"));return t&&typeof t==="object"?t:{}}catch(t){return{}}} o(la,"readRecords"); function Gf(t){const e=String(t||"");const n=/[Ss]\d{1,2}[Ee](\d{1,3})/.exec(e)||/第\s*(\d{1,3})\s*集/.exec(e);return n?Number(n[1]):0} o(Gf,"episodeNo"); function Kf(){const t=document.querySelector("script.ddys-playlist-data");if(!t)return[];try{return(JSON.parse(t.textContent||"{}").seasons||[]).map(e=>{const n=Jo.exec(String(e.title||""));return n?Number(n[1]):0}).filter(e=>e>0)}catch(e){return[]}} o(Kf,"allSeasons"); function Yf(t,e){const n=la();let r=null;for(const i of Kf()){if(i===t)continue;const c=n[yr(e,i)];if(!c)continue;const a=Gf(c[0]);if(!a)continue;const s=Number(c[5])||0;if(!r||s>r.at)r={season:i,episode:a,at:s}}return r} o(Yf,"seasonWithRecord"); function ca(){var i;if(new URLSearchParams(location.search).has("ep"))return"";const t=((i=document.querySelector(".post-title"))==null?void 0:i.textContent)||"";if(!t)return"";const e=br()||Mn(t);if(la()[yr(t,e)])return"";const n=Yf(e,t);if(!n)return"";const r="S"+String(n.season).padStart(2,"0")+"E"+String(n.episode).padStart(2,"0");return location.pathname+"?ep="+r} o(ca,"planSeasonSwitch"); function ua(t){const e=document.querySelector('.ddys-node-menu button[data-node-id="'+t+'"]');if(!e||e.disabled||e.classList.contains("is-active"))return;e.click()} o(ua,"clickNode"); function aa(){try{sessionStorage.setItem(Xo,Hf)}catch(t){}} o(aa,"markAutoNode"); function sa(){let t="";try{t=sessionStorage.getItem(Xo)||"";sessionStorage.removeItem(Xo)}catch(e){return}if(!t)return;[0,300,800,1500,3e3].forEach(e=>setTimeout(()=>ua(t),e))} o(sa,"consumeAutoNode"); var da={id:"ddys",name:"\u4F4E\u7AEF\u5F71\u89C6",domains:ia,matches:["*://*.ddys.app/*","*://*.ddys.ai/*"],include:["/^https?:\\/\\/([^/]*\\.)?ddys\\./"],searchPath:o(t=>"/?s="+encodeURIComponent(t)+"&post_type=post","searchPath"),coverReferer:o((t,e)=>(e||"https://"+ia[0])+(t||"/"),"coverReferer"),trackPlaybackOnDetail:true,pageType(){if(new URLSearchParams(location.search).has("s"))return"search";if(document.querySelector(".post-title"))return"detail";if(document.querySelector(".post-box"))return"list";return"other"},listCardSelector:".post-box",getListCards(){const t=[];document.querySelectorAll(".post-box").forEach(e=>{const n=e.querySelector(".post-box-title a")||e.querySelector("a");if(!n)return;const r=e.querySelector(".post-box-title");const i=(r==null?void 0:r.textContent)||"";const c=yr(i,Mn(i));const a=e.querySelector(".post-box-image");const s=Lc((a==null?void 0:a.getAttribute("style"))||"")||Q(a==null?void 0:a.querySelector("img"));if(c){t.push({element:e,name:c,cover:s,path:n.pathname});if(s&&!e.dataset.vcDdysCoverBound){e.dataset.vcDdysCoverBound="1";e.addEventListener("click",()=>{try{sessionStorage.setItem("ddys_cover_"+nn(i),s)}catch(l){}})}}});return t},getDetailInfo(){var r;const t=((r=document.querySelector(".post-title"))==null?void 0:r.textContent)||"";const e=yr(t,br()||Mn(t));if(!e)return null;let n="";try{n=sessionStorage.getItem("ddys_cover_"+nn(t))||""}catch(i){}if(!n){const i=Array.from(document.querySelectorAll(".doulist-item"));const c=J(nn(t));const a=oa(i,br()||Mn(t)||1,c);const s=a||i[i.length-1];if(s)n=Q(s.querySelector("img"))}return{name:e,cover:n,path:location.pathname}},getSiteRating(t){var e;if(!t||t===document){const n=Array.from(document.querySelectorAll(".doulist-item"));if(!n.length)return null;const r=((e=document.querySelector(".post-title"))==null?void 0:e.textContent)||"";const i=br()||Mn(r);const c=oa(n,i||1,J(nn(r)));if(!c)return null;const a=c.querySelector('a.wpd-rating-source[href*="movie.douban.com"]');if(!a)return null;const s=a.parentElement?a.parentElement.querySelector(".rating_nums"):null;const l=pr(s&&s.textContent);const f=jo(a.getAttribute("href"));if(!l&&!f)return null;return{score:l,url:f}}return null},onPageReady(){sa();const t=ca();if(!t)return;aa();location.href=t},planSeasonSwitch:ca,markAutoNode:aa,consumeAutoNode:sa,clickNode:ua}; var fa={id:"libvio",name:"LIBVIO",domains:["libvio.host","www.libvio.mov","www.libvios.com","www.libhd.com","libviobd.com","www.libvio.in","www.libvio.io"],matches:["*://*.libvio.host/*","*://*.libvio.mov/*","*://*.libvios.com/*","*://*.libhd.com/*","*://*.libviobd.com/*","*://*.libvio.in/*","*://*.libvio.io/*"],include:["/^https?:\\/\\/([^/]*\\.)?(libvio|libvios|libviobd|libhd)\\./"],searchPath:o(t=>"/search/-------------.html?wd="+encodeURIComponent(t),"searchPath"),pageType(){const t=location.pathname;if(t.startsWith("/detail/"))return"detail";if(t.startsWith("/w/"))return"play";if(t.startsWith("/search/"))return"search";if(document.querySelector(".stui-vodlist"))return"list";return"other"},listCardSelector:".stui-vodlist__box",getListCards(){const t=[];document.querySelectorAll(".stui-vodlist__box").forEach(e=>{const n=e.querySelector("a.stui-vodlist__thumb");const r=e.querySelector(".stui-vodlist__detail .title");if(!n)return;const i=((r==null?void 0:r.textContent)||n.getAttribute("title")||"").trim();const c=Q(n)||Q(n.querySelector("img"));if(i)t.push({element:e,name:i,cover:c,path:n.pathname})});return t},getDetailInfo(){const t=document.querySelector(".vod-poster img");const e=document.querySelector(".vod-info .title");const n=document.querySelector(".vod-info a");const r=((e==null?void 0:e.textContent)||"").trim();if(!r)return null;const i=Q(t);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getPlayInfo(){const t=document.querySelector(".stui-player__detail .title");const e=((t==null?void 0:t.textContent)||"").trim();if(!e)return null;return{name:e,path:location.pathname}},getSiteRating(t){if(!t||t===document){return Ut(document,[".vod-rating-mobile"],".vod-hero__inner, .stui-player__detail")}return Ut(t,[".pic-tag-top",".pic-tag"])}}; function Wf(t){if(!t.length)return"";const e=t.filter(r=>r.id!=="noneCoverImg"&&!Et(Q(r)));const n=e.length?e[e.length-1]:t[t.length-1];return n.id==="noneCoverImg"?"":Q(n)} o(Wf,"pickCover"); var pa={id:"duse",name:"\u6BD2\u820C\u7535\u5F71",domains:["www.duse2.com","www.duse3.com","www.duse4.com","www.dushe3.app","www.dushe05.com","www.dushe06.com"],matches:["*://*.duse2.com/*","*://*.duse3.com/*","*://*.duse4.com/*","*://*.dushe3.app/*","*://*.dushe05.com/*","*://*.dushe06.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?dush?e\\d+\\./"],searchPath:o(t=>"/#vc-search="+encodeURIComponent(t),"searchPath"),isPlayUrl(t){return/\/play\//.test(t||"")},onPageReady(){const t=location.hash.match(/vc-search=([^&]+)/);if(!t)return;const e=decodeURIComponent(t[1]);let n=0;const r=o(()=>{if(n++>30)return;const i=document.querySelector('input[name="t"], input#t');if(i&&i.value){location.href="/search?t="+encodeURIComponent(i.value)+"&k="+encodeURIComponent(e);return}const c=document.querySelectorAll("script:not([src])");for(const l of c){const f=l.textContent.match(/["']?t["']?\s*[:=]\s*["']([A-Za-z0-9+/=]{16,})["']/);if(f){location.href="/search?t="+encodeURIComponent(f[1])+"&k="+encodeURIComponent(e);return}}let a=document.querySelector('input[type="search"], input[placeholder*="\u641C"], input[placeholder*="Search" i], input[name="wd"], input[name="search"], input[name="q"], input[name="k"]');if(!a){a=Array.from(document.querySelectorAll('input[type="text"]')).find(l=>/search|搜索|搜|片名/.test(l.placeholder||"")||/search|wd|keyword|q|k/.test(l.name||""))}if(!a){const l=document.querySelector('[class*="search" i] i, [class*="search" i] svg, .search-icon, .icon-search, [aria-label*="search" i]');if(l)l.click();setTimeout(r,300);return}const s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;s.call(a,e);a.dispatchEvent(new Event("input",{bubbles:true}));a.dispatchEvent(new Event("change",{bubbles:true}));a.focus();setTimeout(()=>{a.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:true}));a.dispatchEvent(new KeyboardEvent("keyup",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:true}));const l=document.querySelector('button[type="submit"], .search-btn, [class*="search" i] button');if(l)l.click();const f=a.closest("form");if(f)f.dispatchEvent(new Event("submit",{bubbles:true,cancelable:true}))},200)},"trySearch");r()},pageType(){const t=location.pathname;if(t.startsWith("/detail/"))return"detail";if(t.startsWith("/play/"))return"play";if(t.startsWith("/search"))return"search";if(document.querySelector("a.v-item"))return"list";return"other"},listCardSelector:"a.v-item",statusOffset(t,e){const n=rn(t,e,".v-item-top");return n?{top:n+6}:null},getSiteRating(t){if(!t||t===document)return null;return Ut(t,[".v-item-top-left"])},getListCards(){const t=[];document.querySelectorAll("a.v-item").forEach(e=>{let n="";e.querySelectorAll(".v-item-footer .v-item-title").forEach(c=>{if(n)return;if(c.style.display!=="none")n=c.textContent.trim()});if(!n)return;const r=Array.from(e.querySelectorAll(".v-item-cover img"));const i=Wf(r);t.push({element:e,name:n,cover:i,path:e.pathname})});return t},getDetailInfo(){const t=document.querySelector(".detail-pic img");const e=((t==null?void 0:t.getAttribute("alt"))||"").trim();if(!e)return null;return{name:e,cover:Q(t),path:location.pathname}},getPlayInfo(){const t=document.querySelector(".detail-title a");if(!t)return null;const e=(t.textContent||"").trim();if(!e)return null;return{name:e,path:t.pathname}}}; function Xf(){const t=Array.from(document.querySelectorAll("h5")).find(e=>!/^豆瓣/.test(e.textContent.trim()));return((t==null?void 0:t.textContent)||"").trim()} o(Xf,"titleFromPage"); function Jf(){const t=Array.from(document.querySelectorAll("h5")).find(n=>/^豆瓣/.test(n.textContent.trim()));const e=Fo(t&&t.textContent);return e?{score:e}:null} o(Jf,"ratingFromPage"); function Zf(){var e;const t=((e=document.querySelector("video-player"))==null?void 0:e.getAttribute("content-title"))||"";return t.replace(/第\s*\d+\s*集\s*$/,"").trim()} o(Zf,"titleFromPlayer"); function Qf(t,e){var c;const n=t.querySelector("h3, h2, h1");const r=((n==null?void 0:n.textContent)||"").trim();if(r)return r;const i=(e.getAttribute("aria-label")||"").trim().replace(/^播放\s*/,"");if(i)return i;return(((c=t.querySelector("img"))==null?void 0:c.getAttribute("alt"))||"").trim()} o(Qf,"cardName"); function tp(t){const e=t.getAttribute("href")||"";if(!e)return"";if(/^https?:/i.test(e)){try{return new URL(e).pathname}catch(n){return""}}return e.startsWith("/")?e:"/"+e} o(tp,"playPath"); function ep(t){if(t){const n=Array.from(document.querySelectorAll("img")).find(i=>(i.getAttribute("alt")||"").trim()===t);const r=Q(n);if(r)return r}const e=Q(document.querySelector("img.jN, img.jO"));if(e)return e;for(const n of document.querySelectorAll("img")){if(n.closest("article"))continue;const r=Q(n);if(r)return r}return""} o(ep,"pickPlayCover"); var np=72; var rp=.5; var va={top:null,left:null}; function op(t){if(!t)return null;const e=Array.from(t.querySelectorAll("div, span")).find(s=>!s.children.length&&/^豆瓣/.test((s.textContent||"").trim()));if(!e)return null;let n="";try{const s=e.ownerDocument&&e.ownerDocument.defaultView;if(s&&typeof s.getComputedStyle==="function")n=s.getComputedStyle(e).position||""}catch(s){n=""}if(n==="absolute"||n==="fixed")return va;const r=e.parentElement;if(!r)return null;const i=t.getBoundingClientRect();const c=r.getBoundingClientRect();if(!i.height||!c.height)return null;if(c.height>np||c.height>i.height*rp)return va;const a=Math.round(c.bottom-i.top);return a>0?{top:a+6,left:0}:null} o(op,"badgeOffset"); var ma={id:"gaze",name:"\u6CE8\u89C6\u5F71\u89C6",domains:["gaze.red","gazes.store","gazes.top","gaze.show","gazes.host"],matches:["*://*.gaze.red/*","*://*.gazes.store/*","*://*.gazes.top/*","*://*.gaze.show/*","*://*.gazes.host/*"],include:["/^https?:\\/\\/([^/]*\\.)?gazes?\\d*\\./"],searchPath:o(t=>"/filter?search="+encodeURIComponent(t),"searchPath"),pageType(){if(location.pathname.startsWith("/play/")||document.querySelector("video-player"))return"play";if(document.querySelector('a[href*="play/"]'))return"list";return"other"},listCardSelector:"article",statusOffset(t){return op(t)},getSiteRating(t){if(!t||t===document)return Jf();return Ut(t,[])},getListCards(){const t=[];document.querySelectorAll("article").forEach(e=>{const n=e.querySelector('a[href*="play/"]');if(!n)return;const r=Qf(e,n);if(!r)return;t.push({element:e,name:r,cover:Q(e.querySelector("img")),path:tp(n)})});return t},getPlayInfo(){const t=Xf()||Zf();if(!t)return null;return{name:t,cover:ep(t),path:location.pathname}}}; function lt(t){return(t||"").replace(/^www\./,"")} o(lt,"normalizeHost"); var ip=800; var cp=6*60*60*1e3; function ha({lastDomainKey:t,aliveCacheKey:e,probeDeadline:n=ip,ttl:r=cp,isProbeable:i=o(()=>true,"isProbeable")}){let c=null;function a(){if(c===null){try{c=JSON.parse(GM_getValue(t,"{}"))}catch(v){c={}}}return c}o(a,"loadMap");function s(v,x){if(!v||!x)return;const I=a();if(I[v]===x)return;I[v]=x;GM_setValue(t,JSON.stringify(I))}o(s,"recordWorkingDomain");function l(v){return a()[v]||""}o(l,"getLastWorking");function f(v){if(!v||!v.domains||!v.domains.length)return"";const x=l(v.id);if(x&&v.domains.some(I=>lt(I)===lt(x)))return x;return v.domains[0]}o(f,"pickDomain");let p=null;const _=new Map;function b(){if(p)return p;try{p=GM_getValue(e,{})||{}}catch(v){p={}}return p}o(b,"loadAliveCache");function k(){try{GM_setValue(e,p)}catch(v){}}o(k,"saveAliveCache");try{if(typeof GM_addValueChangeListener==="function"){GM_addValueChangeListener(e,(v,x,I)=>{p=I||{}})}}catch(v){}function y(v){const x=b()[v];if(!x||Date.now()-x.ts>=r)return void 0;return!!x.alive}o(y,"cachedAlive");function R(v){const x=y(v);if(x!==void 0)return Promise.resolve(x);if(_.has(v))return _.get(v);const I=new Promise(B=>{const T=b();let O=false;const H=o(q=>{if(O)return;O=true;T[v]={alive:q,ts:Date.now()};k();B(q)},"finish");try{GM_xmlhttpRequest({method:"HEAD",url:"https://"+v+"/",timeout:3e3,onload:o(()=>H(true),"onload"),onerror:o(()=>H(false),"onerror"),ontimeout:o(()=>H(false),"ontimeout")})}catch(q){H(false)}}).then(B=>{_.delete(v);return B});_.set(v,I);return I}o(R,"probeDomain");function S(v){const x=l(v.id);if(x&&v.domains.some(I=>lt(I)===lt(x))){return[x,...v.domains.filter(I=>lt(I)!==lt(x))]}return v.domains}o(S,"candidateDomains");function N(v){if(!v||!v.domains||!v.domains.length)return Promise.resolve("");const x=S(v);const I=x.find(O=>y(O)===true);if(I)return Promise.resolve(I);const B=x.filter(O=>i(v,O)&&y(O)===void 0);const T=x.find(O=>!i(v,O));if(!B.length)return Promise.resolve(T||x[0]);return new Promise(O=>{let H=null;let q=false;let F=B.length;const P=o((w,d)=>{if(q)return;q=true;clearTimeout(H);O(w);if(!d)return;try{if(l(v.id)!==w)s(v.id,w)}catch(g){}},"settle");H=setTimeout(()=>P(f(v)||x[0],false),n);B.forEach(w=>{R(w).then(d=>{if(d){P(w,true)}else if(--F===0){P(T||x[0],false)}})})})}o(N,"findAliveDomain");return{recordWorkingDomain:s,getLastWorking:l,pickDomain:f,findAliveDomain:N}} o(ha,"createDomainResolver"); var Zo=new Map; function ap(t,e){if(t&&t.__fallback)return true;const n=Zo.get(t.id);return!n||n.has(lt(e))} o(ap,"isProbeable"); var sp=ha({lastDomainKey:Yc,aliveCacheKey:Kc,isProbeable:ap}); var{recordWorkingDomain:ga,getLastWorking:ab,pickDomain:Ee,findAliveDomain:cn} =sp; var lp=200; var In=null; function ba(){if(In)return In;try{const t=JSON.parse(GM_getValue(Wo,"[]"));In=Array.isArray(t)?t:[]}catch(t){In=[]}return In} o(ba,"readVideoHosts"); function ya(t){const e=lt(t);return!!e&&ba().includes(e)} o(ya,"isKnownVideoHost"); function xa(t){const e=lt(t);if(!e)return;const n=ba();if(n.includes(e))return;if(n.length>=lp)return;n.push(e);try{GM_setValue(Wo,JSON.stringify(n))}catch(r){}} o(xa,"rememberVideoHost"); var up=24*60*60*1e3; function dp(){try{const t=JSON.parse(GM_getValue(hr,"{}"));return t&&t.sites||{}}catch(t){return{}}} o(dp,"loadRemoteDomains"); var fp=30; function pp(t){return typeof t==="string"&&t.length>0&&t.length<=253&&t.includes(".")&&/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/i.test(t)} o(pp,"isDomainLike"); function Qo(t){if(!Zo.has(t.id))Zo.set(t.id,new Set(t.domains.map(lt)));const e=dp()[t.id];if(!Array.isArray(e)||!e.length)return;const n=new Set(t.domains.map(i=>lt(i)));const r=e.filter(i=>pp(i)&&!n.has(lt(i))).slice(0,fp);if(r.length)t.domains.push(...r)} o(Qo,"mergeRemoteDomains"); function wa(){if(!Yo)return Promise.resolve();try{const t=JSON.parse(GM_getValue(hr,"{}"));if(t&&t.ts&&Date.now()-t.ts{try{GM_xmlhttpRequest({method:"GET",url:Yo,timeout:1e4,onload:o(e=>{try{const n=JSON.parse(e.responseText);if(n&&typeof n.sites==="object"){GM_setValue(hr,JSON.stringify({ts:Date.now(),sites:n.sites}))}}catch(n){}t()},"onload"),onerror:o(()=>t(),"onerror"),ontimeout:o(()=>t(),"ontimeout")})}catch(e){t()}})} o(wa,"refreshDomainList"); var Sa=/hls\.js|dplayer|ckplayer|artplayer|xgplayer|video\.js|videojs|player\.js|playerconfig/i; var Ea=/id=["']player["']|class=["'][^"']*player[^"']*["']|player-loading|player-wrapper|player-container|player-episodes/i; var _a=/\/vodplay\/|\/vod\/play\/|play\.php|\/play\/|\/w\/[\w]+-[\d]+-[\d]+/i; var ka=/\/voddetail\/|\/detail\/|\/vod\/detail\/|\/movie\/|\/series\/|\/vod\/\d+\.html|\/video\/[\w-]+\.html|\/\w*detail\//i; var Ta=/\/vodsearch\/|\/search\/|\?s=|\/index\.php\/vod\/search/i; var Aa=/\/voddetail\/|\/detail\/|\/vod\/|\/video\/[\w-]+\.html|\b(?:play|detail|vod|show|video|movie|view)[\w-]*\.php\?[^"'#<>\s]*\b(?:id|vid)=\d+|\/movie\/[\w-]+|\/tv\/[\w-]+|\/watch\/\d+|\/neirong\/\d+|\/20\d{6}\/?(?:[?#]|$)/i; var La='[class*="poster"], [class*="Poster"]'; var Ca=6; var ti=6; var Ma=6; var Ia=2; var Pa=100; var Oa=.25; var Ra=/影视|电影|电视剧|剧集|动漫|综艺|在线观看|追剧|美剧|韩剧|日剧|港剧|番剧/g; var vp=/^[A-Za-z0-9_]{10,}$/; function xr(t){return String(t||"").replace(/^https?:\/\/[^/]+/i,"").replace(/[?#].*$/,"").split("/").map(e=>vp.test(e)?"#":e.replace(/\d+/g,"#")).join("/").slice(0,60)} o(xr,"shapeKeyOf"); function wr(t){return String(t||"").indexOf("#")>=0||/\.(?:html?|php|aspx?)(?:\/|$)/i.test(String(t||""))} o(wr,"isContentShape"); function Sr(t,e){const n=o(c=>String(c||"").toLowerCase().replace(/^www\./,"").split(".").slice(-2).join("."),"tail");let r="";let i="";try{r=new URL(String(t||""),e).hostname}catch(c){return false}try{i=new URL(String(e||""),e).hostname}catch(c){i=""}if(!i)return true;return!!r&&n(r)===n(i)} o(Sr,"isSameSite"); var Er=/\/(?:tag|tags|category|categories|page|pages|search|login|logout|register|user|users|member|account|author|news|article|blog|archive|archives|sitemap|about|help|faq|privacy|contact|rss|feed|comment|guestbook)(?:\/|$)|^\/?(?:#|javascript|mailto|\?)/i; var _r=[".vod-item",".stui-vodlist__box",".myui-vodlist__box",".module-item",".public-list-box",".movie-card",".video-item",".fed-list-item",".content-card",".home-feed-card",".br-card"]; var Da=["h1",".vod-info .title",".vod-title",".video-title",".video-name"]; var Na=[".title",".name"]; var qa=[".detail-pic img",".vod-pic img",".vod-img img",".poster img",".thumb img",".cover img"]; var Fa=[".vod-poster__wrap img",".stui-player__detail img",".myui-content__thumb img",".module-info-poster img",".movie-poster img",".detail-pic img",".dyimg img",".detail-poster-card img",".play-poster img",".poster img","#detail-poster"]; var Ba=/^vc-/; var ei=/(?:^|[\s_-])(?:recommend|related|similar|guess|like|hot|rank|tj|more|swiper|carousel|slider|public-r)(?:[\s_-]|$)/i; var ja=/相关推荐|相关影片|猜你喜欢|热门推荐|为你推荐|相似影片|更多推荐|推荐影片|本周热门|热门榜单|同类推荐|精选推荐/; var $a=[[/nid\/(\d+)/i,"url:nid"],[/\/vodplay\/[\d]+-[\d]+-(\d+)/i,"url:vodplay"],[/\/ep(\d+)/i,"url:ep"],[/\/episode[_\-/](\d+)/i,"url:episode"],[/[/_-]e(\d{1,4})(?:[/_-]|$)/i,"url:e"]]; var za=[[/第\s*(\d+)\s*[集话回]/,"\u7B2CN\u96C6"],[/E[Pp]?\.?\s*(\d+)/i,"EP"],[/S\d+E(\d+)/i,"S01E02"],[/【(\d+)】/,"\u3010N\u3011"],[/\[(\d+)\]/,"[N]"],[/((\d+))/,"\uFF08N\uFF09"],[/\((\d+)\)/,"(N)"],[/#\s*(\d+)/,"#N"],[/_(\d+)_/,"_N_"],[/-(\d+)-/,"-N-"],[/(\d+)\s*[集话]/,"N\u96C6"]]; var Ha={}; var Ua=[{id:"movie-episode-kit",probe:".movie-episode-desktop-grid, .movie-episode-quick-tab",selectors:[".movie-episode-desktop-grid .movie-button-primary",".movie-episode-quick-tab.movie-button-primary"]}]; var kr=[{id:"maccms-voddetail",name:"MacCMS(voddetail)",detail:/\/voddetail\/\d+/i,play:/\/vodplay\/[\d]+-[\d]+-[\d]+/i,struct:/\bvod-item\b|\bvod-pic\b|\/vodtype\/|\/vodsearch\//i,cardSelector:".vod-item",searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath"),detailFromPlay:o(t=>{const e=String(t||"").match(/^\/vodplay\/(\d+)/i);return e?`/voddetail/${e[1]}.html`:""},"detailFromPlay")},{id:"maccms-indexphp",name:"MacCMS(index.php)",detail:/\/index\.php\/vod\/detail\//i,play:/\/index\.php\/vod\/play\//i,struct:/\/index\.php\/vod\//i,cardSelector:".public-list-box, .module-item",searchPath:null,detailFromPlay:o(t=>{const e=String(t||"").match(/\/vod\/play\/id\/(\d+)/i);return e?`/index.php/vod/detail/id/${e[1]}.html`:""},"detailFromPlay")}]; var ni="\u6B63\u7247"; var ri="spa"; var oi=[[/防火墙正在检查|正在检查您的访问|安全检查中|访问验证|Just a moment|Checking your browser|cf-browser-verification/i,"waf"],[/^加载中\.*$|^Loading\.*$|正在加载中/i,ri],[/Access Denied|403 Forbidden|网站维护|站点维护中|暂停访问|域名暂时停止/i,"denied"]]; var Va=[/\byoutube\.com$/,/\bbilibili\.com$/,/\bb23\.tv$/,/\bdouyin\.com$/,/\bixigua\.com$/,/\biqiyi\.com$/,/\bv\.qq\.com$/,/\byouku\.com$/,/\bmgtv\.com$/,/\bsohu\.com$/,/\bnetflix\.com$/,/\bdisneyplus\.com$/,/\bprimevideo\.com$/,/\bhbomax\.com$/,/\bhulu\.com$/,/\btwitter\.com$/,/\bx\.com$/,/\bfacebook\.com$/,/\binstagram\.com$/,/\bweibo\.com$/,/\bzhihu\.com$/,/\bbaidu\.com$/,/\btaobao\.com$/,/\bjd\.com$/,/\btmall\.com$/,/\bgoogle\.com$/,/\bbing\.com$/,/\bgithub\.com$/,/\bgreasyfork\.org$/,/\bdouban\.com$/,/\byinghezhinan\.com$/,/\bcodepen\.io$/,/\blink3\.cc$/]; var Ga=Uc.map(t=>new RegExp(`\\b${t.replace(/^www\./,"").replace(/\./g,"\\.")}$`)); function Ka(t,e){const n=String(e||"");for(const i of kr){if(i.detail&&i.detail.test(n)||i.play&&i.play.test(n))return i}for(const i of kr){try{if(i.cardSelector&&t.querySelector(i.cardSelector))return i}catch(c){}}let r="";for(const i of kr){if(!i.struct)continue;if(!r){try{r=t.body?t.body.innerHTML.slice(0,4e4):""}catch(c){r=""}}if(r&&i.struct.test(r))return i}return null} o(Ka,"detectFamily"); function ze(t,e){const n=String(e||"");if(Ta.test(n))return"search";if(_a.test(n))return"play";if(ka.test(n))return"detail";let r=false;try{r=Ea.test(t.body?t.body.innerHTML.slice(0,4e4):"")}catch(i){}if(!r){try{r=[...t.querySelectorAll("script[src]")].some(i=>Sa.test(i.src||""))}catch(i){}}if(r&&/play/i.test(n))return"play";return"other"} o(ze,"detectPageType"); function Pn(t,e,n){try{const r=String(e||t.location&&t.location.href||"");const i=n&&n.minLinks||6;const c=o(R=>Sr(R,r),"inSite");let a=0;for(const R of t.querySelectorAll("a[href]")){const S=R.getAttribute("href")||"";if(Aa.test(S)&&c(S)){a++;if(a>=i)return true}}if(_r.some(R=>{try{return t.querySelectorAll(R).length>=6}catch(S){return false}}))return true;let s=0;for(const R of t.querySelectorAll(La)){if(R.querySelector("img")){s++;if(s>=Ca)return true}}const l=new Map;let f=0;let p=0;let _=0;for(const R of t.querySelectorAll("a[href]")){const S=R.getAttribute("href")||"";if(!S||Er.test(S))continue;if(!c(S))continue;const N=xr(S);if(!N||N==="/"||N==="#"||N==="/#")continue;if(!wr(N))continue;const v=R.parentElement;const x=!!R.querySelector("img")||!!(v&&v.querySelector("img"));const I=l.get(N)||{n:0,img:0};const B={n:I.n+1,img:I.img+(x?1:0)};l.set(N,B);if(B.img>f)f=B.img;if(B.n>p){p=B.n;_=B.img}}if(fi!==ri):oi;const r=[];try{if(t.title)r.push(t.title);const i=t.querySelector("h1");if(i)r.push(i.textContent||"");if(t.body)r.push((t.body.textContent||"").slice(0,1500))}catch(i){}for(const i of r){const c=String(i||"").trim();if(!c)continue;for(const[a,s]of n){if(a.test(c))return s}}return""} o(Tr,"detectBlocked"); var mp=/\/vodsearch\/|\/search\/|search\.php|[?&](?:wd|q|kw|keyword)=/i; function ii(t){return mp.test(String(t||""))} o(ii,"isSearchUrl"); var hp=/\.(json|png|jpe?g|gif|svg|css|js|mjs|ico|woff2?|ttf|txt|xml|pdf|zip|rar|mp4|m3u8)$/i; function gp(t){return String(t||"").toLowerCase().replace(/^www\./,"")} o(gp,"normHost"); function Ar({ignoreEngineSwitch:t=false}={}){try{if(!/^https?:$/.test(location.protocol))return false;if(hp.test(location.pathname))return false;const e=gp(location.hostname);if(!e||!e.includes("."))return false;if(Ga.some(n=>n.test(e)))return false;if(Va.some(n=>n.test(e)))return false;if(!t&&GM_getValue(ge,true)===false)return false;return true}catch(e){return false}} o(Ar,"quickPass"); function Ya(t){try{if(!t||!t.body)return false;const e=ze(t,location.href);if(Tr(t,{ignoreSpa:e!=="other"}))return false;if(e!=="other")return true;if(Pn(t,location.href))return true;if(ii(location.href)&&ya(location.hostname)&&Pn(t,location.href,{minLinks:1}))return true;return false}catch(e){return false}} o(Ya,"deepPass"); function He(t,e){let n=e;for(let r=0;r<12&&n&&n.parentElement;r++){if(n.parentElement.tagName==="BODY"&&Ba.test(String(n.className||"")))return true;n=n.parentElement}return false} o(He,"isOwnUi"); function Za(t,e){let n=e;for(let r=0;r<8&&n&&n!==t.body;r++){if(ei.test(String(n.className||""))||ei.test(String(n.id||"")))return true;const i=n.previousElementSibling;if(i&&ja.test(String(i.textContent||"").replace(/\s+/g,"").slice(0,30)))return true;n=n.parentElement}return false} o(Za,"inRecommendBlock"); function Lr(t,e){if(!e)return false;if(He(t,e))return false;if(Za(t,e))return false;return true} o(Lr,"usableImgNode"); var On=o(t=>/^(19|20)\d{2}$/.test(String(t)),"isYear"); var ci=/^(简介|剧情|剧情介绍|返回|返回详情|返回列表|返回首页|返回上页|查看详情|详情页|首页|主页|评论|网友评论|相关推荐|猜你喜欢|热门推荐|最新|最新电影|播放列表|选集|下载|收藏|登录|注册|搜索|更多|详情|影片参数|在线播放|观看历史|推荐|资源|资源列表|播放记录|剧情简介|温馨提示|影片介绍|播放地址|线路|线路选择|片源|加载中|正在加载中|Loading)$/; var bp=/(?:\s*(?:\d+\s*集全|全剧集|共\s*\d+\s*集|更新至\s*\d+\s*[集期话]|更新第\s*\d+\s*[集期话]|更新至|更新到|第\s*\d+\s*期|已完结|完结|全集|全季|正片|高清完整版|完整版|在线观看|播放列表|超清|蓝光|标清|原画|抢先版|清晰版|修复版|4K|8K|1080[Pp]?|720[Pp]?|H[Dd]|HDR|杜比视界))*$/; var yp=/\s*[-_·|]?\s*(?:第\s*\d+\s*[集话回期]|E[Pp]?\s*\d{1,4}|S\d+\s*E\d+)\s*$/; var xp=/^(?:正在播放|在线播放|播放中|播放|观看)\s*/; var wp=/\s*\d*\s*[A-Za-z\u4e00-\u9fa5]{0,6}源线路\s*/g; var Sp=/^(?:官方中字|中文字幕|双语字幕|高清中字|内嵌字幕|外挂字幕|无字幕|免费|在线观看|在线看|高清|超清|完整版|正片|详情|详情介绍|动作|冒险|科幻|恐怖|喜剧|爱情|剧情|悬疑|犯罪|战争|奇幻|动画|纪录片|综艺|电影|电视剧|动漫|美剧|韩剧|日剧|港剧|台剧|短片|预告)$/; function Cr(t,e,n){try{const r=t.querySelector(`meta[${e}="${n}"]`);return r?String(r.getAttribute("content")||"").trim():""}catch(r){return""}} o(Cr,"metaContent"); function de(t,e){let n=String(t||"").replace(/\s+/g," ").trim();const r=o(b=>{const k=/^《([^》]{2,40})》/.exec(String(b).trim());return k?k[1]:null},"takeQuoted");const i=r(n);if(i)n=i;if(ci.test(n.replace(/[《》]/g,"")))return"";n=n.replace(xp,"").replace(wp," ");const c=r(n);if(c)n=c;n=n.replace(/[《》]/g,"");const a=n.split(/[-_|·]/).map(b=>b.trim()).filter(Boolean);const s=a.filter(b=>{if(!b)return false;if(e&&b===e)return false;if(a.length>1&&/^\d{1,4}$/.test(b))return false;if(/^(最新|热门|全集|高清|蓝光|秒播|无广告|免费|在线观看|电影|电视剧|影片|动漫|综艺|纪录片|影视大全|详情介绍|高清完整版)$/.test(b))return false;return true});const l=new Set;const f=(s.length?s:a).filter(b=>{const k=b.replace(/\s/g,"");if(l.has(k))return false;l.add(k);return true});n=f.join(" ").trim();n=n.replace(/[((【\[]\s*(?:19|20)\d{2}\s*[))】\]]/g," ");const p=n.split(/\s+/).filter(Boolean).filter(b=>!/^(?:19|20)\d{2}$/.test(b));if(p.length)n=p.join(" ");n=n.replace(/在线观看|高清完整版|免费观看|全集免费|迅雷下载|详情介绍|在线播放|手机观看|剧情介绍|高清|完整版|免费在线/g,"");n=n.replace(/在线看|官方中字|中文字幕|双语字幕|高清中字|内嵌字幕|详情/g,"");n=n.replace(yp,"").replace(bp,"");n=n.replace(/\s*[-_|·]\s*\d{1,4}\s*$/g,"");n=n.replace(/^(?:电影|电视剧|影片|动漫|综艺|纪录片)\s*/,"").replace(/\s*(?:电影|电视剧|影片|动漫|综艺|纪录片)$/,"");const _=o(b=>{const k=String(b||"").split(/[/、,,|]/).map(y=>y.trim()).filter(Boolean);return k.length>0&&k.every(y=>Sp.test(y))},"isTagNoise");n=n.replace(/^[【\[]\s*([^【\[\]】]{1,20})\s*[】\]]\s*/,(b,k)=>_(k)?"":b);n=n.replace(/\s*[【\[]\s*([^【\[\]】]{1,20})\s*[】\]]\s*$/,(b,k)=>_(k)?"":b);n=n.replace(/[((]\s*[))]/g,"").replace(/[【\[]\s*[】\]]/g,"");n=n.replace(/^[\s\-_|·、,,::.。]+|[\s\-_|·、,,::.。&\s]+$/g,"");return n.trim()} o(de,"cleanTitle"); function Rn(t){if(!t)return true;if(ci.test(t))return true;const e=String(t).split(/[\s::]/)[0];return!!e&&ci.test(e)} o(Rn,"isUiHeading"); function Qa(t){const e=String(t||"");const n=e.match(/\/vodplay\/(\d+)/i)||e.match(/\/vod\/play\/id\/(\d+)/i)||e.match(/\/play\/(\d+)/i)||e.match(/[?&](?:id|vid)=(\d+)/i);return n?n[1]:""} o(Qa,"showIdFromUrl"); function Ep(t){const e=o(a=>String(a||"").replace(/\s+/g," ").trim(),"clean");const n=o(a=>a.length>=2&&a.length<=60&&!Rn(a),"usable");let r="";for(const a of["h1","h2","h3",'[class*="title" i]']){const s=t.querySelector(a);const l=e(s&&s.textContent);if(n(l)){r=l;break}}const i=e(t.textContent);const c=e(t.getAttribute("title"));if(n(r))return{name:r,src:"inner"};if(n(i))return{name:i,src:"text"};if(n(c))return{name:c,src:"title-attr"};return{name:i||c,src:"fallback"}} o(Ep,"selfLinkName"); var _p=/更多信息|详细信息|详情|简介|介绍|上映|主演|导演|评分|更新至|全集|完结|播放列表/; function kp(t,e,n){let r=0;if(e==="inner")r+=3;else if(e==="text"||e==="title-attr")r+=1;if(n&&t.replace(/\s/g,"")===n.replace(/\s/g,""))r+=10;if(/^\d/.test(t))r-=5;if(/[::,,。;;!!??]/.test(t))r-=3;if(t.length>30)r-=3;if(_p.test(t))r-=3;return r} o(kp,"scoreSelfLink"); function ai(t,e){if(!e)return null;const n=new RegExp("(?:^|[^0-9])"+e+"(?:[^0-9]|$)");let r="";try{r=de(String(t.title||"").split(/[-_|]/)[0],"")}catch(c){r=""}let i=null;try{for(const c of t.querySelectorAll("a[href]")){const a=c.getAttribute("href")||"";if(!/\/voddetail\/|\/detail\/|\/vod\/detail\//i.test(a))continue;if(!n.test(a))continue;const{name:s,src:l}=Ep(c);if(!s||s.length<2||s.length>60)continue;const f=kp(de(s,"")||s,l,r);if(!i||f>i.score)i={name:s,href:a,score:f}}}catch(c){}return i&&i.score>0?{name:i.name,href:i.href}:null} o(ai,"findSelfDetailLink"); var Wa=/[\uAC00-\uD7AF\u1100-\u11FF\u3040-\u30FF\u0400-\u04FF]|[A-Za-z]/; function Tp(t,e){const n=String(t.title||"").replace(/\s+/g," ").trim();if(!n)return"";const r=de(n.split(/[-_|]/)[0].trim(),e);return r&&!Rn(r)?r:""} o(Tp,"nameFromDocTitle"); function Mr(t,e,n){const r=Qa(n);const i=ai(t,r);if(i){const p=de(i.name,e);if(p&&!Rn(p))return{name:p,src:"detail-link"}}const c=Tp(t,e);const a=o(p=>{for(const _ of p){try{for(const b of t.querySelectorAll(_)){if(He(t,b))continue;const k=String(b.textContent||"").replace(/\s+/g," ").trim();if(k.length<2||k.length>60)continue;const y=de(k,e);if(y&&!Rn(y))return{name:y,src:_}}}catch(b){}}return null},"bySelectors");const s=a(Da);if(s&&c&&s.name!==c&&Wa.test(s.name)&&!Wa.test(c)){return{name:c,src:"title(\u6536\u655B\u5916\u6587\u526F\u6807\u9898)"}}if(s)return s;if(c)return{name:c,src:"title"};const l=Cr(t,"property","og:title");if(l){const p=de(l,e);if(p&&!Rn(p))return{name:p,src:"og:title"}}const f=a(Na);if(f)return f;return{name:"",src:""}} o(Mr,"extractTitle"); function ts(t){const e=Number(t.getAttribute("width"))||t.naturalWidth||0;const n=Number(t.getAttribute("height"))||t.naturalHeight||0;if(e&&n)return e<100||n<100;if(e)return e<100;if(n)return n<100;return false} o(ts,"tooSmallImage"); var Ap=150; var Lp=/[?&,/_=-](?:w|width)[_=]?(\d{2,4})\b/i; var Cp=/[?&,/_=-](?:h|height)[_=]?(\d{2,4})\b/i; function es(t){const e=Number(t.getAttribute("width"))||t.naturalWidth||0;const n=Number(t.getAttribute("height"))||t.naturalHeight||0;if(e||n)return[e,n];const r=t.currentSrc||t.getAttribute("src")||t.getAttribute("data-src")||t.getAttribute("data-original")||"";const i=Lp.exec(r);const c=Cp.exec(r);return[i?Number(i[1]):0,c?Number(c[1]):0]} o(es,"imgSizeOf"); function Mp(t,e){const[n,r]=es(t);return!!n&&nr){r=f;n=a}}return n||i} o(ns,"pickRepairCover"); function rs(t,e){const n=Cr(t,"property","og:image");if(n&&!Et(n))return{cover:n,src:"og:image"};const r=Cr(t,"name","twitter:image");if(r&&!Et(r))return{cover:r,src:"twitter:image"};if(e){try{for(const i of t.querySelectorAll("img")){if(!String(i.getAttribute("alt")||"").includes(e))continue;if(!Lr(t,i))continue;const c=Q(i);if(c)return{cover:c,src:"img[alt*=name]"}}}catch(i){}}for(const i of qa){try{for(const c of t.querySelectorAll(i)){if(!Lr(t,c))continue;const a=Q(c);if(a)return{cover:a,src:i}}}catch(c){}}try{for(const i of t.querySelectorAll("img")){if(ts(i))continue;if(!Lr(t,i))continue;const c=Q(i);if(c)return{cover:c,src:"img(any)"}}}catch(i){}try{const i=t.querySelector("video[poster]");const c=i?i.getAttribute("poster"):"";if(c&&!Et(c))return{cover:c,src:"video[poster]"}}catch(i){}return{cover:"",src:""}} o(rs,"extractCover"); function Ir(t){for(const e of Fa){try{for(const n of t.querySelectorAll(e)){if(!n||n.tagName!=="IMG")continue;if(ts(n))continue;if(!Lr(t,n))continue;const r=Q(n);if(r&&!Et(r))return{cover:r,src:e}}}catch(n){}}return{cover:"",src:""}} o(Ir,"extractPlayCover"); function Ip(t){const e=String(t||"");let n=e.match(/nid\/(\d+)/i);if(n&&!On(n[1]))return{ep:n[1],src:"url:nid"};n=e.match(/\/vodplay\/\d+-(\d+)-(\d+)/i);if(n&&!On(n[2]))return{ep:n[2],src:"url:vodplay"};for(const[r,i]of $a){const c=r.exec(e);if(c&&c[1]&&!On(c[1]))return{ep:c[1],src:i}}return null} o(Ip,"episodeFromUrl"); var Pp=/^(?:第\s*(\d{1,4})\s*[集话回期]|(\d{1,4}))$/; function Dn(t){const e=Pp.exec(String(t||"").replace(/\s+/g," ").trim());if(!e)return"";const n=e[1]||e[2];return n&&!On(n)?n:""} o(Dn,"epFromLabel"); function Op(t){let e=0;for(const n of t.children){if(Dn(n.textContent)&&++e>=2)return true}return false} o(Op,"episodeListAt"); function Pr(t){let e=t.parentElement;for(let n=0;n<3&&e;n++,e=e.parentElement){if(Op(e))return true}return false} o(Pr,"inEpisodeList"); function Rp(t){try{for(const e of t.querySelectorAll("a, button, li")){if(Dn(e.textContent)&&Pr(e))return true}}catch(e){}return false} o(Rp,"hasEpisodeList"); function Dp(t){const e=String(t||"").match(/^[a-z][a-z0-9+.-]*:\/\/([^/?#]+)/i);return e?e[1].toLowerCase().replace(/^www\./,""):""} o(Dp,"hostOf"); function Np(t,e){const n=Dp(e);if(!n)return"";for(const[r,i]of Object.entries(Ha)){if(!r.split("|").some(c=>n===c||n.endsWith("."+c)))continue;for(const c of i){let a=null;try{a=t.querySelector(c)}catch(l){a=null}if(!a)continue;const s=Dn(a.textContent);if(s&&Pr(a))return s}}return""} o(Np,"episodeByHostSelector"); function qp(t){for(const e of Ua){let n=false;try{n=!!t.querySelector(e.probe)}catch(r){n=false}if(!n)continue;for(const r of e.selectors){let i=null;try{i=t.querySelector(r)}catch(a){i=null}if(!i)continue;const c=Dn(i.textContent);if(c&&Pr(i))return c}}return""} o(qp,"episodeByComponentSelector"); function Xa(t,e,n){if(Number(n)>1)return false;const r=e?new RegExp("(?:^|[^0-9])"+e+"(?:[^0-9]|$)"):null;const i=new Set;let c=0;try{for(const a of t.querySelectorAll("a[href]")){const s=a.getAttribute("href")||"";if(r&&!r.test(s))continue;let l="";const f=s.match(/nid\/(\d+)/i);if(f)l=f[1];else{const _=s.match(/\/vodplay\/\d+-\d+-(\d+)/i);if(_)l=_[1]}if(!l)continue;i.add(l);const p=String(a.textContent||"").replace(/\s+/g," ").trim();if(/^0?\d{1,4}$/.test(p)||/第\s*\d+\s*[集话回期]/.test(p))c++}}catch(a){}if(i.size>=2||c>=2)return false;if(i.size)return true;return!Rp(t)} o(Xa,"looksLikeMovie"); function os(t,e,n){const r=Qa(e);const i=Ip(e);if(i){const l=Xa(t,r,i.ep);return l?{ep:"",label:ni,movie:true,src:"movie"}:{ep:i.ep,label:`\u7B2C${i.ep}\u96C6`,movie:false,src:i.src}}const c=[Mr(t,n,e).name,String(t.title||""),Cr(t,"name","keywords")];for(const l of c){if(!l)continue;for(const[f,p]of za){const _=f.exec(String(l));if(_&&_[1]&&!On(_[1]))return{ep:_[1],label:`\u7B2C${_[1]}\u96C6`,movie:false,src:`text:${p}`}}}const a=Np(t,e);if(a)return{ep:a,label:`\u7B2C${a}\u96C6`,movie:false,src:"ep-active(\u7AD9\u70B9\u7EA7)"};const s=qp(t);if(s)return{ep:s,label:`\u7B2C${s}\u96C6`,movie:false,src:"ep-active(\u7EC4\u4EF6\u7EA7)"};try{const l=t.querySelectorAll('[class*="active"], [class*="current"], [class*="selected"], [aria-current="true"]');for(const f of l){const p=Dn(f.textContent);if(!p||!Pr(f))continue;return{ep:p,label:`\u7B2C${p}\u96C6`,movie:false,src:"active-ep"}}}catch(l){}if(Xa(t,r,""))return{ep:"",label:ni,movie:true,src:"movie(\u515C\u5E95)"};return{ep:"",label:"",movie:false,src:""}} o(os,"extractEpisode"); var Fp=/favicon|(?:^|[/_.-])(?:site[-_]?)?(?:logo|ico|icon|default|loading|blank|placeholder|spacer|avatar|no-?(?:img|pic|poster|cover|image))\d*[.\-_/]|(?:^|[/_.-])(?:banner|ads?|adv)\//i; var Bp=[".card-title",".title",".vod-info .title",'[class*="-title"]:not([class*="sub-"])','[class*="_title"]:not([class*="sub_"])',".name","h3","h2"]; function Or(t,e){for(const c of Bp){const a=t.querySelector(c);const s=a?String(a.textContent||"").replace(/\s+/g," ").trim():"";if(s&&s.length>=2&&s.length<=60)return s}const n=String(e.getAttribute("title")||"").trim();if(n)return n;const r=t.querySelector("img");const i=r?String(r.getAttribute("alt")||"").trim():"";if(i)return i;return String(e.textContent||"").replace(/\s+/g," ").trim().slice(0,60)} o(Or,"cardName"); function is(t,e){try{const n=new URL(t,e);return n.pathname+n.search}catch(n){return t}} o(is,"pathFromHref"); function si(t,e){return is(t.getAttribute("href")||"",e)} o(si,"pathOf"); function jp(t,e,n){const r=[];let i;try{i=t.querySelectorAll(e)}catch(c){return r}for(const c of i){if(He(t,c))continue;const a=c.matches&&c.matches("a[href]")?c:c.querySelector("a[href]");if(!a)continue;const s=de(Or(c,a));if(!s)continue;r.push({element:c,name:s,cover:Q(c.querySelector("img")),path:si(a,n)});if(r.length>=200)break}return r} o(jp,"cardsFromSelector"); var $p='.title, [class*="-title"]:not([class*="sub-"]), [class*="_title"]:not([class*="sub_"])'; var cs=/\/voddetail\/|\/detail\/[\w-]|\/vod\/detail\/|\/movie\/[\w-]|\/vod\/\d+\.html|\/video\/[\w-]+\.html|\b(?:play|detail|vod|show|video|movie|view)[\w-]*\.php\?[^"'#<>\s]*\b(?:id|vid)=\d+/i; function as(t){let e=t;for(let n=0;n<5&&e&&e.tagName!=="BODY";n++){if(e.querySelector("img")){try{if(e.querySelector($p))return e}catch(i){}const r=String(e.textContent||"").replace(/\s+/g," ").trim();if(r.length<=140)return e}e=e.parentElement}return null} o(as,"cardBoxOf"); function zp(t,e){const n=[];const r=new Set;let i;try{i=t.querySelectorAll("a[href]")}catch(c){return n}for(const c of i){if(He(t,c))continue;const a=c.getAttribute("href")||"";if(!cs.test(a))continue;const s=as(c);if(!s||r.has(s))continue;r.add(s);const l=de(Or(s,c));if(!l)continue;n.push({element:s,name:l,cover:Q(s.querySelector("img")),path:si(c,e)});if(n.length>=200)break}return n} o(zp,"cardsFromLinks"); function Hp(t,e){const n=new Map;let r;try{r=t.querySelectorAll("a[href]")}catch(a){return[]}for(const a of r){if(He(t,a))continue;const s=a.getAttribute("href")||"";if(!s||Er.test(s))continue;if(!Sr(s,e))continue;const l=xr(s);if(!l||l==="/"||l==="#"||l==="/#")continue;if(!wr(l))continue;if(!n.has(l))n.set(l,[]);n.get(l).push(a)}const i=[];const c=new Set;for(const a of n.values()){if(a.length=200)return i}}return i} o(Hp,"cardsFromShapeGroups"); var Ja=["data-detail","data-href","data-url","data-link","data-play"]; function Up(t,e){const n=[];let r;try{r=t.querySelectorAll(Ja.map(i=>"["+i+"]").join(","))}catch(i){return n}for(const i of r){if(He(t,i))continue;let c="";for(const l of Ja){const f=String(i.getAttribute(l)||"").trim();if(f){c=f;break}}if(!c||!/^(?:\/|https?:)/i.test(c))continue;if(!cs.test(c))continue;const a=String(i.getAttribute("data-title")||"").replace(/\s+/g," ").trim();const s=de(a||Or(i,i));if(!s)continue;n.push({element:i,name:s,cover:Q(i.querySelector("img")),path:is(c,e)});if(n.length>=200)break}return n} o(Up,"cardsFromDataAttrs"); function ss(t,e,{contentPage:n=false}={}){const r=t.location?t.location.href:"";let i=e;if(!i){i=_r.find(p=>{try{return t.querySelector(p)}catch(_){return false}})}let c=i?jp(t,i,r):[];const a=!n;if(a){const p=zp(t,r);if(p.length){const _=o(b=>c.some(k=>k.element===b||k.element.contains(b)||b.contains(k.element)),"dup");for(const b of p)if(!_(b.element))c.push(b)}}if(a){const p=Up(t,r);if(p.length){const _=new Set(c.map(b=>b.element));for(const b of p)if(!_.has(b.element))c.push(b)}}if(a&&c.length<6){const p=Hp(t,r);if(p.length>c.length){const _=new Set(c.map(b=>b.element));for(const b of p)if(!_.has(b.element))c.push(b)}}const s=new Set(c.map(p=>p.element));const l=o(p=>p===t.body||p===t.documentElement,"isRoot");const f=new Set;for(const p of c){let _=p.element.parentElement;while(_&&!l(_)){if(s.has(_)){f.add(p.element);break}_=_.parentElement}}if(f.size)c=c.filter(p=>!f.has(p.element));for(const p of c){if(p.cover&&Fp.test(p.cover))p.cover=""}return c} o(ss,"extractListCards"); var _e="fb:"; var li=/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i; var Rr=/(?:版|版本)$|推荐$|^(?:极简|纯净|简洁|无广告|免广告|免费|高清|超清|蓝光|秒播|在线观看|全集|最新|热播)$/i; function Vp(t,e,n){const r=o(p=>!!p&&p.length<=20&&!li.test(p)&&!/^\d+$/.test(p),"ok");const i=String(t||"").split(/[-–—·・]/).map(p=>p.trim()).filter(Boolean);if(!i.length)return"";const c=i[i.length-1];const a=c.split(/_/).map(p=>p.trim()).filter(Boolean);if(i.length<2&&a.length<2)return"";if(e&&a.length>1){const p=a.find(_=>_===e&&r(_));if(p)return p}let s=a.length>1?a[0]:c;if(Rr.test(s)){for(let p=i.length-2;p>=0;p--){const _=i[p].trim();if(!_||Rr.test(_))continue;s=_;break}}if(n&&s===n)return"";if(r(s))return s;const l=i[0]||"";if(l.indexOf("_")>=0)return"";const f=l.trim();return r(f)?f:""} o(Vp,"siteNameFromTitle"); var Gp=['header a[class*="logo"]','header [class*="logo"]',".logo","#logo",'a[class*="logo"]',"header img[alt]"]; var Kp=/^(tabler|bootstrap|tailwind|element|ant design|layui|vue|react|next\.?js|nuxt)$/i; function Yp(t){for(const e of Gp){let n;try{n=t.querySelector(e)}catch(a){continue}if(!n)continue;const r=n.querySelector?n.querySelector("img[alt]"):null;const i=String(n.getAttribute&&n.getAttribute("alt")||r&&r.getAttribute("alt")||n.textContent||"").replace(/\s+/g," ").trim();if(!i)continue;const c=i.split(/[-–—|·]/)[0].trim();if(!c||c.length>20||li.test(c)||Kp.test(c))continue;return c}return""} o(Yp,"logoNameOf"); function Wp(t,e){let n="";try{const c=t.querySelector('meta[property="og:site_name"]');n=c?String(c.getAttribute("content")||"").trim():""}catch(c){n=""}n=n.replace(/[((][^))]*[))]\s*$/,"").trim();if(n&&n.length<=20&&!li.test(n))return n;const r=Yp(t);const i=String(t.title||"").replace(/\s+/g," ").trim();if(i){let c="";try{const s=ze(t,String(location.href||""));if(s==="detail"||s==="play"){const l=t.querySelector("h1");const f=l?String(l.textContent||"").replace(/\s+/g," ").trim():"";if(f&&f.length>=2&&f.length<=60)c=f}}catch(s){}const a=Vp(i,r,c);if(a)return a}if(r&&i&&(r===i||i.indexOf(r)===0||r.indexOf(i)===0)){return r.length<=i.length?r:i}return e} o(Wp,"siteNameOf"); function ls(){let t="";try{t=String(location.hostname||"").replace(/^www\./,"")}catch(v){return null}if(!t)return null;const e=document;if(!e||!e.body)return null;const n=location.href;const r=o(()=>{try{return location.href}catch(v){return n}},"nowUrl");if(Tr(e,{ignoreSpa:ze(e,n)!=="other"}))return null;const i=o(()=>{const v=r();return(v.match(/\/vodplay\/(\d+)/i)||v.match(/\/vod\/play\/id\/(\d+)/i)||v.match(/\/play\/(\d+)/i)||v.match(/[?&](?:id|vid)=(\d+)/i)||[])[1]||""},"showIdOf");let c=null;let a=false;let s="";let l=null;let f=0;const p=o(()=>{try{return e.querySelectorAll("a[href]").length}catch(v){return 0}},"countAnchors");const _=o(()=>!!l.length&&l.every(v=>v.element&&v.element.isConnected)&&p()===f,"cardsStillValid");const b=Wp(e,t);const k=o(v=>!v||v===b,"badName");const y=o(()=>{try{return ai(e,i())}catch(v){return null}},"selfLink");const R=o(()=>{const v=y();if(v&&v.href){try{return new URL(v.href,n).pathname}catch(I){}}const x=S.__family?S.__family():null;if(x&&typeof x.detailFromPlay==="function"){const I=x.detailFromPlay(location.pathname);if(I)return I}return location.pathname+location.search},"playPath");const S={id:_e+t,name:b,domains:[location.hostname],matches:[],include:[],__fallback:true,crossSiteTarget:false,pageType(){const v=r();let x=ze(e,v);if(x==="other"&&Pn(e,v))x="list";return x==="list"&&/\/vodsearch\/|\/search\//i.test(v)?"search":x},getDetailInfo(){const v=Mr(e,b,r());if(k(v.name))return null;return{name:v.name,cover:rs(e,v.name).cover,path:location.pathname+location.search}},getPlayInfo(){const v=Mr(e,b,r());if(k(v.name))return null;return{name:v.name,cover:Ir(e).cover,path:R()}},getListCards(){if(l&&_())return l;const v=this.__family();const x=ze(e,r());l=ss(e,v?v.cardSelector:null,{contentPage:x==="play"||x==="detail"});f=p();return l},getPlaybackInfo(){const v=os(e,r(),b);return v.label?{episode:v.label}:null},__family(){const v=r();if(!a||s!==v){c=Ka(e,v);a=true;s=v}return c}};const N=S.__family();if(N&&typeof N.searchPath==="function"){S.searchPath=N.searchPath;delete S.crossSiteTarget}return S} o(ls,"createFallbackAdapter"); var re=[Rc,Dc,Nc,da,fa,pa,ma]; var ke=void 0; function Xp(t){const e=location.href;return(t.include||[]).some(n=>{const r=/^\/(.*)\/$/.exec(n);if(!r)return false;try{return new RegExp(r[1]).test(e)}catch(i){return false}})} o(Xp,"matchInclude"); var Jp=200; var an=null; function sn(){if(an)return an;try{const t=JSON.parse(GM_getValue(gr,"{}"));an=t&&typeof t==="object"?t:{}}catch(t){an={}}return an} o(sn,"readSiteNames"); var Ue=null; function Zp(){if(!Ue){Ue=new Map;for(const[t,e]of Object.entries(sn())){if(typeof t!=="string"||t.indexOf(_e)!==0)continue;const n=t.slice(_e.length);if(!n)continue;const r=Ue.get(e);if(r)r.push(n);else Ue.set(e,[n])}}return Ue} o(Zp,"readFamilyBySiteName"); function Qp(t,e){if(!e||e===t)return[t];const n=Zp().get(e);if(!n||n.length<=1)return[t];return[t,...n.filter(r=>r!==t)]} o(Qp,"familyDomains"); function tv(t,e){if(!t||!e||e===t.slice(_e.length))return;const n=sn();if(n[t]===e)return;if(n[t]===void 0&&Object.keys(n).length>=Jp)return;n[t]=e;Ue=null;try{GM_setValue(gr,JSON.stringify(n))}catch(r){}} o(tv,"rememberSiteName"); function us(){return{...sn()}} o(us,"exportSiteNames"); function ds(t){if(!t||typeof t!=="object")return;const e=sn();let n=false;Object.keys(t).forEach(r=>{const i=t[r];if(typeof i!=="string"||!i||e[r]===i)return;e[r]=i;n=true});if(!n)return;try{GM_setValue(gr,JSON.stringify(e))}catch(r){}an=e;Ue=null;re.forEach(r=>{if(r&&r.__fallback&&e[r.id]&&r.name!==e[r.id])r.name=e[r.id]})} o(ds,"importSiteNames"); function Ve(t){if(!t)return null;const e=re.find(i=>i.id===t);if(e)return e;if(typeof t!=="string"||t.indexOf(_e)!==0)return null;const n=t.slice(_e.length);if(!n)return null;const r=sn()[t]||n;return{id:t,name:r,domains:Qp(n,r),__fallback:true}} o(Ve,"findSiteById"); function ev(){try{if(!Ar()||!Ya(document))return null;const t=ls();if(!t)return null;const e=sn()[t.id];const n=t.id.slice(_e.length);const r=!e||e===n||Rr.test(e);if(e&&!r)t.name=e;re.push(t);tv(t.id,t.name);if(!ii(location.href))xa(n);return t}catch(t){return null}} o(ev,"resolveFallback"); function fs(){if(!ke)ke=void 0} o(fs,"resetCurrentSite"); function xt(){if(ke!==void 0)return ke;const t=location.hostname;const e=re.find(n=>n.domains.some(r=>lt(r)===lt(t))||Xp(n))||null;if(e){ke=e;ga(e.id,t);return ke}ke=ev();return ke} o(xt,"getCurrentSite"); var It={currentTab:"want",currentPage:{want:1,watched:1,history:1},renderedTabs:new Set,searchKeyword:"",siteFilter:""}; var nv=location.hostname==="127.0.0.1"||location.hostname==="localhost"; var rv=typeof __VC_DEV_BUILD__!=="undefined"&&__VC_DEV_BUILD__===true; var Dr=null; function ui(){if(Dr!==null)return Dr;let t=null;try{t=GM_getValue(Hc,null)}catch(e){t=null}Dr=t===null?nv||rv:t===true;return Dr} o(ui,"isDebugLogEnabled"); function Nn(...t){if(ui())console.debug(...t)} o(Nn,"debug"); function U(...t){if(ui())console.log(...t)} o(U,"log"); function ps(...t){if(ui())console.warn(...t)} o(ps,"warn"); function Nr(...t){console.error(...t)} o(Nr,"error"); var ov={jav:"JAV \u89C6\u9891",drama:"\u5F71\u89C6"}; var vs=3*1024*1024; var iv=.9; var cv=30*1e3; var av=["element"]; var sv=["addTime"]; function gs(t){return typeof t==="function"||t&&typeof t==="object"&&typeof t.nodeType==="number"} o(gs,"isRuntimeValue"); function fi(t){return av.indexOf(t)>=0||sv.indexOf(t)>=0} o(fi,"isDroppedField"); function di(t){if(!t||typeof t!=="object")return t;let e=false;const n={};Object.keys(t).forEach(r=>{const i=t[r];if(fi(r)){e=true;return}if(gs(i)){e=true;return}n[r]=i});return e?n:t} o(di,"sanitizeItem"); function ms(t,e){const n=e.map(i=>t[i]===void 0?"":t[i]);const r={};Object.keys(t).forEach(i=>{if(e.indexOf(i)>=0||fi(i))return;if(gs(t[i]))return;r[i]=t[i]});if(Object.keys(r).length)n.push(r);return n} o(ms,"encodeItem"); function hs(t,e){if(!Array.isArray(t))return di(t);const n={};e.forEach((i,c)=>{const a=t[c];if(a!==""&&a!==void 0&&a!==null)n[i]=a});const r=t[e.length];if(r&&typeof r==="object"){Object.keys(r).forEach(i=>{if(!fi(i))n[i]=r[i]})}return n} o(hs,"decodeItem"); function ln(t){try{return en(t)}catch(e){return 0}} o(ln,"jsonBytes"); function bs({storageKey:t,backupFileName:e,moduleId:n,itemIdField:r,itemFields:i,showAlert:c,confirmExport:a,chooseImportStrategy:s,playbackLoadFn:l,playbackSaveFn:f,ratingsLoadFn:p,ratingsSaveFn:_,prefsLoadFn:b,prefsSaveFn:k,siteNamesLoadFn:y,siteNamesSaveFn:R,budgetKeys:S,reclaimRatingsFn:N,onBudgetNotice:v}){const x=300;let I=null;let B=0;let T=0;let O=0;function H(E){return{want:[...E.want||[]],watched:[...E.watched||[]]}}o(H,"snapshot");function q(E){return{want:(E.want||[]).map(M=>ms(M,i)),watched:(E.watched||[]).map(M=>ms(M,i))}}o(q,"packLists");function F(E){return{want:(E&&E.want||[]).map(M=>hs(M,i)),watched:(E&&E.watched||[]).map(M=>hs(M,i))}}o(F,"unpackLists");function P(){const E=Date.now();if(I&&E-I.atG+E[V],0);B=M;T=E.\u6536\u85CF||0;O=Date.now();return{parts:E,total:M,budget:vs}}o(w,"usage");const d=["\u8BC4\u5206\u7F13\u5B58","\u56FE\u7247\u7F13\u5B58"];function g(){return Object.keys(w().parts).filter(E=>d.indexOf(E)<0)}o(g,"keptNames");function C(){const E=w();if(E.total<=E.budget)return E;if(N){const M=N(Math.floor(E.budget*iv))||{};if(M.removed>0){const G=w();U("[\u5B58\u50A8] \u6570\u636E "+Ht(E.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(E.budget)+"\uFF0C\u5DF2\u56DE\u6536 "+M.removed+" \u6761\u8BC4\u5206\u7F13\u5B58\uFF08\u6309\u91CD\u5EFA\u6210\u672C\u4ECE\u4F4E\u5230\u9AD8\uFF1A\u67E5\u4E0D\u5230 \u2192 \u7AD9\u70B9\u76F4\u8BFB \u2192 \u63A5\u53E3\uFF09\uFF0C\u73B0\u5728 "+Ht(G.total)+"\uFF1B"+g().join("\u4E0E")+"\u672A\u52A8");if(v)v("\u5B58\u50A8\u63A5\u8FD1\u4E0A\u9650\uFF0C\u5DF2\u56DE\u6536 "+M.removed+" \u6761\u8BC4\u5206\u7F13\u5B58\uFF08"+g().join("\u4E0E")+"\u672A\u52A8\uFF09");if(G.total<=E.budget)return G}}U("[\u5B58\u50A8] \u6570\u636E "+Ht(E.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(E.budget)+"\uFF1A"+(N?"\u8BC4\u5206\u7F13\u5B58\u5DF2\u5C3D\u91CF\u56DE\u6536\uFF0C":"")+g().join("\u4E0E")+"\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406");if(v)v("\u5B58\u50A8\u5DF2\u8D85\u4E0A\u9650\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406\u90E8\u5206\u5185\u5BB9\uFF08"+g().join("\u4E0E")+"\u4E0D\u4F1A\u88AB\u81EA\u52A8\u5220\u9664\uFF09");return w()}o(C,"enforceBudget");function z(E){const M=w();if(M.total<=M.budget)return M;U("[\u5B58\u50A8] "+E+"\u540E\u6570\u636E "+Ht(M.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(M.budget)+"\uFF1A\u8D85\u51FA\u90E8\u5206\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\uFF08"+g().join("\u4E0E")+"\u59CB\u7EC8\u4FDD\u7559\uFF09\uFF0C\u53EF\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406");if(v)v(E+"\u540E\u6570\u636E "+Ht(M.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(M.budget)+"\uFF0C"+g().join("\u4E0E")+"\u4E0D\u4F1A\u88AB\u81EA\u52A8\u5220\u9664");return M}o(z,"reportBudget");function K(E,M){const G={want:(E.want||[]).map(di),watched:(E.watched||[]).map(di)};let V="";try{V=JSON.stringify(q(G))}catch(it){I=null;c("\u4FDD\u5B58\u5931\u8D25\uFF1A\u6570\u636E\u4E2D\u5B58\u5728\u65E0\u6CD5\u5E8F\u5217\u5316\u7684\u5185\u5BB9");return false}try{GM_setValue(t,V);I={data:G,at:Date.now()}}catch(it){I=null;c("\u4FDD\u5B58\u5931\u8D25\uFF1A\u5B58\u50A8\u7A7A\u95F4\u4E0D\u8DB3\uFF0C\u8BF7\u5148\u5BFC\u51FA\u5907\u4EFD\u5E76\u6E05\u7406\u90E8\u5206\u6536\u85CF");return false}if(!(M&&M.skipBudget))at(ln(V));return true}o(K,"saveData");function at(E){const M=B-T+E;if(M{const et=it[st];if(!et||typeof et!=="object"||!et.score)return;if(G!=="local"||!V[st])V[st]=et});return V}o(vt,"mergeRatings");function Dt(E){if(Array.isArray(E.playback))return E.playback;return Array.isArray(E.history)?E.history:null}o(Dt,"readPlaybackOf");function dt(E){return E.ratings&&typeof E.ratings==="object"?E.ratings:null}o(dt,"readRatingsOf");function se(E){return E.prefs&&typeof E.prefs==="object"?E.prefs:null}o(se,"readPrefsOf");function Yt(E){return E.siteNames&&typeof E.siteNames==="object"?E.siteNames:null}o(Yt,"readSiteNamesOf");function Nt(E,M,G){if(G==="replace")return{...M||{}};const V={...E||{}};Object.keys(M||{}).forEach(it=>{if(G==="local"&&Object.prototype.hasOwnProperty.call(V,it))return;V[it]=M[it]});return V}o(Nt,"mergePrefs");async function Wt(){const E=P();const M={module:n,schema:3,want:E.want,watched:E.watched};if(l)M.playback=l();if(p)M.ratings=p();if(b)M.prefs=b();if(y)M.siteNames=y();const G=M.want.length+M.watched.length;const V=M.playback?M.playback.length:0;const it=M.ratings?Object.keys(M.ratings).length:0;if(!G&&!V){c("\u6682\u65E0\u53EF\u5BFC\u51FA\u7684\u6536\u85CF\u6570\u636E");return}const st=[`\u5171 ${G} \u6761\u6536\u85CF`,V?`${V} \u6761\u89C2\u770B\u8BB0\u5F55`:"",it?`${it} \u6761\u8BC4\u5206\u7F13\u5B58`:""].filter(Boolean).join("\u3001");if(a&&!await a(`\u786E\u5B9A\u5BFC\u51FA\u6536\u85CF\u5907\u4EFD\u5417\uFF1F${st}\uFF0C\u5C06\u4E0B\u8F7D\u4E3A JSON \u6587\u4EF6`))return;const et=new Blob([JSON.stringify(M,null,2)],{type:"application/json"});const ft=URL.createObjectURL(et);const ut=document.createElement("a");ut.href=ft;ut.download=`${e}_${new Date().toLocaleDateString().replace(/\//g,"-")}.json`;ut.click();URL.revokeObjectURL(ft)}o(Wt,"exportData");function At(E){return!!E&&typeof E==="object"&&E[r]!==void 0&&E[r]!==null&&E[r]!==""}o(At,"isValidItem");function le(E){if(!E||!Array.isArray(E.want)||!Array.isArray(E.watched)){return"\u6587\u4EF6\u683C\u5F0F\u4E0D\u6B63\u786E"}if(E.module&&E.module!==n){return`\u8BE5\u5907\u4EFD\u5C5E\u4E8E\u300C${ov[E.module]||E.module}\u300D\u6A21\u5757\uFF0C\u4E0D\u80FD\u5BFC\u5165\u5230\u5F53\u524D\u6A21\u5757`}const M=E.want[0]||E.watched[0];if(M&&!(r in M)){return"\u5907\u4EFD\u6570\u636E\u4E0E\u5F53\u524D\u6A21\u5757\u4E0D\u5339\u914D\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6"}return""}o(le,"validateImported");function j(E,M,G){const V=[...E];const it=new Map(V.map((st,et)=>[st[r],et]));for(const st of M){if(!At(st))continue;const et=st[r];if(it.has(et)){if(G==="import")V[it.get(et)]=st}else{V.push(st);it.set(et,V.length-1)}}return V}o(j,"mergeList");function _t(E,M,G){const V={added:0,duplicates:0,errors:0};if(G==="replace"){const st=o(et=>et.filter(ft=>At(ft)?(V.added++,true):(V.errors++,false)),"clean");return{data:{want:st(M.want),watched:st(M.watched)},stats:V}}const it=o((st,et)=>{const ft=[];for(const A of et){if(At(A))ft.push(A);else V.errors++}const ut=j(st,ft,G);const bt=ut.length-st.length;V.added+=bt;V.duplicates+=ft.length-bt;return ut},"mergeOne");return{data:{want:it(E.want,M.want),watched:it(E.watched,M.watched)},stats:V}}o(_t,"buildMergedData");function Lt(E,M){const G=[M==="replace"?`\u5BFC\u5165 ${E.added} \u6761\u6536\u85CF`:`\u65B0\u589E ${E.added} \u6761\uFF0C\u91CD\u590D ${E.duplicates} \u6761`];if(E.errors)G.push(`\u8DF3\u8FC7\u9519\u8BEF ${E.errors} \u6761`);if(E.playback!=null)G.push(`${E.playback} \u6761\u89C2\u770B\u8BB0\u5F55`);if(E.ratings!=null)G.push(`${E.ratings} \u6761\u8BC4\u5206\u7F13\u5B58`);if(E.prefs!=null)G.push(`${E.prefs} \u9879\u8BBE\u7F6E`);if(E.siteNames!=null)G.push(`${E.siteNames} \u4E2A\u7AD9\u540D`);return`\u5BFC\u5165\u5B8C\u6210\uFF1A${G.join("\uFF0C")}`}o(Lt,"formatResult");function Xt(E){const M=document.createElement("input");M.type="file";M.accept="application/json";M.onchange=G=>{const V=G.target.files[0];if(!V)return;const it=new FileReader;it.onload=async st=>{try{const et=JSON.parse(st.target.result);const ft=le(et);if(ft){c(ft);return}const ut=await s();if(!ut)return;const bt=P();const{data:A,stats:X}=_t(bt,et,ut);K(A,{skipBudget:true});const Y=Dt(et);if(l&&f&&Y){const mt=ut==="replace"?Y.filter(At):j(l(),Y,ut);f(mt);X.playback=mt.length}const tt=dt(et);if(p&&_&&tt){const mt=vt(p(),tt,ut);_(mt);X.ratings=Object.keys(mt).length}const kt=se(et);if(b&&k&&kt){const mt=Nt(b(),kt,ut);k(mt);X.prefs=Object.keys(mt).length}const ct=Yt(et);if(y&&R&&ct){const mt={...ct,...y()||{}};R(mt);X.siteNames=Object.keys(mt).length}z("\u5BFC\u5165");if(E)E();c(Lt(X,ut))}catch(et){c("\u6587\u4EF6\u89E3\u6790\u5931\u8D25")}};it.readAsText(V)};M.click()}o(Xt,"importData");return{loadData:P,saveData:K,exportData:Wt,importData:Xt,usageInfo:w,enforceBudget:C}} o(bs,"createStorageHelper"); var ws=new Set(["video","audio"]); var lv=1e3; var qr=null; var ys=0; function qn(t){const e=[];if(!t||typeof t.querySelectorAll!=="function")return e;t.querySelectorAll("*").forEach(n=>{if(n.tagName.indexOf("-")<0)return;const r=n.shadowRoot;if(!r)return;ws.forEach(i=>r.querySelectorAll(i).forEach(c=>e.push(c)))});return e} o(qn,"queryShadowMediaIn"); function uv(t,e){const n=o(c=>e==="video"?c.filter(a=>a.tagName==="VIDEO"):e==="audio"?c.filter(a=>a.tagName==="AUDIO"):c,"pick");const r=qr?qr.filter(c=>c.isConnected):[];if(r.length)return n(r);if(Date.now()e.push(a));c.querySelectorAll("iframe").forEach(a=>{try{const s=a.contentDocument;if(s&&!i.has(s)){i.add(s);r.push(s)}}catch(s){}})}if(!e.length&&ws.has(t))return uv(n,t);return e} o(oe,"queryAllInFrames"); function Ss(){const t=[window];const e=new Set([document]);const n=[document];while(n.length){const r=n.shift();r.querySelectorAll("iframe").forEach(i=>{try{const c=i.contentDocument;if(c&&!e.has(c)){e.add(c);if(c.defaultView)t.push(c.defaultView);n.push(c)}}catch(c){}})}return t} o(Ss,"listSameOriginWindows"); function Fr(){const t=oe("video")[0]||null;if(!t)return{video:null,frame:null};let e=null;try{e=t.ownerDocument.defaultView.frameElement||null}catch(n){e=null}return{video:t,frame:e}} o(Fr,"findPlayerVideo"); function Es(t){if(!t||typeof t.focus!=="function")return false;if(t.tabIndex<0&&!t.hasAttribute("tabindex"))t.tabIndex=-1;try{t.focus({preventScroll:true})}catch(e){return false}return t.ownerDocument.activeElement===t} o(Es,"focusEl"); function dv(t){const e=t.getBoundingClientRect();return e.width>=200&&e.height>=120} o(dv,"isVisibleFrame"); function fv(t){try{return!t.contentDocument}catch(e){return true}} o(fv,"isCrossOriginFrame"); function pi(t){let e=null;let n=0;t.forEach(r=>{const i=r.getBoundingClientRect();const c=i.width*i.height;if(c>n){n=c;e=r}});return e} o(pi,"largestOf"); function un(t){const e=Array.from(document.querySelectorAll("iframe")).filter(dv);if(!e.length)return null;if(t){const i=e.filter(c=>{try{return c.matches(t)}catch(a){return false}});if(i.length)return pi(i)}const n=e.filter(i=>/player|play\.php|\/vod\//i.test(i.getAttribute("src")||""));if(n.length)return pi(n);const r=e.filter(fv);return pi(r.length?r:e)} o(un,"pickPlayerFrame"); function xs(t){if(!t)return false;const e=Es(t);try{t.contentWindow.focus()}catch(n){}return e||document.activeElement===t} o(xs,"focusFrame"); function Fn(t,{force:e=false}={}){const n=document.activeElement;if(n&&n!==document.body&&n!==document.documentElement){if(!e||n.tagName!=="IFRAME")return false}const{video:r,frame:i}=Fr();if(i)return xs(i);if(r)return Es(r);return xs(un(t))} o(Fn,"focusPlayer"); var vi=false; function Br(){vi=true} o(Br,"markVolumeTouched"); function _s(){vi=false} o(_s,"resetVolumeTouched"); function jr(){return vi} o(jr,"isVolumeTouched"); function Ge(t,e,{unmute:n=false}={}){const r=Math.max(0,Math.min(1,Math.round(Number(e)*100)/100));t.volume=r;if(n&&t.muted)t.muted=false;return r} o(Ge,"setVideoVolume"); var pv=500; var vv=24; var Bn=null; function ks(t){Bn=typeof t==="function"?t:null} o(ks,"setRemoteVolume"); function Ts(t){if(jr())return 0;const e=oe("video");let n=0;e.forEach(r=>{try{Ge(r,t,{unmute:false});n++}catch(i){}});if(Bn){try{if(Bn(t)!==false)n++}catch(r){}}return n} o(Ts,"applyVolumeNow"); function As({getVolume:t}){let e=null;let n=0;let r=false;let i=false;const c=new Set;const a=o(()=>s(i),"onPlay");function s(_){const b=t();if(!(b>=0))return 0;const k=oe("video");let y=0;k.forEach(R=>{if(!c.has(R)){c.add(R);try{R.addEventListener("play",a)}catch(S){}}try{Ge(R,b,{unmute:_});y++}catch(S){}});if(Bn){try{if(Bn(b)!==false)y++}catch(R){}}return y}o(s,"apply");function l(){if(i)return;i=true;if(!jr())s(true);f()}o(l,"onGesture");function f(){window.removeEventListener("pointerdown",l,true);window.removeEventListener("keydown",l,true)}o(f,"removeGestureListeners");function p(){if(!e)return;clearInterval(e);e=null}o(p,"stopPolling");return{start(){if(r)return;r=true;n=0;window.addEventListener("pointerdown",l,true);window.addEventListener("keydown",l,true);s(false);p();e=setInterval(()=>{n++;if(jr()){p();return}s(i);if(n>=vv)p()},pv)},stop(){if(!r)return;r=false;p();f();c.forEach(_=>{try{_.removeEventListener("play",a)}catch(b){}});c.clear()}}} o(As,"createVolumeSync"); var Qt={favPeekOpacity:{key:"video_collector_ui_fav_peek_opacity",def:55,min:10,max:100,step:5},favSize:{key:"video_collector_ui_fav_size",def:"small"},favMark:{key:"video_collector_ui_fav_mark",def:true},ratingRemote:{key:"video_collector_ui_rating_remote",def:true},xjumpOpacity:{key:"video_collector_ui_xjump_opacity",def:100,min:0,max:100,step:5},xjumpSize:{key:"video_collector_ui_xjump_size",def:"large"},volume:{key:"video_collector_ui_volume",def:100,min:0,max:100,step:5}}; var Ls="vc-ui-style"; function jt(t){const e=Qt[t];const n=GM_getValue(e.key,e.def);if(typeof e.def==="boolean")return n===true;if(e.min!=null){const r=Number(n);return Number.isFinite(r)?Math.min(e.max,Math.max(e.min,r)):e.def}return n==="small"?"small":"large"} o(jt,"getUiSetting"); function Te(){const t=Number(jt("favPeekOpacity"))/100;const e=Number(jt("xjumpOpacity"))/100;let n=document.getElementById(Ls);if(!n){n=document.createElement("style");n.id=Ls;(document.head||document.documentElement).appendChild(n)}n.textContent=`:root{--vc-fav-peek-opacity:${t};--vc-xjump-opacity:${e};}`;document.documentElement.classList.toggle("vc-fav-sm",jt("favSize")==="small");document.documentElement.classList.toggle("vc-fav-nomark",jt("favMark")===false);document.documentElement.classList.toggle("vc-xjump-sm",jt("xjumpSize")==="small")} o(Te,"applyUiStyles"); function Cs(t){GM_setValue(Qt.favPeekOpacity.key,Number(t));Te()} o(Cs,"setFavPeekOpacity"); function Ms(t){GM_setValue(Qt.favSize.key,t);Te()} o(Ms,"setFavSize"); function Is(t){GM_setValue(Qt.favMark.key,t===true);Te()} o(Is,"setFavMark"); function mi(){return jt("ratingRemote")!==false} o(mi,"getRatingRemote"); function Ps(t){GM_setValue(Qt.ratingRemote.key,t===true)} o(Ps,"setRatingRemote"); function Os(t){GM_setValue(Qt.xjumpOpacity.key,Number(t));Te()} o(Os,"setXjumpOpacity"); function Rs(t){GM_setValue(Qt.xjumpSize.key,t);Te()} o(Rs,"setXjumpSize"); function Ds(t){const e=Math.round(Number(t));GM_setValue(Qt.volume.key,e);_s();Ts(e/100)} o(Ds,"setVolume"); function Ns(){const t={};Object.keys(Qt).forEach(e=>{t[Qt[e].key]=jt(e)});return t} o(Ns,"exportUiSettings"); function qs(t){if(!t||typeof t!=="object")return;let e=false;Object.keys(Qt).forEach(n=>{const r=Qt[n].key;if(!Object.prototype.hasOwnProperty.call(t,r))return;GM_setValue(r,t[r]);e=true});if(e)Te()} o(qs,"importUiSettings"); var Fs=`.ad-box, .bcpic2 { display: none !important; } iframe[src*="jads.co"], iframe[src*="adshow.php"] { display: none !important; } .topbanner1, #topbanner11 { display: none !important; } .sidebanner1, #sidebanner11 { display: none !important; } #middlebanner11, #middletextbanner { display: none !important; } #float-ad { display: none !important; } #fuck-u { display: none !important; } .artplayer-plugin-ads { display: none !important; } .t-img-box, #iaujwnefhw { display: none !important; } .mi_btcon.ad, .module-adslist, .ads_w, .footerad, .right-ad, .close-ads, .gg-icon { display: none !important; } a[data-gaze-ad-banner], a[href*="ad.wyspg.com"] { display: none !important; } [class*="video-ad-pause__Container"], .play-ad, .ad-row, .ec-ad, .ec-ad-double, .small-icon-container, a[href*="mitnpkwxvfr.com"], a[href*="taiee.xyz"] { display: none !important; } .site-promo-card, a[href*="mitnpkwxvfr.com"] { display: none !important; }`; var Ae="video_collector_adblock"; var hv="adBlockEnabled"; var Bs=false; function gv(){if(Bs)return;Bs=true;try{if(GM_getValue(Ae,null)!==null)return;const t=GM_getValue(hv,null);if(t!==null)GM_setValue(Ae,!!t)}catch(t){}} o(gv,"migrateLegacyKey"); function $r(){gv();return GM_getValue(Ae,true)} o($r,"isAdBlockEnabled"); function zr(){const t="vc-adblock-style";if(!$r()){const r=document.getElementById(t);if(r)r.remove();return}if(document.getElementById(t))return;const e=document.createElement("style");e.id=t;e.textContent=Fs;const n=o(()=>{const r=document.head||document.documentElement;if(r){r.appendChild(e);return true}return false},"tryInject");if(!n()){const r=new MutationObserver(()=>{if(n())r.disconnect()});try{r.observe(document,{childList:true,subtree:true})}catch(i){requestAnimationFrame(n)}setTimeout(()=>r.disconnect(),3e3)}} o(zr,"applyAdBlock"); function js(t){GM_setValue(Ae,!!t);zr()} o(js,"setAdBlockEnabled"); function $s(){return{[Ae]:$r()}} o($s,"exportAdblock"); function zs(t){if(!t||typeof t!=="object")return;if(!Object.prototype.hasOwnProperty.call(t,Ae))return;GM_setValue(Ae,!!t[Ae]);zr()} o(zs,"importAdblock"); var bv=15e3; function Hs(t,e){return new Promise(n=>{const r=o(i=>{ps("[\u5F71\u89C6\u6536\u85CF] \u5C01\u9762\u6293\u53D6\u5931\u8D25\uFF1A",i,t);n(null)},"fail");try{GM_xmlhttpRequest({method:"GET",url:t,headers:e?{Referer:e}:{},responseType:"arraybuffer",timeout:bv,onload:o(i=>{const c=i.response;if(!c||i.status&&i.status>=400){r(i.status);return}try{n(new Blob([c]))}catch(a){r("Blob \u6784\u9020\u5931\u8D25")}},"onload"),onerror:o(()=>r("\u7F51\u7EDC\u9519\u8BEF"),"onerror"),ontimeout:o(()=>r("\u8D85\u65F6"),"ontimeout")})}catch(i){n(null)}})} o(Hs,"fetchImageBlob"); function Hr(t){return(t||"").replace(/^http:\/\//i,"https://")} o(Hr,"toHttps"); function Vt(t,e){const n=t||"";if(!n||/^[a-z][a-z0-9+.-]*:/i.test(n))return n;try{return new URL(n,e||location.href).href}catch(r){return n}} o(Vt,"toAbsoluteUrl"); var Us=`
`; var Vs=`
选择导入方式
`; function Gs(){const t=document.createElement("div");t.className="vc-confirm-mask";t.innerHTML=Us;document.body.appendChild(t);requestAnimationFrame(()=>t.classList.add("vc-show"));function e(){t.classList.remove("vc-show");setTimeout(()=>t.remove(),150)}o(e,"close");return{mask:t,close:e}} o(Gs,"createModal"); function Le(t,{danger:e=false}={}){return new Promise(n=>{const{mask:r,close:i}=Gs();r.querySelector(".vc-confirm-text").textContent=t;if(e)r.querySelector(".vc-confirm-ok").classList.add("vc-danger");function c(a){i();n(a)}o(c,"finish");r.querySelector(".vc-confirm-cancel").onclick=()=>c(false);r.querySelector(".vc-confirm-ok").onclick=()=>c(true);r.onclick=a=>{if(a.target===r)c(false)}})} o(Le,"showConfirm"); function Ks(t){return new Promise(e=>{const{mask:n,close:r}=Gs();n.querySelector(".vc-confirm-text").textContent=t;n.querySelector(".vc-confirm-cancel").style.display="none";n.querySelector(".vc-confirm-ok").onclick=()=>{r();e()};n.onclick=i=>{if(i.target===n){r();e()}}})} o(Ks,"showAlert"); function Ys(){return new Promise(t=>{const e=document.createElement("div");e.className="vc-confirm-mask";e.innerHTML=Vs;document.body.appendChild(e);requestAnimationFrame(()=>e.classList.add("vc-show"));function n(r){e.classList.remove("vc-show");setTimeout(()=>e.remove(),150);t(r)}o(n,"close");e.querySelectorAll(".vc-import-option").forEach(r=>{r.onclick=()=>n(r.dataset.vcStrategy)});e.querySelector(".vc-confirm-cancel").onclick=()=>n(null);e.onclick=r=>{if(r.target===e)n(null)}})} o(Ys,"showImportStrategyDialog"); var Ws=2e3; var Xs=2e3; var Js=4e3; var Zs=8e3; var Qs=60; var tl=8; var el=1e4; var nl=1e4; var wv=''; function Sv(t){let e=0;for(const n of String(t||"")){const r=n.codePointAt(0);const i=r>=11904&&r<=40959||r>=63744&&r<=64255||r>=65280&&r<=65376||r>=12288&&r<=12351;e+=i?1:.5}return Math.ceil(e)} o(Sv,"readableLength"); function Ev(t,{tone:e="info",duration:n=0,clickable:r=false}={}){const i=Number(n);if(Number.isFinite(i)&&i>0)return i;const c=e==="error"?Zs:e==="warn"?Js:e==="ok"?Xs:Ws;const a=Math.max(0,Sv(t)-tl)*Qs;const s=Math.min(el,c+a);return r?Math.max(s,nl):s} o(Ev,"toastDuration"); function rt(t,{tone:e="info",duration:n=0,icon:r="",variant:i="",emphasis:c="",onClick:a=null,linkText:s=""}={}){let l=document.querySelector(".vc-toast");if(!l){l=document.createElement("div");l.className="vc-toast";l.innerHTML=` ${wv} `;l.querySelector(".vc-toast-close").addEventListener("click",()=>{l.classList.remove("vc-show")});l.addEventListener("click",k=>{if(k.target.closest(".vc-toast-close"))return;if(typeof l._onClick!=="function")return;const y=l._onClick;l._onClick=null;l.classList.remove("vc-toast-clickable");l.classList.remove("vc-show");y()});document.body.appendChild(l)}l._onClick=typeof a==="function"?a:null;l.classList.toggle("vc-toast-clickable",!!l._onClick);l.classList.remove("vc-show");void l.offsetWidth;l.classList.toggle("vc-toast-primary",i==="primary");l.querySelector(".vc-toast-icon").style.display=r==="play"?"":"none";const f=l.querySelector(".vc-toast-text");const p=[];const _=o((k,y)=>{const R=k?t.indexOf(k):-1;if(R>=0)p.push({at:R,len:k.length,cls:y})},"mark");_(c,"vc-toast-emph");_(s,"vc-toast-link");p.sort((k,y)=>k.at-y.at);f.textContent="";if(!p.length){f.textContent=t}else{let k=0;p.forEach(y=>{if(y.atk)f.append(document.createTextNode(t.slice(k,y.at)));const R=document.createElement("span");R.className=y.cls;R.textContent=t.slice(y.at,y.at+y.len);f.append(R);k=y.at+y.len});if(kl.classList.remove("vc-show"),b)} o(rt,"showToast"); var Ce=24*60*60*1e3; var rl=[30*Ce,60*Ce]; var Vr=Infinity; var fl=90*Ce; var _v=3; var xi=2*Ce; var kv=3*Ce; var Tv=1*Ce; var Av=45*1e3; var hi=5*60*1e3; var ol=3; var il=[20*60*1e3,2*60*60*1e3,6*60*60*1e3,24*60*60*1e3]; var Lv=24*60*60*1e3; var Cv=3; var Hn=24; var wi=10*60*1e3; var Gr=30; var Mv=1; var Iv=8e3; var Pv=4e3; var pl=1e4; var dn=3; var cl=24; var te=null; var gt=[]; var Un=new Map; var gi=new Set; var Pt=new Set; var $n=0; var zn=null; var Ur=0; var fn=0; var al=false; var bi=null; function vl(t){bi=t} o(vl,"setBudgetGuard"); function Me(){let t=null;try{t=JSON.parse(GM_getValue(Vo,""))||null}catch(e){t=null}if(!t||typeof t.until!=="number"){return{until:0,kind:"soft",level:0,reason:"",at:0}}if(t.level&&Date.now()-(t.at||0)>Lv){t={until:0,kind:t.kind,level:0,reason:t.reason,at:t.at}}return t} o(Me,"loadBlock"); function Si(t){try{GM_setValue(Vo,JSON.stringify(t))}catch(e){}} o(Si,"commitBlock"); function yi(t,e,n,r){const i=Date.now();Si({until:i+n,kind:t,level:e,reason:r,at:i});if(t==="soft")_l()} o(yi,"applyBlock"); function ml(t){const e=Me();return e.kind===t?e.level:0} o(ml,"baseLevel"); function hl(t){return typeof t==="string"&&t.length>0&&ta.test(t)} o(hl,"isBlockPage"); function Gt(){if(te)return te;try{te=JSON.parse(GM_getValue(on,"{}"))||{}}catch(t){te={}}if(!al){al=true;let t=0,e=0;const n=Date.now();Object.keys(te).forEach(r=>{const i=te[r];if(!i||!i.miss)return;if(i.v!==dn){delete te[r];t++;return}if(n-(i.ts||0)>=xi){delete te[r];e++}});if(t){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6E05\u7406 "+t+' \u6761\u65E7\u6570\u636E\u6E90\u7559\u4E0B\u7684"\u672A\u547D\u4E2D"\u7F13\u5B58\uFF0C\u4F1A\u91CD\u65B0\u67E5\u4E00\u6B21')}if(e){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6E05\u7406 "+e+' \u6761\u5DF2\u8FC7\u51B7\u5374\u671F\u7684"\u672A\u547D\u4E2D"\u7F13\u5B58')}if(t||e)be(te)}return te} o(Gt,"load"); function be(t){te=t;try{GM_setValue(on,JSON.stringify(t))}catch(e){}if(bi)bi()} o(be,"commit"); var sl=500; function Ov(t){try{return en(JSON.stringify(t))}catch(e){return 0}} o(Ov,"storeBytes"); function gl(t){const e=Gt();let n=Ov(e);if(n<=t)return{removed:0,bytes:n};const r=Date.now();const i=[],c=[],a=[];Object.keys(e).forEach(f=>{const p=e[f];if(!p)return;if(p.miss){if(r-(p.ts||0)>=xi)i.push(f);return}if(p.src==="dom")c.push(f);else a.push(f)});const s=o((f,p)=>(e[f].ts||0)-(e[p].ts||0),"byOldest");i.sort(s);c.sort(s);a.sort(s);let l=0;for(const f of[i,c,a]){for(const p of f){if(n<=t||l>=sl)break;try{n-=en(p)+en(JSON.stringify(e[p]))+3}catch(_){n-=60}delete e[p];l++}if(n<=t||l>=sl)break}if(l)be(e);return{removed:l,bytes:n}} o(gl,"reclaimRatings"); function bl(t,e){const n=Number(t),r=Number(e);return n>0&&n===r} o(bl,"sameScore"); function Vn(t){if(!t)return 0;if(t.norate)return kv;if(!t.score)return 0;if(t.src==="dom")return(t.n||0)>=_v?Vr:fl;const e=(t.n||1)-1;return e=Vn(e)} o(yl,"isStale"); function xl(){return Gt()} o(xl,"loadRatingMap"); function wl(t){be(t||{})} o(wl,"saveRatingMap"); function _i(t){return"https://search.douban.com/movie/subject_search?search_text="+encodeURIComponent(t||"")} o(_i,"searchUrlOf"); function Yr(t){return t?"https://movie.douban.com/subject/"+t+"/":""} o(Yr,"subjectUrlOf"); var Rv=/^https?:\/\/movie\.douban\.com\/(?:subject|movie|tv)\/(\d+)\/?$/; var Dv=/\/(?:subject|movie|tv)\/(\d{4,})/; function Wr(t,e){const n=String(t||"").trim();if(/^https:\/\/movie\.douban\.com\/subject\/\d+\/?$/.test(n))return n;const r=n.match(Rv)||n.match(/^(\d{4,})$/)||n.match(Dv);return Yr(r&&r[1]||e)} o(Wr,"sanitizeDoubanUrl"); function Sl(){te={};const t=Me();if(t.until>Date.now()&&t.kind==="hard"){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u673A\u6B63\u88AB\u8C46\u74E3\u62E6\u4E0B\uFF08"+(t.reason||"HTTP 403")+"\uFF09\uFF0C\u8FD8\u6709 "+Math.ceil((t.until-Date.now())/6e4)+" \u5206\u949F\u81EA\u52A8\u6062\u590D \u2014\u2014 \u6E05\u9664\u7F13\u5B58\u4E0D\u4F1A\u63D0\u524D\u653E\u884C")}else{Si({until:0,kind:"soft",level:0,reason:"",at:t.at})}clearTimeout(zn);zn=null;Pt.clear();fn=0;try{GM_setValue(vr,"[]")}catch(e){}try{GM_setValue(on,"{}")}catch(e){}} o(Sl,"clearRatingCache"); function Nv(t){const e=Gt();e[J(t)]={miss:true,ts:Date.now(),v:dn};be(e);$t(t,null)} o(Nv,"markMiss"); function qv(t,e){const n=Gt();const r=J(t);const i=n[r];const c=e&&e.id?String(e.id):"";const a={score:"",title:e&&e.title||t,url:Wr(e&&e.url,c)||Yr(c)||_i(t),ts:Date.now(),miss:false,norate:true,v:dn,src:"api"};if(c)a.did=c;else if(i&&i.did)a.did=i.did;n[r]=a;be(n);$t(t,n[r])} o(qv,"markNoRate"); function El(t,e){return ki([{name:t,rating:e}])} o(El,"putSiteRating"); function ki(t){const e=(t||[]).filter(s=>s&&s.name&&s.rating);if(!e.length)return 0;const n=Gt();let r=0;let i=0;let c=0;const a=[];e.forEach(s=>{const l=Fv(n,s.name,s.rating);if(l==="score"){r++;a.push(s.name)}else if(l==="flag"){i++}else if(l==="id"){c++}});if(!r&&!i&&!c)return 0;be(n);if(r){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u7AD9\u70B9\u81EA\u5E26 "+r+" \u6761\uFF1A"+a.slice(0,6).map(s=>s+" \u2192 "+n[J(s)].score).join("\uFF0C")+(a.length>6?" \u7B49":""))}if(c){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+c+" \u6761\u7AD9\u70B9\u9875\u9762\u6CA1\u5370\u5206\uFF0C\u4F46\u7ED9\u4E86\u8C46\u74E3\u6761\u76EE \u2014\u2014 \u6253\u5F00\u9762\u677F\u65F6\u6309\u6761\u76EE\u7CBE\u786E\u67E5\u4E00\u6B21\uFF08\u4E0D\u9760\u7247\u540D\u731C\uFF09")}a.forEach(s=>$t(s,n[J(s)]));return r} o(ki,"putSiteRatings"); function Fv(t,e,n){const r=String(n&&n.score||"");const i=Bo(n&&n.url);const c=J(e);const a=t[c];if(!(Number(r)>0)){if(!i)return"";if(a&&!a.miss&&(a.score||a.did===i))return"";t[c]={score:"",did:i,ts:Date.now(),miss:false,v:dn,src:"dom"};return"id"}if(a&&!a.miss){if(bl(a.score,r))return"";if(a.src==="api"){if(Vn(a)===Vr)return"";const l=Date.now();if(a.conflict&&l-a.conflictol){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u8FDE\u7EED "+ol+" \u8F6E\u88AB\u6321\uFF0C\u672C\u8F6E\u653E\u5F03\u5269\u4E0B\u7684 "+gt.length+" \u90E8\uFF0C"+Math.round(hi/1e3)+" \u79D2\u540E\u91CD\u65B0\u8D77\u7B97");while(gt.length)$t(gt.shift(),null);yi("soft",0,hi,t);return}const r=Math.min(Av*Math.pow(2,n-1),hi);yi("soft",n,r,t);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+t+"\uFF08"+e+"\uFF09\u2014\u2014 \u7B2C "+n+" \u8F6E\u88AB\u6321\uFF0C"+Math.round(r/1e3)+" \u79D2\u540E\u7EE7\u7EED\u67E5\u961F\u5217\u91CC\u5269\u4E0B\u7684 "+gt.length+' \u90E8\u3002\u8FD9\u662F\u8C46\u74E3\u63A5\u53E3\u4E34\u65F6\u4E0D\u53EF\u7528\uFF0C\u4E0D\u662F"\u8FD9\u90E8\u7247\u67E5\u4E0D\u5230"')} o(fe,"markBlocked"); function Kr(t,e){const n=ml("hard")+1;const r=il[Math.min(n-1,il.length-1)];yi("hard",n,r,t);const i=Math.round(r/6e4);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+t+"\uFF08"+e+"\uFF09\u2014\u2014 \u8C46\u74E3\u63A5\u53E3\u5DF2\u62E6\u4E0B\u672C\u673A\u7684\u67E5\u8BE2\uFF0C\u7B2C "+n+" \u6B21\uFF0C\u6682\u505C "+(i>=60?Math.round(i/60)+" \u5C0F\u65F6":i+" \u5206\u949F")+'\u540E\u81EA\u52A8\u91CD\u8BD5\uFF08\u5237\u65B0\u9875\u9762\u4E5F\u4E0D\u4F1A\u63D0\u524D\u653E\u884C\uFF0C\u5426\u5219\u8D8A\u6253\u5C01\u5F97\u8D8A\u4E45\uFF09\u3002\u8FD9\u4E0D\u662F"\u8FD9\u90E8\u7247\u67E5\u4E0D\u5230"\uFF0C\u4E5F\u4E0D\u4F1A\u5199\u8FDB\u7F13\u5B58');$t(e,null);while(gt.length)$t(gt.shift(),null)} o(Kr,"markHardBlocked"); function _l(){clearTimeout(zn);zn=setTimeout(()=>{zn=null;Xr()},Math.max(1e3,Me().until-Date.now()+150))} o(_l,"ensureResume"); function kl(){Ur=0;const t=Me();if(t.level||t.until)Si({until:0,kind:"soft",level:0,reason:"",at:t.at})} o(kl,"resetBackoff"); var ll={\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9}; function Bv(t){if(/^\d+$/.test(t))return Number(t);if(t==="\u5341")return 10;const e=t.match(/^十([一二三四五六七八九])$/);if(e)return 10+ll[e[1]];return ll[t]||0} o(Bv,"cnToInt"); function jn(t){const e=String(t||"");const n=e.match(/s(\d{1,2})(?![a-z0-9])/)||e.match(/第\s*([0-9]{1,2}|[一二三四五六七八九十]{1,3})\s*(?:季|部|期|篇)/);return n?String(Bv(n[1])):""} o(jn,"seasonOf"); function ul(t){return String(t||"").replace(/(^|[^a-z])s\d{1,2}(?![a-z0-9])/g,"$1").replace(/第\s*[0-9一二三四五六七八九十]{1,3}\s*(?:季|部|期|篇)/g,"").replace(/\s+/g," ").trim()} o(ul,"stripSeasonTag"); function jv(t,e,n){const r=J(n||e);if(!r)return null;const i=t.filter(b=>J(b.title||"")===r);const c=i.find(b=>b.rate);if(c)return c;const a=o(b=>b.rate?0:50,"ratePenalty");const s=ul(r);if(s){const b=t.filter(k=>{const y=J(k.title||"");if(ul(y)!==s)return false;const R=jn(y);const S=jn(r);return!(R&&S&&R!==S)});if(b.length){b.sort((k,y)=>a(k)-a(y)||J(k.title||"").length-J(y.title||"").length);return b[0]}}const l=jn(J(e))||jn(r);const f=Math.max(3,Math.round(r.length*.6));const p=100;let _=null;t.forEach(b=>{const k=J(b.title||"");if(!k)return;if(k.indexOf(r)===-1&&r.indexOf(k)===-1)return;const y=jn(k);if(l&&y&&l!==y)return;const R=Math.abs(k.length-r.length);if(R>f)return;const S=R+a(b)+(Boolean(l)!==Boolean(y)?p:0);if(!_||S<_.score)_={score:S,it:b}});if(_)return _.it;return i.length?i[0]:null} o(jv,"pickBest"); function $v(t){const e=[];t.forEach(n=>{const r=n&&n.target;if(!r||!r.id)return;if(n.target_type!=="movie"&&n.target_type!=="tv")return;e.push({title:r.title||"",rate:r.rating&&r.rating.value?String(r.rating.value):"",id:String(r.id),url:Yr(r.id)})});return e} o($v,"mapSearchItems"); function zv(t){const e=J(t);const n=Gt()[e];if(!n||n.miss||n.src!=="dom")return false;const r=Gt();r[e]={...n,ts:Date.now(),n:(n.n||0)+1};be(r);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+t+"\u300D\u63A5\u53E3\u6CA1\u5BF9\u4E0A\uFF0C\u4FDD\u7559\u7AD9\u70B9\u9875\u9762\u7684 "+n.score+" \u5206\uFF08\u5DF2\u6838\u5BF9 "+r[e].n+" \u6B21\uFF09");$t(t,r[e]);return true} o(zv,"keepSiteScore"); function Tl(t){const e=[];dr(t).forEach(n=>{let r=n.length>cl?n.slice(0,cl).trim():n;if(r.length>=2&&e.indexOf(r)===-1)e.push(r)});return e} o(Tl,"buildQueries"); function Hv(t,e){const n=Tl(t).find(r=>r.length{$n--;setTimeout(Xr,Il())});return"sent"} o(Hv,"retryShorter"); function Uv(t,e,n,r){if(e===403||e===429){Kr("HTTP "+e,t);return null}if(e!==200){fe("HTTP "+e,t);return null}let i=null;try{i=JSON.parse(n)}catch(l){i=null}const c=i&&Array.isArray(i.items)?i.items:null;if(!c){if(hl(n)){Kr("\u8C46\u74E3\u8FD4\u56DE\u9A8C\u8BC1\u9875",t);return null}fe(i&&(i.msg||"code "+i.code)||"\u54CD\u5E94\u683C\u5F0F\u5F02\u5E38",t);return null}const a=$v(c);if(a.length){kl()}else{Ur++;if(Ur>=Cv){fe("\u8FDE\u7EED "+Ur+" \u6B21\u7A7A\u7ED3\u679C\uFF08\u8C46\u74E3\u591A\u534A\u5728\u8F6F\u9650\u6D41\u6216\u62D2\u7EDD\u672C\u673A\uFF09",t);return null}}const s=jv(a,t,r);if(s&&s.rate){Al(t,s,"");return null}if(!a.length){const l=Hv(t,r);if(l==="sent")return null;if(l==="gated"){$t(t,null);return null}}if(zv(t))return null;if(s){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+t+"\u300D\u547D\u4E2D\u6761\u76EE "+s.id+"\uFF08"+(s.title||"")+"\uFF09\u4F46\u8C46\u74E3\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09");qv(t,s);return null}U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672A\u547D\u4E2D\u300C"+t+"\u300D\uFF0C\u8FD4\u56DE "+a.length+" \u6761\u5019\u9009\uFF1A"+a.slice(0,6).map(l=>l.title).join(" / "));Nv(t);return null} o(Uv,"applyResult"); function Al(t,e,n,r){const i=Gt();const c=J(t);const a=i[c];const s=a&&!a.miss&&a.src==="api"&&bl(a.score,e.rate);const l={score:String(e.rate),title:e.title||t,url:Wr(e.url,e.id)||_i(t),ts:Date.now(),miss:false,v:dn,src:"api",n:s?(a.n||1)+1:1};if(n)l.did=String(n);else if(a&&a.did)l.did=a.did;i[c]=l;be(i);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+t+" \u2192 "+e.rate+"\uFF08"+e.title+(r?"\uFF0C\u6309\u8C46\u74E3\u6761\u76EE "+r+" \u53D6\u5230":"")+"\uFF0C\u7B2C "+i[c].n+" \u6B21\u786E\u8BA4"+(s?"\uFF0C\u6709\u6548\u671F\u5347\u5230 "+(Vn(i[c])===Vr?"\u4E0D\u8FC7\u671F":Math.round(Vn(i[c])/Ce)+" \u5929"):"")+"\uFF09");$t(t,i[c])} o(Al,"commitHit"); function Vv(t,e){const n=Gt();const r=J(t);const i=n[r];if(!i||i.miss)return;if(i.did&&String(i.did)!==String(e))return;if(i.score)delete i.did;else delete n[r];be(n)} o(Vv,"dropDid"); function $t(t,e){const n=Un.get(J(t));if(!n)return;Un.delete(J(t));n.forEach(r=>{try{r(e)}catch(i){}})} o($t,"fire"); function Ll(t,e){const n=e?"":Gv(t);return n?Kv(t,n):Wv(t,e)} o(Ll,"run"); function Gv(t){const e=Gt()[J(t)];return e&&!e.miss&&e.did?String(e.did):""} o(Gv,"didOf"); function Kv(t,e){return new Promise(n=>{let r=false;const i=o(()=>{if(r)return;r=true;n()},"done");try{fn++;Cl();GM_xmlhttpRequest({method:"GET",url:Qc+encodeURIComponent(e),timeout:pl,onload:o(c=>{const a=Yv(t,c.status,c.responseText,e);if(a)a.then(i);else i()},"onload"),onerror:o(c=>{fe("\u8BF7\u6C42\u5931\u8D25 "+(c&&c.error||""),t);i()},"onerror"),ontimeout:o(()=>{fe("\u8BF7\u6C42\u8D85\u65F6",t);i()},"ontimeout")})}catch(c){fe("\u65E0\u6CD5\u53D1\u8D77\u8BF7\u6C42\uFF08"+(c&&c.message)+"\uFF09",t);i()}})} o(Kv,"runById"); function Yv(t,e,n,r){if(e===403||e===429){Kr("HTTP "+e,t);return}if(e!==200){fe("HTTP "+e,t);return}if(hl(n)){Kr("\u8C46\u74E3\u8FD4\u56DE\u9A8C\u8BC1\u9875",t);return}kl();let i=null;try{i=JSON.parse(n)}catch(s){i=null}const c=i&&i.r===0&&i.subject?i.subject:null;const a=c?String(c.rate||"").trim():"";if(!(Number(a)>0)){Vv(t,r);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+t+"\u300D\u7684\u8C46\u74E3\u6761\u76EE "+r+" \u53D6\u4E0D\u5230\u8BC4\u5206\uFF08"+(c?"\u8BE5\u6761\u76EE\u6682\u65E0\u8BC4\u5206":"\u6761\u76EE\u4E0D\u5B58\u5728\u6216\u5DF2\u5408\u5E76")+"\uFF09\uFF0C\u6539\u7528\u7247\u540D\u641C\u7D22");if(gt.indexOf(t)===-1)gt.push(t);return}Al(t,{rate:a,title:c.title||t,url:Wr(c.url,r)||Yr(r),id:r},r,r)} o(Yv,"applyIdResult"); function Wv(t,e){return new Promise(n=>{let r=false;const i=o(()=>{if(r)return;r=true;n()},"done");const c=e||Tl(t)[0]||t;try{fn++;Cl();GM_xmlhttpRequest({method:"GET",headers:{"User-Agent":Jc,Referer:Zc},url:Wc+encodeURIComponent(c)+"&apikey="+encodeURIComponent(Xc),timeout:pl,onload:o(a=>{Uv(t,a.status,a.responseText,c);i()},"onload"),onerror:o(a=>{fe("\u8BF7\u6C42\u5931\u8D25 "+(a&&a.error||""),t);i()},"onerror"),ontimeout:o(()=>{fe("\u8BF7\u6C42\u8D85\u65F6",t);i()},"ontimeout")})}catch(a){fe("\u65E0\u6CD5\u53D1\u8D77\u8BF7\u6C42\uFF08"+(a&&a.message)+"\uFF09",t);i()}})} o(Wv,"runSearch"); function Ti(){let t=[];try{t=JSON.parse(GM_getValue(vr,"[]"))||[]}catch(n){t=[]}const e=Date.now();return t.filter(n=>typeof n==="number"&&e-n=Hn){if(!Pt.has("session-max")){Pt.add("session-max");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u6B21\u4F1A\u8BDD\u5DF2\u53D1\u51FA "+Hn+" \u6B21\u8BF7\u6C42\uFF0C\u5269\u4E0B\u7684\u5237\u65B0\u9875\u9762\u540E\u63A5\u7740\u67E5\uFF08\u4E00\u6B21\u6253\u592A\u591A\u4F1A\u62DB\u6765\u8C46\u74E3\u7684\u9650\u6D41\u4E0E\u5C01\u7981\uFF09")}return false}if(Ti().length>=Gr){if(!Pt.has("window-max")){Pt.add("window-max");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6700\u8FD1 "+Math.round(wi/6e4)+" \u5206\u949F\u5DF2\u7D2F\u8BA1\u53D1\u51FA "+Gr+" \u6B21\u8BF7\u6C42\uFF08\u8DE8\u5237\u65B0\u4E00\u8D77\u7B97\uFF1B\u6309\u540D\u5B57\u67E5\u4E00\u90E8\u6700\u591A\u4E24\u53D1\uFF09\uFF0C\u5148\u6B47\u4E00\u4F1A\u513F \u2014\u2014 \u7A97\u53E3\u6ED1\u8FC7\u53BB\u540E\u5F00\u9762\u677F\u4F1A\u81EA\u52A8\u63A5\u7740\u67E5")}return false}return true} o(Ai,"budgetLeft"); function Ml(){const t=Date.now();const e=Me();let n=0;if(e.until>t)n=e.kind==="hard"?-1:Math.ceil((e.until-t)/1e3);const r=Gt()||{};let i=0;Object.keys(r).forEach(c=>{const a=r[c];if(a&&!a.miss&&Number(a.score)>0)i++});return{sessionLeft:Math.max(0,Hn-fn),sessionMax:Hn,windowLeft:Math.max(0,Gr-Ti().length),windowMax:Gr,windowMinutes:Math.round(wi/6e4),pausedSec:n,cached:Object.keys(r).length,scored:i}} o(Ml,"budgetStatus"); function Xv(){return Date.now()>=Me().until&&Ai()} o(Xv,"canSendMore"); function Il(){return Iv+Math.random()*Pv} o(Il,"gapDelay"); function Xr(){if(Date.now(){$n--;gi.delete(J(t));const e=Il();U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u95F4\u9694 "+(e/1e3).toFixed(1)+"s \u540E\u7EE7\u7EED\uFF08\u961F\u5217\u8FD8\u5269 "+gt.length+" \u90E8\uFF0C\u672C\u4F1A\u8BDD\u5DF2\u53D1 "+fn+"/"+Hn+"\uFF09");setTimeout(Xr,e)})}} o(Xr,"pump"); var dl=0; function Pl(){if(!gt.length)return;const t=gt.length;gt.forEach(n=>Un.delete(J(n)));gt.length=0;const e=Date.now();if(e-dl>1e4){dl=e;U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u91CD\u7ED8\uFF0C\u4E22\u5F03\u8FD8\u6CA1\u53D1\u51FA\u7684 "+t+" \u4E2A\u4EFB\u52A1\uFF08\u4E0B\u6B21\u6E32\u67D3\u4F1A\u91CD\u65B0\u6392\uFF09")}} o(Pl,"dropPending"); function Ol(t,e,{force:n=false}={}){if(!t)return;const r=J(t);if(e){const a=Un.get(r)||[];a.push(e);Un.set(r,a)}if(!Ai()){$t(t,null);return}const i=Me();if(i.until>Date.now()){if(i.kind==="hard"){if(!Pt.has("403")){Pt.add("403");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u673A\u6B63\u88AB\u8C46\u74E3\u62E6\u4E0B\uFF08"+(i.reason||"HTTP 403")+"\uFF09\uFF0C\u8FD8\u6709 "+Math.ceil((i.until-Date.now())/6e4)+" \u5206\u949F\u81EA\u52A8\u6062\u590D\uFF1B\u5237\u65B0\u9875\u9762\u4E5F\u4E0D\u4F1A\u63D0\u524D\u653E\u884C\uFF0C\u5426\u5219\u8D8A\u6253\u5C01\u5F97\u8D8A\u4E45")}$t(t,null);return}if(gt.indexOf(t)===-1)gt.push(t);if(!Pt.has("blocked")){Pt.add("blocked");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6B63\u5904\u5728\u88AB\u6321\u540E\u7684\u6682\u505C\u671F\uFF0C\u5269\u4E0B\u7684\u7247\u540D\u4F1A\u9694\u4E00\u4F1A\u513F\u81EA\u52A8\u63A5\u7740\u67E5")}_l();return}const c=Gt()[r];if(!n){if(c&&c.miss&&Date.now()-(c.ts||0)-1||gi.has(r))return;gt.push(t);Xr()} o(Ol,"requestRating"); var Jv=["name","cover","path","siteId","createTime","updateTime"]; var Dl=[ge]; var Nl=[Ln]; function Zv(t,e){try{const n=GM_getValue(t,null);if(n==null)return e;const r=JSON.parse(n);return Array.isArray(r)?r:e}catch(n){return e}} o(Zv,"readJsonKey"); function Qv(){const t={...Ns(),...$s()};Dl.forEach(e=>{t[e]=GM_getValue(e,true)!==false});Nl.forEach(e=>{t[e]=Zv(e,[])});return t} o(Qv,"loadPrefs"); function tm(t){if(!t||typeof t!=="object")return;qs(t);zs(t);Dl.forEach(e=>{if(Object.prototype.hasOwnProperty.call(t,e))GM_setValue(e,t[e]!==false)});Nl.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(t,e))return;const n=Array.isArray(t[e])?t[e]:[];GM_setValue(e,JSON.stringify(n))})} o(tm,"savePrefs"); var Li=bs({storageKey:Vc,backupFileName:"\u5168\u7F51\u5F71\u89C6\u6536\u85CF\u5907\u4EFD",moduleId:"drama",itemIdField:"name",itemFields:Jv,showAlert:Ks,confirmExport:Le,chooseImportStrategy:Ys,playbackLoadFn:om,playbackSaveFn:im,ratingsLoadFn:xl,ratingsSaveFn:wl,prefsLoadFn:Qv,prefsSaveFn:tm,siteNamesLoadFn:us,siteNamesSaveFn:ds,budgetKeys:{playback:$e,ratings:on,images:Tn,imageTabs:An},reclaimRatingsFn:gl,onBudgetNotice:o(t=>{rt(t,{tone:"error"});It.renderedTabs.clear()},"onBudgetNotice")}); vl(()=>Li.enforceBudget()); var{loadData:Tt,saveData:Kt,exportData:ql,importData:Fl} =Li; var Bl=Li.usageInfo; function Gn(t,e,n){try{GM_setValue(t,e);return true}catch(r){Nr("[\u5F71\u89C6\u6536\u85CF] "+n+"\u5199\u5165\u5931\u8D25",r);rt("\u5B58\u50A8\u5199\u5165\u5931\u8D25\uFF08"+n+"\uFF09\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406\u90E8\u5206\u5185\u5BB9",{tone:"error"});return false}} o(Gn,"safeSetValue"); function Ft(t,e){return e.findIndex(n=>je(n.name,t))} o(Ft,"findItem"); function Ci(){try{return JSON.parse(GM_getValue(Tn,"{}"))}catch(t){return{}}} o(Ci,"loadImageCache"); function Ie(t,e){if(!t||Et(e))return;const n=Ci();n[t]=Vt(e);Gn(Tn,JSON.stringify(n),"\u56FE\u7247\u7F13\u5B58")} o(Ie,"setImageCache"); function Kn(t){const e=Ci();const n=e[t]?t:Object.keys(e).find(i=>je(i,t));const r=n?e[n]:"";if(!r)return"";return typeof r==="string"?r:r.cover||""} o(Kn,"readImageCache"); function Yn(t){const e=Tt();for(const r of["want","watched"]){const i=Ft(t,e[r]);if(i>-1&&En(e[r][i]))return e[r][i].cover}const n=ie(t);return En(n)?n.cover:""} o(Yn,"getCoverFromExisting"); function Mi(){try{return JSON.parse(GM_getValue(An,"{}"))}catch(t){return{}}} o(Mi,"loadPlayTabsAlive"); function Ii(t){if(!t)return;const e=Mi();e[t]=Date.now();Gn(An,JSON.stringify(e),"\u64AD\u653E\u72B6\u6001")} o(Ii,"markPlayTabAlive"); function jl(t){if(!t)return;const e=Mi();e[t]=0;Gn(An,JSON.stringify(e),"\u64AD\u653E\u72B6\u6001")} o(jl,"expirePlayTabAlive"); function $l(t=""){const e=Mi();const n=Ci();let r=false;Object.keys(n).forEach(i=>{if(je(i,t))return;if(e[i]===0){delete n[i];r=true}});if(r)Gn(Tn,JSON.stringify(n),"\u56FE\u7247\u7F13\u5B58")} o($l,"handlePageCache"); var Jr=["episode","time","cover","path","siteId","updateTime"]; function em(t){const e=Jr.map(r=>t[r]===void 0?"":t[r]);const n={};Object.keys(t).forEach(r=>{if(Jr.indexOf(r)>=0||r==="name")return;n[r]=t[r]});if(Object.keys(n).length)e.push(n);return e} o(em,"encodeRecord"); function nm(t,e){if(!Array.isArray(e))return{name:t,...e};const n={name:t};Jr.forEach((i,c)=>{const a=e[c];if(a!==""&&a!==void 0&&a!==null)n[i]=a});const r=e[Jr.length];if(r&&typeof r==="object")Object.keys(r).forEach(i=>{n[i]=r[i]});return n} o(nm,"decodeRecord"); var zl=false; var Rl=false; function rm(){try{if(GM_getValue(Uo,""))return false;const t=String(GM_getValue($e,"")||"");if(!t)return false;GM_setValue(Uo,t);return true}catch(t){Nr("[\u5F71\u89C6\u6536\u85CF] \u89C2\u770B\u8BB0\u5F55\u539F\u6587\u5907\u4EFD\u5931\u8D25",t);return false}} o(rm,"backupBrokenPlayback"); function Wn(t){if(zl&&rm()&&!Rl){Rl=true;rt("\u89C2\u770B\u8BB0\u5F55\u8BFB\u53D6\u5F02\u5E38\uFF1A\u539F\u6587\u5DF2\u5907\u4EFD\uFF0C\u65B0\u8FDB\u5EA6\u7167\u5E38\u8BB0\u5F55\uFF08\u5EFA\u8BAE\u5BFC\u51FA\u5907\u4EFD\u540E\u6392\u67E5\uFF09",{tone:"error"})}const e={};Object.keys(t).forEach(n=>{e[n]=em(t[n])});Gn($e,JSON.stringify(e),"\u64AD\u653E\u8BB0\u5F55");It.renderedTabs.clear()} o(Wn,"writeRecords"); function ye(){let t=null;try{t=JSON.parse(GM_getValue($e,"{}"))}catch(n){zl=true;Nr("[\u5F71\u89C6\u6536\u85CF] \u89C2\u770B\u8BB0\u5F55\u89E3\u6790\u5931\u8D25\uFF08\u539F\u6587\u5DF2\u7559\u7ED9 writeRecords \u5907\u4EFD\uFF09",n);return{}}if(!t||typeof t!=="object")return{};const e={};Object.keys(t).forEach(n=>{e[n]=nm(n,t[n])});return e} o(ye,"loadPlaybackRecords"); function Zr(t,e){if(!e||!t)return"";if(t[e])return e;return Object.keys(t).find(n=>je(n,e))||""} o(Zr,"findRecordKey"); function ie(t){const e=ye();const n=Zr(e,t);return n?e[n]:null} o(ie,"getPlaybackRecord"); function Hl(t,{episode:e="",time:n=0,cover:r="",path:i="",siteId:c=""}={}){if(!t)return;const a=ye();const s=Zr(a,t)||t;a[s]={name:s,episode:e,time:n,cover:r,path:i,siteId:c,updateTime:Date.now()};Wn(a)} o(Hl,"savePlaybackRecord"); function Ul(t){Wn(t)} o(Ul,"savePlaybackRecords"); function Pi(t,e={}){if(!t)return;const n=ye();const r=Zr(n,t);if(!r)return;n[r]={...n[r],...e};Wn(n)} o(Pi,"patchPlaybackRecord"); function Oi(t){const e=ye();const n=Zr(e,t);if(!n)return;delete e[n];Wn(e)} o(Oi,"deletePlaybackRecord"); function Vl(){const t=ye();const e=Tt();const n=new Map;const r=new Map;e.want.forEach(c=>{const a=J(c.name);n.set(a,c.cover);r.set(a,"want")});e.watched.forEach(c=>{const a=J(c.name);if(!n.has(a))n.set(a,c.cover);if(!r.has(a))r.set(a,"watched")});const i=new Map;Object.entries(t).forEach(([c,a])=>{const s=a.name||c;const l=J(s);const f=i.get(l);if(f&&(f.updateTime||0)>=(a.updateTime||0))return;i.set(l,{name:s,...a,cover:a.cover||n.get(l)||"",category:r.get(l)||""})});return Array.from(i.values()).sort((c,a)=>(a.updateTime||0)-(c.updateTime||0))} o(Vl,"loadPlaybackList"); function om(){return Object.entries(ye()).map(([t,e])=>({name:t,...e}))} o(om,"loadPlaybackExportList"); function im(t=[]){const e={};t.forEach(n=>{if(!n||!n.name)return;const r={...n};delete r.category;r.episode=r.episode||"";r.time=r.time||0;r.cover=r.cover||"";r.path=r.path||"";r.siteId=r.siteId||"";r.updateTime=r.updateTime||Date.now();e[n.name]=r});Wn(e)} o(im,"savePlaybackList"); var Ri=[0,5*60*1e3,30*60*1e3,2*60*60*1e3,6*60*60*1e3]; var Wl=Ri.length; var cm=7*24*60*60*1e3; var Pe=new Set; function Qr(t){const e={state:"",fail:0,ts:0,cover:"",siteId:"",coverFrom:"",coverSrc:""};if(!t)return e;const n=Tt();for(const i of["want","watched"]){const c=Ft(t,n[i]);if(c>-1){const a=n[i][c];return{state:a.coverState||"",fail:a.coverFail||0,ts:a.coverTs||0,cover:a.cover||"",siteId:a.siteId||"",coverFrom:a.coverFrom||"",coverSrc:a.coverSrc||""}}}const r=ie(t);if(!r)return e;return{state:r.coverState||"",fail:r.coverFail||0,ts:r.coverTs||0,cover:r.cover||"",siteId:r.siteId||"",coverFrom:r.coverFrom||"",coverSrc:r.coverSrc||""}} o(Qr,"readHealth"); function Xl(t,e){if(!t)return false;const n=t.state||"";const r=t.cover||"";if(!n)return!r||Et(r);if(n===Rt.OK)return false;if(n===Rt.ABANDONED)return e-(t.ts||0)>=cm;const i=Math.min(Math.max((t.fail||0)-1,0),Ri.length-1);return e-(t.ts||0)>=Ri[i]} o(Xl,"canRepair"); var am=/^fb:/; function Jl(t){if(!t)return false;if(!t.cover||Et(t.cover))return true;if(t.coverSrc===ur.PAGE)return false;return am.test(String(t.coverFrom||""))} o(Jl,"isGuessedCover"); function Gl(t,e){if(!t)return false;if(Jl(t))return true;return Xl({state:t.coverState||"",fail:t.coverFail||0,ts:t.coverTs||0,cover:t.cover||""},e)} o(Gl,"isRepairable"); var Jn=new Set; function Zl(){Jn=sm();return Jn} o(Zl,"refreshRepairNames"); function Ql(t){if(t)Jn.add(t)} o(Ql,"addRepairName"); function tu(t){if(!t)return"";if(Jn.has(t))return t;for(const e of Jn){if(je(e,t))return e}return""} o(tu,"findRepairName"); function sm(){const t=new Set;const e=Date.now();const n=Tt();["want","watched"].forEach(r=>{(n[r]||[]).forEach(i=>{if(i&&i.name&&Gl(i,e))t.add(i.name)})});Object.values(ye()).forEach(r=>{const i=r&&r.name;if(i&&Gl(r,e))t.add(i)});return t} o(sm,"listRepairNames"); var Di=null; var Xn=new Map; function to(t,e){Xn.set(t,{...Xn.get(t)||{},...e});if(Di)return;Di=setTimeout(lm,300)} o(to,"enqueue"); function lm(){Di=null;if(!Xn.size)return;const t=Tt();let e=false;Xn.forEach((n,r)=>{["want","watched"].forEach(i=>{const c=Ft(r,t[i]);if(c>-1){t[i][c]={...t[i][c],...n};e=true}});Pi(r,n)});Xn.clear();if(e)Kt(t)} o(lm,"flushPending"); function eu(t,e,n=""){const r={cover:t,coverState:Rt.OK,coverFail:0,coverTs:Date.now()};if(e)r.coverFrom=e;if(n)r.coverSrc=n;return r} o(eu,"coverPatch"); var um=10*60*1e3; function nu(t,e=false){if(!t||e)return;const n="broken:"+t;if(Pe.has(n))return;Pe.add(n);const r=Qr(t);const i=Date.now();if((r.state===Rt.BROKEN||r.state===Rt.ABANDONED)&&i-(r.ts||0)Wl?Rt.ABANDONED:Rt.BROKEN,coverFail:c,coverTs:i})} o(nu,"markBroken"); function ru(){const t=o(c=>{if(!c)return false;const a=(c.coverFail||0)>Wl;if(c.coverState!==Rt.ABANDONED&&!a)return false;c.coverState=Rt.BROKEN;c.coverFail=1;c.coverTs=Date.now();return true},"fix");const e=Tt();let n=false;["want","watched"].forEach(c=>{(e[c]||[]).forEach(a=>{if(t(a))n=true})});if(n)Kt(e);const r=ye();let i=false;Object.keys(r).forEach(c=>{if(t(r[c]))i=true});if(i)Ul(r)} o(ru,"healOvercountedCovers"); function ou(t){if(!t)return;const e="missing:"+t;if(Pe.has(e))return;Pe.add(e);const n=Qr(t);if(n.state)return;to(t,{coverState:Rt.MISSING,coverFail:0,coverTs:Date.now()})} o(ou,"markMissing"); function iu(t){if(!t)return;const e="ok:"+t;if(Pe.has(e))return;Pe.add(e);const n=Qr(t);if(n.state===Rt.OK)return;to(t,{coverState:Rt.OK,coverFail:0,coverTs:Date.now()})} o(iu,"markOk"); function Kl(t,e,n="",r=""){if(!t||!e||Et(e))return false;const i=Vt(e);const c="ok:"+t;Pe.add(c);to(t,eu(i,n,r));Ie(t,i);return true} o(Kl,"applyRepair"); function Ni(t,e,n=""){if(!t||!e||Et(e))return;const r=Vt(e);Pi(t,eu(r,n));Ie(t,r);Pe.add("ok:"+t)} o(Ni,"syncCover"); function Yl(t,e,n=""){Nn("[\u5F71\u89C6\u6536\u85CF] \u5C01\u9762\u672A\u66F4\u65B0\uFF1A"+e,t,n||"")} o(Yl,"debugSkip"); function pn(t,e,n="",r=false){if(!t)return false;if(!e||Et(e)){Yl(t,"\u5F53\u524D\u9875\u9762\u7ED9\u7684\u5C01\u9762\u662F\u5360\u4F4D\u56FE");return false}const i=Qr(t);if(!Xl(i,Date.now())){if(!r||!Jl(i)){Yl(t,"\u8BE5\u5267\u4E0D\u5728\u5F85\u4FEE\u72B6\u6001",`state=${i.state||"unknown"} fail=${i.fail}`);return false}Nn("[\u5F71\u89C6\u6536\u85CF] \u901A\u7528\u7AD9\u70B9\u731C\u7684\u5C01\u9762\u5DF2\u6362\u6210\u9875\u9762\u81EA\u8EAB\u7684\u5C01\u9762\uFF1A",t);return Kl(t,e,n,ur.PAGE)}return Kl(t,e,n,ur.PAGE)} o(pn,"tryRepair"); var dm=12; var su=3; var fm=6; function Fi(t){const e=String(t==null?"":t).replace(/\s+/g," ").trim();if(!e||e.length>dm)return"";if(!wn(e)&&!Sn(e))return"";return qt(e)} o(Fi,"epKey"); function pm(t){if(!t||t.disabled)return false;return!/(^|\s)vc-/.test(String(t.className||""))} o(pm,"usable"); function qi(t){if(!t)return false;if(typeof t.getClientRects==="function"&&t.getClientRects().length)return true;try{const e=t.ownerDocument&&t.ownerDocument.defaultView;if(e&&e.getComputedStyle){let n=t;while(n&&n.nodeType===1){const r=e.getComputedStyle(n);if(r&&(r.display==="none"||r.visibility==="hidden"))return false;n=n.parentElement}}}catch(e){}return true} o(qi,"visible"); function vm(){const t=[];document.querySelectorAll("*").forEach(e=>{if(e.children.length)return;if(!pm(e))return;const n=Fi(e.textContent);if(n)t.push({el:e,key:n})});return t} o(vm,"collectAll"); function mm(t){const e=new Map;t.forEach(r=>{let i=r.el.parentElement,c=0;while(i&&c{let i=r.el.parentElement;while(i){if((e.get(i)||0)>=su){if(!n.has(i))n.set(i,[]);n.get(i).push(r);return}i=i.parentElement}});return[...n.values()]} o(mm,"groupByList"); function hm(t){const e=/^S(\d+)E(\d+)$/.exec(t);if(e)return{season:e[1],ep:Number(e[2])};const n=/^E(\d+)$/.exec(t);if(n)return{season:"0",ep:Number(n[1])};return null} o(hm,"parseKey"); function gm(t){const e=new Map;t.forEach(n=>{const r=hm(n.key);if(!r||!(r.ep>0))return;if(!e.has(r.season))e.set(r.season,[]);e.get(r.season).push(r.ep)});for(const n of e.values()){const r=[...new Set(n)].sort((i,c)=>i-c);if(r.length>=su&&r[r.length-1]-r[0]+1===r.length)return true}return false} o(gm,"looksLikeEpisodeList"); var cu=/drawer|modal|popup|sheet|overlay|dialog|panel/i; function bm(){try{return(location.pathname||"").replace(/[-/]\d+(?=\.[a-z]+$|$)/i,"").replace(/\/+$/,"")}catch(t){return""}} o(bm,"currentShowKey"); function ym(t){return String(t||"").replace(/[-/]\d+(?=\.[a-z]+$|$)/i,"").replace(/\/+$/,"")} o(ym,"pathKey"); function xm(t){const e=t&&t.closest&&t.closest("a[href]");if(!e)return false;const n=e.getAttribute("href")||"";if(!n||n==="#"||n.startsWith("javascript:"))return false;const r=bm();if(!r)return false;let i;try{i=new URL(n,location.href).pathname}catch(c){return false}return ym(i)===r} o(xm,"sameShowHref"); function wm(t){let e=t;for(let n=0;n<10&&e&&e!==document.body;n++){if(cu.test(String(e.className||""))||cu.test(String(e.id||"")))return true;e=e.parentElement}return false} o(wm,"inDrawer"); function Sm(t){const e=Math.ceil(t.length/2);let n=0;for(const r of t){if(xm(r.el)||wm(r.el))n++;if(n>=e)return true}return false} o(Sm,"groupClickable"); function au(t,e){const n=o(c=>{const a=/第\s*(\d{1,2})\s*季/.exec(c)||/^S(\d{1,2})E/i.exec(c);const s=/第\s*(\d{1,3})\s*集/.exec(c)||/E(\d{1,3})$/i.exec(c);return{season:a?Number(a[1]):0,ep:s?Number(s[1]):0}},"pick");const r=n(String(t||""));const i=n(String(e||""));if(r.season&&r.ep&&i.season&&r.season===i.season)return`\u7B2C${r.ep}\u96C6`;return t} o(au,"withinSeason"); function lu({target:t,current:e}={}){const n=Fi(au(t,e));if(!n)return null;const r=Fi(au(e,e));if(r&&r===n)return null;const i=mm(vm()).filter(f=>gm(f));if(!i.length)return null;const c=i.filter(f=>Sm(f));const a=c.length?c.slice().sort((f,p)=>Number(qi(p[0].el))-Number(qi(f[0].el))):i.filter(f=>qi(f[0].el));if(!a.length)return null;const s=r?a.filter(f=>f.some(p=>p.key===r)):[];const l=s.concat(a.filter(f=>s.indexOf(f)<0));for(const f of l){const p=f.find(_=>_.key===n&&(!r||_.key!==r));if(p)return{el:p.el,via:"list"}}return null} o(lu,"findEpisodeControl"); function Ke(t){const e=document.querySelector(t);return e?e.textContent.trim():""} o(Ke,"text"); function Em(t){const e=(t||"").match(/第\s*\d+\s*集/);return e?e[0].replace(/\s+/g,""):""} o(Em,"episodeFromText"); var $i="\u6B63\u7247"; var _m={czzy:o(()=>{const t=Array.from(document.querySelectorAll(".juji_list a"));if(t.length){const e=t.find(r=>r.classList.contains("pbplay"))||(t.length===1?t[0]:null);const n=((e==null?void 0:e.textContent)||"").trim();if(n)return lr(n)}return wn(Ke(".mikd .ptit span"))||$i},"czzy"),duse:o(()=>Ke(".episode-list .episode-item-active span"),"duse"),dida:o(()=>lr(Ke(".myui-content__list.playlist li.active a")),"dida"),ddys:o(()=>{let t=[];const e=Ke("script.ddys-playlist-data");if(e){try{t=JSON.parse(e).seasons||[]}catch(f){}}const n=Ke(".ddys-season-tab.is-active");const r=/第\s*(\d{1,2})\s*季/.exec(n);const i=r?Number(r[1]):0;const c=i?t.find(f=>Number(f.season)===i):null;const a=c?c.tracks||[]:t.flatMap(f=>f.tracks||[]);const s=Array.from(document.querySelectorAll(".ddys-playlist-item"));let l=0;if(s.length){const f=s.findIndex(p=>p.classList.contains("ddys-playlist-playing"));l=f>=0&&a[f]?Number(a[f].episode):0}else if(a.length===1){l=Number(a[0].episode)||0}if(l<=0)return"";return n?`${n} \u7B2C${l}\u96C6`:`\u7B2C${l}\u96C6`},"ddys"),hantv:o(()=>Ke(".player-list-body .listitem.active a"),"hantv"),libvio:o(()=>Ke(".stui-play__list li.active a"),"libvio"),gaze:o(()=>{var n;const t=document.querySelector(".fJ.bB.dE .playbtn.ji");const e=lr(((t==null?void 0:t.textContent)||"").trim());if(e&&Sn(e))return e;return Em((n=document.querySelector("video-player"))==null?void 0:n.getAttribute("content-title"))},"gaze")}; var km={ddys:o(()=>new URLSearchParams(location.search).get("ep")||"","ddys"),dida:o(()=>Bi(location.pathname),"dida"),hantv:o(()=>Bi(location.pathname),"hantv"),libvio:o(()=>Bi(location.pathname),"libvio")}; function Bi(t){const e=t.match(/(\d+)(?:\.html?)?$/);return e?`\u7B2C${e[1]}\u96C6`:""} o(Bi,"lastEpisodeFromPath"); function Ye(t){if(typeof t.getPlaybackInfo==="function"){const r=t.getPlaybackInfo();if(r&&r.episode)return r.episode}const e=_m[t.id];if(e){const r=e();if(r)return r}const n=km[t.id];if(n){const r=n();if(r)return r}return""} o(Ye,"resolveEpisode"); function Tm(){return oe("video")[0]||null} o(Tm,"findPlayerEl"); var tr=null; function mu(t){tr=typeof t==="function"?t:null} o(mu,"setRemoteTimeSource"); var zi=null; function hu(t){zi=typeof t==="function"?t:null} o(hu,"setRemoteSeek"); var Hi=null; function gu(t){Hi=typeof t==="function"?t:null} o(gu,"setBeforeNavigate"); var ro="vc_drama_resume_intent"; var Am=5*60*1e3; function Lm(t,e,n){try{sessionStorage.setItem(ro,JSON.stringify({name:t,time:e,episode:n||"",ts:Date.now()}))}catch(r){}} o(Lm,"writeResumeIntent"); function Cm(){try{sessionStorage.removeItem(ro)}catch(t){}} o(Cm,"clearResumeIntent"); function Mm(t,e){let n="";try{n=sessionStorage.getItem(ro)||""}catch(r){return 0}if(!n)return 0;try{sessionStorage.removeItem(ro)}catch(r){}try{const r=JSON.parse(n);if(!r||r.name!==t){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u610F\u56FE\u4E0D\u662F\u8FD9\u90E8\u5267\uFF08"+(r&&r.name||"?")+" \u2260 "+t+"\uFF09\uFF0C\u4E22\u5F03");return 0}if(!(Date.now()-Number(r.ts)0?Number(r.time):0;if(i)U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u63A5\u5230\u8DF3\u8F6C\u610F\u56FE \u2192 "+xe(i)+"\uFF08"+(r.episode||"\u65E0\u96C6\u6570")+"\uFF09");return i}catch(r){return 0}} o(Mm,"consumeResumeIntent"); var Im=8e3; var Zn=null; function vn(){const t=oe("video");if(!t.length)return null;const e=t.find(r=>{try{return!r.paused&&r.currentTime>0}catch(i){return false}});if(e)return e;let n=null;t.forEach(r=>{const i=(r.videoWidth||0)*(r.videoHeight||0);if(i>0&&(!n||i>n.area))n={v:r,area:i}});return n?n.v:t[0]} o(vn,"pickSeekTarget"); function Ui(t){const e=Number(t);if(!(e>0))return"fail";const n=o(s=>{try{s.currentTime=e;return"done"}catch(l){return"fail"}},"apply");const r=vn();if(!r){return zi&&zi(e)!==false?"wait":"fail"}if(r.readyState>=1)return n(r);if(Zn)clearTimeout(Zn);let i=false;const c=o(s=>{if(i)return;i=true;clearTimeout(Zn);Zn=null;r.removeEventListener("loadedmetadata",a);r.removeEventListener("canplay",a);if(s==="done")rt(`\u5DF2\u8DF3\u5230 ${xe(e)}`,{tone:"ok",icon:"play"});else if(s==="wait")rt("\u64AD\u653E\u5668\u6B63\u5728\u52A0\u8F7D\uFF0C\u7A0D\u540E\u81EA\u52A8\u8DF3\u8F6C\u2026",{tone:"warn",icon:"play"});else rt("\u64AD\u653E\u5668\u4E00\u76F4\u6CA1\u52A0\u8F7D\u597D\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",{tone:"warn",icon:"play"})},"finish");const a=o(()=>c(n(r)),"onReady");r.addEventListener("loadedmetadata",a);r.addEventListener("canplay",a);Zn=setTimeout(()=>c("fail"),Im);return"wait"} o(Ui,"seekTo"); var Pm=60*1e3; var Om=2e3; function Rm(t,e){return!!t&&Number(t.deadline)>Number(e)} o(Rm,"pendingAlive"); function Dm(t,e){if(!t)return false;const n=qt(t.episode||"");if(!n)return true;const r=qt(e||"");if(!r)return true;return n===r} o(Dm,"stillTargetEpisode"); function Nm(t,e){const n=Number(t)||0;const r=Number(e)||0;if(n<=0)return false;return r=1)return true;return qm()} o(du,"canSettleNow"); function ji(){const t=vn();if(!t){if(Vi){try{Vi()}catch(e){}}return false}if(t.readyState<1)return false;if(!t.paused)return true;try{const e=t.play();if(e&&typeof e.then==="function")e.catch(()=>uu(t));return true}catch(e){return uu(t)}} o(ji,"tryStartPlayback"); function fu(t){const e=vn();if(!e)return;const n=o(()=>{e.removeEventListener("play",n);setTimeout(()=>{try{if(Nm(t,e.currentTime))e.currentTime=t}catch(r){}},350)},"onPlay");e.addEventListener("play",n)} o(fu,"guardAfterPlay"); function yu(t,e,n){if(du()){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5C31\u7EEA\uFF0C\u843D\u5230 "+xe(t)+"\uFF08\u8D77\u64AD\u7559\u7ED9\u7528\u6237\u70B9\uFF1A\u8DE8\u57DF\u6846\u67B6\u91CC\u811A\u672C\u7684 play() \u4F1A\u88AB\u6D4F\u89C8\u5668\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\uFF09");Ui(t);ji();fu(t);return"done"}Qn();eo={time:t,episode:e,site:n,deadline:Date.now()+Pm};U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u89C6\u9891\u8FD8\u6CA1\u5C31\u7EEA\uFF08"+(e||"\u65E0\u96C6\u6570")+"\uFF09\uFF0C\u767B\u8BB0\u5F85\u5151\u73B0 "+xe(t)+"\uFF081 \u5206\u949F\u5185\u5C31\u7EEA\u5C31\u843D\uFF09");no=setInterval(()=>{if(!Rm(eo,Date.now())){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u7B49\u4E86 1 \u5206\u949F\u89C6\u9891\u4ECD\u672A\u5C31\u7EEA\uFF0C\u653E\u5F03");Qn();return}ji();const r=eo;if(!r)return;if(!Dm(r,Ye(r.site))){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5F53\u524D\u96C6\u5DF2\u4E0D\u662F\u76EE\u6807\u96C6\uFF0C\u653E\u5F03");Qn();return}if(!du())return;Qn();U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5C31\u7EEA\uFF0C\u843D\u5230 "+xe(r.time)+"\uFF08\u8D77\u64AD\u7559\u7ED9\u7528\u6237\u70B9\uFF1A\u8DE8\u57DF\u6846\u67B6\u91CC\u811A\u672C\u7684 play() \u4F1A\u88AB\u6D4F\u89C8\u5668\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\uFF09");Ui(r.time);ji();fu(r.time)},Om);return"pending"} o(yu,"requestSettle"); var Fm=250; var Bm=1e4; function jm(t,e,n,r,i){const c=vn();const a=c?String(c.currentSrc||""):"";if(Hi)Hi();Lm(n,e,r);try{t.click()}catch(f){return Promise.resolve("fail")}const s=qt(r);const l=o(()=>{if(!s)return false;const f=qt(Ye(i)||"");return!!f&&f===s},"switchedByEpisode");return new Promise(f=>{const p=Date.now();const _=o(()=>{const b=vn();const k=b?String(b.currentSrc||""):"";const y=l()||!!(b&&(b!==c||k&&k!==a));if(y){f(yu(e,r,i));return}if(Date.now()-p>=Bm){f("timeout");return}setTimeout(_,Fm)},"tick");_()})} o(jm,"clickEpisode"); function $m(t){try{const e=String(t||"");if(!e)return false;return e.includes("?")?location.pathname+location.search===e:location.pathname===e}catch(e){return false}} o($m,"isSamePath"); function zm(t,e){if(!t)return false;const n=qt(Ye(e));const r=qt(t.episode||"");if(n&&r)return n===r||Hm(n,r);return $m(t.path)} o(zm,"isSameSpot"); function Hm(t,e){const n=qt("\u7B2C1\u96C6");return t===$i&&e===n||e===$i&&t===n} o(Hm,"isMoviePlaceholderPair"); function Um(t){const e=String(t==null?"":t).trim();if(!e)return false;return/第\s*\d{1,3}\s*集/.test(e)||/^S\d{1,2}E\d{1,3}$/i.test(e)||/^S\d{1,2}\s*第\s*\d{1,3}\s*集$/i.test(e)||/^\d{1,3}$/.test(e)} o(Um,"hasEpisodeNumber"); function Vm(t,e){if(!t)return true;const n=qt(t.episode||"");const r=qt(e||"");if(n&&r&&n!==r)return true;return!(t.time>0)} o(Vm,"shouldResetToZero"); function Gm(){const t=Tm();if(t)return{time:t.currentTime,ended:!!t.ended};if(tr){const e=tr();if(e)return e}return null} o(Gm,"readPlayerTime"); function Km(t){try{if(t&&t.__fallback&&typeof t.getPlayInfo==="function"){const e=t.getPlayInfo();if(e&&e.path)return e.path}}catch(e){}return location.pathname} o(Km,"playbackPath"); function pu(){try{const t=Ir(document).cover;return t?Vt(t):""}catch(t){return""}} o(pu,"coverFromPage"); var Gi="vc_drama_watching_context"; function Ki(){try{sessionStorage.removeItem(Gi)}catch(t){}} o(Ki,"markWatchingLeft"); function Ym(t){try{const e=sessionStorage.getItem(Gi)===t;sessionStorage.setItem(Gi,t);return e}catch(e){return false}} o(Ym,"isSameWatchingContext"); function vu(t){if(!t)return"";for(const e of document.querySelectorAll("img")){if((e.getAttribute("alt")||"").trim()!==t)continue;const n=e.getAttribute("data-src")||e.getAttribute("data-original")||e.src||"";if(!Et(n))return Vt(n)}return""} o(vu,"coverFromAlt"); function xu(t,e){if(!e)return()=>{};Ii(e);const n=o(()=>{jl(e);Ki()},"onPageHide");const r=o(()=>{if(!document.hidden)Ii(e)},"onVisibilityChange");document.addEventListener("pagehide",n);document.addEventListener("visibilitychange",r);let i=Ye(t);const c=ie(e);const a=En(c)?c.cover:"";const s=a||Yn(e)||Kn(e)||pu()||vu(e);const l=pu()||vu(e);if(l&&l!==a)pn(e,l,t.id);const f=Mm(e,Ye(t));const p=Ym(e);if(!f&&!p&&c){const y=c.episode||"";const R=Sn(y)?y:"";if(c.time>ra){const S=xe(c.time);const N=y?`\u4E0A\u6B21\u64AD\u653E\u5230 ${y} \xB7 ${S}`:`\u4E0A\u6B21\u64AD\u653E\u5230 ${S}`;rt(N,{tone:"warn",icon:"play",variant:"primary",linkText:y?`${y} \xB7 ${S}`:S,onClick:o(()=>{if(zm(c,t)){Ui(c.time);return}const v=lu({target:y,current:Ye(t)});if(!v){if(!y){rt("\u8FD9\u6761\u89C2\u770B\u8BB0\u5F55\u91CC\u6CA1\u6709\u96C6\u6570\u4FE1\u606F\uFF0C\u8BF7\u624B\u52A8\u5207\u6362",{tone:"warn",icon:"play",variant:"primary"})}else if(!Um(y)){rt(`\u4E0A\u6B21\u662F\u5728\u300C${y}\u300D\u4E0A\u770B\u7684\uFF0C\u8BF7\u624B\u52A8\u5207\u6362`,{tone:"warn",icon:"play",variant:"primary"})}else{rt(`\u6CA1\u627E\u5230 ${y} \u7684\u5165\u53E3\uFF1B\u82E5\u9009\u96C6\u9762\u677F\u6536\u7740\uFF0C\u8BF7\u5148\u5C55\u5F00\u5B83`,{tone:"warn",icon:"play",variant:"primary"})}return}rt(`\u6B63\u5728\u5207\u6362 ${y}\u2026`,{tone:"info",icon:"play",variant:"primary"});jm(v.el,c.time,e,y,t).then(x=>{Cm();if(x==="pending"){rt(`\u5DF2\u5207\u6362\u5230 ${y}\uFF0C\u70B9\u64AD\u653E\u540E\u4F1A\u4ECE\u4E0A\u6B21\u4F4D\u7F6E\u7EE7\u7EED`,{tone:"warn",icon:"play",variant:"primary"})}else if(x==="timeout"){rt("\u70B9\u4E86\u6CA1\u5207\u8FC7\u53BB\uFF1B\u82E5\u9009\u96C6\u9762\u677F\u6536\u7740\uFF0C\u8BF7\u5148\u5C55\u5F00\u5B83\u518D\u5207",{tone:"warn",icon:"play",variant:"primary"})}})},"onClick")})}else if(y){rt(`\u4E0A\u6B21\u89C2\u770B\u5230 ${y}`,{tone:"warn",icon:"play",variant:"primary",emphasis:R})}}if(f)yu(f,c&&c.episode||"",t);const _=o((y,R)=>{const S=ie(e);Hl(e,{episode:R||i,time:y,cover:S&&S.cover||s,path:Km(t),siteId:t.id})},"saveNow");let b=false;const k=setInterval(()=>{const y=Ye(t)||i;if(y&&y!==i){i=y;b=false}const R=Gm();if(R&&R.ended)return;if(R&&R.time>na){b=true;_(R.time,i)}else if(!R&&!b&&i){if(document.hidden)return;b=true;if(!Vm(ie(e),i))return;_(0,i)}},ea);return()=>{clearInterval(k);Qn();document.removeEventListener("pagehide",n);document.removeEventListener("visibilitychange",r)}} o(xu,"initPlayback"); function wu(t){if(!t)return"";const e=xe(t.time);return[qt(t.episode),e].filter(Boolean).join(" \xB7 ")} o(wu,"formatPlayback"); var Wm={"same-origin":"\u540C\u6E90 video\uFF08\u7236\u6587\u6863\u76F4\u8FDE\uFF09","cross-origin":"iframe \u64AD\u653E\u5668\uFF08\u8D70\u6865\u63A5\uFF09",none:"\u6CA1\u627E\u5230 video"}; var Eu=""; var Su=0; var Xm=3; function _u(){try{const t=JSON.parse(GM_getValue(mr,"{}"));return t&&typeof t==="object"?t:{}}catch(t){return{}}} o(_u,"readMap"); function Jm(t){if(!t)return"";try{return new URL(t.getAttribute("src")||"",location.href).origin}catch(e){return""}} o(Jm,"originOf"); function Zm(t){if(oe("video").length)return"same-origin";const e=un(t&&t.playerFrameSelector);if(e)return"cross-origin";return"none"} o(Zm,"detectKind"); function Qm(t,e,n){Eu=e;const r=_u();r[t.id]={host:location.hostname,kind:e,origin:n,ts:Date.now()};try{GM_setValue(mr,JSON.stringify(r))}catch(i){}U("[\u5F71\u89C6\u6536\u85CF] \u64AD\u653E\u9875\u63A2\u9488\uFF1A"+t.id+"\uFF08"+location.hostname+"\uFF09= "+(Wm[e]||e)+(n?"\uFF0C\u64AD\u653E\u5668\u6E90 "+n:""))} o(Qm,"settle"); function ku(t,e){if(!t)return;const n=Number(e)||0;const r=_u();const i=r[t]||{};if(i.depth===n)return;r[t]=Object.assign({host:location.hostname,kind:"cross-origin"},i,{depth:n,ts:Date.now()});try{GM_setValue(mr,JSON.stringify(r))}catch(c){}U("[\u5F71\u89C6\u6536\u85CF] \u64AD\u653E\u9875\u63A2\u9488\uFF1A"+t+" \u7684\u64AD\u653E\u5668"+(n?"\u5D4C\u5728\u7B2C "+(n+1)+" \u5C42\uFF08\u4E2D\u7EE7\u8F6C\u53D1\uFF09":"\u5C31\u5728\u7B2C\u4E00\u5C42"))} o(ku,"notePlayerDepth"); function Yi(t){if(!t||!t.id||Eu)return;Su++;const e=Zm(t);if(e!=="none"||Su>=Xm){const n=e==="cross-origin"?un(t.playerFrameSelector):null;Qm(t,e,Jm(n))}} o(Yi,"probePlayer"); var Tu="__vc_bridge__"; var pt={BOOT:"boot",READY:"ready",STATE:"state",HELLO:"hello",CMD:"cmd",KEY:"key"}; var ee={VOLUME:"volume",SEEK:"seek",PLAY:"play",PAUSE:"pause",STATE:"state"}; function ce(t,e){return Object.assign({[Tu]:1,t},e||{})} o(ce,"pack"); function oo(t){if(!t||typeof t!=="object"||t[Tu]!==1)return null;return t} o(oo,"unpack"); function Wi(){return"vc"+Date.now().toString(36)+Math.random().toString(36).slice(2,8)} o(Wi,"makeNonce"); var th=60; var eh=2e3; var nh=15; var Au=new Set; function er(t,e){if(Au.has(t))return;Au.add(t);U(e)} o(er,"logOnce"); function rh(t){try{const e=String(t.getAttribute("src")||"");return new URL(e,location.href).origin||e}catch(e){return String(t.getAttribute("src")||"")}} o(rh,"originOf"); var oh=8; function Lu(){let t=null;let e="";let n=null;let r=false;let i=null;let c=null;let a=null;let s="";const l=[];function f(v,x){try{t.contentWindow.postMessage(ce(v,Object.assign({nonce:e},x||{})),"*");return true}catch(I){return false}}o(f,"post");function p(v,x,{queue:I=false}={}){if(!t||!e){if(I){const B=l[l.length-1];if(B&&B.t===v&&B.data&&x&&B.data.op===x.op){l[l.length-1]={t:v,data:x}}else if(l.length{if(n){y();return}v++;if(v>nh){y();er("no-reply","[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u591A\u6B21\u8BA4\u9886\u90FD\u6CA1\u6709\u56DE\u5E94 \u2014\u2014 \u5B50\u9875\u9762\u91CC\u6CA1\u6709\u811A\u672C\u5728\u8DD1\u3002\u5148\u5237\u65B0\u9875\u9762\u8BA9 iframe \u91CD\u65B0\u52A0\u8F7D\uFF1B\u4ECD\u65E0\u6548\u518D\u68C0\u67E5\u6CB9\u7334\u662F\u5426\u5141\u8BB8\u811A\u672C\u5728\u6846\u67B6\u4E2D\u8FD0\u884C");return}b()},eh)}o(k,"startHelloRetry");function y(){if(!a)return;clearInterval(a);a=null}o(y,"stopHelloRetry");function R(){if(r)return;r=true;window.addEventListener("message",v=>{const x=oo(v.data);if(!x||!t)return;if(v.source!==t.contentWindow)return;if(x.t===pt.BOOT){er("boot","[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u5B50\u9875\u9762\u811A\u672C\u5DF2\u542F\u52A8\uFF08"+(x.host||"")+"\uFF09\uFF0C\u7B49\u5B83\u627E video");b();return}if(x.t===pt.READY){if(x.dur&&x.dur!!n,"ready"),time:o(()=>n?n.time:0,"time"),duration:o(()=>n?n.dur:0,"duration"),paused:o(()=>n?n.paused:true,"paused"),volume:o(()=>n?n.vol:1,"volume"),onState(v){i=v},onKey(v){c=v},applyVolume:S,bumpVolume:N,seek(v){return p(pt.CMD,{op:ee.SEEK,to:v},{queue:true})},play(){return p(pt.CMD,{op:ee.PLAY})},pause(){return p(pt.CMD,{op:ee.PAUSE})},requestState(){return p(pt.CMD,{op:ee.STATE})}}} o(Lu,"createPlayerBridge"); function Xi(){const t=lt(location.hostname);return[...re,...Cn].filter(e=>e.crossSiteTarget!==false&&typeof e.searchPath==="function").filter(e=>!(e.domains||[]).some(n=>lt(n)===t))} o(Xi,"jumpableSites"); var io=null; function Cu(){if(io)return io;let t=null;try{t=JSON.parse(GM_getValue(Ln,"[]"))}catch(e){t=null}io=Array.isArray(t)?t:[];return io} o(Cu,"excludedList"); function ih(t){return Cu().indexOf(t)<0} o(ih,"isEnabled"); function Mu(t,e){const n=Cu();const r=n.indexOf(t);if(e&&r>=0)n.splice(r,1);else if(!e&&r<0)n.push(t);else return;GM_setValue(Ln,JSON.stringify(n))} o(Mu,"setEnabled"); function Iu(t){const e=(t||"").trim();return Xi().map(n=>{const r=Ee(n);return{id:n.id,name:n.name,domain:r,url:e?"https://"+r+n.searchPath(e):"",enabled:ih(n.id),fold:!!n.fold}})} o(Iu,"listTargets"); function Pu(t){const e=Xi().find(n=>n.id===t);return e?Promise.resolve(cn(e)).catch(()=>""):Promise.resolve("")} o(Pu,"warmDomain"); function Ou(t,e){const n=Xi().find(c=>c.id===t);const r=(e||"").trim();if(!n||!r)return Promise.resolve("");const i="https://"+Ee(n)+n.searchPath(r);return Promise.resolve(cn(n)).then(c=>c?"https://"+c+n.searchPath(r):i).catch(()=>i)} o(Ou,"resolveUrl"); function pe(){const t=xt();if(!t)return"";const e=t.pageType();if(e==="detail"&&t.getDetailInfo)return(t.getDetailInfo()||{}).name||"";if(e==="play"&&t.getPlayInfo)return(t.getPlayInfo()||{}).name||"";return""} o(pe,"getCurrentName"); function so(){const t=xt();if(!t||t.pageType()!=="detail"||!t.getDetailInfo)return;const e=t.getDetailInfo();if(!e||!e.name)return;if(e.cover){Ie(e.name,e.cover);pn(e.name,e.cover,t.id,true);return}ou(e.name)} o(so,"cacheCurrentDetailImage"); function lo(t,e){const n=Tt();return Ft(t,n[e])>-1} o(lo,"isFavorited"); function Du(t,e){const n=Tt();const r=e==="want"?"watched":"want";const i=Ft(t.name,n[e]);const c=Ft(t.name,n[r]);if(c>-1)n[r].splice(c,1);if(i>-1){n[e].splice(i,1)}else{t.updateTime=Date.now();n[e].unshift(t);if(t.cover)Ni(t.name,t.cover,t.siteId)}Kt(n);It.renderedTabs.clear()} o(Du,"toggleFavorite"); function co(t){const e=xt();if(!e)return;const n=e.pageType();let r=null;if(n==="detail")r=e.getDetailInfo?e.getDetailInfo():null;else if(n==="play")r=e.getPlayInfo?e.getPlayInfo():null;if(!r||!r.name)return;const i=r.name;const c=Tt();const a=Ft(i,c[t]);if(a>-1){c[t].splice(a,1);Kt(c)}else{let s="";const l=Vt(r.cover);if(n==="detail"){s=l||Yn(i)||Kn(i);Ie(i,s)}else if(n==="play"){s=Yn(i)||Kn(i)||l}const f=t==="want"?"watched":"want";const p=Ft(i,c[f]);if(p>-1)c[f].splice(p,1);c[t].unshift({name:i,cover:s,path:r.path||location.pathname,siteId:e.id,createTime:Date.now(),updateTime:Date.now()});Kt(c);Ni(i,s,e.id);Nu(i,e)}It.renderedTabs.clear();Bt()} o(co,"toggleDrama"); var Ru=[1500,5e3]; function Nu(t,e,n=0){if(!e||typeof e.getSiteRating!=="function")return;const r=e.getSiteRating(document);if(r){El(t,r);return}if(n>=Ru.length)return;setTimeout(()=>Nu(t,e,n+1),Ru[n])} o(Nu,"adoptSiteRating"); function qu(){co("want")} o(qu,"toggleWant"); function Fu(){co("watched")} o(Fu,"toggleWatched"); var Oe={name:"",type:""}; function Bu(){const t=pe();if(!t)return;const e=nr(t);if(e){Oe={name:t,type:e};co(e);return}const n=Oe.name===t&&Oe.type?Oe.type:"want";co(n);Oe={name:"",type:""}} o(Bu,"togglePrimary"); function ju(){const t=pe();if(!t||nr(t))return"";return Oe.name===t&&Oe.type?Oe.type:"want"} o(ju,"primaryIntent"); function $u(t,e){if(e==="history"){Oi(t);It.renderedTabs.clear();Bt();return}const n=Tt();const r=Ft(t,n[e]);if(r>-1){n[e].splice(r,1);Kt(n);It.renderedTabs.clear();Bt()}} o($u,"deleteItem"); function nr(t){if(!t)return null;const e=Tt();if(Ft(t,e.want)>-1)return"want";if(Ft(t,e.watched)>-1)return"watched";return null} o(nr,"statusOfName"); function ao(t,e,n){return n?n.findIndex(e,t):Ft(t,e)} o(ao,"indexOf"); function zu(t,e,n){if(!t)return null;if(ao(t,e.want,n)>-1)return"want";if(ao(t,e.watched,n)>-1)return"watched";return null} o(zu,"statusOf"); function ne(t,e,n,r){if(!n)return null;const i=ao(t,e[n],r);return i>-1?e[n].splice(i,1)[0]:null} o(ne,"removeFrom"); function Hu(t){const e=ie(t);if(!e)return null;return{name:t,cover:e.cover||"",path:e.path||"",siteId:e.siteId||"",createTime:Date.now(),updateTime:Date.now()}} o(Hu,"buildFromPlayback"); function ch(t,e,n){if(!n)return null;const r=Ft(t,e[n]);if(r===-1)return null;return{index:r,prevId:r>0?e[n][r-1].name||"":"",item:{...e[n][r]}}} o(ch,"capture"); function ah(t,e){if(e.prevId){const n=t.findIndex(r=>r.name===e.prevId);if(n>-1)return n+1}return Math.max(0,Math.min(e.index,t.length))} o(ah,"restoreIndex"); function Uu(t,e){const n=Tt();const r=zu(t,n);if(r===e)return{ok:false,from:r};const i=ch(t,n,r);if(!e){ne(t,n,"want");ne(t,n,"watched");Kt(n);It.renderedTabs.clear();Bt();return{ok:true,from:r,snapshot:i}}const c=ne(t,n,r)||Hu(t);if(!c)return{ok:false,from:r};ne(t,n,"want");ne(t,n,"watched");c.updateTime=Date.now();n[e].unshift(c);Kt(n);It.renderedTabs.clear();Bt();return{ok:true,from:r,snapshot:i}} o(Uu,"setStatus"); function Vu(t,e,n){if(!e||!n)return false;const r=Tt();ne(t,r,"want");ne(t,r,"watched");r[e].splice(ah(r[e],n),0,{...n.item});Kt(r);It.renderedTabs.clear();Bt();return true} o(Vu,"restoreStatus"); function Gu(t,e){const n=Tt();const r=Oo();let i=0;for(const c of t){const a=zu(c,n,r);if(a===e)continue;if(!e){ne(c,n,"want",r);ne(c,n,"watched",r);i++;continue}const s=ne(c,n,a,r)||Hu(c);if(!s)continue;ne(c,n,"want",r);ne(c,n,"watched",r);s.updateTime=Date.now();n[e].unshift(s);i++}if(i>0){Kt(n);It.renderedTabs.clear();Bt()}return i} o(Gu,"batchSetStatus"); function Ji(){const t=xt();if(!t)return false;const e=t.pageType();return e==="detail"||e==="play"} o(Ji,"isDetailOrPlay"); function Ku(t,e){if(e==="history"){t.forEach(i=>Oi(i));It.renderedTabs.clear();Bt();return}const n=Tt();const r=Oo();for(const i of t){const c=ao(i,n[e],r);if(c>-1)n[e].splice(c,1)}Kt(n);It.renderedTabs.clear();Bt()} o(Ku,"batchDeleteItems"); var sh=/^(input|textarea|select)$/i; var lh=/^(button|a|summary)$/i; var Zi=[" ","Spacebar"]; var uh="media-controls, media-container, video-player, video-skin"; var Yu=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"," ","Spacebar"]; var dh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"]; function Qi({getVideo:t,step:e=5,volumeStep:n=.05,onAction:r,onNoVideo:i,remote:c,win:a=window}){const s=a&&a.document||document;let l=false;const f=o(()=>!!(c&&typeof c.ready==="function"&&c.ready()),"remoteReady");function p(d){if(d==="ArrowRight"){c.seek(e);return`\u5FEB\u8FDB ${e} \u79D2`}if(d==="ArrowLeft"){c.seek(-e);return`\u5FEB\u9000 ${e} \u79D2`}if(d==="ArrowUp")return`\u97F3\u91CF ${Math.round(c.volume(n)*100)}%`;if(d==="ArrowDown")return`\u97F3\u91CF ${Math.round(c.volume(-n)*100)}%`;if(d===" "||d==="Spacebar"){c.toggle();return"\u64AD\u653E / \u6682\u505C"}return null}o(p,"remoteAction");function _(d){if(!d||!d.tagName)return false;return sh.test(d.tagName)||d.isContentEditable===true}o(_,"isEditable");function b(d){if(!d||!d.tagName)return false;return lh.test(d.tagName)}o(b,"isActivatable");function k(d){if(!d||!d.tagName)return false;if(typeof d.closest==="function"&&d.closest('[class*="vc-"], [id^="vc-"]'))return false;if(d.tagName.toLowerCase()==="input")return String(d.type||"").toLowerCase()==="range";return typeof d.getAttribute==="function"&&d.getAttribute("role")==="slider"}o(k,"isSlider");function y(d){if(!d||typeof d.closest!=="function")return false;return!!d.closest(uh)}o(y,"isPlayerControl");function R(d){const g=typeof d.composedPath==="function"?d.composedPath():null;return(g&&g.length?g[0]:d.target)||null}o(R,"realTarget");function S(d){if(d.tabIndex<0&&!d.hasAttribute("tabindex"))d.tabIndex=-1;try{d.focus({preventScroll:true})}catch(g){}}o(S,"focusVideo");function N(d){if(d.paused){Promise.resolve(d.play()).catch(()=>{});return"\u64AD\u653E"}d.pause();return"\u6682\u505C"}o(N,"togglePaused");function v(d,g){const C=d.muted;const z=Ge(d,g,{unmute:true});Br();const K=`\u97F3\u91CF ${Math.round(z*100)}%`;return C?`\u5DF2\u53D6\u6D88\u9759\u97F3 \xB7 ${K}`:K}o(v,"setVolume");function x(d,g){switch(d){case"ArrowRight":return()=>{g.currentTime+=e;return`\u5FEB\u8FDB ${e} \u79D2`};case"ArrowLeft":return()=>{g.currentTime=Math.max(0,g.currentTime-e);return`\u5FEB\u9000 ${e} \u79D2`};case"ArrowUp":return()=>v(g,g.volume+n);case"ArrowDown":return()=>v(g,g.volume-n);case" ":case"Spacebar":return()=>N(g);default:return null}}o(x,"actionFor");function I(d){if(d.defaultPrevented)return;if(d.ctrlKey||d.altKey||d.metaKey)return;const g=R(d)||d.target;if(_(g))return;if(Zi.includes(d.key)&&b(g)&&!y(g))return;if(!Yu.includes(d.key))return;const C=t();if(!C||!C.isConnected){if(f()){const at=p(d.key);d.preventDefault();if(at&&r)r(at);return}d.preventDefault();if(i)i();return}const z=x(d.key,C);if(!z)return;const K=z();d.preventDefault();if(K&&r)r(K)}o(I,"onKeyDown");function B(d){if(!d)return false;if(k(d))return true;if(_(d))return false;return y(d)}o(B,"shouldTakeOverSpace");function T(d,g){if(!d)return false;if(k(d))return true;return!!(g&&g.controls&&d===g)}o(T,"shouldTakeOverEarly");function O(d){if(d.ctrlKey||d.altKey||d.metaKey)return;if(!Yu.includes(d.key))return;const g=R(d)||s.activeElement;const C=t();if(Zi.includes(d.key)){if(!B(g)&&!T(g,C))return;d.preventDefault();d.stopPropagation();if(!C||!C.isConnected)return;S(C);N(C);return}if(!dh.includes(d.key)||!T(g,C))return;d.preventDefault();d.stopPropagation();if(!C||!C.isConnected){if(i)i();return}const z=x(d.key,C);if(!z)return;const K=z();if(K&&r)r(K)}o(O,"onKeyDownCapture");function H(d){if(!Zi.includes(d.key)||d.ctrlKey||d.altKey||d.metaKey)return;const g=R(d)||s.activeElement;if(!B(g))return;d.preventDefault();d.stopPropagation()}o(H,"onKeyUpCapture");let q=0;function F(){q=Date.now()}o(F,"onPointerDown");function P(d){try{if(d.matches(":hover"))return true}catch(g){}return Date.now()-q<800}o(P,"pointerLikelyOn");function w(d){const g=R(d)||d.target;if(!g||!g.tagName||g.tagName.toLowerCase()!=="video")return;const C=t();if(!C||g!==C)return;if(!P(g))return;try{g.blur()}catch(z){}}o(w,"onFocusIn");return{handleRemoteKey(d){if(!f())return;const g=p(d);if(g&&r)r(g)},enable(){if(l)return;l=true;s.addEventListener("pointerdown",F,true);s.addEventListener("focusin",w,true);a.addEventListener("keydown",O,true);a.addEventListener("keyup",H,true);a.addEventListener("keydown",I)},disable(){if(!l)return;l=false;s.removeEventListener("pointerdown",F,true);s.removeEventListener("focusin",w,true);a.removeEventListener("keydown",O,true);a.removeEventListener("keyup",H,true);a.removeEventListener("keydown",I)}}} o(Qi,"createPlayerKeyboard"); var fh=.6; function Ju(){const t=ph();if(t!==null)return t>fh;return gh()} o(Ju,"isLightPage"); function ph(){const t=vh();if(t!==null)return t;for(const e of[document.body,document.documentElement]){if(!e)continue;const n=Zu(e);if(n!==null)return n}return mh()} o(ph,"pageBrightness"); function vh(){let t=null;try{t=document.elementFromPoint(window.innerWidth/2,window.innerHeight/2)}catch{}const e=window.innerWidth*window.innerHeight*.5;for(let n=t;n;n=n.parentElement){const r=Zu(n);if(r===null)continue;const i=n.getBoundingClientRect();if(i.width*i.height>=e)return r}return null} o(vh,"backgroundAtPanelSpot"); function Zu(t){const e=uo(getComputedStyle(t).backgroundColor);if(e!==null)return e;const n=Wu(getComputedStyle(t).backgroundImage);if(n!==null)return n;for(const r of["::before","::after"]){const i=getComputedStyle(t,r);if(!i||i.content==="none"||i.display==="none")continue;const c=uo(i.backgroundColor);if(c!==null)return c;const a=Wu(i.backgroundImage);if(a!==null)return a}return null} o(Zu,"nodeBrightness"); function Wu(t){const e=String(t||"");if(!e||e==="none")return null;const n=/#[0-9a-f]{3,8}\b|rgba?\([^)]*\)|(?:lab|lch|oklab|oklch|hsla?|color)\([^)]*\)/i.exec(e);return n?uo(n[0]):null} o(Wu,"gradientBrightness"); function mh(){const t=document.body||document.documentElement;if(!t)return null;const e=uo(getComputedStyle(t).color);if(e===null)return null;if(e>.75)return .2;if(e<.35)return .9;return null} o(mh,"textBrightnessHint"); function uo(t){const e=String(t||"").trim().toLowerCase();if(!e||e==="transparent"||e==="currentcolor"||e==="none")return null;const n=/^([a-z-]+)\(([^)]*)\)$/.exec(e);if(!n)return hh(e);const r=n[1];const i=n[2].split("/");if(i[1]!==void 0&&Xu(i[1])<.5)return null;if(i[0].indexOf("var(")>=0)return null;const c=i[0].match(/-?[\d.]+%?/g)||[];const a=o(l=>{const f=c[l];if(f===void 0)return null;return f.indexOf("%")>=0?parseFloat(f)/100:parseFloat(f)},"num");const s=o(l=>c.length>=l&&c.slice(0,l).every(f=>f!==""),"has");switch(r){case"rgb":case"rgba":{if(!s(3))return null;if(c.length>=4&&Xu(c[3])<.5)return null;const l=c.slice(0,3).map(f=>f.indexOf("%")>=0?parseFloat(f)*2.55:parseFloat(f));return tc(l)}case"hsl":case"hsla":return s(3)?a(2):null;case"lab":case"lch":{if(!s(1))return null;return c[0].indexOf("%")>=0?a(0):a(0)/100}case"oklab":case"oklch":{const l=a(0);return l===null?null:l>1?l/100:l}case"color":{if(c.length<3)return null;return tc([a(0)*255,a(1)*255,a(2)*255])}default:return null}} o(uo,"brightnessOf"); function hh(t){const e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(t);if(!e)return null;let n=e[1];if(n.length===3)n=n.split("").map(r=>r+r).join("");return tc([parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)])} o(hh,"hexBrightness"); function Xu(t){const e=String(t).trim();return e.indexOf("%")>=0?parseFloat(e)/100:parseFloat(e)} o(Xu,"alphaOf"); function tc([t,e,n]){return(.299*t+.587*e+.114*n)/255} o(tc,"luminance"); function gh(){if(!window.matchMedia)return false;return!window.matchMedia("(prefers-color-scheme: dark)").matches} o(gh,"prefersLight"); var wt={openDuration:600,closeDuration:500,openEase:"outCubic",closeEase:"inCubic",panelRadius:16,buttonRadius:14,slices:200,cornerSlices:32,genieSpread:1.6,verticalThresholdRatio:.18,fallbackPad:260,zIndex:100002,closeHandoffRatio:.55,canvasPad:8,maxDpr:2,fill:"rgba(30, 32, 44, 0.72)",highlight:"rgba(255, 255, 255, 0.14)",highlightHeight:2,stroke:"rgba(255, 255, 255, 0.16)"}; var Qu={outCubic:o(t=>1-Math.pow(1-t,3),"outCubic"),inCubic:o(t=>t*t*t,"inCubic"),linear:o(t=>t,"linear")}; function bh(){return!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)} o(bh,"prefersReducedMotion"); function ec({panelRect:t,buttonRect:e,reverse:n,canvasZ:r,fill:i,highlight:c,stroke:a,onHandoff:s,onDone:l}){const f=n?wt.openDuration:wt.closeDuration;const p=Qu[n?wt.openEase:wt.closeEase]||Qu.linear;const _=i||wt.fill;const b=c||wt.highlight;const k=a||wt.stroke;const y=t&&e&&t.width>0&&t.height>0&&e.width>0&&e.height>0;if(!y||bh()||f<=0){if(l)l();return}const R=wt.canvasPad;const S=Math.floor(Math.min(t.left,e.left)-R);const N=Math.floor(Math.min(t.top,e.top)-R);const v=Math.ceil(Math.max(t.right,e.right)+R-S);const x=Math.ceil(Math.max(t.bottom,e.bottom)+R-N);const I=Math.min(wt.maxDpr,Math.max(1,window.devicePixelRatio||1));const B=document.createElement("canvas");B.width=Math.round(v*I);B.height=Math.round(x*I);B.style.cssText=`position:fixed;left:${S}px;top:${N}px;width:${v}px;height:${x}px;pointer-events:none;z-index:${r||wt.zIndex};`;document.body.appendChild(B);const T=B.getContext("2d");T.setTransform(I,0,0,I,-S*I,-N*I);T.lineJoin="round";const O=t.left;const H=t.top;const q=t.width;const F=t.height;const P=O+q/2;const w=H+F/2;const d=e.left;const g=e.top;const C=e.width;const z=e.height;const K=d+C/2;const at=g+z/2;const vt=K-P;const Dt=at-w;const dt=Math.abs(Dt)>F*wt.verticalThresholdRatio;const se=dt?Dt>=0:vt>=0;const Yt=wt.slices;const Nt=wt.cornerSlices;const Wt=Yt-2*Nt;const At=Yt+1;const le=new Float32Array(At);const j=new Float32Array(At);const _t=new Float32Array(At);let Lt=null;function Xt(ft){const ut=F+(z-F)*ft;const bt=q+(C-q)*ft;const A=wt.panelRadius+(wt.buttonRadius-wt.panelRadius)*ft;const X=dt?ut:bt;const Y=X>0?Math.min(.45,A/X):0;let tt=Infinity,kt=-Infinity,ct=Infinity,mt=-Infinity;for(let Z=0;Z=Yt-Nt)yt=1-(Yt-Z)/Nt*Y;else yt=Y+(Z-Nt)/Wt*(1-2*Y);const yo=se?yt:1-yt;let Jt=ft*(1+yo*wt.genieSpread);if(Jt>1)Jt=1;const qe=q+(C-q)*Jt;const gn=F+(z-F)*Jt;let Mt=0;let ue,ve,zt;if(dt){const Fe=H+yt*F;const Qe=g+yt*z;const bn=Fe+(Qe-Fe)*Jt;const Be=P+(K-P)*Jt;if(yt1-Y){const St=(yt-(1-Y))*ut;Mt=A-Math.sqrt(Math.max(0,A*A-St*St))}const me=qe/2-.5;if(Mt>me)Mt=me>0?me:0;ue=Be-qe/2+Mt;ve=Be+qe/2-Mt;zt=bn;if(uekt)kt=ve;if(ztmt)mt=zt}else{const Fe=O+yt*q;const Qe=d+yt*C;const bn=Fe+(Qe-Fe)*Jt;const Be=w+(at-w)*Jt;if(yt1-Y){const St=(yt-(1-Y))*bt;Mt=A-Math.sqrt(Math.max(0,A*A-St*St))}const me=gn/2-.5;if(Mt>me)Mt=me>0?me:0;ue=Be-gn/2+Mt;ve=Be+gn/2-Mt;zt=bn;if(ztkt)kt=zt;if(uemt)mt=ve}le[Z]=ue;j[Z]=ve;_t[Z]=zt}if(Lt){T.clearRect(Lt.x0-2,Lt.y0-2,Lt.x1-Lt.x0+4,Lt.y1-Lt.y0+4)}else{T.clearRect(S,N,v,x)}Lt={x0:tt,x1:kt,y0:ct,y1:mt};T.beginPath();if(dt){T.moveTo(j[0],_t[0]);for(let Z=1;Z=0;Z--)T.lineTo(le[Z],_t[Z])}else{T.moveTo(_t[0],le[0]);for(let Z=1;Z=0;Z--)T.lineTo(_t[Z],j[Z])}T.closePath();T.fillStyle=_;T.fill();if(b&&wt.highlightHeight>0){const Z=T.createLinearGradient(0,ct,0,ct+wt.highlightHeight);Z.addColorStop(0,b);Z.addColorStop(1,"rgba(255, 255, 255, 0)");T.save();T.globalCompositeOperation="source-atop";T.fillStyle=Z;T.fillRect(tt,ct,kt-tt,wt.highlightHeight);T.restore()}if(k){T.lineWidth=1;T.strokeStyle=k;T.stroke()}}o(Xt,"drawFrame");let E=false;let M=0;let G=0;function V(){if(E)return;E=true;cancelAnimationFrame(M);clearTimeout(G);B.remove();if(l)l()}o(V,"finish");Xt(n?1:0);const it=performance.now();let st=false;function et(ft){if(E)return;const ut=Math.min(1,(ft-it)/f);const bt=p(ut);if(!n&&!st&&ut>=wt.closeHandoffRatio){st=true;if(s)s()}Xt(n?1-bt:bt);if(ut<1)M=requestAnimationFrame(et);else V()}o(et,"frame");M=requestAnimationFrame(et);G=setTimeout(V,f+wt.fallbackPad)} o(ec,"runGenie"); var fo=[{set:"want",icon:"\u2B50",label:"\u60F3\u770B"},{set:"watched",icon:"\u2713",label:"\u5DF2\u770B"}]; var We=fo.reduce((t,e)=>{t[e.set]=e.label;return t},{}); function td(t){return fo.map(e=>{const n=t?"vc-status-btn "+t:"vc-status-btn";return``}).join("")} o(td,"statusButtonsHtml"); function ed(t){const e=getComputedStyle(t);return{fill:e.backgroundColor,highlight:e.getPropertyValue("--vc-top-highlight").trim(),stroke:e.borderTopColor}} o(ed,"panelShapeColors"); var yh=1e3; function nd(t){const{state:e,pageSize:n,loadFn:r,filterFn:i,getId:c,getTitle:a,getTitleHintFn:s,getUrl:l,resolveUrlFn:f,getSiteName:p,getTime:_,getAvcode:b,getStatus:k,setStatusFn:y,restoreStatusFn:R,deleteFn:S,batchSetStatusFn:N,batchDeleteFn:v,exportFn:x,importFn:I,updateButtonStateFn:B,openSettingsFn:T,openWebSearchFn:O,getExtraInfo:H,resolveSiteIdFn:q,resolveCoverFn:F,resolveCoverFallbackFn:P,onCoverFailed:w,onCoverLoaded:d,resolveCoverClassFn:g,getCoverFitFn:C,resolvePreviewFn:z,hasHistory:K,emptyText:at,templates:vt,getOriginRectFn:Dt,setFloatPanelFn:dt,getMetaFn:se,metaStaleFn:Yt,requestMetaFn:Nt,metaEnabledFn:Wt,resetRatingQueueFn:At}=t;const le={want:"\u60F3\u770B",watched:"\u5DF2\u770B",history:"\u89C2\u770B\u8BB0\u5F55"};let j=null;let _t=false;let Lt=false;let Xt=null;let E=false;const M=new Set;const G=new Map;function V(){const u=document.createElement("div");u.className="vc-mask";u.onclick=L=>{if(L.target===u)To()};const m=document.createElement("div");m.className="vc-panel";m.innerHTML=vt.panelTemplate;if(!K){const L=m.querySelector('.vc-tab[data-vc-type="history"]');const D=m.querySelector('.vc-list-wrap[data-vc-type="history"]');if(L)L.style.display="none";if(D)D.style.display="none"}u.appendChild(m);document.body.appendChild(u);j=u;Se(u,document.body);Ao();it(m);let h=null;window.addEventListener("resize",()=>{clearTimeout(h);h=setTimeout(()=>bc(j),200)})}o(V,"createPanel");function it(u){u.querySelector(".vc-close").onclick=To;st(u);et(u);ut(u);X(u);Y(u)}o(it,"bindPanelEvents");function st(u){u.querySelectorAll(".vc-tab").forEach(m=>{m.onclick=()=>{if(_t)tn();u.querySelectorAll(".vc-tab").forEach(h=>h.classList.remove("vc-active"));m.classList.add("vc-active");St();e.currentTab=m.dataset.vcType;kt(m.dataset.vcType)}})}o(st,"bindTabEvents");function et(u){const m=u.querySelector(".vc-search");const h=o(()=>{e.searchKeyword=m.value.trim();e.currentPage[e.currentTab]=1;e.renderedTabs.clear();St();ct()},"runSearch");let L=null;m.oninput=()=>{clearTimeout(L);L=setTimeout(h,qc)};const D=u.querySelector(".vc-search-clear");if(D){D.onclick=()=>{if(!m.value)return;m.value="";h();m.focus()}}}o(et,"bindSearchEvents");let ft=null;function ut(u){const m=u.querySelector("#vc-refresh");m.onclick=()=>{e.renderedTabs.clear();St();ct();A(m);rt("\u5217\u8868\u5DF2\u5237\u65B0",{tone:"ok"})};const h=u.querySelector(".vc-header-menu-wrap");u.querySelector("#vc-more").onclick=()=>{bt(!u.querySelector("#vc-header-menu").classList.contains("vc-show"))};const L=!!(window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches);if(L){h.addEventListener("mouseenter",()=>{clearTimeout(ft);bt(true)});h.addEventListener("mouseleave",()=>{clearTimeout(ft);ft=setTimeout(()=>bt(false),$c)})}const D=o(W=>()=>{bt(false);W()},"runFromMenu");u.querySelector("#vc-export").onclick=D(x);u.querySelector("#vc-import").onclick=D(()=>{I(()=>{e.renderedTabs.clear();St();ct();if(B)B()})});u.querySelector("#vc-settings").onclick=()=>{if(T)T()};const $=u.querySelector("#vc-web-search");if(O)$.onclick=D(()=>O());else $.style.display="none";document.addEventListener("click",W=>{if(!h.contains(W.target))bt(false)})}o(ut,"bindHeaderActions");function bt(u){const m=j&&j.querySelector("#vc-header-menu");if(!m)return;if(m.classList.contains("vc-show")===u)return;m.classList.toggle("vc-show",u);j.querySelector("#vc-more").setAttribute("aria-expanded",u?"true":"false")}o(bt,"setHeaderMenu");function A(u){u.classList.remove("vc-spin");void u.offsetWidth;u.classList.add("vc-spin");u.addEventListener("animationend",()=>u.classList.remove("vc-spin"),{once:true})}o(A,"playRefreshSpin");function X(u){u.querySelector("#vc-first").onclick=()=>Mt(1);u.querySelector("#vc-prev").onclick=()=>Mt(e.currentPage[e.currentTab]-1);u.querySelector("#vc-next").onclick=()=>Mt(e.currentPage[e.currentTab]+1);u.querySelector("#vc-last").onclick=()=>Mt(qe(e.currentTab));const m=u.querySelector("#vc-site-select");m.addEventListener("change",()=>{e.siteFilter=m.value;e.currentPage[e.currentTab]=1;e.renderedTabs.clear();St();ct()})}o(X,"bindPagerEvents");function Y(u){u.querySelector("#vc-batch-toggle").onclick=()=>{if(_t)tn();else uf()};u.querySelector("#vc-batch-selectall").onchange=m=>{const h=u.querySelector(`#vc-grid-${e.currentTab}`);const L=h?h.querySelectorAll(".vc-card"):[];L.forEach(D=>{const $=D.dataset.vcId;const W=D.querySelector(".vc-card-check");if(m.target.checked){M.add($);D.classList.add("vc-selected");if(W)W.checked=true}else{M.delete($);D.classList.remove("vc-selected");if(W)W.checked=false}});_o()};u.querySelector("#vc-batch-move-want").onclick=()=>tt("want");u.querySelector("#vc-batch-move-watched").onclick=()=>tt("watched");u.querySelector("#vc-batch-delete").onclick=async()=>{if(M.size===0)return;const m=e.currentTab;const h=m==="history"?"\u89C2\u770B\u8BB0\u5F55":"\u6536\u85CF";const L=await Le(`\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684 ${M.size} \u6761${h}\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002`,{danger:true});if(!L)return;v(Array.from(M),m);tn()};u.querySelector("#vc-batch-cancel").onclick=()=>tn()}o(Y,"bindBatchEvents");async function tt(u){if(M.size===0)return;const m=u?`\u79FB\u5230${We[u]}`:"\u53D6\u6D88\u6536\u85CF";const h=await Le(`\u786E\u5B9A\u5C06\u9009\u4E2D\u7684 ${M.size} \u6761${m}\u5417\uFF1F`);if(!h)return;const L=N?N(Array.from(M),u):0;St();tn();rt(`\u5DF2${m} ${L} \u6761`,{tone:"ok"})}o(tt,"runBatchStatus");function kt(u){j.querySelectorAll(".vc-list-wrap").forEach(m=>{m.classList.toggle("vc-active",m.dataset.vcType===u)});if(!e.renderedTabs.has(u)){gc(u);e.renderedTabs.add(u)}ko()}o(kt,"switchTab");function ct(){gn();gc(e.currentTab);e.renderedTabs.add(e.currentTab);ko();if(_t)_o();if(E){E=false;Z()}}o(ct,"renderActiveList");function mt(u){const m=q?q(u):u.siteId||"";return m||""}o(mt,"siteIdOf");function Z(){const u=j.querySelector(".vc-panel");if(!u)return;u.classList.add("vc-content-enter");void u.offsetWidth;u.classList.remove("vc-content-enter")}o(Z,"playContentEnter");function yt(u){const m=new Map;u.forEach(h=>{const L=mt(h);if(!L||m.has(L))return;m.set(L,p(h)||L)});return Array.from(m,([h,L])=>({id:h,name:L}))}o(yt,"collectSiteFilters");function yo(u){const m=j.querySelector("#vc-site-select");if(!m)return;const h=[{id:"",name:"\u5168\u90E8"},...u];m.innerHTML=h.map(L=>``).join("");if(!u.some(L=>L.id===e.siteFilter))e.siteFilter="";m.value=e.siteFilter}o(yo,"renderSiteSelect");function Jt(u){let m=i(u,e.searchKeyword);if(e.siteFilter)m=m.filter(h=>mt(h)===e.siteFilter);return m}o(Jt,"applyFilters");function qe(u){const m=r();const h=Jt(m[u]||[]);return Math.ceil(h.length/n)||1}o(qe,"getTotalPages");function gn(){const u=qe(e.currentTab);const m=e.currentPage[e.currentTab]||1;const h=Math.max(1,Math.min(m,u));if(h!==m)e.currentPage[e.currentTab]=h}o(gn,"clampCurrentPage");function Mt(u){const m=qe(e.currentTab);const h=Math.max(1,Math.min(u,m));if(h===e.currentPage[e.currentTab])return;e.currentPage[e.currentTab]=h;e.renderedTabs.clear();St();ct()}o(Mt,"jumpToPage");function ue(u){return u==="want"||u==="watched"?u:null}o(ue,"normalizeStatus");function ve(u){const m=u.querySelector(".vc-card-status");return m?ue(m.dataset.vcStatus):null}o(ve,"getCardStatus");function zt(u,m){const h=u.querySelector(".vc-card-status");if(h)h.dataset.vcStatus=m||"none"}o(zt,"applyCardStatus");function Fe(u,m,h){const L=ve(u);const D=L===h?null:h;const $=y?y(m,D):null;if(!$||!$.ok)return;e.renderedTabs.clear();if(B)B();if(e.currentTab==="history"){zt(u,D);rt(D?`\u5DF2\u52A0\u5165${We[D]}`:"\u5DF2\u53D6\u6D88\u6536\u85CF",{tone:"ok"});return}G.set(m,{from:$.from,to:D,snapshot:$.snapshot});Qe(u,D)}o(Fe,"changeCardStatus");function Qe(u,m){u.classList.add("vc-pending");const h=u.querySelector(".vc-card-actions");if(h)h.remove();if(u.querySelector(".vc-card-pending"))return;const L=document.createElement("div");L.className="vc-card-pending";const D=document.createElement("span");D.className="vc-card-pending-text";D.textContent=m?`\u5DF2\u79FB\u5230${We[m]}`:"\u5DF2\u53D6\u6D88\u6536\u85CF";const $=document.createElement("button");$.className="vc-card-undo";$.type="button";$.textContent="\u64A4\u9500";$.addEventListener("click",W=>{W.stopPropagation();Be(u.dataset.vcId)});L.appendChild(D);L.appendChild($);u.appendChild(L)}o(Qe,"applyPendingCard");function bn(u){if(G.size===0)return;u.querySelectorAll(".vc-card").forEach(m=>{const h=G.get(m.dataset.vcId);if(h)Qe(m,h.to)})}o(bn,"restorePendingCards");function Be(u){const m=G.get(u);if(!m)return;if(R)R(u,m.from,m.snapshot);G.delete(u);e.renderedTabs.clear();if(B)B();ct()}o(Be,"undoPendingChange");function me(u,m,h){S(m,h);e.renderedTabs.clear();if(B)B();const L=u.parentElement;u.remove();ko();if(L&&!L.querySelector(".vc-card")){const D=document.createElement("div");D.className="vc-empty";D.textContent=at;L.appendChild(D)}}o(me,"removeCard");function St(){G.clear()}o(St,"invalidatePending");const xo=new Set;function mc(u,m){return[u,m?"vc-cover-ready":""].filter(Boolean).join(" ")}o(mc,"joinCoverClass");function hc(u,m){return typeof g==="function"?g(u,!!m)||"":""}o(hc,"coverClassOf");function gc(u){const m=r();const h=m[u]||[];yo(yt(h));const L=Jt(h);const D=e.currentPage[u];const $=(D-1)*n;const W=L.slice($,$+n);const ot=j.querySelector(`#vc-grid-${u}`);if(L.length===0){ot.innerHTML="";const nt=document.createElement("div");nt.className="vc-empty";nt.textContent=at;ot.appendChild(nt);return}ot.innerHTML=W.map(nt=>{const he=F?F(nt):nt.cover||"";const Zt=xn(he);const mf=Zt?ar(vt.coverImageTemplate,{cover:ht(Zt),title:ht(a(nt)),coverClass:ht(mc(hc(nt),xo.has(he)))}):vt.defaultCoverTemplate;const Ec=b?b(nt):nt.avcode||"";const hf=Ec?``:"";const gf=ue(k?k(nt):null);const _c=a(nt);return ar(vt.cardTemplate,{id:ht(c(nt)),title:ht(_c),titleHint:ht(nf(nt,_c)),url:ht(l(nt)),siteName:ht(p(nt)),dateStr:ht(Tc(_(nt))),dateFull:ht(Ac(_(nt))),lastPlayed:ht(H?H(nt):""),status:ht(gf||"none"),statusButtons:td("vc-card-status-btn"),rateHtml:ir(Gd(nt))||Kd(nt),coverHtml:mf,copyBtnHtml:hf})}).join("");Jd(ot,m,u);bn(ot);Yd(ot,W)}o(gc,"renderList");function Gd(u){if(!se||!Wt||!Wt())return null;return se(u)||null}o(Gd,"metaOf");function ir(u){if(!u||u.miss)return"";if(!u.score&&u.norate){const L=xn(u.url);const D="\u8C46\u74E3\u5DF2\u6536\u5F55\u8FD9\u4E00\u90E8\uFF0C\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09";return L?`\u8C46\u74E3 --`:`\u8C46\u74E3 --`}if(!u.score)return"";const m=ht(u.score);const h=xn(u.url);return h?`\u8C46\u74E3 ${m}`:`\u8C46\u74E3 ${m}`}o(ir,"rateHtmlOf");function Kd(u){if(!Nt||!Wt||!Wt())return"";const m=String(c(u)??"");if(!m)return"";return``}o(Kd,"rateFetchHtml");function Yd(u,m){if(!Nt||!Wt||!Wt())return;if(At)At();m.forEach(h=>{if(se&&se(h)&&!(Yt&&Yt(h)))return;const L=String(c(h)??"");if(!L)return;Nt(L,D=>{if(!D||D.miss)return;const $=Array.prototype.filter.call(u.children,ot=>ot.dataset.vcId===L)[0];const W=$&&$.querySelector(".vc-card-rate");if(W)W.innerHTML=ir(D)})})}o(Yd,"primeRatings");function Wd(u,m){const h=u.parentElement;if(!h)return;const L=u.closest(".vc-card");const D=L?m.find($=>String(c($))===L.dataset.vcId):null;if(h.dataset.vcCoverTried){h.innerHTML=vt.defaultCoverTemplate;if(D&&w)w(D,So(u));return}h.dataset.vcCoverTried="1";h.innerHTML=vt.defaultCoverTemplate;if(D&&w)w(D,So(u));if(!P||!D){wo(u,h,m);return}Promise.resolve(P(D)).then($=>{if(!h.isConnected)return;if(!$){wo(u,h,m);return}const W=xn($);if(!W)return;h.innerHTML=ar(vt.coverImageTemplate,{cover:ht(W),title:ht(a(D)),coverClass:ht(mc(hc(D,true),xo.has(W)))});Eo(h,m)}).catch(()=>{wo(u,h,m)})}o(Wd,"handleCoverError");function wo(u,m,h){if(!m.isConnected)return;const L=So(u);if(!L)return;const D=document.createElement("img");D.referrerPolicy="no-referrer";D.alt=u.getAttribute("alt")||"";D.className=u.className.replace(/\bvc-cover-ready\b/g,"").trim();D.src=L;m.innerHTML="";m.appendChild(D);Eo(m,h)}o(wo,"retryWithoutReferer");function So(u){return u.currentSrc||u.src||""}o(So,"imgSrc");function Eo(u,m){u.querySelectorAll(".vc-card-cover img").forEach(h=>{if(h.dataset.vcCoverBound)return;h.dataset.vcCoverBound="1";const L=o(()=>{if(h.classList.contains("vc-cover-ready"))return;void h.offsetWidth;h.classList.add("vc-cover-ready");const ot=h.getAttribute("src");if(ot&&h.naturalWidth)xo.add(ot)},"fadeIn");const D=400;const $=o(()=>{if(typeof h.decode!=="function"){L();return}let ot=false;const nt=o(()=>{if(ot)return;ot=true;L()},"done");const he=setTimeout(nt,D);const Zt=o(()=>{clearTimeout(he);nt()},"finish");h.decode().then(Zt).catch(Zt)},"fadeInWhenDecoded");if(h.complete&&h.naturalWidth){$()}else{h.addEventListener("load",$,{once:true})}h.addEventListener("error",()=>Wd(h,m));if(!d)return;const W=o(()=>{if(!h.naturalWidth)return;const ot=h.closest(".vc-card");const nt=ot?m.find(he=>String(c(he))===ot.dataset.vcId):null;if(nt)d(nt)},"reportLoaded");h.addEventListener("load",W);if(h.complete)W()})}o(Eo,"bindCoverEvents");function bc(u){if(!u||typeof u.querySelectorAll!=="function")return;u.querySelectorAll(".vc-card-title").forEach(m=>{const h=m.scrollHeight;if(h)m.style.setProperty("--vc-title-full",`${h}px`)})}o(bc,"measureTitles");function Xd(u,m,h){if(u.detail===0)return false;return Math.abs(u.clientX-m)>3||Math.abs(u.clientY-h)>3}o(Xd,"isTextSelect");function Jd(u,m,h){bc(u);u.querySelectorAll(".vc-card").forEach(L=>{const D=L.dataset.vcId;const $=L.dataset.vcUrl;const W=m[h].find(Zt=>c(Zt)===D);let ot=0,nt=0;L.addEventListener("mousedown",Zt=>{ot=Zt.clientX;nt=Zt.clientY});const he=o(Zt=>Xd(Zt,ot,nt),"isDownSelect");if(_t)Zd(L,D,he);else Qd(L,D,W,$,h,he)});Eo(u,m[h]||[])}o(Jd,"bindCardEvents");function Zd(u,m,h){const L=u.querySelector(".vc-card-check");u.addEventListener("click",D=>{if(D.target.closest(".vc-card-checkbox"))return;if(h(D))return;wc(u,m)});if(L){L.addEventListener("change",()=>{wc(u,m,L.checked)})}if(M.has(m)){u.classList.add("vc-selected");if(L)L.checked=true}}o(Zd,"bindBatchCardEvents");function Qd(u,m,h,L,D,$){if(f){u.addEventListener("mouseenter",()=>{Promise.resolve(f(h,L)).catch(()=>{})},{once:true})}u.addEventListener("click",async W=>{if($(W))return;if(W.target.closest(".vc-card-actions, .vc-card-status, .vc-card-rate"))return;if(W.target.closest(".vc-card-cover")){rf(W.target,h);return}yc(h,L)});of(u,m);cf(u);sf(u,h,L,$);tf(u,h);lf(u,m,D)}o(Qd,"bindNormalCardEvents");function tf(u,m){const h=u.querySelector(".vc-card-rate-fetch");if(!h)return;h.addEventListener("click",L=>{L.stopPropagation();if(h.dataset.vcBusy==="1")return;h.dataset.vcBusy="1";h.textContent="\u67E5\u8BE2\u4E2D\u2026";const D=h.dataset.vcId||String(c(m)??"");Nt(D,$=>{h.dataset.vcBusy="";if($&&!$.miss&&$.score){const ot=h.parentElement;if(ot)ot.innerHTML=ir($);return}if($&&$.norate){const ot=h.parentElement;if(ot)ot.innerHTML=ir($);rt("\u8C46\u74E3\u5DF2\u6536\u5F55\u8FD9\u4E00\u90E8\uFF0C\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09",{tone:"warn"});return}h.textContent="\u8C46\u74E3 ?";const W=!!($&&$.miss);h.title=W?"\u8C46\u74E3\u6CA1\u6709\u8FD9\u4E00\u90E8\u7684\u8BC4\u5206\uFF08\u53EF\u518D\u70B9\u4E00\u6B21\u91CD\u8BD5\uFF09":"\u6CA1\u67E5\u5230\u8C46\u74E3\u8BC4\u5206\uFF08\u53EF\u518D\u70B9\u4E00\u6B21\u91CD\u8BD5\uFF09";rt(W?"\u8C46\u74E3\u6CA1\u6709\u8FD9\u4E00\u90E8\u7684\u8BC4\u5206":"\u6CA1\u67E5\u5230\u8C46\u74E3\u8BC4\u5206\uFF1A\u989D\u5EA6\u7528\u5C3D\u6216\u88AB\u98CE\u63A7\u65F6\u4F1A\u67E5\u4E0D\u52A8\uFF08\u72B6\u6001\u89C1\u8BBE\u7F6E \u2192\u300C\u5F71\u89C6\u4FE1\u606F\u300D\uFF09",{tone:W?"warn":"error"})},{force:true})})}o(tf,"bindRatingFetch");async function yc(u,m){let h=m;if(f){try{h=await f(u,m)||m}catch(L){h=m}}if(h)window.open(h,"_blank","noopener,noreferrer")}o(yc,"openItem");function ef(u){const m=b?b(u):u.avcode||"";return m||a(u)||""}o(ef,"copyTextOf");function nf(u,m){const h=typeof s==="function"?s(u):m;const L=b?b(u):u.avcode||"";return`${h}\uFF08\u53CC\u51FB\u590D\u5236${L?"\u756A\u53F7":""}\uFF09`}o(nf,"titleHintOf");function rf(u,m){if(!(u&&u.tagName==="IMG"&&(m==null?void 0:m.cover)))return;const h=u.src||m.cover;if(!z){No(h);return}No();const L=Promise.resolve(z(m)).catch(()=>"");const D=new Promise($=>setTimeout(()=>$(""),yh));Promise.race([L,D]).then($=>qo($||h));L.then($=>{if($)qo($)})}o(rf,"openCoverPreview");function of(u,m){u.querySelectorAll(".vc-card-status-btn").forEach(h=>{h.addEventListener("click",L=>{L.stopPropagation();Fe(u,m,h.dataset.vcSet)})})}o(of,"bindStatusButtons");function cf(u){const m=u.querySelector(".vc-card-copy");if(!m)return;m.addEventListener("click",h=>{h.stopPropagation();xc(u,m.dataset.vcAvcode||"")})}o(cf,"bindCopyButton");const af=250;function sf(u,m,h,L){const D=u.querySelector(".vc-card-title");if(!D)return;const $=ef(m);if(!$)return;let W=null;D.addEventListener("click",ot=>{if(L(ot))return;ot.stopPropagation();if(W)return;W=setTimeout(()=>{W=null;yc(m,h)},af)});D.addEventListener("dblclick",ot=>{ot.stopPropagation();if(W){clearTimeout(W);W=null}const nt=window.getSelection();if(nt)nt.removeAllRanges();xc(u,$)})}o(sf,"bindTitleDblClick");function xc(u,m){if(!Oc(m))return;const h=u.querySelector(".vc-card-copy");if(!h){rt("\u5DF2\u590D\u5236\uFF1A"+m,{tone:"ok"});return}h.textContent="\u2705";clearTimeout(h._copyTimer);h._copyTimer=setTimeout(()=>{h.textContent="\u{1F4CB}"},Fc)}o(xc,"copyAndFeedback");function lf(u,m,h){const L=h==="history"?"\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u89C2\u770B\u8BB0\u5F55\u5417\uFF1F":"\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u6536\u85CF\u5417\uFF1F";u.querySelector(".vc-card-delete-btn").addEventListener("click",D=>{D.stopPropagation();Le(L,{danger:true}).then($=>{if($)me(u,m,h)})})}o(lf,"bindDeleteButton");function wc(u,m,h){const L=u.querySelector(".vc-card-check");const D=h!==void 0?h:!M.has(m);if(D){M.add(m);u.classList.add("vc-selected");if(L)L.checked=true}else{M.delete(m);u.classList.remove("vc-selected");if(L)L.checked=false}_o()}o(wc,"toggleCardSelected");function uf(){_t=true;M.clear();j.querySelector(".vc-panel").classList.add("vc-batch-mode");j.querySelector("#vc-batch-bar").style.display="";Sc(true);e.renderedTabs.clear();St();ct()}o(uf,"enterBatchMode");function tn(){_t=false;M.clear();j.querySelector(".vc-panel").classList.remove("vc-batch-mode");j.querySelector("#vc-batch-bar").style.display="none";j.querySelector("#vc-batch-selectall").checked=false;Sc(false);e.renderedTabs.clear();ct()}o(tn,"exitBatchMode");function Sc(u){const m=j.querySelector("#vc-batch-toggle");const h=u?"\u9000\u51FA\u6279\u91CF":"\u6279\u91CF\u9009\u62E9";m.title=h;m.setAttribute("aria-label",h);m.setAttribute("aria-pressed",u?"true":"false")}o(Sc,"setBatchToggleLabel");function _o(){const u=e.currentTab;const m=j.querySelector(`#vc-grid-${u}`);const h=m?m.querySelectorAll(".vc-card"):[];const L=h.length;let D=0;h.forEach(W=>{if(M.has(W.dataset.vcId))D++});j.querySelector("#vc-batch-count").textContent=`\u5DF2\u9009 ${M.size} \u6761`;j.querySelector("#vc-batch-selectall").checked=L>0&&D===L;const $=M.size>0;j.querySelector("#vc-batch-delete").disabled=!$;j.querySelector("#vc-batch-move-want").disabled=!$||u==="want";j.querySelector("#vc-batch-move-watched").disabled=!$||u==="watched"}o(_o,"updateBatchUI");function ko(){const u=r();const m=Jt(u[e.currentTab]||[]);const h=m.length;const L=Math.max(1,Math.ceil(h/n));const D=e.currentPage[e.currentTab];const $=le[e.currentTab]||"";j.querySelector("#vc-count-info").textContent=`\u5171 ${h} \u6761${$}`;j.querySelector("#vc-page-info").textContent=`${D} / ${L}`;j.querySelector("#vc-first").disabled=D<=1;j.querySelector("#vc-prev").disabled=D<=1;j.querySelector("#vc-next").disabled=D>=L;j.querySelector("#vc-last").disabled=D>=L}o(ko,"updatePagination");function df(){if(Lt||j&&j.classList.contains("vc-show"))return;if(!j)V();Lt=true;bt(false);const u=j.querySelector(".vc-panel");u.classList.toggle("vc-panel-light",Ju());Ao();j.classList.remove("vc-scrim-out");j.classList.add("vc-show");j.classList.add("vc-scrim-in");u.classList.add("vc-genie-hidden");const m=u.getBoundingClientRect();const h=typeof Dt==="function"?Dt():null;if(h)Xt=h;if(typeof dt==="function")dt(true);ec({panelRect:m,buttonRect:Xt,reverse:true,...ed(u),onDone(){St();E=true;ct();j.querySelector(".vc-panel").classList.remove("vc-genie-hidden");j.classList.remove("vc-scrim-in");Lt=false}})}o(df,"openPanel");function To(){if(Lt||!j||!j.classList.contains("vc-show"))return;Lt=true;if(_t)tn();bt(false);const u=j.querySelector(".vc-panel");const m=u.getBoundingClientRect();const h=ed(u);u.classList.add("vc-genie-hidden");j.classList.remove("vc-scrim-in");j.classList.add("vc-scrim-out");j.style.zIndex="99997";ec({panelRect:m,buttonRect:Xt,reverse:false,...h,canvasZ:99998,onHandoff(){if(typeof dt==="function")dt(false)},onDone(){j.classList.remove("vc-show");j.classList.remove("vc-scrim-out");j.querySelector(".vc-panel").classList.remove("vc-genie-hidden");j.style.zIndex="";if(typeof dt==="function")dt(false);Lt=false}})}o(To,"closePanel");function Ao(){if(!j)return;const u=j.querySelector(".vc-panel");if(u)u.classList.toggle("vc-cover-fit-off",typeof C==="function"&&!C())}o(Ao,"applyCoverFit");function ff(){return j}o(ff,"getPanelEl");function pf(){return!!j&&j.classList.contains("vc-show")}o(pf,"isPanelOpen");function vf(){const u=j&&j.querySelector(".vc-search");return u?u.value.trim():""}o(vf,"getSearchKeyword");return{createPanel:V,openPanel:df,closePanel:To,renderActiveList:ct,getPanelEl:ff,isPanelOpen:pf,applyCoverFit:Ao,getSearchKeyword:vf}} o(nd,"createPanelController"); var xh=5; function rd(t,e,n){const{size:r,getPos:i,setPos:c,layout:a,onStart:s,onEnd:l}=n;let f=false,p=false,_=null;let b=0,k=0,y=0,R=0;let S=null,N=0,v=0;function x(T){if(f)return;if(T.pointerType==="mouse"&&T.button!==0)return;const O=a(i());f=true;p=false;_=T.pointerId;b=T.clientX;k=T.clientY;y=T.clientX-O.left;R=T.clientY-O.top;N=O.left;v=O.top;e.classList.add("vc-fab-dragging");e.style.left=O.left+"px";e.style.top=O.top+"px";if(s)s();window.addEventListener("pointermove",I);window.addEventListener("pointerup",B);window.addEventListener("pointercancel",B);T.preventDefault()}o(x,"onDown");function I(T){if(!f||_!==null&&T.pointerId!==_)return;const O=T.clientX-b;const H=T.clientY-k;if(!p&&Math.abs(O)+Math.abs(H){S=null;e.style.left=N+"px";e.style.top=v+"px"})}}o(I,"onMove");function B(){if(!f)return;f=false;_=null;window.removeEventListener("pointermove",I);window.removeEventListener("pointerup",B);window.removeEventListener("pointercancel",B);if(S!==null){cancelAnimationFrame(S);S=null}e.style.left=N+"px";e.style.top=v+"px";e.classList.remove("vc-fab-dragging");if(p){const T=document.documentElement.clientWidth||window.innerWidth;const O=N+r/2;c({side:Of,"isDragging")}} o(rd,"initSnapDrag"); function od(t,e,n){let r=false,i=false,c,a,s,l;let f=0,p=0,_=null,b=0,k=0;function y(S){if(!r)return;const N=S.clientX-c,v=S.clientY-a;if(Math.abs(N)>3||Math.abs(v)>3)i=true;b=Math.max(0,Math.min(window.innerWidth-f,s-N));k=Math.max(0,Math.min(window.innerHeight-p,l+v));if(_===null){_=requestAnimationFrame(()=>{_=null;e.style.right=b+"px";e.style.top=k+"px"})}}o(y,"onMove");function R(){if(!r)return;r=false;document.removeEventListener("mousemove",y);document.removeEventListener("mouseup",R);document.body.style.cursor="";if(_!==null){cancelAnimationFrame(_);_=null;e.style.right=b+"px";e.style.top=k+"px"}e.classList.remove("vc-dragging");GM_setValue(n(),{right:parseFloat(e.style.right)||0,top:parseFloat(e.style.top)||0})}o(R,"onUp");t.addEventListener("mousedown",S=>{if(!e)return;r=true;i=false;c=S.clientX;a=S.clientY;s=parseFloat(e.style.right)||0;l=parseFloat(e.style.top)||0;f=e.offsetWidth;p=e.offsetHeight;e.classList.add("vc-dragging");document.body.style.cursor="grabbing";document.addEventListener("mousemove",y);document.addEventListener("mouseup",R);S.preventDefault()});t.addEventListener("click",S=>{if(i){S.preventDefault();S.stopPropagation();i=false}},true)} o(od,"initXjumpDrag"); var Re=48; var wh=38; var Sh=9; var nc=9; var De=14; var Eh=26; var ux=De+Re-Eh; var mn=12; var _h=Bc; var rc=jc; var kh={side:"right",top:280}; var rr={starOutline:'',starSolid:'',check:'',list:'',search:''}; var Th=o((t,e,n)=>tn?n:t,"clamp"); function id(t){const{positionKeyFn:e,legacyPositionKeysFn:n,onWant:r,onWatched:i,onOpenPanel:c,onTogglePanel:a,onPrimaryClick:s,getPrimaryStateFn:l,getPrimaryIntentFn:f,isDetailPageFn:p,updateButtonStateFn:_,onVisibilityChange:b,onWebSearch:k}=t;let y,R,S,N,v,x,I,B,T;let O=null;let H=false,q=false,F=false,P=false;let w=false;let d=-1,g=-1;let C=null,z=false,K=null;let at="";const vt=!!(window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches);function Dt(){return document.documentElement.clientWidth||window.innerWidth}o(Dt,"viewportWidth");function dt(A){const X=Dt();const Y=window.innerHeight;const tt=Math.max(De,Y-De-Re);const kt=Th(A.top,De,tt);const ct=A.side==="right"?Math.max(De,X-De-Re):De;return{left:ct,top:kt}}o(dt,"layoutOf");function se(){if(!v)return 0;return Array.prototype.filter.call(v.children,A=>!A.hidden).length}o(se,"visibleSubCount");function Yt(){const A=se();if(!A)return 0;return A*wh+(A-1)*Sh+nc}o(Yt,"subsHeight");function Nt(A){return!!A&&(A.side==="left"||A.side==="right")&&typeof A.top==="number"&&isFinite(A.top)}o(Nt,"isPos");function Wt(A){if(!A)return null;const X=window.innerHeight;if((A.side==="left"||A.side==="right")&&typeof A.y==="number"&&isFinite(A.y)){return{side:A.side,top:Math.round(A.y*X)}}if(typeof A.right==="number"&&typeof A.bottom==="number"){const Y=Dt();return{side:A.right<=Y-A.right?"right":"left",top:Math.round(X-A.bottom-Re)}}return null}o(Wt,"convertLegacy");function At(){const A=GM_getValue(e(),null);if(Nt(A))return{side:A.side,top:A.top};const X=n?n():[];for(const Y of X){const tt=Wt(GM_getValue(Y,null));if(tt){GM_setValue(e(),tt);return tt}}return{...kh}}o(At,"loadPos");function le(A){O={side:A.side,top:Math.round(A.top)};GM_setValue(e(),O)}o(le,"savePos");function j(A){const{left:X,top:Y}=dt(O);if(!A)y.style.transition="none";y.style.left=X+"px";y.style.top=Y+"px";if(!A){void y.offsetWidth;y.style.transition=""}y.dataset.vcSide=O.side;y.dataset.vcDir=Y>=Yt()+De?"up":"down"}o(j,"applyPosition");function _t(A,X){if(A<0||X<0)return false;const{left:Y,top:tt}=dt(O);let kt=tt-mn;let ct=tt+Re+mn;let mt=Y-mn;let Z=Y+Re+mn;if(q){const yt=Yt();if(y.dataset.vcDir==="up")kt=Math.min(kt,tt-nc-yt-mn);else ct=Math.max(ct,tt+Re+nc+yt+mn)}if(O.side==="right")Z=window.innerWidth;else mt=0;return A>=mt&&A<=Z&&X>=kt&&X<=ct}o(_t,"inHotZone");function Lt(){const A=document.activeElement;if(!A||!y.contains(A))return false;try{return A.matches(":focus-visible")}catch(X){return false}}o(Lt,"focusInside");function Xt(A){clearTimeout(C);if(A>0)C=setTimeout(E,A);else E()}o(Xt,"schedule");function E(){const A=F||P||Lt();const X=vt?w:p();const Y=X&&!A;M(Y);G(vt&&!A&&!Y&&!w)}o(E,"render");function M(A){if(q===A)return;q=A;y.classList.toggle("vc-fab-open",A);S.setAttribute("aria-expanded",String(A))}o(M,"setSubsOpen");function G(A){if(H===A)return;H=A;y.classList.toggle("vc-peek",A)}o(G,"setPeeked");function V(){if(!S)return;const A=p();const X=A?l()||"none":"none";S.dataset.vcState=X;const Y=typeof f==="function"?f()||"":"";const tt=!A?"list":X==="watched"?"check":X==="want"?"starSolid":Y==="watched"?"check":"starOutline";if(tt!==at){at=tt;N.innerHTML=rr[tt]}const kt=!A?"\u6536\u85CF\u5217\u8868":X==="watched"?"\u5DF2\u770B\uFF0C\u70B9\u51FB\u53D6\u6D88":X==="want"?"\u60F3\u770B\uFF0C\u70B9\u51FB\u53D6\u6D88":Y==="watched"?"\u70B9\u51FB\u6807\u4E3A\u5DF2\u770B":"\u70B9\u51FB\u6807\u4E3A\u60F3\u770B";S.title=kt;S.setAttribute("aria-label",kt)}o(V,"refreshPrimary");function it(){S.classList.remove("vc-fab-pop","vc-fab-ripple");void S.offsetWidth;S.classList.add("vc-fab-pop","vc-fab-ripple");clearTimeout(K);K=setTimeout(()=>S.classList.remove("vc-fab-pop","vc-fab-ripple"),600)}o(it,"pulse");function st(){y=document.createElement("div");y.className="vc-fab-zone";y.dataset.vcSide="right";y.dataset.vcDir="up";R=document.createElement("div");R.className="vc-fab-inner";v=document.createElement("div");v.className="vc-fab-subs";v.setAttribute("role","menu");if(typeof k==="function")T=et("search",rr.search,"\u5168\u7F51\u641C\u7D22");x=et("want",rr.starOutline,We.want);I=et("watched",rr.check,We.watched);B=et("list",rr.list,"\u6536\u85CF\u5217\u8868");if(T)v.appendChild(T);v.appendChild(x);v.appendChild(I);v.appendChild(B);S=document.createElement("button");S.className="vc-fab";S.type="button";S.dataset.vcState="none";S.setAttribute("aria-expanded","false");N=document.createElement("span");N.className="vc-fab-scale";S.appendChild(N);R.appendChild(v);R.appendChild(S);y.appendChild(R)}o(st,"build");function et(A,X,Y){const tt=document.createElement("button");tt.type="button";tt.className="vc-fab-sub vc-btn-"+A;tt.dataset.vcAct=A;tt.dataset.vcTip=Y;tt.setAttribute("aria-label",Y);tt.innerHTML=X;return tt}o(et,"makeSub");function ft(A){if(!y)return;P=!!A;y.classList.toggle("vc-fab-dim",P);E()}o(ft,"setPanelOpen");function ut(){O=At();st();j(false);document.body.appendChild(y);Se(y,document.body);if(_)_();V();rd(S,y,{size:Re,getPos:o(()=>O,"getPos"),setPos:le,layout:dt,onStart(){F=true;z=false;G(false);M(false)},onEnd(A){F=false;if(A){z=true;j(true)}w=_t(d,g);Xt(A?0:rc)}});S.addEventListener("click",()=>{if(z){z=false;return}if(P){if(a)a();return}if(s)s();it()});v.addEventListener("click",A=>{const X=A.target.closest?A.target.closest(".vc-fab-sub"):null;if(!X)return;const Y=X.dataset.vcAct;if(Y==="want"&&r)r();else if(Y==="watched"&&i)i();else if(Y==="list"&&c)c();else if(Y==="search"&&k)k();it()});if(vt){document.addEventListener("pointermove",A=>{d=A.clientX;g=A.clientY;if(F)return;const X=_t(A.clientX,A.clientY);if(X===w)return;w=X;Xt(X?_h:rc)},{passive:true});document.addEventListener("pointerleave",()=>{if(!w)return;w=false;Xt(rc)})}document.addEventListener("visibilitychange",()=>{if(document.hidden)return;if(_)_();O=At();j(false);V();E();if(b)b()});window.addEventListener("resize",()=>{if(F)return;j(false)});bt();E()}o(ut,"create");function bt(){if(!y)return;const A=p();v.hidden=!A&&typeof k!=="function";x.hidden=!A;I.hidden=!A;B.hidden=!A;if(T)T.hidden=false;j(false);V();E()}o(bt,"updateVisibility");return{create:ut,updateVisibility:bt,setPanelOpen:ft,refreshPrimary:V,getOriginRect:o(()=>y?y.getBoundingClientRect():null,"getOriginRect"),getWantBtn:o(()=>x,"getWantBtn"),getWatchedBtn:o(()=>I,"getWatchedBtn")}} o(id,"createFloatButtonGroup"); function cd(t){const{getSiteFn:e,buildItemFn:n,getIdFn:r,isFavoritedFn:i,buildFavIndexFn:c,toggleFavoriteFn:a,refreshItemFn:s,afterToggleFn:l,afterInjectFn:f}=t;let p=null;let _=null;let b=false;const k=new WeakMap;const y=28;function R(){S();[500,1500,3e3].forEach(T=>setTimeout(S,T));if(!p){p=new MutationObserver(()=>{if(_)return;_=setTimeout(()=>{_=null;S()},150)});p.observe(document.body,{childList:true,subtree:true})}if(!b){b=true;document.addEventListener("mouseover",T=>{const O=e();if(!O||!O.listCardSelector)return;const H=T.target.closest(O.listCardSelector);if(!H)return;const q=H.querySelector(".vc-status");if(!q){S();return}x(H,q,O)})}}o(R,"inject");function S(){const T=e();if(!T||!T.getListCards)return;const O=T.getListCards();const H=[];O.forEach(q=>{const{element:F}=q;if(!F)return;const P=F.querySelector(".vc-status");if(P){if(T.statusOffset)x(F,P,T);return}const w=n(q,T);if(!w)return;H.push({element:F,item:w})});if(H.length){const q=c?c(H.map(F=>r(F.item))):null;H.forEach(({element:F,item:P})=>{if(getComputedStyle(F).position==="static"){F.style.position="relative"}F.classList.add("vc-fav-host");const w=N(P,q);F.appendChild(w);x(F,w,T)})}if(H.length)B();if(f)f(O)}o(S,"injectCards");function N(T,O){const H=document.createElement("div");H.className="vc-status";H.dataset.vcId=r(T);fo.forEach(q=>{const F=document.createElement("button");F.type="button";F.className="vc-status-btn";F.dataset.vcSet=q.set;F.title=q.label;F.textContent=q.icon;F.addEventListener("click",P=>{P.preventDefault();P.stopPropagation();if(s)s(T,e(),F);a(T,q.set);B();if(l)l()});H.appendChild(F)});v(H,I(r(T),O));return H}o(N,"makeStatus");function v(T,O){T.dataset.vcStatus=O||"none";T.classList.toggle("vc-status--pinned",!!O)}o(v,"applyStatus");function x(T,O,H){if(typeof H.statusOffset!=="function")return;let q=null;try{q=H.statusOffset(T,O)}catch(g){q=null}if(q&&q.top==null&&q.left==null){k.delete(O);O.style.top="";O.style.left="";return}const F=k.get(O);let P=F?F.top:null;let w=F?F.left:null;if(q&&q.top!=null&&(P==null||q.top>P))P=q.top;if(q&&q.left!=null)w=q.left;if(P==null&&w==null)return;let d=0;try{d=(T.getBoundingClientRect()||{}).height||0}catch(g){d=0}if(d&&P!=null)P=Math.min(P,Math.max(0,d-y));k.set(O,{top:P,left:w});O.style.top=P!=null?P+"px":"";O.style.left=w!=null?w+"px":""}o(x,"applyStatusOffset");function I(T,O){if(O)return O.get(T)||"";if(i(T,"want"))return"want";if(i(T,"watched"))return"watched";return""}o(I,"statusOf");function B(){const T=document.querySelectorAll(".vc-status[data-vc-id]");const O=[];T.forEach(q=>{if(q.dataset.vcId&&O.indexOf(q.dataset.vcId)===-1)O.push(q.dataset.vcId)});const H=c?c(O):null;T.forEach(q=>{const F=q.dataset.vcId;if(F)v(q,I(F,H))})}o(B,"refreshAll");return{inject:R,refreshAll:B}} o(cd,"createMiniButtonInjector"); function ad(t){const{getSiteFn:e,getKeywordFn:n,getPositionKeyFn:r,getAllSitesFn:i,pickDomainFn:c,findAliveDomainFn:a,siteIdField:s}=t;let l=null;let f=null;let p=null;function _(){if(!l)return;const S=l.offsetWidth;const N=l.offsetHeight;if(!S||!N)return;let v=parseFloat(l.style.right)||0;let x=parseFloat(l.style.top)||0;v=Math.max(0,Math.min(v,window.innerWidth-S));x=Math.max(0,Math.min(x,window.innerHeight-N));l.style.right=v+"px";l.style.top=x+"px";const I=GM_getValue(r(),null);if(I&&I.right===v&&I.top===x)return;GM_setValue(r(),{right:v,top:x})}o(_,"clampInViewport");if(!window.__vcXjumpResizeBound){window.__vcXjumpResizeBound=true;window.addEventListener("resize",()=>{clearTimeout(f);f=setTimeout(_,200)})}function b(S,N,v){const x=window.open(v,"_blank");if(x)x.opener=null;if(typeof a!=="function")return;Promise.resolve(a(S)).then(I=>{if(!I)return;const B="https://"+I+S.searchPath(N);if(x&&B!==v)x.location=B}).catch(()=>{})}o(b,"openTarget");function k(S,N){const v="https://"+c(S)+S.searchPath(N);const x=document.createElement("button");x.type="button";x.className="vc-xjump-btn";x.textContent=S.name;x.dataset.vcHref=v;x.addEventListener("mouseenter",()=>{if(typeof a!=="function")return;Promise.resolve(a(S)).catch(()=>{})},{once:true});x.addEventListener("click",()=>b(S,N,v));x.addEventListener("mousedown",I=>{if(I.button===1)I.preventDefault()});x.addEventListener("auxclick",I=>{if(I.button===1)b(S,N,v)});return x}o(k,"createEntry");function y(){const S=e();if(!S)return;const N=n();if(!N)return;if(l&&l.dataset.vcKeyword===N)return;if(l){if(p){p();p=null}l.remove()}l=document.createElement("div");l.className="vc-xjump";l.dataset.vcKeyword=N;const v=GM_getValue(r(),null);if(v){l.style.right=v.right+"px";l.style.top=v.top+"px"}else{l.style.right="16px";l.style.top="16px"}const x=document.createElement("button");x.className="vc-xjump-toggle";x.innerHTML='\u{1F517}\u8DE8\u7AD9\u76F4\u8FBE';const I=document.createElement("div");I.className="vc-xjump-menu";const B=lt(location.hostname);i().filter(H=>H[s]!==S[s]&&H.crossSiteTarget!==false).filter(H=>!(H.domains||[]).some(q=>lt(q)===B)).forEach(H=>I.appendChild(k(H,N)));l.appendChild(x);l.appendChild(I);document.body.appendChild(l);p=Se(l,document.body);od(x,l,r);_();const T=l;let O=null;T.addEventListener("mouseenter",()=>{if(T.classList.contains("vc-dragging"))return;if(O){clearTimeout(O);O=null}T.classList.add("vc-show");requestAnimationFrame(()=>{const H=x.getBoundingClientRect();const q=window.innerHeight-H.bottom;const F=I.offsetHeight;T.classList.toggle("vc-up",q{if(T.classList.contains("vc-dragging"))return;if(O)clearTimeout(O);O=setTimeout(()=>T.classList.remove("vc-show"),150)})}o(y,"inject");function R(){return l}o(R,"getXjumpEl");return{inject:y,getXjumpEl:R}} o(ad,"createCrossSiteJump"); function sd(t,e){if(!t)return;t.querySelectorAll(".vc-settings-seg-btn").forEach(n=>{n.addEventListener("click",()=>{t.querySelectorAll(".vc-settings-seg-btn").forEach(r=>r.classList.remove("vc-active"));n.classList.add("vc-active");e(n.dataset.vcVal)})})} o(sd,"bindSeg"); function Xe(t,e){return`
${t}
${e}
`} o(Xe,"section"); function hn(t,e,n,r=""){return` `} o(hn,"switchItem"); function Ah(t,e){if(!t)return;t.querySelectorAll(".vc-settings-seg-btn").forEach(n=>{n.classList.toggle("vc-active",n.dataset.vcVal===e)})} o(Ah,"syncSeg"); function ld(t={}){const{coverFit:e,translatedTitle:n,rating:r,usage:i,engine:c,volume:a}=t;let s=null;let l=null;function f(){if(!s)x();clearTimeout(l);s.removeEventListener("animationend",_);s.classList.remove("vc-closing");b();s.classList.add("vc-show")}o(f,"open");function p(){if(!s||!s.classList.contains("vc-show"))return;s.classList.add("vc-closing");s.addEventListener("animationend",_);l=setTimeout(_,6e4)}o(p,"close");function _(g){if(!s)return;const C=g&&g.animationName;if(C&&C!=="vcSettingsOut"&&C!=="vcScrimOut")return;clearTimeout(l);s.removeEventListener("animationend",_);s.classList.remove("vc-show");s.classList.remove("vc-closing")}o(_,"onExitEnd");function b(){s.querySelector("#vc-settings-adblock").checked=$r();s.querySelector("#vc-settings-fav-mark").checked=jt("favMark");N("favPeekOpacity","favSize","vc-settings-fav-opacity","vc-settings-fav-size");N("xjumpOpacity","xjumpSize","vc-settings-xjump-opacity","vc-settings-xjump-size");v();if(e)s.querySelector("#vc-settings-cover-fit").checked=e.get();if(n)s.querySelector("#vc-settings-translated-title").checked=n.get();if(c)S();if(r){y();R()}k()}o(b,"syncControls");function k(){if(!i)return;const g=s.querySelector("#vc-settings-storage-usage");const C=s.querySelector("#vc-settings-storage-parts");if(!g)return;const z=i()||{};const K=Math.round((z.budget||0)/1024/1024);if(!z.total){g.textContent=K?"\u5DF2\u7528 0.00MB / "+K+"MB":"";if(C)C.textContent="";return}g.textContent="\u5DF2\u7528 "+Ht(z.total)+" / "+K+"MB"+(z.total>z.budget?"\uFF08\u8D85\u9650\u4F1A\u81EA\u52A8\u56DE\u6536\u8BC4\u5206\u7F13\u5B58\uFF09":"");if(C){const at=z.parts||{};const vt=Object.keys(at);C.textContent="";if(vt.length>1){vt.forEach(Dt=>{const dt=document.createElement("span");dt.className="vc-settings-storage-part";dt.textContent=Dt+" "+Ht(at[Dt]);C.appendChild(dt)})}}}o(k,"syncStorageUsage");function y(){const g=s.querySelector("#vc-settings-rating-clear-desc");const C=s.querySelector("#vc-settings-rating-remote");if(!g||!C)return;g.textContent=C.checked?"\u6E05\u9664\u540E\u4E0B\u6B21\u6253\u5F00\u6536\u85CF\u9762\u677F\u4F1A\u91CD\u65B0\u67E5\u8BE2":"\u6E05\u9664\u540E\u4E0D\u4F1A\u81EA\u52A8\u67E5\u8BE2\uFF0C\u6D4F\u89C8\u5230\u8BE5\u5267\u9875\u9762\u65F6\u8BFB\u56DE"}o(y,"syncRatingClearDesc");function R(){const g=s.querySelector("#vc-settings-rating-status");if(!g||!r||typeof r.status!=="function")return;const C=r.status();if(!C){g.textContent="";return}let z;if(C.pausedSec<0){z="\u8C46\u74E3\u5DF2\u62E6\u4E0B\u672C\u673A\u67E5\u8BE2\uFF0C\u5237\u65B0\u9875\u9762\u540E\u81EA\u52A8\u91CD\u8BD5"}else if(C.pausedSec>0){z="\u8C46\u74E3\u63A5\u53E3\u6682\u65F6\u4E0D\u53EF\u7528\uFF0C"+C.pausedSec+" \u79D2\u540E\u81EA\u52A8\u7EE7\u7EED"}else if(C.sessionLeft<=0){z="\u672C\u6B21\u4F1A\u8BDD\u5DF2\u53D1\u6EE1 "+C.sessionMax+" \u6B21\u8BF7\u6C42\uFF0C\u5237\u65B0\u9875\u9762\u540E\u63A5\u7740\u67E5"}else if(C.windowLeft<=0){z="\u8FD1 "+C.windowMinutes+" \u5206\u949F\u5DF2\u53D1\u6EE1 "+C.windowMax+" \u6B21\u8BF7\u6C42\uFF0C\u7A0D\u540E\u81EA\u52A8\u63A5\u7740\u67E5"}else{z="\u5269\u4F59\u989D\u5EA6\uFF1A\u672C\u6B21 "+C.sessionLeft+"/"+C.sessionMax+"\uFF0C\u8FD1 "+C.windowMinutes+" \u5206\u949F "+C.windowLeft+"/"+C.windowMax}if(C.cached)z+="\uFF1B\u5DF2\u8BB0 "+C.scored+" \u90E8\uFF08\u5171 "+C.cached+" \u6761\uFF09";g.textContent=z}o(R,"syncRatingStatus");function S(){const g=s.querySelector("#vc-settings-engine-on");if(!g)return;g.checked=c.get()!==false}o(S,"syncEngineSection");function N(g,C,z,K){const at=s.querySelector("#"+z);const vt=s.querySelector("."+z+"-val");const Dt=s.querySelector("#"+K);const dt=jt(g);if(at)at.value=dt;if(vt)vt.textContent=dt+"%";Ah(Dt,jt(C))}o(N,"syncSettingGroup");function v(){const g=s.querySelector("#vc-settings-volume");const C=s.querySelector(".vc-settings-volume-val");const z=Math.round(Number(jt("volume"))||0);if(g)g.value=z;if(C)C.textContent=z+"%"}o(v,"syncVolume");function x(){s=document.createElement("div");s.className="vc-settings-mask";s.innerHTML=I();document.body.appendChild(s);Se(s,document.body);w()}o(x,"build");function I(){const g=[Xe("\u6D4F\u89C8\u4E0E\u64AD\u653E",hn("vc-settings-adblock","\u9690\u85CF\u5E7F\u544A","\u5C4F\u853D\u5404\u7AD9\u70B9\u5E7F\u544A")+(a?H():""))];if(r)g.push(Xe("\u5F71\u89C6\u4FE1\u606F",O()));if(c)g.push(Xe("\u901A\u7528\u7AD9\u70B9",T()));g.push(Xe("\u5361\u7247\u663E\u793A",B()));g.push(Xe("\u6536\u85CF\u6309\u94AE",q()));g.push(Xe("\u8DE8\u7AD9\u76F4\u8FBE",F()));if(i)g.push(Xe("\u5B58\u50A8",P()));return` `}o(I,"panelTemplate");function B(){let g="";if(e)g+=hn("vc-settings-cover-fit","\u5C01\u9762\u667A\u80FD\u53D6\u666F","\u6A2A\u7248\u5927\u56FE\u81EA\u52A8\u4F18\u5316\u53D6\u666F");if(n)g+=hn("vc-settings-translated-title","\u4F18\u5148\u663E\u793A\u7FFB\u8BD1\u6807\u9898","\u6709\u8BD1\u6587\u65F6\u4F18\u5148\u663E\u793A\u8BD1\u6587");return g+hn("vc-settings-fav-mark","\u5217\u8868\u9875\u6807\u8BB0\u5DF2\u6536\u85CF","\u5DF2\u6536\u85CF\u7684\u5361\u7247\u4E0A\u5E38\u663E\u60F3\u770B / \u5DF2\u770B")}o(B,"cardDisplaySection");function T(){return hn("vc-settings-engine-on","\u901A\u7528\u7AD9\u70B9\u652F\u6301","\u5728\u672A\u9002\u914D\u7684\u5F71\u89C6\u7AD9\u4E5F\u542F\u7528\u6536\u85CF\u4E0E\u89C2\u770B\u8BB0\u5F55")}o(T,"engineSection");function O(){return hn("vc-settings-rating-remote","\u5141\u8BB8\u8054\u7F51\u67E5\u8BE2\u8C46\u74E3","\u5173\u6389\u540E\u4E0D\u518D\u8054\u7F51\u67E5\u8BE2\u8BC4\u5206\uFF0C\u5DF2\u7ECF\u62FF\u5230\u7684\u5206\u7167\u5E38\u663E\u793A",'')+`
\u8C46\u74E3\u8BC4\u5206\u7F13\u5B58
`}o(O,"ratingSection");function H(){return`
\u64AD\u653E\u97F3\u91CF \u5404\u7AD9\u70B9\u7EDF\u4E00\u4F7F\u7528\u8FD9\u4E2A\u97F3\u91CF 100%
`}o(H,"volumeItem");function q(){return`
\u534A\u9690\u85CF\u900F\u660E\u5EA6 \u8D34\u8FB9\u672A\u5C55\u5F00\u65F6\u7684\u6DF1\u6D45 55%
\u6309\u94AE\u5927\u5C0F \u4E3B\u6309\u94AE\u4E0E\u5B50\u6309\u94AE\u4E00\u8D77\u7F29\u653E
`}o(q,"favButtonSection");function F(){return`
\u900F\u660E\u5EA6 \u9F20\u6807\u9760\u8FD1\u65F6\u81EA\u52A8 100% 60%
\u6309\u94AE\u5927\u5C0F \u5C55\u5F00\u540E\u7684\u663E\u793A\u6837\u5F0F
`}o(F,"xjumpSection");function P(){return`
\u5B58\u50A8\u5360\u7528
`}o(P,"storageSection");function w(){s.querySelector(".vc-settings-close").addEventListener("click",p);s.addEventListener("click",g=>{if(g.target===s)p()});document.addEventListener("keydown",g=>{if(g.key==="Escape"&&s.classList.contains("vc-show"))p()});s.querySelector("#vc-settings-adblock").addEventListener("change",g=>{js(g.target.checked)});if(e){s.querySelector("#vc-settings-cover-fit").addEventListener("change",g=>{e.set(g.target.checked)})}if(n){s.querySelector("#vc-settings-translated-title").addEventListener("change",g=>{n.set(g.target.checked)})}if(c){s.querySelector("#vc-settings-engine-on").addEventListener("change",g=>{c.set(g.target.checked)})}d("vc-settings-volume","vc-settings-volume-val",Ds);d("vc-settings-fav-opacity","vc-settings-fav-opacity-val",Cs);s.querySelector("#vc-settings-fav-mark").addEventListener("change",g=>{Is(g.target.checked)});if(r){const g=s.querySelector("#vc-settings-rating-remote");if(g){if(typeof r.get==="function")g.checked=r.get()!==false;g.addEventListener("change",C=>{if(typeof r.set==="function")r.set(C.target.checked);y();R()})}s.querySelector("#vc-settings-rating-clear").addEventListener("click",async()=>{const C=await r.confirm("\u6E05\u9664\u5168\u90E8\u8BC4\u5206\u7F13\u5B58\uFF1F\n\n\u4F1A\u5220\u6389\u6240\u6709\u5267\u7684\u8BC4\u5206\u8BB0\u5F55\uFF1A\u7AD9\u70B9\u9875\u9762\u8BFB\u5230\u7684\u3001\u8054\u7F51\u67E5\u5230\u7684\u3001\u67E5\u4E0D\u5230\u7684\n\u6536\u85CF\u4E0E\u89C2\u770B\u8BB0\u5F55\u4E0D\u53D7\u5F71\u54CD\uFF0C\u4E4B\u540E\u91CD\u65B0\u67E5\u8BE2",{danger:true});if(!C)return;r.clear();R();rt("\u8BC4\u5206\u7F13\u5B58\u5DF2\u6E05\u9664",{tone:"ok"})})}sd(s.querySelector("#vc-settings-fav-size"),Ms);d("vc-settings-xjump-opacity","vc-settings-xjump-opacity-val",Os);sd(s.querySelector("#vc-settings-xjump-size"),Rs)}o(w,"bindEvents");function d(g,C,z){const K=s.querySelector("#"+g);const at=s.querySelector("."+C);if(!K)return;K.addEventListener("input",()=>{if(at)at.textContent=K.value+"%";z(K.value)})}o(d,"bindRange");return{open:f,close:p}} o(ld,"createSettingsPanel"); function ud(t){const{listTargetsFn:e,resolveUrlFn:n,warmDomainFn:r,setEnabledFn:i}=t;let c=false;let a=null;let s=null;let l=null;let f=null;let p=null;let _=null;let b=[];let k=[];let y=new Set;function R(){a=document.createElement("div");a.className="vc-ws-mask";a.innerHTML=` `;document.body.appendChild(a);s=a.querySelector(".vc-ws-input");l=a.querySelector(".vc-ws-grid");f=a.querySelector(".vc-ws-hint");p=a.querySelector(".vc-ws-btn");_=a.querySelector(".vc-ws-count");a.querySelector(".vc-ws-close").addEventListener("click",F);a.addEventListener("click",w=>{if(w.target===a)F()});document.addEventListener("keydown",w=>{if(w.key==="Escape"&&a.classList.contains("vc-show"))F()});const P=o(()=>{y.clear();O();S()},"syncInput");s.addEventListener("input",P);a.querySelector(".vc-ws-clear").addEventListener("click",()=>{if(!s.value)return;s.value="";P();s.focus()});p.addEventListener("click",H)}o(R,"build");function S(){const P=s.value.trim();k=e(P);l.textContent="";k.filter(d=>!d.fold).forEach(d=>l.appendChild(x(d,P)));const w=k.filter(d=>d.fold);if(w.length)l.appendChild(v(w,P));if(f){f.textContent=P?"\u70B9\u51FB\u7AD9\u70B9\u540D\u76F4\u63A5\u8DF3\u8F6C\uFF08\u4E2D\u952E / Ctrl+\u70B9\u51FB\u53EF\u6279\u91CF\uFF09\uFF1B\u52FE\u9009\u51B3\u5B9A\u300C\u9010\u4E2A\u6253\u5F00\u300D\u7684\u8303\u56F4":"\u8F93\u5165\u5267\u540D\u540E\uFF0C\u70B9\u7AD9\u70B9\u540D\u5373\u53EF\u8DF3\u8F6C\uFF08\u4E2D\u952E / Ctrl+\u70B9\u51FB\u53EF\u6279\u91CF\uFF09"}I()}o(S,"renderTargets");function N(){if(!s)return;s.classList.remove("vc-ws-input-attn");void s.offsetWidth;s.classList.add("vc-ws-input-attn")}o(N,"flashInput");function v(P,w){const d=document.createElement("div");d.className="vc-ws-fold";d.classList.toggle("vc-show",c);const g=document.createElement("button");g.type="button";g.className="vc-ws-fold-toggle";g.setAttribute("aria-expanded",String(c));const C=o(()=>{const at=P.filter(vt=>vt.enabled).length;g.textContent="\u66F4\u591A\u7AD9\u70B9\uFF08"+P.length+(at?" \xB7 \u5DF2\u9009 "+at:"")+"\uFF09"},"syncLabel");C();const z=document.createElement("div");z.className="vc-ws-fold-anim";const K=document.createElement("div");K.className="vc-ws-fold-list";P.forEach(at=>K.appendChild(x(at,w)));K.addEventListener("change",C);z.appendChild(K);g.addEventListener("click",()=>{c=!c;d.classList.toggle("vc-show",c);g.setAttribute("aria-expanded",String(c))});d.appendChild(g);d.appendChild(z);return d}o(v,"buildFoldBlock");function x(P,w){const d=document.createElement("div");d.className="vc-ws-item";d.dataset.vcSite=P.id;if(y.has(P.id))d.classList.add("vc-ws-item-visited");if(!w)d.title="\u5148\u8F93\u5165\u5267\u540D\uFF0C\u518D\u70B9\u300C"+P.name+"\u300D\u8DF3\u8F6C\u641C\u7D22";const g=document.createElement("input");g.type="checkbox";g.className="vc-ws-check";g.checked=P.enabled;g.title="\u662F\u5426\u53C2\u4E0E\u300C\u9010\u4E2A\u6253\u5F00\u300D";g.addEventListener("change",()=>{i(P.id,g.checked);P.enabled=g.checked;O();I()});const C=document.createElement("a");C.className="vc-ws-link"+(w?"":" vc-ws-link-off");C.textContent=P.name;C.href=w?P.url:"#";C.target="_blank";C.rel="noopener noreferrer";C.title=w?y.has(P.id)?"\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+P.name+"\u300D\u641C\u7D22\uFF08\u5DF2\u6253\u5F00\u8FC7\uFF0C\u53EF\u518D\u6B21\u8DF3\u8F6C\uFF09":"\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+P.name+"\u300D\u641C\u7D22":"";if(w){C.addEventListener("mouseenter",()=>{if(C.dataset.vcWarmed)return;C.dataset.vcWarmed="1";r(P.id)},{once:true});C.addEventListener("click",K=>{if(K.button!==0||K.metaKey||K.ctrlKey||K.shiftKey||K.altKey)return;K.preventDefault();B(P.id,s.value.trim())})}else{C.addEventListener("click",K=>K.preventDefault());C.setAttribute("aria-disabled","true");d.classList.add("vc-ws-item-off");d.addEventListener("click",K=>{if(K.target.closest(".vc-ws-check"))return;rt("\u5148\u8F93\u5165\u8981\u641C\u7D22\u7684\u5267\u540D",{tone:"warn"});s.focus();N()})}const z=document.createElement("span");z.className="vc-ws-domain";z.textContent=P.domain;z.title=P.domain;d.appendChild(g);d.appendChild(C);d.appendChild(z);return d}o(x,"buildItem");function I(){const P=Array.from(l.querySelectorAll(".vc-ws-check"));const w=P.filter(g=>g.checked).length;_.textContent=P.length?"\u5DF2\u9009 "+w+" / "+P.length+" \u4E2A\u7AD9\u70B9"+(w?" \xB7 \u6BCF\u70B9\u4E00\u6B21\u5F00\u4E00\u4E2A":""):"\u6CA1\u6709\u53EF\u8DF3\u8F6C\u7684\u7AD9\u70B9";if(b.length){p.textContent="\u7EE7\u7EED\u6253\u5F00\uFF08\u8FD8\u5269 "+b.length+" \u4E2A\uFF09";return}if(!w){p.textContent="\u6253\u5F00\u9009\u4E2D";return}const d=k.filter(g=>g.enabled&&!y.has(g.id)).length;p.textContent=d?"\u9010\u4E2A\u6253\u5F00\uFF08\u8FD8\u5269 "+d+" \u4E2A\uFF09":"\u5DF2\u5168\u90E8\u6253\u5F00"}o(I,"syncCount");function B(P,w){T(P);const d=k.find(z=>z.id===P);const g=d?d.url:"";const C=g?window.open(g,"_blank"):null;if(C)C.opener=null;Promise.resolve(n(P,w)).then(z=>{if(!z)return;if(!C){window.open(z,"_blank");return}if(z!==g)C.location=z}).catch(()=>{})}o(B,"jump");function T(P){y.add(P);if(b.length)b=b.filter(g=>g!==P);const w=k.find(g=>g.id===P);const d=w&&Array.prototype.find.call(l.children,g=>g.dataset.vcSite===P);if(d){d.classList.add("vc-ws-item-visited");const g=d.querySelector(".vc-ws-link");if(g)g.title="\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+w.name+"\u300D\u641C\u7D22\uFF08\u5DF2\u6253\u5F00\u8FC7\uFF0C\u53EF\u518D\u6B21\u8DF3\u8F6C\uFF09"}I()}o(T,"markVisited");function O(){b=[];I()}o(O,"resetQueue");function H(){const P=s.value.trim();if(!P){rt("\u5148\u8F93\u5165\u8981\u641C\u7D22\u7684\u5267\u540D",{tone:"warn"});return}if(!b.length){b=k.filter(w=>w.enabled&&!y.has(w.id)).map(w=>w.id);if(!b.length){rt(k.some(w=>w.enabled)?"\u52FE\u9009\u7684\u7AD9\u70B9\u90FD\u5DF2\u6253\u5F00\u8FC7":"\u81F3\u5C11\u52FE\u9009\u4E00\u4E2A\u7AD9\u70B9",{tone:"warn"});return}}B(b.shift(),P);I()}o(H,"openNextSelected");function q(P){if(!a)R();s.value=(P||"").trim();y.clear();O();S();a.classList.add("vc-show");s.focus();s.select()}o(q,"open");function F(){if(a)a.classList.remove("vc-show")}o(F,"close");return{open:q,close:F,getMaskEl:o(()=>a,"getMaskEl")}} o(ud,"createWebSearchPanel"); var Lh=10*60*1e3; var Je=new Map; var ic=new Map; var oc=new Map; var po=new Map; function cc(t){if(!t)return"";try{return new URL(t).pathname}catch(e){return t}} o(cc,"pathOf"); function Ch(t,e){return t+"|"+cc(e)} o(Ch,"taskKey"); function Mh(t,e){if(!e)return true;return ic.get(t)===cc(e)} o(Mh,"isFresh"); function vo(t,e){if(!t||!Mh(t,e))return"";return Je.get(t)||""} o(vo,"getProxiedCover"); function dd(t){const e=Je.get(t);if(e){try{URL.revokeObjectURL(e)}catch(n){}}Je.delete(t);ic.delete(t)} o(dd,"release"); function Ih(){while(Je.size>zc)dd(Je.keys().next().value)} o(Ih,"prune"); async function Ph(t){for(const e of t){const n=await Hs(Hr(e.url),e.referer);if(n)return{blob:n,url:e.url}}return null} o(Ph,"grabFirst"); function fd(t,e){const n=(e||[]).filter(s=>s&&s.url&&s.referer);if(!t||!n.length)return Promise.resolve("");const r=vo(t,n[0].url);if(r)return Promise.resolve(r);const i=Ch(t,n[0].url);if(po.has(i))return po.get(i);const c=oc.get(i);if(c&&Date.now()-c{if(!s)return"";if(Je.has(t))dd(t);Je.set(t,URL.createObjectURL(s.blob));ic.set(t,cc(s.url));Ih();return vo(t,n[0].url)}).catch(()=>"").then(s=>{po.delete(i);if(s)oc.delete(i);else oc.set(i,Date.now());return s});po.set(i,a);return a} o(fd,"ensureProxiedCover"); var Oh=[()=>!!document.querySelector('script[src*="/_next/"]'),()=>!!document.getElementById("__next"),()=>!!window.__NEXT_DATA__,()=>!!document.querySelector("[data-reactroot]"),()=>{const t=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;return!!(t&&t.renderers&&t.renderers.size)},()=>!!window.next||!!window.__next_f]; function vd(){try{return Oh.some(t=>{try{return!!t()}catch(e){return false}})}catch(t){return false}} o(vd,"isReactHydratingSite"); var Rh=2e3; var pd=1500; function md(t){let e=false;const n=o(()=>{if(e)return;e=true;try{t()}catch(i){}},"go");const r=window.requestIdleCallback?i=>window.requestIdleCallback(i,{timeout:pd}):i=>setTimeout(i,0);try{if(document.readyState==="complete"){r(n)}else{window.addEventListener("load",()=>r(n),{once:true})}}catch(i){}setTimeout(n,Rh+pd)} o(md,"runAfterHydration"); var hd=`@font-face { font-family: vc-mid-dot; src: local("Segoe UI"), local("Segoe UI Symbol"), local("Helvetica Neue"), local("PingFang SC"), local("Microsoft YaHei"), local("Arial"); unicode-range: U+00B7; } :root { --vc-primary: #6366f1; --vc-primary-light: #a5b4fc; --vc-primary-lighter: #e0e7ff; --vc-primary-dark: #4338ca; --vc-ease-out: cubic-bezier(0.32, 0.72, 0, 1); --vc-ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1); --vc-fab-peek: 36px; --vc-fab-idle: #008080; --vc-want: #fb923c; --vc-want-light: #fdba74; --vc-want-lighter: #fff7ed; --vc-want-dark: #c2410c; --vc-watched: #34d399; --vc-watched-light: #6ee7b7; --vc-watched-lighter: #f0fdf4; --vc-watched-dark: #047857; --vc-danger: #f87171; --vc-danger-light: #fca5a5; --vc-danger-lighter: #fef2f2; --vc-danger-dark: #b91c1c; --vc-bg: #ffffff; --vc-bg-soft: #fafafa; --vc-bg-muted: #f5f5f5; --vc-text: #18181b; --vc-text-medium: #3f3f46; --vc-text-secondary: #71717a; --vc-text-placeholder: #a1a1aa; --vc-border: #e4e4e7; --vc-border-light: #f4f4f5; --vc-border-dark: #d4d4d8; --vc-track: rgba(0, 0, 0, 0.08); --vc-hover: #f4f4f5; --vc-hover-strong: #e4e4e7; --vc-shadow: 0 2px 12px rgba(0, 0, 0, 0.06); --vc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.07); --vc-shadow-lg: 0 12px 36px rgba(0, 0, 0, 0.10); --vc-outline: rgba(0, 0, 0, 0.12); --vc-outline-shadow: 0 2px 6px rgba(0, 0, 0, 0.16); --vc-outline-soft: rgba(0, 0, 0, 0.08); --vc-outline-shadow-soft: 0 1px 4px rgba(0, 0, 0, 0.10); --vc-surface-solid: rgba(255, 255, 255, 0.92); --vc-status-pinned-bg: rgba(255, 255, 255, 0.7); --vc-font-ui: vc-mid-dot, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "微软雅黑", sans-serif; }`; var gd=`.vc-mask { position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.45); z-index: 100000; display: none; align-items: center; justify-content: center; margin: 0; padding: 0; } .vc-mask.vc-show { display: flex !important; } .vc-panel.vc-genie-hidden { visibility: hidden; box-shadow: none; } @keyframes vcScrimIn { from { opacity: 0; } to { opacity: 1; } } @keyframes vcScrimOut { from { opacity: 1; } to { opacity: 0; } } .vc-mask.vc-scrim-in { animation: vcScrimIn 0.3s ease both; } .vc-mask.vc-scrim-out { animation: vcScrimOut 0.34s ease both; } .vc-settings-mask { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.3); z-index: 100001; display: none; align-items: center; justify-content: center; backdrop-filter: blur(2px); --vc-settings-anim: 0.4s; } .vc-settings-mask.vc-show { display: flex !important; animation: vcScrimIn var(--vc-settings-anim) ease both; } .vc-settings-mask.vc-closing { animation: vcScrimOut var(--vc-settings-anim) ease both; pointer-events: none; } @keyframes vcFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .vc-image-preview { position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.85); z-index: 100001; display: grid; place-items: center; cursor: zoom-out; margin: 0; padding: 0; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.25s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0.25s; } .vc-image-preview.vc-show { display: grid !important; opacity: 1; visibility: visible; pointer-events: auto; transition: opacity 0.4s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img { grid-area: 1 / 1; max-width: 92vw; max-height: 92vh; object-fit: contain; border-radius: 4px; opacity: 0; transform: scale(0.97); transition: opacity 0.3s ease, transform 0.25s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img.vc-active { opacity: 1; } .vc-image-preview.vc-show img { transform: none; transition: opacity 0.3s ease, transform 0.4s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img.vc-preview-enter { animation: vc-preview-enter 0.4s cubic-bezier(0.32, 0.72, 0, 1); } @keyframes vc-preview-enter { from { transform: scale(0.985); } } @media (prefers-reduced-motion: reduce) { .vc-image-preview { transition: opacity 0.15s ease, visibility 0s linear 0.15s; } .vc-image-preview.vc-show { transition: opacity 0.15s ease; } .vc-image-preview img, .vc-image-preview.vc-show img { transform: none; transition: opacity 0.15s ease; } .vc-image-preview img.vc-preview-enter { animation: none; } } .vc-jb-jump { display: inline-block; margin-left: 8px; padding: 2px 10px; font-size: 12px; font-weight: 500; color: #fff !important; background: var(--vc-primary); border-radius: 6px; text-decoration: none; cursor: pointer; vertical-align: middle; transition: opacity 0.15s, transform 0.15s; } .vc-jb-jump:hover { opacity: 0.88; transform: translateY(-1px); }`; var bd=`.vc-fab-zone { position: fixed; width: 48px; height: 48px; z-index: 100020; pointer-events: none; font-family: var(--vc-font-ui); transition: left 0.42s var(--vc-ease-out), top 0.42s var(--vc-ease-out), opacity 0.2s ease; } .vc-fab-zone.vc-fab-dragging { transition: none !important; } .vc-fab-zone.vc-fab-dim { opacity: 0.45; } .vc-fab-zone.vc-fab-dim .vc-fab { transform: scale(0.92); } .vc-fab-inner { position: absolute; inset: 0; pointer-events: none; transition: transform 0.42s var(--vc-ease-out), opacity 0.3s var(--vc-ease-out); will-change: transform, opacity; } .vc-fab-zone.vc-peek[data-vc-side="right"] .vc-fab-inner { transform: translateX(var(--vc-fab-peek)); opacity: var(--vc-fav-peek-opacity, 0.55); } .vc-fab-zone.vc-peek[data-vc-side="left"] .vc-fab-inner { transform: translateX(calc(-1 * var(--vc-fab-peek))); opacity: var(--vc-fav-peek-opacity, 0.55); } .vc-fab { position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden; border: 1px solid var(--vc-outline); border-radius: 50%; cursor: pointer; pointer-events: auto; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); color: var(--vc-fab-idle); box-shadow: var(--vc-outline-shadow); transition: transform 0.3s var(--vc-ease-spring), background-color 0.28s var(--vc-ease-out), color 0.28s var(--vc-ease-out), border-color 0.28s var(--vc-ease-out), box-shadow 0.28s var(--vc-ease-out); } .vc-fab:hover { transform: scale(1.06); } .vc-fab:active { transform: scale(0.93); } .vc-fab:focus-visible { outline: 2px solid var(--vc-fab-idle); outline-offset: 3px; } .vc-fab[data-vc-state="want"] { background: var(--vc-want); border-color: var(--vc-want); color: #fff; box-shadow: 0 6px 18px rgba(251, 146, 60, 0.42); } .vc-fab[data-vc-state="watched"] { background: var(--vc-watched); border-color: var(--vc-watched); color: #fff; box-shadow: 0 6px 18px rgba(16, 185, 129, 0.38); } .vc-fab-scale { display: grid; place-items: center; } .vc-fab.vc-fab-pop .vc-fab-scale { animation: vcFabPop 0.46s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes vcFabPop { 0% { transform: scale(1); } 32% { transform: scale(0.82); } 64% { transform: scale(1.12); } 100% { transform: scale(1); } } .vc-fab::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: currentColor; opacity: 0; transform: scale(0.6); pointer-events: none; } .vc-fab.vc-fab-ripple::after { animation: vcFabRipple 0.55s var(--vc-ease-out); } @keyframes vcFabRipple { 0% { opacity: 0.28; transform: scale(0.6); } 100% { opacity: 0; transform: scale(1.9); } } .vc-fab-subs { position: absolute; left: 50%; display: flex; flex-direction: column; align-items: center; gap: 9px; pointer-events: none; opacity: 0; transition: opacity 0.2s var(--vc-ease-out), transform 0.34s var(--vc-ease-out); will-change: opacity, transform; } .vc-fab-subs[hidden] { display: none; } .vc-fab-zone[data-vc-dir="up"] .vc-fab-subs { bottom: 100%; padding-bottom: 9px; transform: translate(-50%, 10px); } .vc-fab-zone[data-vc-dir="down"] .vc-fab-subs { top: 100%; padding-top: 9px; transform: translate(-50%, -10px); } .vc-fab-zone.vc-fab-open .vc-fab-subs { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); } .vc-fab-zone:not(.vc-fab-open) .vc-fab-sub { pointer-events: none; } .vc-fab-sub { position: relative; width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid var(--vc-outline); border-radius: 50%; background: rgba(255, 255, 255, 0.96); color: var(--vc-text-secondary); box-shadow: var(--vc-outline-shadow); cursor: pointer; pointer-events: auto; -webkit-tap-highlight-color: transparent; opacity: 0; transform: scale(0.72); transition: opacity 0.22s var(--vc-ease-out), transform 0.34s var(--vc-ease-spring), background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease; } .vc-fab-zone.vc-fab-open .vc-fab-sub { opacity: 1; transform: scale(1); } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(1) { transition-delay: 0.02s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(2) { transition-delay: 0.05s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(3) { transition-delay: 0.08s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(4) { transition-delay: 0.11s; } .vc-fab-sub[hidden] { display: none; } .vc-fab-sub:hover { background: var(--vc-hover); color: var(--vc-text); } .vc-fab-zone.vc-fab-open .vc-fab-sub:active { transform: scale(0.9); } .vc-fab-sub.vc-btn-want.vc-active { background: var(--vc-want); border-color: var(--vc-want); color: #fff; } .vc-fab-sub.vc-btn-watched.vc-active { background: var(--vc-watched); border-color: var(--vc-watched); color: #fff; } .vc-fab-sub[data-vc-tip]::before { content: attr(data-vc-tip); position: absolute; right: calc(100% + 10px); top: 50%; transform: translateY(-50%) translateX(4px); padding: 5px 10px; border-radius: 7px; background: rgba(28, 32, 40, 0.94); color: #fff; font-size: 12px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.18s ease, transform 0.18s var(--vc-ease-out); } .vc-fab-zone[data-vc-side="left"] .vc-fab-sub[data-vc-tip]::before { right: auto; left: calc(100% + 10px); transform: translateY(-50%) translateX(-4px); } .vc-fab-sub[data-vc-tip]:hover::before { opacity: 1; transform: translateY(-50%) translateX(0); } .vc-fav-sm .vc-fab-zone[data-vc-side="right"] { transform: scale(0.86); transform-origin: 100% 50%; } .vc-fav-sm .vc-fab-zone[data-vc-side="left"] { transform: scale(0.86); transform-origin: 0 50%; } .vc-status { position: absolute; top: 8px; left: 8px; z-index: 10; display: flex; align-items: center; gap: 2px; padding: 2px; border-radius: 7px; --vc-status-alpha: 100%; background: var(--vc-surface-solid); background: color-mix(in srgb, var(--vc-surface-solid) var(--vc-status-alpha), transparent); opacity: 0; pointer-events: none; transition: opacity 0.2s ease; font-family: var(--vc-font-ui); } .vc-fav-host .vc-status { box-shadow: var(--vc-outline-shadow), 0 0 0 1px var(--vc-outline); } .vc-fav-host .vc-status--pinned { opacity: 1; --vc-status-alpha: 70%; background: var(--vc-status-pinned-bg); background: color-mix(in srgb, var(--vc-surface-solid) var(--vc-status-alpha), transparent); pointer-events: auto; box-shadow: var(--vc-outline-shadow-soft), 0 0 0 1px var(--vc-outline-soft); } .vc-fav-host:hover .vc-status, .vc-status:hover, .vc-status:focus-within { opacity: 1; --vc-status-alpha: 100%; --vc-status-pinned-bg: var(--vc-surface-solid); pointer-events: auto; box-shadow: var(--vc-outline-shadow), 0 0 0 1px var(--vc-outline); z-index: 1010; } .vc-fav-nomark .vc-status--pinned { opacity: 0; pointer-events: none; } .vc-fav-nomark .vc-fav-host:hover .vc-status, .vc-fav-nomark .vc-status:focus-within { opacity: 1; pointer-events: auto; } .vc-status-btn { width: 22px; height: 20px; padding: 0; border: none; border-radius: 5px; background: transparent; color: var(--vc-text); font-size: 12px; line-height: 1; font-family: inherit; text-align: center; text-indent: 0; letter-spacing: normal; text-transform: none; cursor: pointer; opacity: 0.55; transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease; } .vc-status-btn:hover { opacity: 1; background: var(--vc-hover-strong); } .vc-status[data-vc-status="want"] .vc-status-btn[data-vc-set="want"], .vc-status[data-vc-status="watched"] .vc-status-btn[data-vc-set="watched"] { opacity: 1; color: #fff; } .vc-status[data-vc-status="want"] .vc-status-btn[data-vc-set="want"] { background: var(--vc-want); } .vc-status[data-vc-status="watched"] .vc-status-btn[data-vc-set="watched"] { background: var(--vc-watched); } .vc-xjump { position: fixed; z-index: 99999; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; opacity: var(--vc-xjump-opacity, 1); transition: opacity 0.15s ease; } .vc-xjump:hover, .vc-xjump.vc-show { opacity: 1; } .vc-xjump-toggle { display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px; border: 1px solid var(--vc-outline); border-radius: 8px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); box-shadow: var(--vc-outline-shadow); color: var(--vc-text); font-size: 13px; font-weight: 500; cursor: grab; white-space: nowrap; user-select: none; transition: transform 0.15s ease; } .vc-xjump-toggle:hover, .vc-xjump.vc-show .vc-xjump-toggle { transform: translateY(-1px); } .vc-xjump-sm .vc-xjump-toggle .vc-xjump-label { display: none; } .vc-xjump-sm .vc-xjump-toggle { padding: 8px 10px; } .vc-xjump-menu { position: absolute; top: calc(100% + 6px); right: 0; display: none; flex-direction: column; gap: 4px; background: rgba(255, 255, 255, 0.98); border: 1px solid var(--vc-border); border-radius: 10px; box-shadow: var(--vc-shadow-lg); padding: 6px; max-height: 60vh; overflow: auto; min-width: 102px; box-sizing: border-box; transform-origin: top right; } .vc-xjump.vc-up .vc-xjump-menu { top: auto; bottom: calc(100% + 6px); transform-origin: bottom right; } .vc-xjump.vc-show .vc-xjump-menu { display: flex; animation: vcXjumpMenuPop 0.8s var(--vc-ease-out); } .vc-xjump.vc-up.vc-show .vc-xjump-menu { animation-name: vcXjumpMenuPopUp; } @keyframes vcXjumpMenuPop { from { opacity: 0; transform: translateY(-6px) scale(0.97); } } @keyframes vcXjumpMenuPopUp { from { opacity: 0; transform: translateY(6px) scale(0.97); } } @media (prefers-reduced-motion: reduce) { .vc-xjump.vc-show .vc-xjump-menu, .vc-xjump.vc-up.vc-show .vc-xjump-menu { animation: none; } } .vc-xjump-btn { padding: 6px 12px; border: none; border-radius: 6px; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; line-height: normal; font-family: inherit; -webkit-appearance: none; appearance: none; text-align: left; text-indent: 0; letter-spacing: normal; text-transform: none; white-space: nowrap; cursor: pointer; transition: background 0.15s, color 0.15s; } .vc-xjump-btn:hover { background: var(--vc-primary); color: #fff; }`; var yd=`.vc-settings-panel { --vc-settings-control-w: 196px; width: 460px; max-width: 92vw; background: var(--vc-bg); border-radius: 14px; box-shadow: var(--vc-shadow-lg); overflow: hidden; line-height: 1.45; } @keyframes vcSettingsIn { from { opacity: 0; } to { opacity: 1; } } @keyframes vcSettingsOut { from { opacity: 1; } to { opacity: 0; } } .vc-settings-mask.vc-show .vc-settings-panel { animation: vcSettingsIn var(--vc-settings-anim, 0.4s) ease; } .vc-settings-mask.vc-closing .vc-settings-panel { animation: vcSettingsOut var(--vc-settings-anim, 0.4s) ease both; } .vc-settings-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px; border-bottom: 1px solid var(--vc-border); } .vc-settings-title { font-size: 15px; font-weight: 600; color: var(--vc-text); } .vc-settings-close { width: 28px; height: 28px; border: none; border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 18px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-settings-close:hover { background: var(--vc-bg-soft); color: var(--vc-text); } .vc-settings-body { padding: 8px 16px 16px; max-height: min(76vh, 860px); overflow-y: auto; overscroll-behavior: contain; } .vc-settings-body::-webkit-scrollbar { width: 6px; } .vc-settings-body::-webkit-scrollbar-thumb { background: var(--vc-scroll-thumb); border-radius: 3px; } .vc-settings-item { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 8px; cursor: pointer; transition: background 0.15s ease; } .vc-settings-item:hover { background: var(--vc-bg-soft); } .vc-settings-item.vc-settings-static { cursor: default; } .vc-settings-item.vc-settings-static:hover { background: transparent; } .vc-settings-info { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; } .vc-settings-label { font-size: 14px; line-height: 1.4; font-weight: 500; color: var(--vc-text); } .vc-settings-desc { font-size: 12px; line-height: 1.45; color: var(--vc-text-secondary); } .vc-settings-desc-sub { font-size: 11px; color: var(--vc-text-secondary); opacity: 0.85; } .vc-settings-storage-parts { display: flex; flex-wrap: wrap; column-gap: 12px; row-gap: 2px; } .vc-settings-storage-parts:empty { display: none; } .vc-settings-storage-part { white-space: nowrap; } .vc-settings-section + .vc-settings-section { margin-top: 6px; border-top: 1px solid var(--vc-border); } .vc-settings-section-title { font-size: 13px; font-weight: 600; color: var(--vc-text-secondary); padding: 10px 12px 4px; } .vc-settings-item .vc-switch { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; pointer-events: none; } .vc-settings-switch-track { position: relative; flex-shrink: 0; width: 40px; height: 22px; border-radius: 999px; background: var(--vc-bg-muted); border: 1px solid var(--vc-border); box-sizing: border-box; cursor: pointer; transition: background 0.18s ease, border-color 0.18s ease; } .vc-settings-switch-track::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); transition: transform 0.18s ease; } @supports selector(:has(*)) { .vc-settings-item:has(.vc-switch:checked) .vc-settings-switch-track { background: var(--vc-primary); border-color: var(--vc-primary); } .vc-settings-item:has(.vc-switch:checked) .vc-settings-switch-track::after { transform: translateX(18px); } .vc-settings-item:has(.vc-switch:focus-visible) .vc-settings-switch-track { outline: 2px solid var(--vc-primary); outline-offset: 2px; } } @supports not (selector(:has(*))) { .vc-switch:checked + .vc-settings-info + .vc-settings-switch-track { background: var(--vc-primary); border-color: var(--vc-primary); } .vc-switch:checked + .vc-settings-info + .vc-settings-switch-track::after { transform: translateX(18px); } .vc-switch:focus-visible + .vc-settings-info + .vc-settings-switch-track { outline: 2px solid var(--vc-primary); outline-offset: 2px; } } .vc-settings-control { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; } @supports selector(:has(*)) { .vc-settings-control:has(.vc-settings-range), .vc-settings-control:has(.vc-settings-seg) { min-width: var(--vc-settings-control-w); } } .vc-settings-range-val { min-width: 38px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--vc-text-secondary); } .vc-settings-item .vc-settings-range { display: block; -webkit-appearance: none; appearance: none; width: 150px; height: 8px; margin: 0; padding: 0; border: none; border-radius: 999px; background: var(--vc-track, rgba(0, 0, 0, 0.1)); background-image: none; font-size: inherit; line-height: normal; color: var(--vc-text-secondary); vertical-align: middle; box-sizing: border-box; outline: none; cursor: pointer; } .vc-settings-item .vc-settings-range::-webkit-slider-runnable-track { -webkit-appearance: none; height: 8px; border-radius: 999px; background: transparent; } .vc-settings-item .vc-settings-range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%; margin-top: -4px; background: var(--vc-primary); border: 2px solid rgba(255, 255, 255, 0.95); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); cursor: pointer; } .vc-settings-item .vc-settings-range::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--vc-primary); border: 2px solid rgba(255, 255, 255, 0.95); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); cursor: pointer; } .vc-settings-item .vc-settings-range::-moz-range-track { height: 8px; border-radius: 999px; background: transparent; } .vc-settings-btn { flex: none; padding: 6px 12px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-bg-soft); color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; font-family: inherit; cursor: pointer; transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease; } .vc-settings-btn:hover { background: var(--vc-primary); border-color: var(--vc-primary); color: #fff; } .vc-settings-item .vc-settings-range:focus-visible, .vc-settings-btn:focus-visible { outline: 2px solid var(--vc-primary); outline-offset: 3px; } .vc-settings-seg { display: inline-flex; flex-shrink: 0; border: 1px solid var(--vc-border); border-radius: 8px; overflow: hidden; background: var(--vc-bg-soft); } .vc-settings-seg-btn { padding: 6px 12px; border: none; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-settings-seg-btn + .vc-settings-seg-btn { border-left: 1px solid var(--vc-border); } .vc-settings-seg-btn.vc-active { background: var(--vc-primary); color: #fff; } .vc-settings-seg-btn:focus-visible { outline: 2px solid var(--vc-primary-lighter); outline-offset: -2px; }`; var xd=`.vc-panel { --vc-bg: rgba(30, 32, 44, 0.72); --vc-bg-soft: rgba(255, 255, 255, 0.05); --vc-bg-muted: rgba(255, 255, 255, 0.08); --vc-text: #eef1f8; --vc-text-medium: #d3d9ea; --vc-text-secondary: #a8b0c5; --vc-text-placeholder: #7d8496; --vc-border: rgba(255, 255, 255, 0.12); --vc-border-light: rgba(255, 255, 255, 0.07); --vc-border-dark: rgba(255, 255, 255, 0.22); --vc-hover: rgba(255, 255, 255, 0.08); --vc-hover-strong: rgba(255, 255, 255, 0.16); --vc-primary: #8b8ff5; --vc-primary-light: #a5b4fc; --vc-primary-dark: #a5b4fc; --vc-track: rgba(255, 255, 255, 0.16); --vc-shadow: 0 2px 12px rgba(0, 0, 0, 0.3); --vc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35); --vc-shadow-lg: 0 30px 90px rgba(0, 0, 0, 0.55); --vc-surface: rgba(255, 255, 255, 0.08); --vc-surface-hover: rgba(255, 255, 255, 0.14); --vc-surface-solid: rgba(20, 22, 30, 0.82); --vc-top-highlight: rgba(255, 255, 255, 0.14); --vc-shadow-edge: 0 2px 8px rgba(0, 0, 0, 0.3); --vc-menu-bg: #1e202c; --vc-menu-text: #eef1f8; --vc-scroll-thumb: rgba(255, 255, 255, 0.18); --vc-info-scrim: rgba(12, 14, 20, 0.72); --vc-info-scrim-light: rgba(12, 14, 20, 0.55); --vc-info-scrim-fade: rgba(12, 14, 20, 0); --vc-info-text: rgba(255, 255, 255, 0.96); --vc-info-text-dim: rgba(255, 255, 255, 0.68); --vc-info-accent: #b8bcff; --vc-cover-pos-wide: right center; --vc-cover-placeholder: linear-gradient(155deg, #454a58 0%, #2b2f3a 100%); color-scheme: dark; width: 980px; font-family: var(--vc-font-ui); max-width: 92vw; height: 92vh; min-height: 400px; color: var(--vc-text); background: var(--vc-bg); -webkit-backdrop-filter: blur(40px) saturate(180%); backdrop-filter: blur(40px) saturate(180%); border-radius: 16px; box-shadow: var(--vc-shadow-lg), var(--vc-shadow-edge), inset 0 1px 0 var(--vc-top-highlight); transition: box-shadow 0.4s ease-out; display: flex; flex-direction: column; overflow: hidden; position: relative; border: 1px solid var(--vc-border); } .vc-panel.vc-cover-fit-off { --vc-cover-pos-wide: center; } .vc-panel.vc-panel-light { --vc-bg: rgba(252, 252, 254, 0.72); --vc-bg-soft: rgba(15, 20, 30, 0.04); --vc-bg-muted: rgba(15, 20, 30, 0.06); --vc-text: #1f2430; --vc-text-medium: #333a4d; --vc-text-secondary: #5b6377; --vc-text-placeholder: #8b93a7; --vc-border: rgba(15, 20, 30, 0.12); --vc-border-light: rgba(15, 20, 30, 0.07); --vc-border-dark: rgba(15, 20, 30, 0.22); --vc-hover: rgba(15, 20, 30, 0.05); --vc-hover-strong: rgba(15, 20, 30, 0.1); --vc-primary: #6366f1; --vc-primary-light: #4f46e5; --vc-primary-dark: #4f46e5; --vc-track: rgba(15, 20, 30, 0.14); --vc-shadow: 0 2px 12px rgba(15, 20, 30, 0.12); --vc-shadow-md: 0 4px 16px rgba(15, 20, 30, 0.14); --vc-shadow-lg: 0 30px 90px rgba(15, 20, 30, 0.26); --vc-shadow-edge: 0 2px 8px rgba(15, 20, 30, 0.1); --vc-surface: rgba(255, 255, 255, 0.72); --vc-surface-hover: rgba(255, 255, 255, 0.98); --vc-surface-solid: rgba(255, 255, 255, 0.9); --vc-top-highlight: rgba(255, 255, 255, 0.9); --vc-menu-bg: #ffffff; --vc-menu-text: #1f2430; --vc-scroll-thumb: rgba(15, 20, 30, 0.2); color-scheme: light; } .vc-list-wrap::-webkit-scrollbar { width: 6px; } .vc-list-wrap::-webkit-scrollbar-thumb { background: var(--vc-scroll-thumb); border-radius: 3px; } .vc-panel-header { padding: 18px 46px 14px 24px; border-bottom: 1px solid var(--vc-border); flex-shrink: 0; } .vc-panel-title-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .vc-panel-title { font-size: 18px; font-weight: 600; color: var(--vc-text); margin: 0; } .vc-header-actions { display: flex; gap: 8px; } .vc-header-divider { flex: none; width: 1px; margin: 2px 0; background: var(--vc-border); } .vc-icon-btn-sm { padding: 6px 12px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 8px; font-size: 12px; cursor: pointer; color: var(--vc-text-secondary); transition: all 0.15s; } .vc-icon-btn-sm:hover { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-icon-btn-sm.vc-icon-btn-icon { display: inline-flex; align-items: center; justify-content: center; align-self: center; width: 30px; height: 30px; padding: 0; } .vc-icon-btn-sm .vc-icon { display: block; width: 15px; height: 15px; } .vc-icon-btn-refresh.vc-spin .vc-icon { animation: vcSpin 0.45s ease; } @keyframes vcSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .vc-header-menu-wrap { position: relative; display: flex; align-items: center; align-self: center; } .vc-header-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 30; display: none; flex-direction: column; min-width: 128px; padding: 6px; background: var(--vc-menu-bg); border: 1px solid var(--vc-border); border-radius: 10px; box-shadow: var(--vc-shadow-md); transform-origin: top right; } .vc-header-menu.vc-show { display: flex; animation: vcHeaderMenuPop 0.5s var(--vc-ease-out); } @keyframes vcHeaderMenuPop { from { opacity: 0; transform: translateY(-6px) scale(0.97); } } .vc-header-menu-item { padding: 8px 12px; border: none; border-radius: 6px; background: none; color: var(--vc-menu-text); font-family: inherit; font-size: 13px; text-align: left; white-space: nowrap; cursor: pointer; transition: background 0.15s, color 0.15s; } .vc-header-menu-item:hover { background: var(--vc-hover); color: var(--vc-primary); } .vc-tabs { display: flex; align-items: center; gap: 24px; margin-bottom: 12px; } .vc-tab { padding: 6px 0; font-size: 14px; color: var(--vc-text-secondary); cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.2s; } .vc-tab.vc-active { color: var(--vc-primary); border-bottom-color: var(--vc-primary); font-weight: 500; } .vc-search { flex: 1; min-width: 0; width: auto; padding: 8px 30px 8px 12px; border: 1px solid var(--vc-border); border-radius: 8px; font-size: 13px; outline: none; transition: border-color 0.2s; box-sizing: border-box; background: var(--vc-surface); color: var(--vc-text); margin-bottom: 0 !important; } .vc-search::placeholder { color: var(--vc-text-placeholder); } .vc-search:focus { border-color: var(--vc-primary); } .vc-search-row { display: flex; align-items: center; gap: 8px; margin-left: auto; min-width: 0; } .vc-search-wrap { position: relative; display: flex; align-items: center; flex: 1; min-width: 0; } .vc-search-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: none; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--vc-text-placeholder); cursor: pointer; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; } .vc-search-clear::before, .vc-search-clear::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 1.5px; background: currentColor; border-radius: 1px; } .vc-search-clear::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-search-clear::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-search:not(:placeholder-shown) ~ .vc-search-clear { display: flex; } .vc-search-clear:hover { color: var(--vc-text); background: var(--vc-hover); } .vc-site-select { flex-shrink: 0; max-width: 140px; padding: 8px 6px; border: 1px solid var(--vc-border); border-radius: 8px; font-size: 12px; color: var(--vc-text); background: var(--vc-surface); outline: none; cursor: pointer; transition: border-color 0.2s; box-sizing: border-box; } .vc-site-select option { background: var(--vc-menu-bg); color: var(--vc-menu-text); } .vc-site-select:focus { border-color: var(--vc-primary); } .vc-list-wrap { flex: 1; overflow-y: auto; padding: 20px 24px; display: none; box-sizing: border-box; } .vc-list-wrap.vc-active { display: block; } .vc-panel > * { transition: opacity 0.5s ease-out, transform 0.5s ease-out; transition-delay: 100ms; } .vc-panel > .vc-list-wrap { transition-delay: 500ms; } .vc-panel > .vc-batch-bar, .vc-panel > .vc-pagination { transition-delay: 600ms; } .vc-panel.vc-content-enter > * { opacity: 0; transform: translateY(4px); transition: none; } .vc-panel.vc-content-enter > .vc-panel-header { transform: none; } .vc-grid { display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: repeat(3, minmax(160px, 1fr)); gap: 16px; height: 100%; width: 100%; } .vc-card { position: relative; border-radius: 12px; overflow: hidden; border: 1px solid var(--vc-border); background: var(--vc-surface); transition: all 0.2s ease; cursor: pointer; display: flex; flex-direction: column; max-height: 312px; } .vc-card:hover { background: var(--vc-surface-hover); border-color: var(--vc-border-dark); transform: translateY(-2px); } .vc-card-cover { position: absolute; inset: 0; z-index: 0; background: var(--vc-cover-placeholder); display: flex; align-items: center; justify-content: center; overflow: hidden; } .vc-card-cover img { width: 100%; height: 100%; object-fit: cover; object-position: center; cursor: zoom-in; opacity: 0; transition: opacity 1s cubic-bezier(0.32, 0.72, 0, 1), transform 0.2s; } .vc-card-cover img.vc-cover-ready { opacity: 1; } .vc-card-cover img.vc-cover-wide { object-position: var(--vc-cover-pos-wide); } .vc-card:hover .vc-card-cover img { transform: scale(1.05); } .vc-card-cover .vc-default-cover { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--vc-cover-placeholder); color: rgba(255, 255, 255, 0.4); font-size: 28px; } .vc-card-actions { position: absolute; top: 8px; right: 8px; display: flex; gap: 4px; opacity: 0; transition: opacity 0.2s ease; z-index: 2; } .vc-card:hover .vc-card-actions { opacity: 1; } .vc-card-action-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; background: var(--vc-surface-solid); border-radius: 6px; cursor: pointer; color: var(--vc-text); transition: all 0.15s; } .vc-card-action-btn .vc-icon { display: block; width: 15px; height: 15px; } .vc-card-action-btn:hover { background: var(--vc-primary); color: #fff; } .vc-card-delete-btn:hover { background: var(--vc-danger); color: white; } .vc-card-info { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 6px 8px 8px; background: var(--vc-info-scrim); transition: background 0.2s ease; } .vc-card-info::before { content: ''; position: absolute; left: 0; right: 0; bottom: 100%; height: 16px; background: linear-gradient(to top, var(--vc-info-scrim) 0%, var(--vc-info-scrim-fade) 75%); pointer-events: none; transition: background 0.2s ease; } .vc-panel-light .vc-card-info { background: var(--vc-info-scrim-light); } .vc-panel-light .vc-card-info::before { background: linear-gradient(to top, var(--vc-info-scrim-light) 0%, var(--vc-info-scrim-fade) 75%); } .vc-panel-light .vc-card-info:hover { background: var(--vc-info-scrim); } .vc-panel-light .vc-card-info:hover::before { background: linear-gradient(to top, var(--vc-info-scrim) 0%, var(--vc-info-scrim-fade) 75%); } .vc-card-info .vc-card-title { color: var(--vc-info-text); } .vc-card-info .vc-card-time { color: var(--vc-info-text-dim); } .vc-card-info .vc-card-last-played { color: var(--vc-info-accent); } .vc-card-rate { position: absolute; left: 8px; top: 36px; z-index: 2; display: none; max-width: calc(100% - 16px); overflow: hidden; transition: opacity 0.2s ease; } .vc-card-rate:not(:empty) { display: inline-flex; align-items: center; } .vc-card-rate-link { padding: 1px 6px; border-radius: 4px; background: rgba(15, 17, 23, 0.72); font-size: 10px; font-weight: 600; line-height: 1.5; color: var(--vc-info-accent); text-decoration: none; white-space: nowrap; } .vc-card-rate-link:hover { text-decoration: underline; } .vc-card-rate-none { opacity: 0; font-weight: 500; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-rate-none, .vc-card-rate-none:focus-visible { opacity: 0.72; } .vc-card-rate-fetch { padding: 1px 6px; border-radius: 4px; border: none; background: rgba(15, 17, 23, 0.72); font-family: inherit; font-size: 10px; font-weight: 600; line-height: 1.5; color: var(--vc-info-accent); cursor: pointer; opacity: 0; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-rate-fetch, .vc-card-rate-fetch:focus-visible { opacity: 1; } .vc-panel.vc-batch-mode .vc-card-rate { opacity: 0; pointer-events: none; } .vc-card-title { font-size: 12px; line-height: 1.4; color: var(--vc-text); font-weight: 500; height: 1.4em; overflow: hidden; transition: height 0.28s ease; } .vc-card-info:hover .vc-card-title { height: var(--vc-title-full, auto); transition-delay: 0.12s; } .vc-card-copy { display: inline-block; border: none; background: transparent; cursor: pointer; font-size: 11px; line-height: 1; padding: 0; margin: 0; margin-top: -2px; border-radius: 4px; vertical-align: middle; opacity: 0.55; transition: opacity 0.15s, background 0.15s; } .vc-card-copy:hover { opacity: 1; background: rgba(139, 143, 245, 0.24); } .vc-card-site { position: absolute; left: 8px; top: 14px; z-index: 2; max-width: calc(100% - 16px); font-size: 10px; line-height: 1.5; color: #fff; background: rgba(15, 17, 23, 0.72); padding: 1px 6px; border-radius: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-site { opacity: 0; } .vc-panel.vc-batch-mode .vc-card-site { opacity: 0; } .vc-card-site:empty { display: none; } .vc-card-meta { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 4px; min-width: 0; } .vc-card-time { flex: 1 1 auto; font-size: 11px; color: var(--vc-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } .vc-card-last-played { flex: none; max-width: 100%; font-family: var(--vc-font-ui); font-size: 11px; font-weight: 600; color: var(--vc-primary-dark); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } .vc-card-last-played:empty { display: none; } .vc-card:hover .vc-card-status, .vc-card-status:focus-within { opacity: 1; pointer-events: auto; } .vc-card.vc-pending { opacity: 0.6; filter: grayscale(1); } .vc-card.vc-pending .vc-card-status { display: none; } .vc-card-pending { position: absolute; inset: 0; z-index: 4; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; border-radius: 12px; background: rgba(12, 14, 20, 0.62); } .vc-card-pending-text { font-size: 12px; font-weight: 500; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); } .vc-card-undo { padding: 3px 10px; border: 1px solid var(--vc-border-dark); border-radius: 6px; background: var(--vc-surface-solid); color: var(--vc-text); font-size: 11px; font-weight: 500; font-family: inherit; cursor: pointer; transition: all 0.15s; } .vc-card-undo:hover { background: var(--vc-primary); border-color: var(--vc-primary); color: #fff; } .vc-empty { grid-column: 1 / -1; grid-row: 1 / -1; align-self: center; justify-self: center; display: flex; align-items: center; justify-content: center; max-width: 360px; padding: 22px 26px; border: 1px dashed var(--vc-border-dark); border-radius: 12px; background: var(--vc-bg-soft); color: var(--vc-text-secondary); font-size: 14px; line-height: 1.6; text-align: center; } .vc-pagination { padding: 12px 24px; border-top: 1px solid var(--vc-border); display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--vc-text-secondary); flex-shrink: 0; font-variant-numeric: tabular-nums; } .vc-pagination-btns { display: flex; align-items: center; gap: 8px; } .vc-page-btn { padding: 4px 10px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 6px; font-size: 12px; cursor: pointer; color: var(--vc-text-secondary); font-family: inherit; transition: all 0.15s; } .vc-page-btn:hover:not(:disabled) { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-page-btn:disabled { opacity: 0.4; cursor: not-allowed; } .vc-close { position: relative; flex: none; align-self: center; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; background: none; border: none; color: var(--vc-text-secondary); cursor: pointer; line-height: 1; margin-right: -38px; } .vc-close::before, .vc-close::after { content: ''; position: absolute; left: 50%; top: 50%; width: 13px; height: 1.6px; background: currentColor; border-radius: 1px; } .vc-close::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-close::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-close:hover { color: var(--vc-text); } .vc-card-checkbox { position: absolute; top: 6px; left: 6px; z-index: 3; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } .vc-card-checkbox input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--vc-primary); } .vc-panel.vc-batch-mode .vc-card-checkbox { display: flex !important; } .vc-panel.vc-batch-mode .vc-card-actions { display: none !important; } .vc-panel.vc-batch-mode .vc-card-cover img { cursor: pointer; } .vc-panel.vc-batch-mode .vc-card-status { display: none !important; } .vc-panel.vc-batch-mode .vc-card-copy { display: none !important; } .vc-panel.vc-batch-mode .vc-card { cursor: pointer; } .vc-card.vc-selected { box-shadow: 0 0 0 2px var(--vc-primary); } .vc-batch-bar { padding: 12px 24px; border-top: 1px solid var(--vc-border); display: flex; align-items: center; gap: 12px; font-size: 13px; color: var(--vc-text-secondary); flex-shrink: 0; font-family: var(--vc-font-ui); background: var(--vc-hover); } .vc-batch-select-all { display: flex; align-items: center; gap: 4px; cursor: pointer; white-space: nowrap; font-weight: 500; margin-bottom: 0 !important; } .vc-batch-select-all input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--vc-primary); } .vc-batch-count { color: var(--vc-primary); font-weight: 600; white-space: nowrap; } .vc-batch-actions { margin-left: auto; display: flex; gap: 6px; } .vc-batch-btn { padding: 4px 12px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; color: var(--vc-text-secondary); transition: all 0.15s; font-family: inherit; } .vc-batch-btn:hover:not(:disabled) { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-batch-btn:disabled { opacity: 0.4; cursor: not-allowed; } .vc-batch-btn-danger:hover:not(:disabled) { border-color: var(--vc-danger); color: var(--vc-danger); } .vc-batch-btn-ghost { border-color: transparent; background: transparent; } .vc-batch-btn-ghost:hover { color: var(--vc-text) !important; border-color: var(--vc-border) !important; } .vc-panel.vc-batch-mode .vc-pagination { display: none; } .vc-panel .vc-icon-btn-sm:focus-visible, .vc-panel .vc-header-menu-item:focus-visible, .vc-panel .vc-close:focus-visible, .vc-panel .vc-search:focus-visible, .vc-panel .vc-search-clear:focus-visible, .vc-panel .vc-site-select:focus-visible, .vc-panel .vc-page-btn:focus-visible, .vc-panel .vc-batch-btn:focus-visible, .vc-panel .vc-card-action-btn:focus-visible, .vc-panel .vc-card-status-btn:focus-visible, .vc-panel .vc-card-undo:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-panel.vc-batch-mode .vc-icon-btn-batch { border-color: var(--vc-primary); color: var(--vc-primary); } @media (prefers-reduced-motion: reduce) { .vc-panel .vc-card { transition: none; } .vc-panel .vc-icon-btn-refresh.vc-spin .vc-icon { animation: none; } .vc-panel .vc-card-cover img { transition: opacity 0.15s ease-out; } .vc-panel .vc-card:hover, .vc-panel .vc-card:hover .vc-card-cover img { transform: none; } .vc-header-menu.vc-show { animation: none; } }`; var wd=`.vc-confirm-mask { position: fixed; inset: 0; z-index: 100002; background: rgba(0, 0, 0, 0.35); display: none; align-items: center; justify-content: center; backdrop-filter: blur(2px); } .vc-confirm-mask.vc-show { display: flex !important; } .vc-confirm-dialog { width: 375px; max-width: 90vw; background: white; border-radius: 12px; box-shadow: var(--vc-shadow-lg); padding: 24px; text-align: center; animation: vcFadeIn 0.15s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } .vc-confirm-text { font-size: 15px; font-weight: 500; color: var(--vc-text); line-height: 1.5; margin-bottom: 25px; white-space: pre-line; } .vc-confirm-actions { display: flex; gap: 20px; justify-content: center; } .vc-confirm-btn { padding: 7px 20px; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s; font-family: inherit; } .vc-confirm-cancel { background: var(--vc-hover); color: var(--vc-text-secondary); border: 1px solid var(--vc-border); } .vc-confirm-cancel:hover { background: var(--vc-border); color: var(--vc-text); } .vc-confirm-ok { background: var(--vc-primary); color: white; } .vc-confirm-ok:hover { opacity: 0.9; } .vc-confirm-ok.vc-danger { background: var(--vc-danger); } .vc-import-dialog { width: 420px; max-width: 92vw; background: white; border-radius: 12px; box-shadow: var(--vc-shadow-lg); padding: 24px; animation: vcFadeIn 0.15s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } .vc-import-title { font-size: 16px; font-weight: 600; color: var(--vc-text); margin-bottom: 16px; } .vc-import-options { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; } .vc-import-option { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 10px 14px; border: 1px solid var(--vc-border); border-radius: 8px; background: #fff; cursor: pointer; text-align: left; transition: border-color 0.15s, background 0.15s; font-family: inherit; } .vc-import-option:hover { border-color: var(--vc-primary); background: rgba(79, 70, 229, 0.04); } .vc-import-option-name { font-size: 14px; font-weight: 500; color: var(--vc-text); } .vc-import-option-desc { font-size: 12px; color: var(--vc-text-secondary); line-height: 1.4; } .vc-import-actions { display: flex; justify-content: center; } .vc-toast { position: fixed; top: 5vh; left: 50%; transform: translateX(-50%) translateY(-8px); z-index: 100010; display: flex; align-items: center; gap: 8px; max-width: 80vw; padding: 10px 14px 12px; background: #fff; color: var(--vc-text); font-size: 13px; font-weight: 500; border-radius: 10px; box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18); border: 1px solid var(--vc-border); font-family: var(--vc-font-ui); opacity: 0; pointer-events: none; overflow: hidden; transition: opacity 0.3s ease, transform 0.3s ease; } .vc-toast.vc-show { display: flex !important; opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; animation: vc-toast-pop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes vc-toast-pop { 0% { opacity: 0; transform: translateX(-50%) translateY(-16px) scale(0.96); } 70% { opacity: 1; transform: translateX(-50%) translateY(3px) scale(1.02); } 100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); } } .vc-toast-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .vc-toast-emph { display: inline-block; padding: 1px 6px; margin: 0 2px; border-radius: 999px; background: var(--vc-primary-lighter); color: var(--vc-primary-dark); font-weight: 600; } .vc-toast-icon { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--vc-primary-light); color: #fff; } .vc-toast-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--vc-primary-light); transform-origin: left center; opacity: 0; } .vc-toast.vc-show .vc-toast-bar { opacity: 1; animation: vc-toast-progress var(--vc-toast-duration, 2000ms) linear forwards; } @keyframes vc-toast-progress { to { transform: scaleX(0); } } .vc-toast.vc-toast-primary { border-color: var(--vc-primary-light); box-shadow: 0 8px 30px rgba(79, 70, 229, 0.28); } .vc-toast-clickable { cursor: pointer; } .vc-toast-clickable:hover { border-color: var(--vc-primary); } .vc-toast-link { color: var(--vc-primary-dark); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; } .vc-toast-clickable:hover .vc-toast-link { color: var(--vc-primary); text-decoration-thickness: 2px; } .vc-toast-close { flex-shrink: 0; padding: 0 2px; border: none; background: none; color: var(--vc-text-secondary); font-size: 16px; line-height: 1; cursor: pointer; } .vc-toast-close:hover { color: var(--vc-text); }`; var Sd=`.vc-ws-mask { position: fixed; inset: 0; z-index: 100001; background: rgba(0, 0, 0, 0.45); display: none; align-items: center; justify-content: center; font-family: var(--vc-font-ui); } .vc-ws-mask.vc-show { display: flex; } @keyframes vcWsIn { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: none; } } .vc-ws-panel { width: 460px; max-width: 92vw; max-height: 82vh; display: flex; flex-direction: column; background: var(--vc-bg); border-radius: 14px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3); overflow: hidden; color: var(--vc-text); } .vc-ws-mask.vc-show .vc-ws-panel { animation: vcWsIn 0.18s ease; } .vc-ws-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px; border-bottom: 1px solid var(--vc-border); } .vc-ws-title { font-size: 15px; font-weight: 600; } .vc-ws-close { width: 28px; height: 28px; border: none; border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 18px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-ws-close:hover { background: var(--vc-bg-soft); color: var(--vc-text); } .vc-ws-body { padding: 12px 16px 4px; overflow-y: auto; overscroll-behavior: contain; } .vc-ws-input-row { position: relative; display: flex; align-items: center; } .vc-ws-body .vc-ws-input { display: block; flex: 1; min-width: 0; box-sizing: border-box; margin: 0; padding: 9px 30px 9px 12px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-surface); color: var(--vc-text); font-size: 13px; font-family: inherit; line-height: 1.4; outline: none; } .vc-ws-body .vc-ws-input:focus { border-color: var(--vc-primary); } @keyframes vcWsInputAttn { 0% { border-color: var(--vc-primary); box-shadow: 0 0 0 3px var(--vc-primary-light); } 100% { border-color: var(--vc-border); box-shadow: none; } } .vc-ws-input-attn { animation: vcWsInputAttn 0.6s ease; } .vc-ws-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: none; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--vc-text-placeholder); cursor: pointer; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; } .vc-ws-clear::before, .vc-ws-clear::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 1.5px; background: currentColor; border-radius: 1px; } .vc-ws-clear::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-ws-clear::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-ws-input:not(:placeholder-shown) ~ .vc-ws-clear { display: flex; } .vc-ws-clear:hover { color: var(--vc-text); background: var(--vc-hover); } .vc-ws-clear:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-ws-hint { margin: 8px 2px 0; font-size: 12px; line-height: 1.5; color: var(--vc-text-secondary); } .vc-ws-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0 12px; } .vc-ws-fold { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 8px; } .vc-ws-fold-toggle { align-self: stretch; display: flex; align-items: center; justify-content: space-between; gap: 8px; box-sizing: border-box; width: 100%; padding: 8px 12px; border: 1px dashed var(--vc-border); border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-family: inherit; cursor: pointer; transition: border-color 0.15s ease, color 0.15s ease; } .vc-ws-fold-toggle::after { content: ''; flex: none; width: 0; height: 0; border-left: 5px solid currentColor; border-top: 4px solid transparent; border-bottom: 4px solid transparent; transition: transform 0.28s var(--vc-ease-spring); } .vc-ws-fold.vc-show .vc-ws-fold-toggle::after { transform: rotate(90deg); } .vc-ws-fold-toggle:hover { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-ws-fold-toggle:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-ws-fold-anim { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.28s var(--vc-ease-out); } .vc-ws-fold.vc-show .vc-ws-fold-anim { grid-template-rows: 1fr; } .vc-ws-fold-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; min-height: 0; overflow: hidden; opacity: 0; transform: translateY(-4px); visibility: hidden; transition: opacity 0.12s ease, transform 0.14s ease, visibility 0s linear 0.28s; } .vc-ws-fold.vc-show .vc-ws-fold-list { opacity: 1; transform: none; visibility: visible; transition: opacity 0.2s var(--vc-ease-out) 0.06s, transform 0.24s var(--vc-ease-out) 0.06s, visibility 0s; } @media (prefers-reduced-motion: reduce) { .vc-ws-fold-anim, .vc-ws-fold-list, .vc-ws-fold.vc-show .vc-ws-fold-list, .vc-ws-fold-toggle::after { transition: none; } } .vc-ws-item { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 8px 10px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-surface); transition: border-color 0.15s ease; } .vc-ws-item:hover { border-color: var(--vc-primary); } .vc-ws-item.vc-ws-item-off { opacity: 0.55; cursor: default; } .vc-ws-item.vc-ws-item-off:hover { border-color: var(--vc-border); } .vc-ws-item.vc-ws-item-visited { opacity: 0.55; } .vc-ws-item.vc-ws-item-visited:hover { opacity: 1; } .vc-ws-check { flex: none; width: 14px; height: 14px; margin: 0; accent-color: var(--vc-primary); cursor: pointer; } .vc-ws-link { flex: 1; min-width: 0; font-size: 13px; font-weight: 500; color: var(--vc-text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .vc-ws-link:hover { color: var(--vc-primary); } .vc-ws-link:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; border-radius: 4px; } .vc-ws-link-off { color: var(--vc-text-placeholder); pointer-events: none; } .vc-ws-domain { flex: none; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; color: var(--vc-text-secondary); } .vc-ws-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px 14px; border-top: 1px solid var(--vc-border); } .vc-ws-count { font-size: 12px; color: var(--vc-text-secondary); } .vc-ws-btn { padding: 7px 14px; border: none; border-radius: 8px; background: var(--vc-primary); color: #fff; font-size: 13px; font-family: inherit; cursor: pointer; transition: background 0.15s ease; } .vc-ws-btn:hover { background: var(--vc-primary-dark); } .vc-ws-btn:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; }`; var zh=[hd,gd,bd,yd,xd,wd,Sd].join("\n"); var Ed=zh; var _d=`
我的收藏
想看
已看
观看记录
共 0 条收藏
1 / 1
`; var kd=`
{{coverHtml}}
{{siteName}} {{rateHtml}} {{statusButtons}}
{{copyBtnHtml}}{{title}}
{{dateStr}} {{lastPlayed}}
`; var Td=`{{title}} `; var Ad=`
🖼️
`; var Kh={panelTemplate:_d,cardTemplate:kd,coverImageTemplate:Td,defaultCoverTemplate:Ad}; var Ct; function Bd(t){const e=Hr(t&&t.cover||"");if(!e||/^[a-z][a-z0-9+.-]*:/i.test(e))return e;const n=Ve(t.coverFrom||t.siteId);const r=n?Ee(n):"";return Vt(e,r?"https://"+r:location.href)} o(Bd,"displayCover"); function Yh(t,e){const n=lt(e);return(t.domains||[]).some(r=>{const i=lt(r);return n===i||n.endsWith("."+i)})} o(Yh,"isSiteDomain"); function ac(t){if(!t||!t.cover)return null;const e=Ve(t.coverFrom||t.siteId);if(!e||typeof e.coverReferer!=="function")return null;let n=null;try{n=new URL(Bd(t))}catch(a){return null}if(n.host===location.host)return null;if(!Yh(e,n.host))return null;const r=[n.host];const i=Ee(e);if(i)r.push(lt(i));(e.domains||[]).forEach(a=>r.push(lt(a)));const c=r.filter((a,s)=>a&&r.indexOf(a)===s).map(a=>{const s=n.protocol+"//"+a;return{url:s+n.pathname+n.search,referer:e.coverReferer(t.path,s)}});return{url:c[0].url,attempts:c}} o(ac,"proxyPlanOf"); function Ld(){if(!Ze.isPanelOpen())return;It.renderedTabs.clear();Ze.renderActiveList()} o(Ld,"refreshPanelIfOpen"); var ho=ld({volume:true,rating:{get:o(()=>mi(),"get"),set:o(t=>{Ps(t);Ld()},"set"),clear:o(()=>{Sl();Ld()},"clear"),confirm:Le,status:o(()=>Ml(),"status")},usage:o(()=>Bl(),"usage"),engine:{get:o(()=>GM_getValue(ge,true)!==false,"get"),set:o(t=>GM_setValue(ge,t!==false),"set")}}); var vc=ud({listTargetsFn:Iu,resolveUrlFn:Ou,warmDomainFn:Pu,setEnabledFn:Mu}); var Ze=nd({state:It,pageSize:zo,loadFn:o(()=>({...Tt(),history:Vl()}),"loadFn"),hasHistory:true,filterFn:o((t,e)=>{if(!e)return t;const n=e.toLowerCase();return t.filter(r=>(r.name||"").toLowerCase().includes(n))},"filterFn"),getId:o(t=>t.name,"getId"),getTitle:o(t=>t.name,"getTitle"),getUrl:o(t=>ng(t),"getUrl"),resolveUrlFn:rg,getSiteName:o(t=>{if(!t.siteId)return"";return(Ve(t.siteId)||{}).name||""},"getSiteName"),resolveSiteIdFn:o(t=>{if(!t.siteId)return"";return(Ve(t.siteId)||{}).name||t.siteId||""},"resolveSiteIdFn"),getTime:o(t=>t.updateTime||t.createTime,"getTime"),getStatus:o(t=>nr(t.name),"getStatus"),setStatusFn:Uu,restoreStatusFn:Vu,deleteFn:$u,batchSetStatusFn:Gu,batchDeleteFn:Ku,exportFn:ql,importFn:Fl,updateButtonStateFn:o(()=>Bt(),"updateButtonStateFn"),openSettingsFn:o(()=>ho.open(),"openSettingsFn"),openWebSearchFn:o(()=>vc.open(Ze.getSearchKeyword()),"openWebSearchFn"),getExtraInfo:o(t=>wu(ie(t.name)),"getExtraInfo"),resolveCoverFn:o(t=>{if(!t)return"";const e=ac(t);if(!e)return Bd(t);return vo(t.name,e.url)||e.url},"resolveCoverFn"),resolveCoverFallbackFn:o(t=>{const e=ac(t);return e?fd(t.name,e.attempts):Promise.resolve("")},"resolveCoverFallbackFn"),onCoverFailed:o((t,e)=>{if(!t||!t.name)return;if(e&&!/^blob:/i.test(e)&&ac(t))return;nu(t.name,navigator.onLine===false);if(navigator.onLine!==false)Ql(t.name)},"onCoverFailed"),onCoverLoaded:o(t=>{if(t&&t.name)iu(t.name)},"onCoverLoaded"),emptyText:"\u6682\u65E0\u6536\u85CF\u5185\u5BB9",templates:Kh,getMetaFn:o(t=>Ei(t.name),"getMetaFn"),requestMetaFn:o((t,e,n)=>{if(!mi()){e(null);return}Ol(t,e,n)},"requestMetaFn"),metaStaleFn:o(t=>yl(t.name),"metaStaleFn"),metaEnabledFn:o(()=>true,"metaEnabledFn"),resetRatingQueueFn:o(()=>Pl(),"resetRatingQueueFn"),getOriginRectFn:o(()=>Ct==null?void 0:Ct.getOriginRect(),"getOriginRectFn"),setFloatPanelFn:o(t=>Ct==null?void 0:Ct.setPanelOpen(t),"setFloatPanelFn")}); var go=Ze.openPanel; var jd=Ze.closePanel; var sc="vc-global-style"; function bo(){if(!document.getElementById(sc)){const t=document.createElement("style");t.id=sc;t.textContent=Ed;document.head.appendChild(t)}if(!document.head.dataset.vcStyleWatch){document.head.dataset.vcStyleWatch="1";new MutationObserver(()=>{if(!document.getElementById(sc))bo()}).observe(document.head,{childList:true})}} o(bo,"injectStyles"); function Wh(){if(!vd()){qd();dc();return}md(()=>{qd();dc()})} o(Wh,"mountBodyUi"); function $d(){bo();ru();Wh();const t=[...re,...Cn];t.forEach(n=>Qo(n));wa().then(()=>t.forEach(n=>Qo(n)));GM_registerMenuCommand("\u6536\u85CF\u5217\u8868",go);GM_registerMenuCommand("\u5168\u7F51\u641C\u7D22",()=>vc.open(pe()));GM_registerMenuCommand("\u8BBE\u7F6E",()=>ho.open());let e=location.href;setInterval(()=>{if(location.href!==e){e=location.href;setTimeout(()=>{dc();Bt();zd()},500)}},1e3);document.addEventListener("keydown",n=>{var i,c;if(n.key!=="Escape")return;if(document.querySelector(".vc-settings-mask.vc-show"))return;if(document.querySelector(".vc-ws-mask.vc-show"))return;const r=document.querySelector(".vc-image-preview");if(r==null?void 0:r.classList.contains("vc-show")){Do();return}if((i=pc.getXjumpEl())==null?void 0:i.classList.contains("vc-show")){pc.getXjumpEl().classList.remove("vc-show");return}if((c=Ze.getPanelEl())==null?void 0:c.classList.contains("vc-show"))jd()})} o($d,"initDrama"); var Xh=2e3; var Cd=0; var Md=false; function Id(t){var n,r;if(Fr().video)return;const e=t.target;if((n=e==null?void 0:e.closest)==null?void 0:n.call(e,'a, button, input, textarea, select, [contenteditable="true"], [class*="vc-"]'))return;Fn((r=xt())==null?void 0:r.playerFrameSelector,{force:true})} o(Id,"onPageClick"); function Pd(t){if(t===Md)return;Md=t;if(t)document.addEventListener("click",Id);else document.removeEventListener("click",Id)} o(Pd,"bindPageClick"); var Ot=Lu(); ks(t=>Ot.applyVolume(t)); mu(()=>Ot.ready()?{time:Ot.time(),ended:false}:null); hu(t=>Ot.seek(t)); bu(()=>Ot.play()); gu(()=>{uc();Ot.detach()}); var lc=Qi({getVideo:o(()=>Fr().video,"getVideo"),step:Go,volumeStep:Ko,onAction:o(t=>rt(t,{tone:"info"}),"onAction"),remote:{ready:o(()=>Ot.ready(),"ready"),seek:o(t=>Ot.seek(Math.max(0,Ot.time()+t)),"seek"),volume:o(t=>Ot.bumpVolume(t),"volume"),toggle:o(()=>{if(Ot.paused())Ot.play();else Ot.pause()},"toggle")},onNoVideo:o(()=>{var t;if(!Fn((t=xt())==null?void 0:t.playerFrameSelector,{force:true}))return;if(Date.now()-Cd{if(t===window||mo.has(t))return;if(!Od(t))return;const e=Qi({win:t,getVideo:o(()=>Od(t),"getVideo"),step:Go,volumeStep:Ko,onAction:o(n=>rt(n,{tone:"info"}),"onAction")});e.enable();mo.set(t,e)})} o(Rd,"refreshFrameKeyboards"); function Jh(){mo.forEach(t=>t.disable());mo.clear()} o(Jh,"stopFrameKeyboards"); Ot.onKey(t=>lc.handleRemoteKey(t)); var Dd=As({getVolume:o(()=>Number(jt("volume"))/100,"getVolume")}); var Ne=null; function Nd(t){if(!t)return;const e=pe();if(!e||Ne&&Ne.name===e)return;if(Ne)Ne.stop();Ne={name:e,stop:xu(t,e)}} o(Nd,"ensurePlaybackSession"); function uc(){if(!Ne)return;Ne.stop();Ne=null} o(uc,"releasePlaybackSession"); function dc(){const t=xt();if(!t){uc();return}const e=t.pageType();const n=e==="play"||e==="detail"&&t.trackPlaybackOnDetail;$l(pe());if(typeof t.onPageReady==="function")t.onPageReady();if(e==="detail"){so();[600,1500,3e3].forEach(r=>setTimeout(so,r));if(t.isPlayUrl&&!document.body.dataset.vcDramaPlayClickBound){document.body.dataset.vcDramaPlayClickBound="1";document.addEventListener("click",r=>{const i=r.target.closest("a");if(i&&t.isPlayUrl(i.href))so()})}}if(n){Nd(t);lc.enable();Rd();[600,1500,3e3].forEach(r=>setTimeout(Rd,r));Dd.start();Pd(true);Fn(t.playerFrameSelector);setTimeout(()=>Nd(xt()),1500);[600,1500,3e3].forEach(r=>setTimeout(()=>Fn(t.playerFrameSelector),r));Yi(t);[1500,3e3].forEach(r=>setTimeout(()=>Yi(xt()),r));Ot.attach(t);[1500,3e3].forEach(r=>setTimeout(()=>Ot.attach(xt()),r))}else{uc();lc.disable();Jh();Dd.stop();Ot.detach();Pd(false);Ki()}if(e==="detail"||e==="play"){Fd();[1500,3e3].forEach(r=>setTimeout(Fd,r))}sg();lg();[1500,3e3].forEach(r=>setTimeout(()=>{Bt();zd()},r))} o(dc,"enhancePage"); function Zh(){return Ho} o(Zh,"getPositionKey"); function Qh(){const t=xt();const e=t?[t,...re.filter(r=>r.id!==t.id)]:re;const n=[];e.forEach(r=>{n.push(`${Ho}_${r.id}`);n.push(`${Gc}_${r.id}`)});return n} o(Qh,"getLegacyPositionKeys"); function tg(){if(Ji()&&pe())Bu();else go()} o(tg,"onPrimaryClick"); function eg(){var t;if((t=Ze.getPanelEl())==null?void 0:t.classList.contains("vc-show"))jd();else go()} o(eg,"togglePanel"); function qd(){Ct=id({positionKeyFn:Zh,legacyPositionKeysFn:Qh,onWant:qu,onWatched:Fu,onOpenPanel:go,onTogglePanel:eg,onPrimaryClick:tg,getPrimaryStateFn:o(()=>nr(pe()),"getPrimaryStateFn"),getPrimaryIntentFn:ju,isDetailPageFn:Ji,updateButtonStateFn:Bt,onVisibilityChange:dg,onWebSearch:o(()=>vc.open(pe()),"onWebSearch")});Ct.create()} o(qd,"createFloatButtons"); function zd(){if(Ct)Ct.updateVisibility()} o(zd,"updateButtonVisibility"); function Bt(){if(Ct)Ct.refreshPrimary();const t=Ct==null?void 0:Ct.getWantBtn();const e=Ct==null?void 0:Ct.getWatchedBtn();if(!t||!e)return;const n=pe();if(!n){t.classList.remove("vc-active");e.classList.remove("vc-active");return}t.classList.toggle("vc-active",lo(n,"want"));e.classList.toggle("vc-active",lo(n,"watched"))} o(Bt,"updateButtonState"); function ng(t){if(!t.siteId)return"";const e=Ve(t.siteId);if(!e)return"";const n=Ee(e);if(!n)return"";return"https://"+n+(t.path||"")} o(ng,"buildDramaUrl"); function rg(t,e){const n=Ve(t.siteId);if(!n||!n.domains||!n.domains.length)return Promise.resolve(e||"");return cn(n).then(r=>r?"https://"+r+(t.path||""):e||"")} o(rg,"resolveDramaUrl"); function og(t){const e=Tt();const n=new Map;(e.watched||[]).forEach(i=>n.set(J(i.name),"watched"));(e.want||[]).forEach(i=>n.set(J(i.name),"want"));const r=new Map;(t||[]).forEach(i=>{const c=n.get(J(i));if(c)r.set(i,c)});return r} o(og,"buildFavIndex"); var Hd=cd({getSiteFn:xt,buildFavIndexFn:og,buildItemFn:o((t,e)=>{const{element:n,name:r,cover:i,path:c}=t;if(!r)return null;return{name:r,cover:Vt(i),path:c,siteId:e.id,createTime:Date.now(),updateTime:Date.now(),element:n}},"buildItemFn"),getIdFn:o(t=>t.name,"getIdFn"),isFavoritedFn:lo,toggleFavoriteFn:Du,refreshItemFn:o((t,e,n)=>{if(!t.element||!(e==null?void 0:e.getListCards))return;const r=e.getListCards().find(i=>i.element===t.element);if(!r)return;if(r.cover)t.cover=r.cover},"refreshItemFn"),afterToggleFn:Bt,afterInjectFn:o(t=>{ug(t);ag(t)},"afterInjectFn")}); var or=[]; var fc=null; function ig(){fc=null;if(!or.length)return;ki(or.splice(0,or.length))} o(ig,"flushPendingRatings"); function cg(){if(fc)return;fc=setTimeout(ig,800)} o(cg,"scheduleRatingFlush"); function ag(t){const e=xt();if(!e||typeof e.getSiteRating!=="function")return;(t||[]).forEach(n=>{const r=n&&n.element;if(!r||!n.name||r.dataset.vcRated===n.name)return;const i=e.getSiteRating(r);if(!i)return;r.dataset.vcRated=n.name;or.push({name:n.name,rating:i})});if(or.length)cg()} o(ag,"harvestRatingsFromList"); function sg(){Zl();Hd.inject()} o(sg,"injectListFavoriteButtons"); function lg(){if(document.body.dataset.vcDramaListPreloadBound)return;document.body.dataset.vcDramaListPreloadBound="1";document.addEventListener("click",t=>{const e=t.target;if(!e||!e.closest)return;if(e.closest(".vc-status"))return;const n=xt();if(!n||!n.getListCards)return;const r=n.getListCards()||[];const i=r.find(c=>c.element&&c.element.contains(e));if(!i||!i.name||!i.cover)return;Ie(i.name,i.cover)},true)} o(lg,"bindListCardClickPreload"); function ug(t){const e=xt();if(!e)return;const n=t||(e.getListCards?e.getListCards():[]);n.forEach(r=>{if(!r||!r.name)return;if(!tu(r.name))return;const i=ns(r.element);if(!i)return;Nn("[\u5F71\u89C6\u6536\u85CF] \u5217\u8868\u9875\u547D\u4E2D\u5F85\u4FEE\u5C01\u9762\uFF1A",r.name);pn(r.name,i,e.id)})} o(ug,"repairCoversFromList"); function dg(){Hd.refreshAll()} o(dg,"refreshAllMiniButtons"); function fg(){return kn} o(fg,"getXjumpPositionKey"); function pg(){if(GM_getValue(kn,null))return;const t=xt();if(!t)return;const e=GM_getValue(`${kn}_${t.id}`,null);if(e)GM_setValue(kn,e)} o(pg,"migrateXjumpPosition"); var pc=ad({getSiteFn:xt,getKeywordFn:o(()=>{const t=xt();if(!t)return null;const e=t.pageType();let n=null;if(e==="detail"&&t.getDetailInfo)n=(t.getDetailInfo()||{}).name||null;else if(e==="play"&&t.getPlayInfo)n=(t.getPlayInfo()||{}).name||null;if(!n)return null;return dr(n)[1]||n},"getKeywordFn"),getPositionKeyFn:fg,getAllSitesFn:o(()=>[...re,...Cn],"getAllSitesFn"),pickDomainFn:Ee,findAliveDomainFn:cn,siteIdField:"id"}); function Fd(){pg();pc.inject()} o(Fd,"injectCrossSiteJump"); var vg=[1200,3e3,6e3]; var mg=2e4; var hg=500; function Ud(t){let e=false;let n=null;let r=0;function i(){if(e)return true;let s=false;try{s=!!t()}catch(l){s=false}if(!s)return false;e=true;if(n)n.disconnect();return true}o(i,"boot");function c(){if(e)return;const s=Date.now();if(s-rsetTimeout(i,s));try{n=new MutationObserver(c);n.observe(document.documentElement,{childList:true,subtree:true});setTimeout(()=>{if(n)n.disconnect()},mg)}catch(s){}}o(a,"start");if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",a,{once:true})}else{a()}} o(Ud,"bootWithGateRetry"); var gg=3e4; var bg=5e3; var yg=6e4; var xg=null; function ae(t){const e=Number(t);return Number.isFinite(e)?e:0} o(ae,"num"); function wg(t){const e=Array.isArray(t)?t.filter(Boolean):[];if(!e.length)return null;const n=o(c=>(c.videoWidth||0)*(c.videoHeight||0),"area");const r=e.filter(c=>c.currentSrc||(c.readyState||0)>0);const i=r.length?r:e;return i.slice().sort((c,a)=>n(a)-n(c))[0]} o(wg,"pickBestVideo"); function Vd(){if(window.self===window.top)return;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1Aiframe \u5185\u5DF2\u542F\u52A8\uFF08"+location.hostname+"\uFF09\uFF0C\u5F00\u59CB\u627E video");try{window.parent.postMessage(ce(pt.BOOT,{host:location.hostname,depth:0}),"*")}catch(w){}let t="";let e=null;let n=null;let r=null;let i=null;let c=0;let a=false;let s=null;const l=[];const f=o(w=>{try{window.parent.postMessage(w,"*")}catch(d){}},"post");const p=o(()=>!!e&&e.isConnected,"alive");function _(w){if(!w)return null;for(const d of document.querySelectorAll("iframe")){if(d.contentWindow===w)return d}return null}o(_,"childFrameOf");function b(w){if(s){try{s.postMessage(w,"*");return}catch(d){}}for(const d of document.querySelectorAll("iframe")){try{if(d.contentWindow)d.contentWindow.postMessage(w,"*")}catch(g){}}}o(b,"relayDown");function k(){if(!p()||!t)return;c=Date.now();f(ce(pt.STATE,{nonce:t,depth:0,time:ae(e.currentTime),dur:ae(e.duration),paused:!!e.paused,vol:ae(e.volume),muted:!!e.muted}))}o(k,"report");function y(){if(!p())return;f(ce(pt.READY,{depth:0,dur:ae(e.duration),w:ae(e.videoWidth),h:ae(e.videoHeight),src:String(e.currentSrc||"")}))}o(y,"announce");function R(){if(!p())return;e.addEventListener("timeupdate",()=>{if(Date.now()-c{e.addEventListener(w,k)});e.addEventListener("loadedmetadata",()=>{N();k()})}o(R,"bindVideo");function S(w){if(!p())return;if(w.op===ee.VOLUME){Ge(e,w.v,{unmute:true});return}if(w.op===ee.SEEK){if(!e||e.readyState<1){F();if(e&&e.readyState>=1){try{e.currentTime=Math.max(0,ae(w.to))}catch(d){}return}l.length=0;l.push(w);P();return}try{e.currentTime=Math.max(0,ae(w.to))}catch(d){}return}if(w.op===ee.PLAY){Promise.resolve(e.play()).catch(()=>{});return}if(w.op===ee.PAUSE){e.pause();return}if(w.op===ee.STATE)k()}o(S,"runCmd");function N(){if(!p())return;while(l.length)S(l.shift())}o(N,"flushPending");function v(){if(n){n.disconnect();n=null}if(r){clearTimeout(r);r=null}if(i){clearInterval(i);i=null}l.length=0}o(v,"stopWait");const x=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"," ","Spacebar"];function I(w){if(w.ctrlKey||w.altKey||w.metaKey)return;if(!x.includes(w.key))return;if(w.defaultPrevented)return;w.preventDefault();w.stopPropagation();f(ce(pt.KEY,{key:w.key}))}o(I,"onKeyDownCapture");function B(w){const d=w.target;if(!d||!d.tagName||d.tagName.toLowerCase()!=="video")return;if(!e||d!==e)return;let g=false;try{g=d.matches(":hover")}catch(C){g=false}if(!g)return;try{d.blur()}catch(C){}}o(B,"onFocusIn");window.addEventListener("keydown",I,true);window.addEventListener("focusin",B,true);window.addEventListener("message",w=>{const d=oo(w.data);if(!d)return;if(w.source!==window.parent){if(!_(w.source))return;if(d.t===pt.BOOT||d.t===pt.READY||d.t===pt.STATE||d.t===pt.KEY){if(s!==w.source){s=w.source;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u64AD\u653E\u5668\u5728\u66F4\u5185\u5C42\uFF0C\u672C\u5C42\u6539\u4E3A\u4E2D\u7EE7\uFF08"+location.hostname+"\uFF09")}f(ce(d.t,Object.assign({},d,{depth:(Number(d.depth)||0)+1})))}return}if(d.t===pt.HELLO){t=String(d.nonce||"");if(!a){a=true;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u5DF2\u88AB\u7236\u9875\u9762\u8BA4\u9886\uFF08"+location.hostname+"\uFF09\uFF0C\u5F00\u59CB\u4E0A\u62A5\u72B6\u6001")}if(!p()){b(ce(pt.HELLO,{nonce:t}));return}k();return}if(d.t===pt.CMD){if(!t||d.nonce!==t)return;if(!p()){b(ce(pt.CMD,d));return}S(d)}});let T=null;let O=0;const H=1e3;function q(){const w=[...document.querySelectorAll("video")];if(w.length){T=null;return w}const d=T?T.filter(g=>g.isConnected):[];if(d.length)return d;if(Date.now()g.tagName==="VIDEO");if(!T.length)O=Date.now()+H;return T}o(q,"findVideoList");function F(){const w=wg(q());if(!w)return false;if(w===e&&p())return true;e=w;R();y();U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u9501\u5B9A\u64AD\u653E\u5668 video\uFF08"+ae(w.videoWidth)+"x"+ae(w.videoHeight)+"\uFF0C\u65F6\u957F "+Math.round(ae(w.duration))+" \u79D2\uFF09");return true}o(F,"tryFind");function P(){if(i)return;const w=Date.now();i=setInterval(()=>{if(!l.length||Date.now()-w>yg){l.length=0;clearInterval(i);i=null;return}F();if(e&&e.readyState>=1){clearInterval(i);i=null;N();k()}},500)}o(P,"ensureFlushLoop");if(!F()){const w=document.querySelectorAll("iframe").length;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u672C\u5C42\u8FD8\u6CA1\u6709 video"+(w?"\uFF0C\u4F46\u91CC\u9762\u6709 "+w+" \u4E2A iframe \u2014\u2014 \u53EF\u80FD\u662F\u5D4C\u5957\u64AD\u653E\u5668\uFF0C\u5355\u5C42\u6865\u63A5\u8986\u76D6\u4E0D\u5230":""))}n=new MutationObserver(()=>{F()});n.observe(document.documentElement||document,{childList:true,subtree:true});r=setTimeout(v,gg);xg={stop:v,snapshot:o(()=>({observer:!!n,wait:!!r,flush:!!i,pending:l.length}),"snapshot")}} o(Vd,"startBridge"); var Sg=window.self!==window.top; if(Sg){Vd()} else{zr();Te();Ud(()=>{fs();if(!xt())return false;$d();return true});if(GM_getValue(ge,true)===false&&Ar({ignoreEngineSwitch:true})){GM_registerMenuCommand("\u8BBE\u7F6E",()=>{bo();ho.open()})}} })();