DoubanFlix - 在豆瓣页面获取添加资源链接(网盘,磁力,在线),支持电影,游戏,音乐,书籍

在豆瓣页面获取添加资源链接(网盘,磁力,在线),支持电影,游戏,音乐,书籍

当前为 2025-10-09 提交的版本,查看 最新版本

// ==UserScript==
// @name         DoubanFlix - 在豆瓣页面获取添加资源链接(网盘,磁力,在线),支持电影,游戏,音乐,书籍
// @namespace    http://tampermonkey.net/
// @version      1.1.4
// @description  在豆瓣页面获取添加资源链接(网盘,磁力,在线),支持电影,游戏,音乐,书籍
// @updatenote   1. 加快脚本窗口渲染时间
//               2. 修复页码切换失效问题
//               3. 修复主副接口切换时间问题,2小时后自动切换回主接口
// @author       Moz
// @match        https://movie.douban.com/subject/*
// @match        https://www.douban.com/game/*
// @match        https://music.douban.com/subject/*
// @match        https://book.douban.com/subject/*
// @grant        GM_xmlhttpRequest
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @connect      scriptcat.org
// @license      MIT
// @icon         https://cdn.zerror.cc/images/%E8%B1%86%E7%93%A3%E7%BD%91.png
// ==/UserScript==

// 注入CSS样式
(function() {
    const style = document.createElement('style');
    style.textContent = `.auth-switch[data-v-d47a81a4]{display:flex;justify-content:center;margin-bottom:16px}.switch-container[data-v-d47a81a4]{position:relative;display:flex;background:#f8f9fa;border-radius:8px;padding:4px;width:200px;height:30px}.switch-input[data-v-d47a81a4]{position:absolute;opacity:0;pointer-events:none}.switch-label[data-v-d47a81a4]{flex:1;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500;color:#666;cursor:pointer;transition:color .3s ease;z-index:2;position:relative}.switch-input:checked+.switch-label[data-v-d47a81a4]{color:#007bff}.slider[data-v-d47a81a4]{position:absolute;top:4px;left:0;width:46%;height:calc(100% - 8px);background:#fff;border-radius:6px;box-shadow:0 2px 4px #0000001a;transition:left .3s ease;z-index:1}.switch-label[data-v-d47a81a4]:hover{color:#007bff}.switch-input:checked+.switch-label[data-v-d47a81a4]{color:#007bff;font-weight:600}@media (max-width: 480px){.switch-container[data-v-d47a81a4]{width:180px;height:36px}.switch-label[data-v-d47a81a4]{font-size:13px}}.toast-container[data-v-52e28bd4]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:10000;pointer-events:none}.toast[data-v-52e28bd4]{background:#fff;border-radius:8px;padding:12px 16px;margin-bottom:10px;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;justify-content:space-between;min-width:300px;max-width:500px;pointer-events:auto;cursor:pointer;animation:slideDown-52e28bd4 .3s ease-out;transition:all .3s ease}.toast[data-v-52e28bd4]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0003}.error-toast[data-v-52e28bd4]{background:#fff5f5}.error-toast span[data-v-52e28bd4]{color:#721c24}.success-toast[data-v-52e28bd4]{background:#f0fff4}.success-toast span[data-v-52e28bd4]{color:#155724}.toast-close[data-v-52e28bd4]{background:none;border:none;font-size:18px;font-weight:700;color:#999;cursor:pointer;margin-left:12px;padding:0;line-height:1}.toast-close[data-v-52e28bd4]:hover{color:#666}@keyframes slideDown-52e28bd4{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.auth-container[data-v-09cfbe3d]{padding:16px}.user-info[data-v-09cfbe3d]{text-align:center}.user-header[data-v-09cfbe3d]{display:flex;align-items:center;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;position:relative}.user-avatar[data-v-09cfbe3d]{width:40px;height:40px;border-radius:50%;background:#007bff;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;margin-right:12px}.user-details[data-v-09cfbe3d]{flex:1;text-align:left}.user-display-name[data-v-09cfbe3d]{font-size:14px;font-weight:500;color:#333;margin-bottom:2px}.user-email[data-v-09cfbe3d]{font-size:12px;color:#666;margin-bottom:2px}.user-status[data-v-09cfbe3d]{font-size:12px;color:#28a745}.user-stats[data-v-09cfbe3d]{margin-top:8px;display:flex;gap:16px}.stat-item[data-v-09cfbe3d]{display:flex;align-items:center;font-size:12px}.stat-icon[data-v-09cfbe3d]{width:16px;height:16px;display:flex;align-items:center;justify-content:center;color:#4caf50}.stat-icon.down-icon[data-v-09cfbe3d]{color:#868686;transform:rotate(180deg)}.stat-icon svg[data-v-09cfbe3d]{width:100%;height:100%}.stat-label[data-v-09cfbe3d]{color:#666;font-weight:500}.stat-value[data-v-09cfbe3d]{color:#333;font-weight:600;background:#f8f9f0;border-radius:12px;min-width:20px;text-align:center}.edit-nickname-btn[data-v-09cfbe3d]{position:absolute;top:12px;right:12px;padding:4px 8px;background:#e3f2fd;color:#1976d2;border:none;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.edit-nickname-btn[data-v-09cfbe3d]:hover{background:#e8f5ff}.nickname-edit-form[data-v-09cfbe3d]{margin-bottom:16px;padding:12px;background:#fff;border:1px solid #dee2e6;border-radius:8px}.nickname-edit-form .form-group[data-v-09cfbe3d]{flex-direction:column;align-items:flex-start;gap:4px}.nickname-edit-form .form-group label[data-v-09cfbe3d]{text-align:left;min-width:auto;margin-bottom:2px}.nickname-hint[data-v-09cfbe3d]{font-size:11px;color:#666;margin-top:4px}.nickname-actions[data-v-09cfbe3d]{display:flex;gap:8px;margin-top:12px}.save-nickname-btn[data-v-09cfbe3d]{padding:6px 12px;background:#beecc859;color:#2e8339;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.save-nickname-btn[data-v-09cfbe3d]:hover:not(:disabled){background:#cef3d6}.save-nickname-btn[data-v-09cfbe3d]:disabled{background:#cef3d6;cursor:not-allowed}.cancel-nickname-btn[data-v-09cfbe3d]{padding:6px 12px;background:#f1f1f1;color:#828282;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.cancel-nickname-btn[data-v-09cfbe3d]:hover{background:#e4e4e4}.sign-out-btn[data-v-09cfbe3d]{width:100%;padding:8px 16px;background:#ffe4e6;color:#f33;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .2s}.sign-out-btn[data-v-09cfbe3d]:hover{background:#ffedef}.auth-forms[data-v-09cfbe3d]{width:100%}.auth-form[data-v-09cfbe3d]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-09cfbe3d]{display:flex;align-items:center;gap:6px}.form-group label[data-v-09cfbe3d]{font-size:12px;color:#333;margin-bottom:0;font-weight:500;white-space:nowrap;min-width:50px;text-align:right}.auth-form[data-mode=login] .form-group[data-v-09cfbe3d]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.auth-form[data-mode=login] .form-group label[data-v-09cfbe3d]{text-align:left;min-width:auto;margin-bottom:2px}.auth-form[data-mode=login] .input-wrapper[data-v-09cfbe3d]{width:100%;border:1px solid #ddd;border-radius:8px;transition:border-color .2s}.auth-form[data-mode=login] .input-wrapper[data-v-09cfbe3d]:focus-within{border-color:none;box-shadow:none}.auth-form[data-mode=login] .form-input[data-v-09cfbe3d]{width:95%;margin:8px;padding:0;border:none;border-radius:0;font-size:13px;background:transparent;outline:none}.auth-form[data-mode=login] .form-input[data-v-09cfbe3d]:focus{border-color:none;box-shadow:none}.form-input[data-v-09cfbe3d]{padding:8px 12px;border:1px solid #ddd;border-radius:8px;font-size:13px;transition:border-color .2s}.form-input[data-v-09cfbe3d]:focus{outline:none}.auth-submit-btn[data-v-09cfbe3d]{padding:10px 16px;background:#e9f4ff;color:#00a2ef;border:1px solid #bfe2ff;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;transition:background-color .2s;margin-top:8px}.auth-submit-btn[data-v-09cfbe3d]:hover:not(:disabled){background:#cce5ff}.auth-submit-btn[data-v-09cfbe3d]:disabled{background:#c4e0fe;cursor:not-allowed}.forgot-password-link[data-v-09cfbe3d]{text-align:center;margin-top:15px}.link-btn[data-v-09cfbe3d]{background:none;border:none;color:#007bff;cursor:pointer;text-decoration:underline;font-size:14px;padding:0}.link-btn[data-v-09cfbe3d]:hover{color:#0056b3}.link-btn[data-v-09cfbe3d]:disabled{color:#6c757d;cursor:not-allowed;text-decoration:none}.back-button[data-v-09cfbe3d]{margin-bottom:20px}.back-btn[data-v-09cfbe3d]{background:none;border:none;color:#6c757d;cursor:pointer;font-size:14px;padding:8px 0;display:flex;align-items:center;gap:5px}.back-btn[data-v-09cfbe3d]:hover{color:#495057}.form-title[data-v-09cfbe3d]{font-size:24px;font-weight:700;text-align:center;margin-bottom:10px;color:#333}.form-description[data-v-09cfbe3d]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:25px;line-height:1.5}.proof-progress[data-v-09cfbe3d]{margin:20px 0}.progress-text[data-v-09cfbe3d]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:10px}.progress-bar[data-v-09cfbe3d]{width:100%;height:8px;background-color:#e9ecef;border-radius:4px;overflow:hidden}.progress-fill[data-v-09cfbe3d]{height:100%;background:linear-gradient(90deg,#007bff,#0056b3);transition:width .3s ease;border-radius:4px}.resend-code[data-v-09cfbe3d]{text-align:center;margin-top:15px}.error-message[data-v-09cfbe3d]{padding:8px 12px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;font-size:12px;margin-top:12px}.success-message[data-v-09cfbe3d]{padding:8px 12px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:4px;font-size:12px;margin-top:12px}.initializing-container[data-v-09cfbe3d]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.initializing-container .loading-spinner[data-v-09cfbe3d]{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #007bff;border-radius:50%;animation:spin-09cfbe3d 1s linear infinite;margin-bottom:16px}.initializing-container p[data-v-09cfbe3d]{color:#6c757d;font-size:14px;margin:0}@keyframes spin-09cfbe3d{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.custom-select[data-v-3b2cba4f]{position:relative;width:100%;font-size:14px}.select-trigger[data-v-3b2cba4f]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border:1px solid #ddd;border-radius:8px;background-color:#fff;cursor:pointer;transition:all .2s ease;color:#333}.select-trigger[data-v-3b2cba4f]:focus{outline:none}.selected-text[data-v-3b2cba4f]{flex:1;text-align:left;color:#333}.arrow[data-v-3b2cba4f]{width:16px!important;height:16px!important;transition:transform .2s ease;color:#666!important;background:none!important;background-image:none!important;border:none!important;transform-origin:center!important;display:inline-block!important}.arrow-up[data-v-3b2cba4f]{transform:rotate(180deg);padding-left:0}.select-dropdown[data-v-3b2cba4f]{position:absolute;top:110%;left:0;right:0;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 6px #0000001a;z-index:1000;max-height:400px;overflow-y:auto}.select-option[data-v-3b2cba4f]{padding:4px 12px;cursor:pointer;transition:all .2s ease;color:#666;background-color:#fff;border-radius:6px;margin:2px}.select-option[data-v-3b2cba4f]:hover{background-color:#f5f5f5!important;color:#333!important}.select-option.selected[data-v-3b2cba4f]{background-color:#e3f2fd;color:#1976d2;font-weight:500}.select-option.selected[data-v-3b2cba4f]:hover{background-color:#bbdefb!important;color:#1565c0!important}@media (prefers-color-scheme: dark){.select-trigger[data-v-3b2cba4f]{background-color:#2d3748;border-color:#4a5568;color:#e2e8f0}.selected-text[data-v-3b2cba4f]{color:#e2e8f0}.arrow[data-v-3b2cba4f]{color:#a0aec0}.select-dropdown[data-v-3b2cba4f]{border-radius:4px;background-color:#2d3748;border-color:#4a5568}.select-option[data-v-3b2cba4f]{color:#a0a0a0;background-color:#2d3748}.select-option[data-v-3b2cba4f]:hover{background-color:#718096!important;color:#f7fafc!important}.select-option.selected[data-v-3b2cba4f]{background-color:#2b6cb0;color:#90cdf4}.select-option.selected[data-v-3b2cba4f]:hover{background-color:#2c5282!important;color:#bee3f8!important}}.loading-container[data-v-da15572b]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px;text-align:center}.spinner[data-v-da15572b]{width:32px;height:32px;border:3px solid #e0e0e0;border-top:3px solid #00a1d6;border-radius:50%;animation:spin-da15572b 1s linear infinite;margin-bottom:12px}.loading-text[data-v-da15572b]{color:#666;font-size:14px;font-weight:500}.loading-container.small .spinner[data-v-da15572b]{width:20px;height:20px;border-width:2px;margin-bottom:8px}.loading-container.small .loading-text[data-v-da15572b]{font-size:12px}.loading-container.large .spinner[data-v-da15572b]{width:48px;height:48px;border-width:4px;margin-bottom:16px}.loading-container.large .loading-text[data-v-da15572b]{font-size:16px}@keyframes spin-da15572b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 480px){.loading-container[data-v-da15572b]{padding:20px 15px}.spinner[data-v-da15572b]{width:28px;height:28px;border-width:2px}.loading-text[data-v-da15572b]{font-size:13px}}.link-item.skeleton[data-v-115afd35]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:16px;margin-bottom:12px}.skeleton-element[data-v-115afd35]{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading-115afd35 1.5s infinite;border-radius:4px}@keyframes skeleton-loading-115afd35{0%{background-position:200% 0}to{background-position:-200% 0}}.link-header[data-v-115afd35]{display:flex;align-items:center;gap:12px;margin-bottom:12px}.platform-badge[data-v-115afd35]{display:flex;align-items:center;gap:6px}.skeleton-icon[data-v-115afd35]{width:20px;height:20px;border-radius:50%}.link-meta[data-v-115afd35]{display:flex;flex-direction:column;gap:6px}.skeleton-language[data-v-115afd35]{width:40px;height:16px}.feature-tags[data-v-115afd35]{display:flex;gap:6px}.skeleton-tag[data-v-115afd35]{width:30px;height:14px}.link-title-row[data-v-115afd35]{display:flex;align-items:center;justify-content:space-between}.skeleton-title[data-v-115afd35]{width:70%;height:20px}.skeleton-arrow[data-v-115afd35]{width:16px;height:16px;border-radius:2px}.ios-checkbox[data-v-150f8c13]{--checkbox-size: 28px;--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd;position:relative;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle}.ios-checkbox input[data-v-150f8c13]{display:none}.checkbox-wrapper[data-v-150f8c13]{position:relative;width:var(--checkbox-size);height:var(--checkbox-size);border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.checkbox-bg[data-v-150f8c13]{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1px solid #d5d5d5;background:#fff;transition:all .2s ease}.checkbox-icon[data-v-150f8c13]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:16px;height:16px;color:#fff;transition:all .2s ease}.check-path[data-v-150f8c13]{stroke-dasharray:40;stroke-dashoffset:40;transition:stroke-dashoffset .3s ease .1s}.checkbox-label[data-v-150f8c13]{font-size:14px;color:#374151;font-weight:500;line-height:28px;height:28px;display:flex;align-items:center}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-bg[data-v-150f8c13]{background:var(--checkbox-color);border-color:var(--checkbox-color)}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-icon[data-v-150f8c13]{transform:translate(-50%,-50%) scale(1)}.ios-checkbox input:checked+.checkbox-wrapper .check-path[data-v-150f8c13]{stroke-dashoffset:0}.ios-checkbox:hover .checkbox-wrapper[data-v-150f8c13]{transform:scale(1.05)}.ios-checkbox:active .checkbox-wrapper[data-v-150f8c13]{transform:scale(.95)}.ios-checkbox input:focus+.checkbox-wrapper .checkbox-bg[data-v-150f8c13]{box-shadow:0 0 0 4px var(--checkbox-bg)}.ios-checkbox.blue[data-v-150f8c13]{--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd}.ios-checkbox.green[data-v-150f8c13]{--checkbox-color: #10b981;--checkbox-bg: #d1fae5;--checkbox-border: #6ee7b7}.ios-checkbox.purple[data-v-150f8c13]{--checkbox-color: #8b5cf6;--checkbox-bg: #ede9fe;--checkbox-border: #c4b5fd}.ios-checkbox.red[data-v-150f8c13]{--checkbox-color: #ef4444;--checkbox-bg: #fee2e2;--checkbox-border: #fca5a5}@keyframes bounce-150f8c13{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.ios-checkbox input:checked+.checkbox-wrapper[data-v-150f8c13]{animation:bounce-150f8c13 .3s cubic-bezier(.4,0,.2,1)}.copy-item[data-v-aaaa00e5]{position:relative;display:inline-block;cursor:pointer;color:#007bff;text-decoration:none;transition:all .4s cubic-bezier(.23,1,.32,1);word-break:break-all}.copy-item[data-v-aaaa00e5]:hover{text-decoration:underline;background-color:transparent}.tooltip[data-v-aaaa00e5]{position:absolute;top:-35px;left:50%;transform:translate(-50%);padding:6px 12px;background:#333333d1;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:all .3s ease;z-index:1000}.tooltip[data-v-aaaa00e5]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333333d1}.copy-item:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.extract-code[data-v-aaaa00e5]{position:relative;display:inline-block;background:#f8f9fa;padding:2px 6px;border-radius:3px;font-family:monospace;color:#e83e8c;cursor:pointer;transition:all .3s ease}.extract-code[data-v-aaaa00e5]:hover{background:#e9ecef}.extract-code:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.link-manager[data-v-ef6eff02]{max-width:1000px;margin:0 auto}.link-stats[data-v-ef6eff02]{display:flex;gap:20px;margin-bottom:20px;padding:15px;background:#f5f5f5;border-radius:8px}.stat-item[data-v-ef6eff02]{display:flex;flex-direction:column;align-items:center}.stat-label[data-v-ef6eff02]{font-size:12px;color:#666;margin-bottom:4px}.stat-value[data-v-ef6eff02]{font-size:18px;font-weight:700;color:#333}.add-link-section[data-v-ef6eff02]{margin-bottom:20px;display:flex;align-items:center;gap:10px}.add-link-btn[data-v-ef6eff02]{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.add-link-btn[data-v-ef6eff02]:hover:not(:disabled){background:#0056b3}.add-link-btn[data-v-ef6eff02]:disabled{background:#ccc;cursor:not-allowed}.auth-hint[data-v-ef6eff02]{color:#666;font-size:12px}.add-form[data-v-ef6eff02]{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:20px}.add-form h4[data-v-ef6eff02]{margin:0 0 15px;color:#333}.form-row[data-v-ef6eff02]{display:flex;gap:15px}.form-group[data-v-ef6eff02]{flex:1;display:flex;align-items:center;gap:10px;margin-bottom:24px}.form-group label[data-v-ef6eff02]{margin-bottom:0;font-weight:540;color:#333;font-size:13px;white-space:nowrap;min-width:80px;text-align:right}.checkbox-group[data-v-ef6eff02]{display:flex;flex-wrap:wrap;gap:15px}.form-group input[data-v-ef6eff02],.form-group select[data-v-ef6eff02]{width:95%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group select[data-v-ef6eff02]:focus{outline:none}.input-wrapper[data-v-ef6eff02]{width:100%;border:1px solid #ddd;border-radius:6px}.input-wrapper input[data-v-ef6eff02]{width:95%;border:none;outline:none;font-size:14px;background:transparent}.form-actions[data-v-ef6eff02]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-actions button[data-v-ef6eff02]{font-weight:300;padding:10px 20px;border:none;border-radius:8px;cursor:pointer;font-size:14px}.form-actions button[type=submit][data-v-ef6eff02]{background:#beecc859;color:#2e8339}.form-actions button[type=submit][data-v-ef6eff02]:hover:not(:disabled){background:#beecc870}.form-actions button[type=submit][data-v-ef6eff02]:disabled{background:#b1efbf;cursor:not-allowed}.form-actions button[type=button][data-v-ef6eff02]{background:#f1f1f1;color:#828282}.form-actions button[type=button][data-v-ef6eff02]:hover{background:#ececec}.filter-bar[data-v-ef6eff02]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;border-radius:6px}.filter-controls[data-v-ef6eff02]{display:flex;gap:10px}.filter-bar .custom-select[data-v-ef6eff02]{width:auto;min-width:100px}.add-link-btn-compact[data-v-ef6eff02]{width:32px;height:32px;background:#e6f3ff;color:#007bff;border:none;border-radius:4px;cursor:pointer;font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;line-height:1;padding:0}.add-link-btn-compact[data-v-ef6eff02]:hover:not(:disabled){background:#dae9f7;transform:scale(1)}.add-link-btn-compact[data-v-ef6eff02]:disabled{color:#b2b2b2;background:#f5f4f4;cursor:not-allowed;transform:none}.filter-bar select[data-v-ef6eff02]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.links-list[data-v-ef6eff02]{display:flex;flex-direction:column;gap:15px}.link-item[data-v-ef6eff02]{background:#fff;border:1px solid rgba(239,239,239,1);border-radius:8px;padding:15px;box-shadow:0 2px 12px #0000000d;transition:box-shadow .3s ease;cursor:pointer}.link-header[data-v-ef6eff02]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.link-type-badge[data-v-ef6eff02]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700;color:#fff}.link-type-badge.netdisk[data-v-ef6eff02]{background:#28a745}.link-type-badge.bt[data-v-ef6eff02]{background:#dc3545}.link-type-badge.online[data-v-ef6eff02]{background:#007bff}.platform-badge[data-v-ef6eff02]{padding:4px;background:#fff;color:#fff;border-radius:4px;font-size:12px;display:flex;align-items:center;justify-content:center;border:1px solid #e9ecef}.platform-icon[data-v-ef6eff02]{width:16px;height:16px;object-fit:contain}.link-meta[data-v-ef6eff02]{display:flex;justify-content:space-between;align-items:center;width:100%}.file-size[data-v-ef6eff02]{padding:2px 5px;border-radius:3px;font-size:10px;background:#e3f2fd!important;color:#1976d2!important;font-weight:500}.feature-tags[data-v-ef6eff02]{display:flex;gap:3px;flex-wrap:wrap;margin-left:auto}.feature-tag[data-v-ef6eff02]{padding:2px 5px;background:#007bff;color:#fff;border-radius:3px;font-size:10px;font-weight:700}.feature-tag.feature-4k[data-v-ef6eff02]{border:1px solid #eff524;background:#f6ff00;color:#232323}.feature-tag.feature-hdr[data-v-ef6eff02]{background:#ffe55a;color:#232323}.feature-tag.feature-dolby[data-v-ef6eff02]{background:#eaeaea;color:#121212;font-weight:300}.feature-tag.feature-subtitle[data-v-ef6eff02]{background:#cee2e8;color:#036;font-weight:300}.feature-tag.feature-flac[data-v-ef6eff02]{background:#ededed;color:#383838;font-weight:500}.feature-tag.feature-wav[data-v-ef6eff02]{background:#ffe3b3;color:#ce7f0d;font-weight:500}.link-content[data-v-ef6eff02]{margin-bottom:15px}.link-title-row[data-v-ef6eff02]{display:flex;align-items:center;justify-content:space-between;padding:5px 0;margin-bottom:8px;border-radius:4px;transition:background-color .2s ease}.link-title[data-v-ef6eff02]{font-weight:500;color:#333;flex:1;overflow:hidden;position:relative;padding-right:10px;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;max-height:2.8em;word-break:break-all;overflow-wrap:break-word}.link-title.expanded[data-v-ef6eff02]{display:block;-webkit-line-clamp:unset;max-height:none;white-space:normal;padding-right:10px;word-break:break-all;overflow-wrap:break-word}.link-title[data-v-ef6eff02]:after{content:"";position:absolute;top:0;right:0;width:100px;height:100%;background:linear-gradient(to right,transparent,#ffffff 85%);pointer-events:none;transition:opacity .3s ease}.link-title.expanded[data-v-ef6eff02]:after{opacity:0}.expand-arrow[data-v-ef6eff02]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#666;transition:transform .3s ease,color .2s ease}.expand-arrow[data-v-ef6eff02]:hover{color:#333}.expand-arrow.expanded[data-v-ef6eff02]{transform:rotate(180deg)}.link-details[data-v-ef6eff02]{margin-top:10px;animation:slideDown-ef6eff02 .3s ease forwards}@keyframes slideDown-ef6eff02{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.link-url[data-v-ef6eff02]{display:flex;align-items:center;gap:8px;margin-bottom:5px}.link-url a[data-v-ef6eff02]{color:#007bff;text-decoration:none;flex:1;word-break:break-all}.link-url span[data-v-ef6eff02]:hover{text-decoration:none;background-color:transparent}.extract-code-container[data-v-ef6eff02]{display:flex;background:#fff;align-items:center;gap:8px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px}.extract-code-container code[data-v-ef6eff02]{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;cursor:pointer;background:#eaeaea;padding:2px 6px;border-radius:6px;color:#3d3d3d}.extract-code-container code[data-v-ef6eff02]:hover{background:#e6e6e6}.copy-btn[data-v-ef6eff02]{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px}.copy-btn[data-v-ef6eff02]:hover{background:#f8f9fa}.link-actions[data-v-ef6eff02]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;margin-bottom:10px}.vote-section[data-v-ef6eff02]{display:flex;align-items:center;gap:10px}.vote-btn[data-v-ef6eff02]{background:transparent;border:none;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:4px}.vote-icon[data-v-ef6eff02]{width:12px;height:12px}.vote-icon.down-icon[data-v-ef6eff02]{transform:rotate(180deg)}.vote-btn[data-v-ef6eff02]:hover:not(:disabled){background:#e9ecef}.vote-btn[data-v-ef6eff02]:disabled{opacity:.6;cursor:not-allowed}.vote-btn.active.up[data-v-ef6eff02]{color:#155724}.vote-btn.active.down[data-v-ef6eff02]{color:#721c24}.vote-btn.pending[data-v-ef6eff02]{opacity:.7;position:relative}.pending-indicator[data-v-ef6eff02]{font-size:10px;margin-left:2px;animation:pulse-ef6eff02 1.5s ease-in-out infinite}@keyframes pulse-ef6eff02{0%,to{opacity:1}50%{opacity:.5}}.action-buttons[data-v-ef6eff02]{display:flex;gap:8px}.action-buttons button[data-v-ef6eff02]{padding:4px 8px;border:none;border-radius:6px;cursor:pointer;font-size:12px}.edit-btn[data-v-ef6eff02]{background:#ffc107;color:#212529}.edit-btn[data-v-ef6eff02]:hover{background:#e0a800}.modify-btn[data-v-ef6eff02]{width:48px;height:28px;background:#d4ecef66;color:#22899b}.modify-btn[data-v-ef6eff02]:hover{background:#d4ecef80}.delete-btn[data-v-ef6eff02]{width:48px;height:28px;background:#ffccd052;color:#e62e2e}.delete-btn[data-v-ef6eff02]:hover{background:#ffccd060}.delete-confirmation[data-v-ef6eff02]{text-align:center;padding:20px 0}.warning-icon[data-v-ef6eff02]{font-size:48px;margin-bottom:16px}.delete-confirmation p[data-v-ef6eff02]{margin:8px 0;font-size:16px}.warning-text[data-v-ef6eff02]{color:#dc3545;font-size:14px;font-weight:500}.delete-confirm-btn[data-v-ef6eff02]{background:#f8d7da!important;color:#dc3545!important;border:1px solid #f5c6cb!important;padding:8px 16px;border-radius:4px;cursor:pointer;margin-right:8px;font-weight:500}.delete-confirm-btn[data-v-ef6eff02]:hover:not(:disabled){background:#f8d7dad2!important;border:1px solid #f5c6cb!important}.delete-confirm-btn[data-v-ef6eff02]:disabled{background:#6c757d;cursor:not-allowed}.report-btn[data-v-ef6eff02]{width:48px;height:28px;background:#eee;color:#495057}.report-btn[data-v-ef6eff02]:hover{color:#495057;background:#e3e3e3}.link-footer[data-v-ef6eff02]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#666;border-top:1px solid #f0f0f0;padding-top:10px}.footer-left[data-v-ef6eff02]{display:flex;align-items:center;gap:8px}.footer-right[data-v-ef6eff02]{display:flex;align-items:center;gap:12px}.original-link[data-v-ef6eff02]{color:#007bff;text-decoration:none;font-size:12px}.original-link[data-v-ef6eff02]:hover{background-color:transparent}.report-count[data-v-ef6eff02]{color:#dc3545;font-weight:700}.empty-state[data-v-ef6eff02]{text-align:center;padding:40px;color:#666}.loading[data-v-ef6eff02]{text-align:center;padding:20px;color:#666}.error-message[data-v-ef6eff02]{background:#f8d7da;color:#721c24;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #f5c6cb}.success-message[data-v-ef6eff02]{background:#d4edda;color:#155724;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #c3e6cb}@media (max-width: 768px){.link-manager[data-v-ef6eff02]{padding:10px}.form-row[data-v-ef6eff02]{flex-direction:column;gap:10px}.filter-bar[data-v-ef6eff02]{flex-direction:column;gap:8px}.link-header[data-v-ef6eff02]{flex-wrap:wrap}.link-meta[data-v-ef6eff02]{margin-left:0;margin-top:5px}.link-actions[data-v-ef6eff02]{flex-direction:column;gap:10px;align-items:flex-start}}.modal-overlay[data-v-ef6eff02]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-ef6eff02]{background:#fff;border-radius:16px;width:90%;max-width:600px;max-height:90vh;box-shadow:0 4px 20px #00000026}.modal-header[data-v-ef6eff02]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;margin-bottom:20px}.modal-header h4[data-v-ef6eff02]{margin-left:10px;margin-bottom:0;color:#333;font-size:18px}.close-btn[data-v-ef6eff02]{background:#f5f5f5;border:none;font-size:24px;cursor:pointer;color:#999;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px}.close-btn[data-v-ef6eff02]:hover{background:#f5f5f5;color:#333}.modal-body[data-v-ef6eff02]{padding:0 20px 20px}.vote-section[data-v-ef6eff02]{width:100%}.input-wrapper textarea[data-v-ef6eff02]{width:100%;border:none;outline:none;font-size:14px;font-family:inherit;resize:vertical;min-height:80px;background:transparent}.input-wrapper[data-v-ef6eff02]:has(textarea):focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper textarea[data-v-ef6eff02]::placeholder{color:#999}.pagination[data-v-ef6eff02]{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:10px;padding:10px;background:#fff;border-radius:8px}.pagination-btn[data-v-ef6eff02]{box-shadow:#00000008 4px 4px 20px;padding:8px 16px;border:1px solid rgb(242,242,242);background:#fff;color:#333;border-radius:9999px;cursor:pointer;font-size:14px;transition:all .2s}.pagination-btn[data-v-ef6eff02]:hover:not(:disabled){background:#b3d8ff;color:#007bff;border-color:#b3d8ff}.pagination-btn[data-v-ef6eff02]:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;border-color:#ddd}.pagination-info[data-v-ef6eff02]{font-size:14px;color:#666;font-weight:500}.login-prompt[data-v-ef6eff02]{display:flex;justify-content:center;align-items:center;min-height:300px;padding:40px 20px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:12px;border:2px dashed #dee2e6;margin:20px 0}.login-prompt-content[data-v-ef6eff02]{text-align:center;max-width:400px}.login-icon[data-v-ef6eff02]{margin-bottom:20px;color:#6c757d;opacity:.8}.login-prompt h3[data-v-ef6eff02]{font-size:24px;font-weight:600;color:#495057;margin-bottom:12px;line-height:1.3}.login-prompt p[data-v-ef6eff02]{font-size:16px;color:#6c757d;margin-bottom:24px;line-height:1.5}.login-btn[data-v-ef6eff02]{border:1px solid rgb(242,242,242);background:#fff;color:#767676;border:none;padding:12px 32px;border-radius:25px;font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:#00000008 4px 4px 20px}.login-btn[data-v-ef6eff02]:hover{transform:translateY(-2px);box-shadow:#0000000f 4px 4px 20px}.login-btn[data-v-ef6eff02]:active{transform:translateY(0);box-shadow:0 2px 10px #007bff4d}.content-wrapper[data-v-578dbf54]{padding:16px}.movie-info[data-v-578dbf54]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:4px solid #00a1d6}.movie-title[data-v-578dbf54]{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.3}.movie-meta[data-v-578dbf54]{display:flex;gap:12px;align-items:center}.movie-meta .year[data-v-578dbf54]{background:#6c757d;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:500}.movie-meta .rating[data-v-578dbf54]{color:#ff6b35;font-weight:600;font-size:13px}.navigation-bar[data-v-578dbf54]{display:flex;border-bottom:1px solid #e0e0e0;margin-bottom:16px}.nav-btn[data-v-578dbf54]{flex:1;padding:12px 16px;border:none;background:none;cursor:pointer;font-size:14px;font-weight:500;color:#666;transition:all .2s;border-bottom:1px solid transparent}.nav-btn.active[data-v-578dbf54]{color:#00a1d6;border-bottom-color:#00a1d6}.tab-content[data-v-578dbf54]{min-height:200px}.tab-panel[data-v-578dbf54]{padding-top:16px 0}.tab-panel h4[data-v-578dbf54]{margin:0 0 12px;color:#333;font-size:16px;font-weight:600}.tab-panel p[data-v-578dbf54]{margin:0;color:#666;line-height:1.5}.sub-nav[data-v-578dbf54]{display:flex;gap:4px;margin-bottom:12px;padding:4px;background:#e9ecef;border-radius:6px}.sub-tab[data-v-578dbf54]{flex:1;padding:6px 8px;border:none;background:transparent;color:#666;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s;text-align:center}.sub-tab[data-v-578dbf54]:hover{background:#dee2e6;color:#495057}.sub-tab.active[data-v-578dbf54]{background:#007bff;color:#fff;font-weight:500}.sub-content[data-v-578dbf54]{margin-top:8px}.sub-tab-content[data-v-578dbf54]{padding:8px 0}.sub-tab-content p[data-v-578dbf54]{margin:4px 0;color:#666;font-size:12px}.no-subject[data-v-578dbf54]{text-align:center;padding:40px 20px;color:#666}.no-subject p[data-v-578dbf54]{margin:8px 0;line-height:1.5}.no-subject .hint[data-v-578dbf54]{font-size:12px;color:#999;font-style:italic}.hint-list[data-v-578dbf54]{color:#666;font-size:13px;margin:4px 0 0 16px;padding:0}.hint-list li[data-v-578dbf54]{margin:2px 0}.debug-panel[data-v-dba5723e]{position:fixed;top:20px;right:20px;width:400px;max-height:80vh;background:#fff;border:2px solid #007bff;border-radius:8px;box-shadow:0 4px 20px #0000004d;z-index:10000;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;overflow-y:auto}.debug-header[data-v-dba5723e]{background:#007bff;color:#fff;padding:10px 15px;display:flex;justify-content:space-between;align-items:center}.debug-header h3[data-v-dba5723e]{margin:0;font-size:16px}.close-btn[data-v-dba5723e]{background:none;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.debug-content[data-v-dba5723e]{padding:15px}.debug-section[data-v-dba5723e]{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #eee}.debug-section[data-v-dba5723e]:last-child{border-bottom:none;margin-bottom:0}.debug-section h4[data-v-dba5723e]{margin:0 0 10px;color:#333;font-size:14px}.debug-section h5[data-v-dba5723e]{margin:10px 0 5px;color:#666;font-size:12px}.status-item[data-v-dba5723e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px}.label[data-v-dba5723e]{font-weight:700;color:#555}.value[data-v-dba5723e]{color:#333;max-width:200px;word-break:break-all}.token[data-v-dba5723e]{font-family:monospace;font-size:10px}.status[data-v-dba5723e]{padding:2px 6px;border-radius:3px;font-size:11px;font-weight:700}.status.success[data-v-dba5723e]{background:#d4edda;color:#155724}.status.error[data-v-dba5723e]{background:#f8d7da;color:#721c24}.button-group[data-v-dba5723e]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.debug-btn[data-v-dba5723e]{padding:6px 12px;border:1px solid #007bff;background:#fff;color:#007bff;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.debug-btn[data-v-dba5723e]:hover{background:#007bff;color:#fff}.debug-btn.danger[data-v-dba5723e]{border-color:#dc3545;color:#dc3545}.debug-btn.danger[data-v-dba5723e]:hover{background:#dc3545;color:#fff}.test-result[data-v-dba5723e]{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:10px;margin-top:10px}.test-result pre[data-v-dba5723e]{margin:0;font-size:10px;white-space:pre-wrap;word-break:break-word}.headers-preview[data-v-dba5723e]{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:10px}.headers-preview code[data-v-dba5723e]{font-size:10px;white-space:pre-wrap;word-break:break-word}.update-notification-overlay[data-v-8ddffaa9]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.update-notification[data-v-8ddffaa9]{background:#fff;border-radius:12px;box-shadow:0 20px 40px #00000026;width:90%;max-width:480px;max-height:90vh;overflow-y:auto;animation:slideIn-8ddffaa9 .3s ease-out}@keyframes slideIn-8ddffaa9{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.notification-header[data-v-8ddffaa9]{display:flex;align-items:flex-start;padding:24px 24px 16px;border-bottom:1px solid #f0f0f0;position:relative}.header-icon[data-v-8ddffaa9]{flex-shrink:0;width:40px;height:40px;background:#e8f5e8;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16px}.header-content[data-v-8ddffaa9]{flex:1}.notification-title[data-v-8ddffaa9]{font-size:18px;font-weight:600;color:#333;margin:0 0 4px}.notification-subtitle[data-v-8ddffaa9]{font-size:14px;color:#666;margin:0}.close-btn[data-v-8ddffaa9]{position:absolute;top:20px;right:20px;width:32px;height:32px;border:none;background:#f5f5f5;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#666;transition:all .2s ease}.close-btn[data-v-8ddffaa9]:hover{background:#e0e0e0;color:#333}.version-info[data-v-8ddffaa9]{padding:16px 24px;background:#f8f9fa;margin:16px 24px 0;border-radius:8px}.version-row[data-v-8ddffaa9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.version-row[data-v-8ddffaa9]:last-child{margin-bottom:0}.version-label[data-v-8ddffaa9]{font-size:14px;color:#666;font-weight:500}.version-current[data-v-8ddffaa9]{font-size:14px;color:#666;font-family:monospace;background:#e9ecef;padding:2px 8px;border-radius:4px}.version-latest[data-v-8ddffaa9]{font-size:14px;color:#4caf50;font-family:monospace;font-weight:600;background:#e8f5e8;padding:2px 8px;border-radius:4px}.update-description[data-v-8ddffaa9]{padding:16px 24px}.description-title[data-v-8ddffaa9]{font-size:16px;font-weight:600;color:#333;margin:0 0 12px;display:flex;align-items:center;gap:8px}.description-title[data-v-8ddffaa9]:before{content:"";width:4px;height:16px;background:#4caf50;border-radius:2px}.description-content[data-v-8ddffaa9]{font-size:14px;color:#555;line-height:1.6;margin:0;max-height:120px;overflow-y:auto;padding:12px;background:#f8f9fa;border-radius:6px}.notification-actions[data-v-8ddffaa9]{padding:16px 24px 24px}.skip-option[data-v-8ddffaa9]{margin-bottom:16px}.skip-checkbox[data-v-8ddffaa9]{display:flex;align-items:center;cursor:pointer;font-size:14px;color:#666}.skip-checkbox input[type=checkbox][data-v-8ddffaa9]{display:none}.checkmark[data-v-8ddffaa9]{width:16px;height:16px;border:2px solid #ddd;border-radius:3px;margin-right:8px;position:relative;transition:all .2s ease}.skip-checkbox input[type=checkbox]:checked+.checkmark[data-v-8ddffaa9]{background:#4caf50;border-color:#4caf50}.skip-checkbox input[type=checkbox]:checked+.checkmark[data-v-8ddffaa9]:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.skip-text[data-v-8ddffaa9]{-webkit-user-select:none;user-select:none}.action-buttons[data-v-8ddffaa9]{display:flex;gap:12px;justify-content:flex-end}.btn[data-v-8ddffaa9]{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px;min-width:100px;justify-content:center}.btn[data-v-8ddffaa9]:disabled{cursor:not-allowed;opacity:.6}.btn-secondary[data-v-8ddffaa9]{background:#f5f5f5;color:#666}.btn-secondary[data-v-8ddffaa9]:hover:not(:disabled){background:#e0e0e0;color:#333}.btn-primary[data-v-8ddffaa9]{background:#4caf50;color:#fff}.btn-primary[data-v-8ddffaa9]:hover:not(:disabled){background:#45a049}.loading-spinner[data-v-8ddffaa9]{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin-8ddffaa9 1s linear infinite}@keyframes spin-8ddffaa9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.update-note[data-v-8ddffaa9]{padding:16px 24px 24px;border-top:1px solid #f0f0f0;margin-top:16px}.note-text[data-v-8ddffaa9]{font-size:12px;color:#666;margin:0;display:flex;align-items:center;gap:6px;line-height:1.4}@media (max-width: 480px){.update-notification[data-v-8ddffaa9]{width:95%;margin:20px}.notification-header[data-v-8ddffaa9]{padding:20px 20px 16px}.version-info[data-v-8ddffaa9],.update-description[data-v-8ddffaa9],.notification-actions[data-v-8ddffaa9],.update-note[data-v-8ddffaa9]{padding-left:20px;padding-right:20px}.action-buttons[data-v-8ddffaa9]{flex-direction:column}.btn[data-v-8ddffaa9]{width:100%}}@media (prefers-color-scheme: dark){.update-notification[data-v-8ddffaa9]{background:#2d3748;color:#e2e8f0}.notification-header[data-v-8ddffaa9]{border-bottom-color:#4a5568}.notification-title[data-v-8ddffaa9]{color:#e2e8f0}.notification-subtitle[data-v-8ddffaa9]{color:#a0aec0}.close-btn[data-v-8ddffaa9]{background:#4a5568;color:#a0aec0}.close-btn[data-v-8ddffaa9]:hover{background:#718096;color:#e2e8f0}.version-info[data-v-8ddffaa9]{background:#4a5568}.version-current[data-v-8ddffaa9]{background:#718096;color:#e2e8f0}.version-latest[data-v-8ddffaa9]{background:#2f855a;color:#c6f6d5}.update-description p[data-v-8ddffaa9]{color:#cbd5e0}.description-title[data-v-8ddffaa9]{color:#e2e8f0}.description-content[data-v-8ddffaa9]{color:#cbd5e0;background:#4a5568}.skip-checkbox[data-v-8ddffaa9]{color:#a0aec0}.checkmark[data-v-8ddffaa9]{border-color:#718096}.btn-secondary[data-v-8ddffaa9]{background:#4a5568;color:#a0aec0}.btn-secondary[data-v-8ddffaa9]:hover:not(:disabled){background:#718096;color:#e2e8f0}.update-note[data-v-8ddffaa9]{border-top-color:#4a5568}.note-text[data-v-8ddffaa9]{color:#a0aec0}}.custom-window[data-v-7b8c4245]{position:relative;width:100%;max-width:350px;min-height:200px;background:#fff;border:1px solid rgba(239,239,239,1);border-radius:16px;box-shadow:0 2px 12px #0000000d;margin-bottom:15px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.window-header[data-v-7b8c4245]{color:#545454;padding:6px 12px;border-radius:0 0 8px 8px;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none}.window-title[data-v-7b8c4245]{font-weight:300;font-size:12px}.close-btn[data-v-7b8c4245]{background:none;border:none;color:#fff;font-size:16px;cursor:pointer;padding:0;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.close-btn[data-v-7b8c4245]:hover{background-color:#fff3}.window-content[data-v-7b8c4245]{padding:0}#douban-trigger-btn:hover{background:#005a1a!important;transform:translateY(-1px);box-shadow:0 2px 8px #00772280}#douban-custom-window{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}#douban-custom-window ::-webkit-scrollbar{width:6px}#douban-custom-window ::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}#douban-custom-window ::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}#douban-custom-window ::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@keyframes fadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.custom-window{animation:fadeIn .3s ease-out}.window-content>*{animation:slideIn .4s ease-out}@media (max-width: 480px){.custom-window{width:90vw!important;left:5vw!important}.stats-grid{grid-template-columns:1fr!important}.action-section{flex-direction:column}.action-btn{width:100%}}@media (prefers-color-scheme: dark){.custom-window{background:#2d3748;border-color:#4a5568;color:#e2e8f0}.window-content h3,.window-content h4{color:#e2e8f0}.window-content p{color:#cbd5e0}.feature-section li,.info-section{background:#4a5568;color:#cbd5e0}.info-item strong{color:#e2e8f0}}select option{color:#666;background-color:#fff;padding:8px 12px;border-radius:6px;margin:2px 0;transition:background-color .2s ease}select option:hover{background-color:#f5f5f5}select{border-radius:6px;padding:8px 12px}@media (prefers-color-scheme: dark){select option{color:#a0a0a0;background-color:#2d3748}select option:hover{background-color:#718096;color:#f7fafc}}
`;
    document.head.appendChild(style);
})();

(function(){"use strict";(function(){"use strict";/**
* @vue/shared v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**//*! #__NO_SIDE_EFFECTS__ */function ao(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ie={},zt=[],ot=()=>{},Hn=()=>!1,Es=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),uo=e=>e.startsWith("onUpdate:"),Me=Object.assign,co=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Gn=Object.prototype.hasOwnProperty,se=(e,t)=>Gn.call(e,t),z=Array.isArray,qt=e=>os(e)==="[object Map]",As=e=>os(e)==="[object Set]",Ko=e=>os(e)==="[object Date]",K=e=>typeof e=="function",ge=e=>typeof e=="string",lt=e=>typeof e=="symbol",fe=e=>e!==null&&typeof e=="object",Wo=e=>(fe(e)||K(e))&&K(e.then)&&K(e.catch),Jo=Object.prototype.toString,os=e=>Jo.call(e),Kn=e=>os(e).slice(8,-1),Qo=e=>os(e)==="[object Object]",fo=e=>ge(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ls=ao(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Vs=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Wn=/-(\w)/g,wt=Vs(e=>e.replace(Wn,(t,s)=>s?s.toUpperCase():"")),Jn=/\B([A-Z])/g,At=Vs(e=>e.replace(Jn,"-$1").toLowerCase()),Yo=Vs(e=>e.charAt(0).toUpperCase()+e.slice(1)),po=Vs(e=>e?`on${Yo(e)}`:""),kt=(e,t)=>!Object.is(e,t),Is=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},ho=(e,t,s,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:s})},mo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Zo;const Ms=()=>Zo||(Zo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ht(e){if(z(e)){const t={};for(let s=0;s<e.length;s++){const o=e[s],l=ge(o)?Xn(o):Ht(o);if(l)for(const n in l)t[n]=l[n]}return t}else if(ge(e)||fe(e))return e}const Qn=/;(?![^(]*\))/g,Yn=/:([^]+)/,Zn=/\/\*[^]*?\*\//g;function Xn(e){const t={};return e.replace(Zn,"").split(Qn).forEach(s=>{if(s){const o=s.split(Yn);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function ke(e){let t="";if(ge(e))t=e;else if(z(e))for(let s=0;s<e.length;s++){const o=ke(e[s]);o&&(t+=o+" ")}else if(fe(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const er=ao("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Xo(e){return!!e||e===""}function tr(e,t){if(e.length!==t.length)return!1;let s=!0;for(let o=0;s&&o<e.length;o++)s=$s(e[o],t[o]);return s}function $s(e,t){if(e===t)return!0;let s=Ko(e),o=Ko(t);if(s||o)return s&&o?e.getTime()===t.getTime():!1;if(s=lt(e),o=lt(t),s||o)return e===t;if(s=z(e),o=z(t),s||o)return s&&o?tr(e,t):!1;if(s=fe(e),o=fe(t),s||o){if(!s||!o)return!1;const l=Object.keys(e).length,n=Object.keys(t).length;if(l!==n)return!1;for(const r in e){const i=e.hasOwnProperty(r),u=t.hasOwnProperty(r);if(i&&!u||!i&&u||!$s(e[r],t[r]))return!1}}return String(e)===String(t)}function el(e,t){return e.findIndex(s=>$s(s,t))}const tl=e=>!!(e&&e.__v_isRef===!0),H=e=>ge(e)?e:e==null?"":z(e)||fe(e)&&(e.toString===Jo||!K(e.toString))?tl(e)?H(e.value):JSON.stringify(e,sl,2):String(e),sl=(e,t)=>tl(t)?sl(e,t.value):qt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[o,l],n)=>(s[go(o,n)+" =>"]=l,s),{})}:As(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>go(s))}:lt(t)?go(t):fe(t)&&!z(t)&&!Qo(t)?String(t):t,go=(e,t="")=>{var s;return lt(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
* @vue/reactivity v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Oe;class sr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Oe,!t&&Oe&&(this.index=(Oe.scopes||(Oe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=Oe;try{return Oe=this,t()}finally{Oe=s}}}on(){++this._on===1&&(this.prevScope=Oe,Oe=this)}off(){this._on>0&&--this._on===0&&(Oe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,o;for(s=0,o=this.effects.length;s<o;s++)this.effects[s].stop();for(this.effects.length=0,s=0,o=this.cleanups.length;s<o;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,o=this.scopes.length;s<o;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function or(){return Oe}let ce;const vo=new WeakSet;class ol{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Oe&&Oe.active&&Oe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,vo.has(this)&&(vo.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||nl(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,cl(this),rl(this);const t=ce,s=Xe;ce=this,Xe=!0;try{return this.fn()}finally{il(this),ce=t,Xe=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)wo(t);this.deps=this.depsTail=void 0,cl(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?vo.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){yo(this)&&this.run()}get dirty(){return yo(this)}}let ll=0,ns,rs;function nl(e,t=!1){if(e.flags|=8,t){e.next=rs,rs=e;return}e.next=ns,ns=e}function _o(){ll++}function bo(){if(--ll>0)return;if(rs){let t=rs;for(rs=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;ns;){let t=ns;for(ns=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=s}}if(e)throw e}function rl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function il(e){let t,s=e.depsTail,o=s;for(;o;){const l=o.prevDep;o.version===-1?(o===s&&(s=l),wo(o),lr(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=l}e.deps=t,e.depsTail=s}function yo(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(al(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function al(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===is)||(e.globalVersion=is,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!yo(e))))return;e.flags|=2;const t=e.dep,s=ce,o=Xe;ce=e,Xe=!0;try{rl(e);const l=e.fn(e._value);(t.version===0||kt(l,e._value))&&(e.flags|=128,e._value=l,t.version++)}catch(l){throw t.version++,l}finally{ce=s,Xe=o,il(e),e.flags&=-3}}function wo(e,t=!1){const{dep:s,prevSub:o,nextSub:l}=e;if(o&&(o.nextSub=l,e.prevSub=void 0),l&&(l.prevSub=o,e.nextSub=void 0),s.subs===e&&(s.subs=o,!o&&s.computed)){s.computed.flags&=-5;for(let n=s.computed.deps;n;n=n.nextDep)wo(n,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function lr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Xe=!0;const ul=[];function nt(){ul.push(Xe),Xe=!1}function rt(){const e=ul.pop();Xe=e===void 0?!0:e}function cl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ce;ce=void 0;try{t()}finally{ce=s}}}let is=0;class nr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ko{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Xe||ce===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ce)s=this.activeLink=new nr(ce,this),ce.deps?(s.prevDep=ce.depsTail,ce.depsTail.nextDep=s,ce.depsTail=s):ce.deps=ce.depsTail=s,dl(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const o=s.nextDep;o.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=o),s.prevDep=ce.depsTail,s.nextDep=void 0,ce.depsTail.nextDep=s,ce.depsTail=s,ce.deps===s&&(ce.deps=o)}return s}trigger(t){this.version++,is++,this.notify(t)}notify(t){_o();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{bo()}}}function dl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)dl(o)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const xo=new WeakMap,Vt=Symbol(""),Co=Symbol(""),as=Symbol("");function Ae(e,t,s){if(Xe&&ce){let o=xo.get(e);o||xo.set(e,o=new Map);let l=o.get(s);l||(o.set(s,l=new ko),l.map=o,l.key=s),l.track()}}function dt(e,t,s,o,l,n){const r=xo.get(e);if(!r){is++;return}const i=u=>{u&&u.trigger()};if(_o(),t==="clear")r.forEach(i);else{const u=z(e),h=u&&fo(s);if(u&&s==="length"){const d=Number(o);r.forEach((v,x)=>{(x==="length"||x===as||!lt(x)&&x>=d)&&i(v)})}else switch((s!==void 0||r.has(void 0))&&i(r.get(s)),h&&i(r.get(as)),t){case"add":u?h&&i(r.get("length")):(i(r.get(Vt)),qt(e)&&i(r.get(Co)));break;case"delete":u||(i(r.get(Vt)),qt(e)&&i(r.get(Co)));break;case"set":qt(e)&&i(r.get(Vt));break}}bo()}function Gt(e){const t=ee(e);return t===e?t:(Ae(t,"iterate",as),He(e)?t:t.map(Te))}function Us(e){return Ae(e=ee(e),"iterate",as),e}const rr={__proto__:null,[Symbol.iterator](){return So(this,Symbol.iterator,Te)},concat(...e){return Gt(this).concat(...e.map(t=>z(t)?Gt(t):t))},entries(){return So(this,"entries",e=>(e[1]=Te(e[1]),e))},every(e,t){return ft(this,"every",e,t,void 0,arguments)},filter(e,t){return ft(this,"filter",e,t,s=>s.map(Te),arguments)},find(e,t){return ft(this,"find",e,t,Te,arguments)},findIndex(e,t){return ft(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ft(this,"findLast",e,t,Te,arguments)},findLastIndex(e,t){return ft(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ft(this,"forEach",e,t,void 0,arguments)},includes(...e){return To(this,"includes",e)},indexOf(...e){return To(this,"indexOf",e)},join(e){return Gt(this).join(e)},lastIndexOf(...e){return To(this,"lastIndexOf",e)},map(e,t){return ft(this,"map",e,t,void 0,arguments)},pop(){return us(this,"pop")},push(...e){return us(this,"push",e)},reduce(e,...t){return fl(this,"reduce",e,t)},reduceRight(e,...t){return fl(this,"reduceRight",e,t)},shift(){return us(this,"shift")},some(e,t){return ft(this,"some",e,t,void 0,arguments)},splice(...e){return us(this,"splice",e)},toReversed(){return Gt(this).toReversed()},toSorted(e){return Gt(this).toSorted(e)},toSpliced(...e){return Gt(this).toSpliced(...e)},unshift(...e){return us(this,"unshift",e)},values(){return So(this,"values",Te)}};function So(e,t,s){const o=Us(e),l=o[t]();return o!==e&&!He(e)&&(l._next=l.next,l.next=()=>{const n=l._next();return n.value&&(n.value=s(n.value)),n}),l}const ir=Array.prototype;function ft(e,t,s,o,l,n){const r=Us(e),i=r!==e&&!He(e),u=r[t];if(u!==ir[t]){const v=u.apply(e,n);return i?Te(v):v}let h=s;r!==e&&(i?h=function(v,x){return s.call(this,Te(v),x,e)}:s.length>2&&(h=function(v,x){return s.call(this,v,x,e)}));const d=u.call(r,h,o);return i&&l?l(d):d}function fl(e,t,s,o){const l=Us(e);let n=s;return l!==e&&(He(e)?s.length>3&&(n=function(r,i,u){return s.call(this,r,i,u,e)}):n=function(r,i,u){return s.call(this,r,Te(i),u,e)}),l[t](n,...o)}function To(e,t,s){const o=ee(e);Ae(o,"iterate",as);const l=o[t](...s);return(l===-1||l===!1)&&Ao(s[0])?(s[0]=ee(s[0]),o[t](...s)):l}function us(e,t,s=[]){nt(),_o();const o=ee(e)[t].apply(e,s);return bo(),rt(),o}const ar=ao("__proto__,__v_isRef,__isVue"),pl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(lt));function ur(e){lt(e)||(e=String(e));const t=ee(this);return Ae(t,"has",e),t.hasOwnProperty(e)}class hl{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,o){if(s==="__v_skip")return t.__v_skip;const l=this._isReadonly,n=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return n;if(s==="__v_raw")return o===(l?n?yl:bl:n?_l:vl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const r=z(t);if(!l){let u;if(r&&(u=rr[s]))return u;if(s==="hasOwnProperty")return ur}const i=Reflect.get(t,s,Ee(t)?t:o);return(lt(s)?pl.has(s):ar(s))||(l||Ae(t,"get",s),n)?i:Ee(i)?r&&fo(s)?i:i.value:fe(i)?l?wl(i):It(i):i}}class ml extends hl{constructor(t=!1){super(!1,t)}set(t,s,o,l){let n=t[s];if(!this._isShallow){const u=xt(n);if(!He(o)&&!xt(o)&&(n=ee(n),o=ee(o)),!z(t)&&Ee(n)&&!Ee(o))return u?!1:(n.value=o,!0)}const r=z(t)&&fo(s)?Number(s)<t.length:se(t,s),i=Reflect.set(t,s,o,Ee(t)?t:l);return t===ee(l)&&(r?kt(o,n)&&dt(t,"set",s,o):dt(t,"add",s,o)),i}deleteProperty(t,s){const o=se(t,s);t[s];const l=Reflect.deleteProperty(t,s);return l&&o&&dt(t,"delete",s,void 0),l}has(t,s){const o=Reflect.has(t,s);return(!lt(s)||!pl.has(s))&&Ae(t,"has",s),o}ownKeys(t){return Ae(t,"iterate",z(t)?"length":Vt),Reflect.ownKeys(t)}}class gl extends hl{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const cr=new ml,dr=new gl,fr=new ml(!0),pr=new gl(!0),Eo=e=>e,Ps=e=>Reflect.getPrototypeOf(e);function hr(e,t,s){return function(...o){const l=this.__v_raw,n=ee(l),r=qt(n),i=e==="entries"||e===Symbol.iterator&&r,u=e==="keys"&&r,h=l[e](...o),d=s?Eo:t?Os:Te;return!t&&Ae(n,"iterate",u?Co:Vt),{next(){const{value:v,done:x}=h.next();return x?{value:v,done:x}:{value:i?[d(v[0]),d(v[1])]:d(v),done:x}},[Symbol.iterator](){return this}}}}function Ls(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function mr(e,t){const s={get(l){const n=this.__v_raw,r=ee(n),i=ee(l);e||(kt(l,i)&&Ae(r,"get",l),Ae(r,"get",i));const{has:u}=Ps(r),h=t?Eo:e?Os:Te;if(u.call(r,l))return h(n.get(l));if(u.call(r,i))return h(n.get(i));n!==r&&n.get(l)},get size(){const l=this.__v_raw;return!e&&Ae(ee(l),"iterate",Vt),Reflect.get(l,"size",l)},has(l){const n=this.__v_raw,r=ee(n),i=ee(l);return e||(kt(l,i)&&Ae(r,"has",l),Ae(r,"has",i)),l===i?n.has(l):n.has(l)||n.has(i)},forEach(l,n){const r=this,i=r.__v_raw,u=ee(i),h=t?Eo:e?Os:Te;return!e&&Ae(u,"iterate",Vt),i.forEach((d,v)=>l.call(n,h(d),h(v),r))}};return Me(s,e?{add:Ls("add"),set:Ls("set"),delete:Ls("delete"),clear:Ls("clear")}:{add(l){!t&&!He(l)&&!xt(l)&&(l=ee(l));const n=ee(this);return Ps(n).has.call(n,l)||(n.add(l),dt(n,"add",l,l)),this},set(l,n){!t&&!He(n)&&!xt(n)&&(n=ee(n));const r=ee(this),{has:i,get:u}=Ps(r);let h=i.call(r,l);h||(l=ee(l),h=i.call(r,l));const d=u.call(r,l);return r.set(l,n),h?kt(n,d)&&dt(r,"set",l,n):dt(r,"add",l,n),this},delete(l){const n=ee(this),{has:r,get:i}=Ps(n);let u=r.call(n,l);u||(l=ee(l),u=r.call(n,l)),i&&i.call(n,l);const h=n.delete(l);return u&&dt(n,"delete",l,void 0),h},clear(){const l=ee(this),n=l.size!==0,r=l.clear();return n&&dt(l,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=hr(l,e,t)}),s}function Ds(e,t){const s=mr(e,t);return(o,l,n)=>l==="__v_isReactive"?!e:l==="__v_isReadonly"?e:l==="__v_raw"?o:Reflect.get(se(s,l)&&l in o?s:o,l,n)}const gr={get:Ds(!1,!1)},vr={get:Ds(!1,!0)},_r={get:Ds(!0,!1)},br={get:Ds(!0,!0)},vl=new WeakMap,_l=new WeakMap,bl=new WeakMap,yl=new WeakMap;function yr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function wr(e){return e.__v_skip||!Object.isExtensible(e)?0:yr(Kn(e))}function It(e){return xt(e)?e:Fs(e,!1,cr,gr,vl)}function kr(e){return Fs(e,!1,fr,vr,_l)}function wl(e){return Fs(e,!0,dr,_r,bl)}function Wf(e){return Fs(e,!0,pr,br,yl)}function Fs(e,t,s,o,l){if(!fe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=wr(e);if(n===0)return e;const r=l.get(e);if(r)return r;const i=new Proxy(e,n===2?o:s);return l.set(e,i),i}function Kt(e){return xt(e)?Kt(e.__v_raw):!!(e&&e.__v_isReactive)}function xt(e){return!!(e&&e.__v_isReadonly)}function He(e){return!!(e&&e.__v_isShallow)}function Ao(e){return e?!!e.__v_raw:!1}function ee(e){const t=e&&e.__v_raw;return t?ee(t):e}function xr(e){return!se(e,"__v_skip")&&Object.isExtensible(e)&&ho(e,"__v_skip",!0),e}const Te=e=>fe(e)?It(e):e,Os=e=>fe(e)?wl(e):e;function Ee(e){return e?e.__v_isRef===!0:!1}function D(e){return Cr(e,!1)}function Cr(e,t){return Ee(e)?e:new Sr(e,t)}class Sr{constructor(t,s){this.dep=new ko,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:ee(t),this._value=s?t:Te(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,o=this.__v_isShallow||He(t)||xt(t);t=o?t:ee(t),kt(t,s)&&(this._rawValue=t,this._value=o?t:Te(t),this.dep.trigger())}}function Tr(e){return Ee(e)?e.value:e}const Er={get:(e,t,s)=>t==="__v_raw"?e:Tr(Reflect.get(e,t,s)),set:(e,t,s,o)=>{const l=e[t];return Ee(l)&&!Ee(s)?(l.value=s,!0):Reflect.set(e,t,s,o)}};function kl(e){return Kt(e)?e:new Proxy(e,Er)}class Ar{constructor(t,s,o){this.fn=t,this.setter=s,this._value=void 0,this.dep=new ko(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=is-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return nl(this,!0),!0}get value(){const t=this.dep.track();return al(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Vr(e,t,s=!1){let o,l;return K(e)?o=e:(o=e.get,l=e.set),new Ar(o,l,s)}const Rs={},Bs=new WeakMap;let Mt;function Ir(e,t=!1,s=Mt){if(s){let o=Bs.get(s);o||Bs.set(s,o=[]),o.push(e)}}function Mr(e,t,s=ie){const{immediate:o,deep:l,once:n,scheduler:r,augmentJob:i,call:u}=s,h=O=>l?O:He(O)||l===!1||l===0?pt(O,1):pt(O);let d,v,x,y,k=!1,w=!1;if(Ee(e)?(v=()=>e.value,k=He(e)):Kt(e)?(v=()=>h(e),k=!0):z(e)?(w=!0,k=e.some(O=>Kt(O)||He(O)),v=()=>e.map(O=>{if(Ee(O))return O.value;if(Kt(O))return h(O);if(K(O))return u?u(O,2):O()})):K(e)?t?v=u?()=>u(e,2):e:v=()=>{if(x){nt();try{x()}finally{rt()}}const O=Mt;Mt=d;try{return u?u(e,3,[y]):e(y)}finally{Mt=O}}:v=ot,t&&l){const O=v,ue=l===!0?1/0:l;v=()=>pt(O(),ue)}const _=or(),j=()=>{d.stop(),_&&_.active&&co(_.effects,d)};if(n&&t){const O=t;t=(...ue)=>{O(...ue),j()}}let G=w?new Array(e.length).fill(Rs):Rs;const J=O=>{if(!(!(d.flags&1)||!d.dirty&&!O))if(t){const ue=d.run();if(l||k||(w?ue.some((Le,Ie)=>kt(Le,G[Ie])):kt(ue,G))){x&&x();const Le=Mt;Mt=d;try{const Ie=[ue,G===Rs?void 0:w&&G[0]===Rs?[]:G,y];G=ue,u?u(t,3,Ie):t(...Ie)}finally{Mt=Le}}}else d.run()};return i&&i(J),d=new ol(v),d.scheduler=r?()=>r(J,!1):J,y=O=>Ir(O,!1,d),x=d.onStop=()=>{const O=Bs.get(d);if(O){if(u)u(O,4);else for(const ue of O)ue();Bs.delete(d)}},t?o?J(!0):G=d.run():r?r(J.bind(null,!0),!0):d.run(),j.pause=d.pause.bind(d),j.resume=d.resume.bind(d),j.stop=j,j}function pt(e,t=1/0,s){if(t<=0||!fe(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,Ee(e))pt(e.value,t,s);else if(z(e))for(let o=0;o<e.length;o++)pt(e[o],t,s);else if(As(e)||qt(e))e.forEach(o=>{pt(o,t,s)});else if(Qo(e)){for(const o in e)pt(e[o],t,s);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&pt(e[o],t,s)}return e}/**
* @vue/runtime-core v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const cs=[];let Vo=!1;function Jf(e,...t){if(Vo)return;Vo=!0,nt();const s=cs.length?cs[cs.length-1].component:null,o=s&&s.appContext.config.warnHandler,l=$r();if(o)Wt(o,s,11,[e+t.map(n=>{var r,i;return(i=(r=n.toString)==null?void 0:r.call(n))!=null?i:JSON.stringify(n)}).join(""),s&&s.proxy,l.map(({vnode:n})=>`at <${mn(s,n.type)}>`).join(`
`),l]);else{const n=[`[Vue warn]: ${e}`,...t];l.length&&n.push(`
`,...Ur(l)),console.warn(...n)}rt(),Vo=!1}function $r(){let e=cs[cs.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function Ur(e){const t=[];return e.forEach((s,o)=>{t.push(...o===0?[]:[`
`],...Pr(s))}),t}function Pr({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,l=` at <${mn(e.component,e.type,o)}`,n=">"+s;return e.props?[l,...Lr(e.props),n]:[l+n]}function Lr(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(o=>{t.push(...xl(o,e[o]))}),s.length>3&&t.push(" ..."),t}function xl(e,t,s){return ge(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:Ee(t)?(t=xl(e,ee(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):K(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=ee(t),s?t:[`${e}=`,t])}function Wt(e,t,s,o){try{return o?e(...o):e()}catch(l){js(l,t,s)}}function it(e,t,s,o){if(K(e)){const l=Wt(e,t,s,o);return l&&Wo(l)&&l.catch(n=>{js(n,t,s)}),l}if(z(e)){const l=[];for(let n=0;n<e.length;n++)l.push(it(e[n],t,s,o));return l}}function js(e,t,s,o=!0){const l=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:r}=t&&t.appContext.config||ie;if(t){let i=t.parent;const u=t.proxy,h=`https://vuejs.org/error-reference/#runtime-${s}`;for(;i;){const d=i.ec;if(d){for(let v=0;v<d.length;v++)if(d[v](e,u,h)===!1)return}i=i.parent}if(n){nt(),Wt(n,null,10,[e,u,h]),rt();return}}Dr(e,s,l,o,r)}function Dr(e,t,s,o=!0,l=!1){if(l)throw e;console.error(e)}const $e=[];let at=-1;const Jt=[];let Ct=null,Qt=0;const Cl=Promise.resolve();let Ns=null;function Sl(e){const t=Ns||Cl;return e?t.then(this?e.bind(this):e):t}function Fr(e){let t=at+1,s=$e.length;for(;t<s;){const o=t+s>>>1,l=$e[o],n=ds(l);n<e||n===e&&l.flags&2?t=o+1:s=o}return t}function Io(e){if(!(e.flags&1)){const t=ds(e),s=$e[$e.length-1];!s||!(e.flags&2)&&t>=ds(s)?$e.push(e):$e.splice(Fr(t),0,e),e.flags|=1,Tl()}}function Tl(){Ns||(Ns=Cl.then(Vl))}function Or(e){z(e)?Jt.push(...e):Ct&&e.id===-1?Ct.splice(Qt+1,0,e):e.flags&1||(Jt.push(e),e.flags|=1),Tl()}function El(e,t,s=at+1){for(;s<$e.length;s++){const o=$e[s];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;$e.splice(s,1),s--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function Al(e){if(Jt.length){const t=[...new Set(Jt)].sort((s,o)=>ds(s)-ds(o));if(Jt.length=0,Ct){Ct.push(...t);return}for(Ct=t,Qt=0;Qt<Ct.length;Qt++){const s=Ct[Qt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ct=null,Qt=0}}const ds=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Vl(e){try{for(at=0;at<$e.length;at++){const t=$e[at];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Wt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;at<$e.length;at++){const t=$e[at];t&&(t.flags&=-2)}at=-1,$e.length=0,Al(),Ns=null,($e.length||Jt.length)&&Vl()}}let Ge=null,Il=null;function zs(e){const t=Ge;return Ge=e,Il=e&&e.type.__scopeId||null,t}function Rr(e,t=Ge,s){if(!t||e._n)return e;const o=(...l)=>{o._d&&nn(-1);const n=zs(t);let r;try{r=e(...l)}finally{zs(n),o._d&&nn(1)}return r};return o._n=!0,o._c=!0,o._d=!0,o}function oe(e,t){if(Ge===null)return e;const s=Xs(Ge),o=e.dirs||(e.dirs=[]);for(let l=0;l<t.length;l++){let[n,r,i,u=ie]=t[l];n&&(K(n)&&(n={mounted:n,updated:n}),n.deep&&pt(r),o.push({dir:n,instance:s,value:r,oldValue:void 0,arg:i,modifiers:u}))}return e}function $t(e,t,s,o){const l=e.dirs,n=t&&t.dirs;for(let r=0;r<l.length;r++){const i=l[r];n&&(i.oldValue=n[r].value);let u=i.dir[o];u&&(nt(),it(u,s,8,[e.el,i,e,t]),rt())}}const Br=Symbol("_vte"),jr=e=>e.__isTeleport;function Mo(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mo(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ml(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function fs(e,t,s,o,l=!1){if(z(e)){e.forEach((k,w)=>fs(k,t&&(z(t)?t[w]:t),s,o,l));return}if(ps(o)&&!l){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&fs(e,t,s,o.component.subTree);return}const n=o.shapeFlag&4?Xs(o.component):o.el,r=l?null:n,{i,r:u}=e,h=t&&t.r,d=i.refs===ie?i.refs={}:i.refs,v=i.setupState,x=ee(v),y=v===ie?()=>!1:k=>se(x,k);if(h!=null&&h!==u&&(ge(h)?(d[h]=null,y(h)&&(v[h]=null)):Ee(h)&&(h.value=null)),K(u))Wt(u,i,12,[r,d]);else{const k=ge(u),w=Ee(u);if(k||w){const _=()=>{if(e.f){const j=k?y(u)?v[u]:d[u]:u.value;l?z(j)&&co(j,n):z(j)?j.includes(n)||j.push(n):k?(d[u]=[n],y(u)&&(v[u]=d[u])):(u.value=[n],e.k&&(d[e.k]=u.value))}else k?(d[u]=r,y(u)&&(v[u]=r)):w&&(u.value=r,e.k&&(d[e.k]=r))};r?(_.id=-1,Be(_,s)):_()}}}Ms().requestIdleCallback,Ms().cancelIdleCallback;const ps=e=>!!e.type.__asyncLoader,$l=e=>e.type.__isKeepAlive;function Nr(e,t){Ul(e,"a",t)}function zr(e,t){Ul(e,"da",t)}function Ul(e,t,s=Pe){const o=e.__wdc||(e.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return e()});if(qs(t,o,s),s){let l=s.parent;for(;l&&l.parent;)$l(l.parent.vnode)&&qr(o,t,s,l),l=l.parent}}function qr(e,t,s,o){const l=qs(t,e,o,!0);hs(()=>{co(o[t],l)},s)}function qs(e,t,s=Pe,o=!1){if(s){const l=s[e]||(s[e]=[]),n=t.__weh||(t.__weh=(...r)=>{nt();const i=ws(s),u=it(t,s,e,r);return i(),rt(),u});return o?l.unshift(n):l.push(n),n}}const ht=e=>(t,s=Pe)=>{(!ks||e==="sp")&&qs(e,(...o)=>t(...o),s)},Hr=ht("bm"),Yt=ht("m"),Gr=ht("bu"),Kr=ht("u"),Wr=ht("bum"),hs=ht("um"),Jr=ht("sp"),Qr=ht("rtg"),Yr=ht("rtc");function Zr(e,t=Pe){qs("ec",e,t)}const Xr=Symbol.for("v-ndc");function Hs(e,t,s,o){let l;const n=s,r=z(e);if(r||ge(e)){const i=r&&Kt(e);let u=!1,h=!1;i&&(u=!He(e),h=xt(e),e=Us(e)),l=new Array(e.length);for(let d=0,v=e.length;d<v;d++)l[d]=t(u?h?Os(Te(e[d])):Te(e[d]):e[d],d,void 0,n)}else if(typeof e=="number"){l=new Array(e);for(let i=0;i<e;i++)l[i]=t(i+1,i,void 0,n)}else if(fe(e))if(e[Symbol.iterator])l=Array.from(e,(i,u)=>t(i,u,void 0,n));else{const i=Object.keys(e);l=new Array(i.length);for(let u=0,h=i.length;u<h;u++){const d=i[u];l[u]=t(e[d],d,u,n)}}else l=[];return l}const $o=e=>e?fn(e)?Xs(e):$o(e.parent):null,ms=Me(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>$o(e.parent),$root:e=>$o(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Fl(e),$forceUpdate:e=>e.f||(e.f=()=>{Io(e.update)}),$nextTick:e=>e.n||(e.n=Sl.bind(e.proxy)),$watch:e=>wi.bind(e)}),Uo=(e,t)=>e!==ie&&!e.__isScriptSetup&&se(e,t),ei={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:o,data:l,props:n,accessCache:r,type:i,appContext:u}=e;let h;if(t[0]!=="$"){const y=r[t];if(y!==void 0)switch(y){case 1:return o[t];case 2:return l[t];case 4:return s[t];case 3:return n[t]}else{if(Uo(o,t))return r[t]=1,o[t];if(l!==ie&&se(l,t))return r[t]=2,l[t];if((h=e.propsOptions[0])&&se(h,t))return r[t]=3,n[t];if(s!==ie&&se(s,t))return r[t]=4,s[t];Po&&(r[t]=0)}}const d=ms[t];let v,x;if(d)return t==="$attrs"&&Ae(e.attrs,"get",""),d(e);if((v=i.__cssModules)&&(v=v[t]))return v;if(s!==ie&&se(s,t))return r[t]=4,s[t];if(x=u.config.globalProperties,se(x,t))return x[t]},set({_:e},t,s){const{data:o,setupState:l,ctx:n}=e;return Uo(l,t)?(l[t]=s,!0):o!==ie&&se(o,t)?(o[t]=s,!0):se(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(n[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:l,propsOptions:n}},r){let i;return!!s[r]||e!==ie&&se(e,r)||Uo(t,r)||(i=n[0])&&se(i,r)||se(o,r)||se(ms,r)||se(l.config.globalProperties,r)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:se(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Pl(e){return z(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Po=!0;function ti(e){const t=Fl(e),s=e.proxy,o=e.ctx;Po=!1,t.beforeCreate&&Ll(t.beforeCreate,e,"bc");const{data:l,computed:n,methods:r,watch:i,provide:u,inject:h,created:d,beforeMount:v,mounted:x,beforeUpdate:y,updated:k,activated:w,deactivated:_,beforeDestroy:j,beforeUnmount:G,destroyed:J,unmounted:O,render:ue,renderTracked:Le,renderTriggered:Ie,errorCaptured:de,serverPrefetch:me,expose:et,inheritAttrs:Qe,components:Re,directives:Ye,filters:N}=t;if(h&&si(h,o,null),r)for(const ne in r){const X=r[ne];K(X)&&(o[ne]=X.bind(s))}if(l){const ne=l.call(s,s);fe(ne)&&(e.data=It(ne))}if(Po=!0,n)for(const ne in n){const X=n[ne],vt=K(X)?X.bind(s,s):K(X.get)?X.get.bind(s,s):ot,Ot=!K(X)&&K(X.set)?X.set.bind(s):ot,tt=Ve({get:vt,set:Ot});Object.defineProperty(o,ne,{enumerable:!0,configurable:!0,get:()=>tt.value,set:De=>tt.value=De})}if(i)for(const ne in i)Dl(i[ne],o,s,ne);if(u){const ne=K(u)?u.call(s):u;Reflect.ownKeys(ne).forEach(X=>{ai(X,ne[X])})}d&&Ll(d,e,"c");function L(ne,X){z(X)?X.forEach(vt=>ne(vt.bind(s))):X&&ne(X.bind(s))}if(L(Hr,v),L(Yt,x),L(Gr,y),L(Kr,k),L(Nr,w),L(zr,_),L(Zr,de),L(Yr,Le),L(Qr,Ie),L(Wr,G),L(hs,O),L(Jr,me),z(et))if(et.length){const ne=e.exposed||(e.exposed={});et.forEach(X=>{Object.defineProperty(ne,X,{get:()=>s[X],set:vt=>s[X]=vt,enumerable:!0})})}else e.exposed||(e.exposed={});ue&&e.render===ot&&(e.render=ue),Qe!=null&&(e.inheritAttrs=Qe),Re&&(e.components=Re),Ye&&(e.directives=Ye),me&&Ml(e)}function si(e,t,s=ot){z(e)&&(e=Lo(e));for(const o in e){const l=e[o];let n;fe(l)?"default"in l?n=Ks(l.from||o,l.default,!0):n=Ks(l.from||o):n=Ks(l),Ee(n)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>n.value,set:r=>n.value=r}):t[o]=n}}function Ll(e,t,s){it(z(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,s)}function Dl(e,t,s,o){let l=o.includes(".")?en(s,o):()=>s[o];if(ge(e)){const n=t[e];K(n)&&Ke(l,n)}else if(K(e))Ke(l,e.bind(s));else if(fe(e))if(z(e))e.forEach(n=>Dl(n,t,s,o));else{const n=K(e.handler)?e.handler.bind(s):t[e.handler];K(n)&&Ke(l,n,e)}}function Fl(e){const t=e.type,{mixins:s,extends:o}=t,{mixins:l,optionsCache:n,config:{optionMergeStrategies:r}}=e.appContext,i=n.get(t);let u;return i?u=i:!l.length&&!s&&!o?u=t:(u={},l.length&&l.forEach(h=>Gs(u,h,r,!0)),Gs(u,t,r)),fe(t)&&n.set(t,u),u}function Gs(e,t,s,o=!1){const{mixins:l,extends:n}=t;n&&Gs(e,n,s,!0),l&&l.forEach(r=>Gs(e,r,s,!0));for(const r in t)if(!(o&&r==="expose")){const i=oi[r]||s&&s[r];e[r]=i?i(e[r],t[r]):t[r]}return e}const oi={data:Ol,props:Rl,emits:Rl,methods:gs,computed:gs,beforeCreate:Ue,created:Ue,beforeMount:Ue,mounted:Ue,beforeUpdate:Ue,updated:Ue,beforeDestroy:Ue,beforeUnmount:Ue,destroyed:Ue,unmounted:Ue,activated:Ue,deactivated:Ue,errorCaptured:Ue,serverPrefetch:Ue,components:gs,directives:gs,watch:ni,provide:Ol,inject:li};function Ol(e,t){return t?e?function(){return Me(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function li(e,t){return gs(Lo(e),Lo(t))}function Lo(e){if(z(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Ue(e,t){return e?[...new Set([].concat(e,t))]:t}function gs(e,t){return e?Me(Object.create(null),e,t):t}function Rl(e,t){return e?z(e)&&z(t)?[...new Set([...e,...t])]:Me(Object.create(null),Pl(e),Pl(t??{})):t}function ni(e,t){if(!e)return t;if(!t)return e;const s=Me(Object.create(null),e);for(const o in t)s[o]=Ue(e[o],t[o]);return s}function Bl(){return{app:null,config:{isNativeTag:Hn,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ri=0;function ii(e,t){return function(o,l=null){K(o)||(o=Me({},o)),l!=null&&!fe(l)&&(l=null);const n=Bl(),r=new WeakSet,i=[];let u=!1;const h=n.app={_uid:ri++,_component:o,_props:l,_container:null,_context:n,_instance:null,version:Hi,get config(){return n.config},set config(d){},use(d,...v){return r.has(d)||(d&&K(d.install)?(r.add(d),d.install(h,...v)):K(d)&&(r.add(d),d(h,...v))),h},mixin(d){return n.mixins.includes(d)||n.mixins.push(d),h},component(d,v){return v?(n.components[d]=v,h):n.components[d]},directive(d,v){return v?(n.directives[d]=v,h):n.directives[d]},mount(d,v,x){if(!u){const y=h._ceVNode||Q(o,l);return y.appContext=n,x===!0?x="svg":x===!1&&(x=void 0),e(y,d,x),u=!0,h._container=d,d.__vue_app__=h,Xs(y.component)}},onUnmount(d){i.push(d)},unmount(){u&&(it(i,h._instance,16),e(null,h._container),delete h._container.__vue_app__)},provide(d,v){return n.provides[d]=v,h},runWithContext(d){const v=Zt;Zt=h;try{return d()}finally{Zt=v}}};return h}}let Zt=null;function ai(e,t){if(Pe){let s=Pe.provides;const o=Pe.parent&&Pe.parent.provides;o===s&&(s=Pe.provides=Object.create(o)),s[e]=t}}function Ks(e,t,s=!1){const o=Di();if(o||Zt){let l=Zt?Zt._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(l&&e in l)return l[e];if(arguments.length>1)return s&&K(t)?t.call(o&&o.proxy):t}}const jl={},Nl=()=>Object.create(jl),zl=e=>Object.getPrototypeOf(e)===jl;function ui(e,t,s,o=!1){const l={},n=Nl();e.propsDefaults=Object.create(null),ql(e,t,l,n);for(const r in e.propsOptions[0])r in l||(l[r]=void 0);s?e.props=o?l:kr(l):e.type.props?e.props=l:e.props=n,e.attrs=n}function ci(e,t,s,o){const{props:l,attrs:n,vnode:{patchFlag:r}}=e,i=ee(l),[u]=e.propsOptions;let h=!1;if((o||r>0)&&!(r&16)){if(r&8){const d=e.vnode.dynamicProps;for(let v=0;v<d.length;v++){let x=d[v];if(Ws(e.emitsOptions,x))continue;const y=t[x];if(u)if(se(n,x))y!==n[x]&&(n[x]=y,h=!0);else{const k=wt(x);l[k]=Do(u,i,k,y,e,!1)}else y!==n[x]&&(n[x]=y,h=!0)}}}else{ql(e,t,l,n)&&(h=!0);let d;for(const v in i)(!t||!se(t,v)&&((d=At(v))===v||!se(t,d)))&&(u?s&&(s[v]!==void 0||s[d]!==void 0)&&(l[v]=Do(u,i,v,void 0,e,!0)):delete l[v]);if(n!==i)for(const v in n)(!t||!se(t,v))&&(delete n[v],h=!0)}h&&dt(e.attrs,"set","")}function ql(e,t,s,o){const[l,n]=e.propsOptions;let r=!1,i;if(t)for(let u in t){if(ls(u))continue;const h=t[u];let d;l&&se(l,d=wt(u))?!n||!n.includes(d)?s[d]=h:(i||(i={}))[d]=h:Ws(e.emitsOptions,u)||(!(u in o)||h!==o[u])&&(o[u]=h,r=!0)}if(n){const u=ee(s),h=i||ie;for(let d=0;d<n.length;d++){const v=n[d];s[v]=Do(l,u,v,h[v],e,!se(h,v))}}return r}function Do(e,t,s,o,l,n){const r=e[s];if(r!=null){const i=se(r,"default");if(i&&o===void 0){const u=r.default;if(r.type!==Function&&!r.skipFactory&&K(u)){const{propsDefaults:h}=l;if(s in h)o=h[s];else{const d=ws(l);o=h[s]=u.call(null,t),d()}}else o=u;l.ce&&l.ce._setProp(s,o)}r[0]&&(n&&!i?o=!1:r[1]&&(o===""||o===At(s))&&(o=!0))}return o}const di=new WeakMap;function Hl(e,t,s=!1){const o=s?di:t.propsCache,l=o.get(e);if(l)return l;const n=e.props,r={},i=[];let u=!1;if(!K(e)){const d=v=>{u=!0;const[x,y]=Hl(v,t,!0);Me(r,x),y&&i.push(...y)};!s&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!n&&!u)return fe(e)&&o.set(e,zt),zt;if(z(n))for(let d=0;d<n.length;d++){const v=wt(n[d]);Gl(v)&&(r[v]=ie)}else if(n)for(const d in n){const v=wt(d);if(Gl(v)){const x=n[d],y=r[v]=z(x)||K(x)?{type:x}:Me({},x),k=y.type;let w=!1,_=!0;if(z(k))for(let j=0;j<k.length;++j){const G=k[j],J=K(G)&&G.name;if(J==="Boolean"){w=!0;break}else J==="String"&&(_=!1)}else w=K(k)&&k.name==="Boolean";y[0]=w,y[1]=_,(w||se(y,"default"))&&i.push(v)}}const h=[r,i];return fe(e)&&o.set(e,h),h}function Gl(e){return e[0]!=="$"&&!ls(e)}const Fo=e=>e==="_"||e==="__"||e==="_ctx"||e==="$stable",Oo=e=>z(e)?e.map(ut):[ut(e)],fi=(e,t,s)=>{if(t._n)return t;const o=Rr((...l)=>Oo(t(...l)),s);return o._c=!1,o},Kl=(e,t,s)=>{const o=e._ctx;for(const l in e){if(Fo(l))continue;const n=e[l];if(K(n))t[l]=fi(l,n,o);else if(n!=null){const r=Oo(n);t[l]=()=>r}}},Wl=(e,t)=>{const s=Oo(t);e.slots.default=()=>s},Jl=(e,t,s)=>{for(const o in t)(s||!Fo(o))&&(e[o]=t[o])},pi=(e,t,s)=>{const o=e.slots=Nl();if(e.vnode.shapeFlag&32){const l=t.__;l&&ho(o,"__",l,!0);const n=t._;n?(Jl(o,t,s),s&&ho(o,"_",n,!0)):Kl(t,o)}else t&&Wl(e,t)},hi=(e,t,s)=>{const{vnode:o,slots:l}=e;let n=!0,r=ie;if(o.shapeFlag&32){const i=t._;i?s&&i===1?n=!1:Jl(l,t,s):(n=!t.$stable,Kl(t,l)),r=t}else t&&(Wl(e,t),r={default:1});if(n)for(const i in l)!Fo(i)&&r[i]==null&&delete l[i]},Be=Ai;function mi(e){return gi(e)}function gi(e,t){const s=Ms();s.__VUE__=!0;const{insert:o,remove:l,patchProp:n,createElement:r,createText:i,createComment:u,setText:h,setElementText:d,parentNode:v,nextSibling:x,setScopeId:y=ot,insertStaticContent:k}=e,w=(f,m,b,A=null,S=null,T=null,U=void 0,$=null,M=!!m.dynamicChildren)=>{if(f===m)return;f&&!ys(f,m)&&(A=_t(f),De(f,S,T,!0),f=null),m.patchFlag===-2&&(M=!1,m.dynamicChildren=null);const{type:E,ref:B,shapeFlag:P}=m;switch(E){case Js:_(f,m,b,A);break;case St:j(f,m,b,A);break;case Qs:f==null&&G(m,b,A,U);break;case ve:Re(f,m,b,A,S,T,U,$,M);break;default:P&1?ue(f,m,b,A,S,T,U,$,M):P&6?Ye(f,m,b,A,S,T,U,$,M):(P&64||P&128)&&E.process(f,m,b,A,S,T,U,$,M,jt)}B!=null&&S?fs(B,f&&f.ref,T,m||f,!m):B==null&&f&&f.ref!=null&&fs(f.ref,null,T,f,!0)},_=(f,m,b,A)=>{if(f==null)o(m.el=i(m.children),b,A);else{const S=m.el=f.el;m.children!==f.children&&h(S,m.children)}},j=(f,m,b,A)=>{f==null?o(m.el=u(m.children||""),b,A):m.el=f.el},G=(f,m,b,A)=>{[f.el,f.anchor]=k(f.children,m,b,A,f.el,f.anchor)},J=({el:f,anchor:m},b,A)=>{let S;for(;f&&f!==m;)S=x(f),o(f,b,A),f=S;o(m,b,A)},O=({el:f,anchor:m})=>{let b;for(;f&&f!==m;)b=x(f),l(f),f=b;l(m)},ue=(f,m,b,A,S,T,U,$,M)=>{m.type==="svg"?U="svg":m.type==="math"&&(U="mathml"),f==null?Le(m,b,A,S,T,U,$,M):me(f,m,S,T,U,$,M)},Le=(f,m,b,A,S,T,U,$)=>{let M,E;const{props:B,shapeFlag:P,transition:R,dirs:q}=f;if(M=f.el=r(f.type,T,B&&B.is,B),P&8?d(M,f.children):P&16&&de(f.children,M,null,A,S,Ro(f,T),U,$),q&&$t(f,null,A,"created"),Ie(M,f,f.scopeId,U,A),B){for(const re in B)re!=="value"&&!ls(re)&&n(M,re,null,B[re],T,A);"value"in B&&n(M,"value",null,B.value,T),(E=B.onVnodeBeforeMount)&&ct(E,A,f)}q&&$t(f,null,A,"beforeMount");const Y=vi(S,R);Y&&R.beforeEnter(M),o(M,m,b),((E=B&&B.onVnodeMounted)||Y||q)&&Be(()=>{E&&ct(E,A,f),Y&&R.enter(M),q&&$t(f,null,A,"mounted")},S)},Ie=(f,m,b,A,S)=>{if(b&&y(f,b),A)for(let T=0;T<A.length;T++)y(f,A[T]);if(S){let T=S.subTree;if(m===T||ln(T.type)&&(T.ssContent===m||T.ssFallback===m)){const U=S.vnode;Ie(f,U,U.scopeId,U.slotScopeIds,S.parent)}}},de=(f,m,b,A,S,T,U,$,M=0)=>{for(let E=M;E<f.length;E++){const B=f[E]=$?Tt(f[E]):ut(f[E]);w(null,B,m,b,A,S,T,U,$)}},me=(f,m,b,A,S,T,U)=>{const $=m.el=f.el;let{patchFlag:M,dynamicChildren:E,dirs:B}=m;M|=f.patchFlag&16;const P=f.props||ie,R=m.props||ie;let q;if(b&&Ut(b,!1),(q=R.onVnodeBeforeUpdate)&&ct(q,b,m,f),B&&$t(m,f,b,"beforeUpdate"),b&&Ut(b,!0),(P.innerHTML&&R.innerHTML==null||P.textContent&&R.textContent==null)&&d($,""),E?et(f.dynamicChildren,E,$,b,A,Ro(m,S),T):U||X(f,m,$,null,b,A,Ro(m,S),T,!1),M>0){if(M&16)Qe($,P,R,b,S);else if(M&2&&P.class!==R.class&&n($,"class",null,R.class,S),M&4&&n($,"style",P.style,R.style,S),M&8){const Y=m.dynamicProps;for(let re=0;re<Y.length;re++){const te=Y[re],ye=P[te],we=R[te];(we!==ye||te==="value")&&n($,te,ye,we,S,b)}}M&1&&f.children!==m.children&&d($,m.children)}else!U&&E==null&&Qe($,P,R,b,S);((q=R.onVnodeUpdated)||B)&&Be(()=>{q&&ct(q,b,m,f),B&&$t(m,f,b,"updated")},A)},et=(f,m,b,A,S,T,U)=>{for(let $=0;$<m.length;$++){const M=f[$],E=m[$],B=M.el&&(M.type===ve||!ys(M,E)||M.shapeFlag&198)?v(M.el):b;w(M,E,B,null,A,S,T,U,!0)}},Qe=(f,m,b,A,S)=>{if(m!==b){if(m!==ie)for(const T in m)!ls(T)&&!(T in b)&&n(f,T,m[T],null,S,A);for(const T in b){if(ls(T))continue;const U=b[T],$=m[T];U!==$&&T!=="value"&&n(f,T,$,U,S,A)}"value"in b&&n(f,"value",m.value,b.value,S)}},Re=(f,m,b,A,S,T,U,$,M)=>{const E=m.el=f?f.el:i(""),B=m.anchor=f?f.anchor:i("");let{patchFlag:P,dynamicChildren:R,slotScopeIds:q}=m;q&&($=$?$.concat(q):q),f==null?(o(E,b,A),o(B,b,A),de(m.children||[],b,B,S,T,U,$,M)):P>0&&P&64&&R&&f.dynamicChildren?(et(f.dynamicChildren,R,b,S,T,U,$),(m.key!=null||S&&m===S.subTree)&&Ql(f,m,!0)):X(f,m,b,B,S,T,U,$,M)},Ye=(f,m,b,A,S,T,U,$,M)=>{m.slotScopeIds=$,f==null?m.shapeFlag&512?S.ctx.activate(m,b,A,U,M):N(m,b,A,S,T,U,M):C(f,m,M)},N=(f,m,b,A,S,T,U)=>{const $=f.component=Li(f,A,S);if($l(f)&&($.ctx.renderer=jt),Fi($,!1,U),$.asyncDep){if(S&&S.registerDep($,L,U),!f.el){const M=$.subTree=Q(St);j(null,M,m,b),f.placeholder=M.el}}else L($,f,m,b,S,T,U)},C=(f,m,b)=>{const A=m.component=f.component;if(Ti(f,m,b))if(A.asyncDep&&!A.asyncResolved){ne(A,m,b);return}else A.next=m,A.update();else m.el=f.el,A.vnode=m},L=(f,m,b,A,S,T,U)=>{const $=()=>{if(f.isMounted){let{next:P,bu:R,u:q,parent:Y,vnode:re}=f;{const Ze=Yl(f);if(Ze){P&&(P.el=re.el,ne(f,P,U)),Ze.asyncDep.then(()=>{f.isUnmounted||$()});return}}let te=P,ye;Ut(f,!1),P?(P.el=re.el,ne(f,P,U)):P=re,R&&Is(R),(ye=P.props&&P.props.onVnodeBeforeUpdate)&&ct(ye,Y,P,re),Ut(f,!0);const we=sn(f),qe=f.subTree;f.subTree=we,w(qe,we,v(qe.el),_t(qe),f,S,T),P.el=we.el,te===null&&Ei(f,we.el),q&&Be(q,S),(ye=P.props&&P.props.onVnodeUpdated)&&Be(()=>ct(ye,Y,P,re),S)}else{let P;const{el:R,props:q}=m,{bm:Y,m:re,parent:te,root:ye,type:we}=f,qe=ps(m);Ut(f,!1),Y&&Is(Y),!qe&&(P=q&&q.onVnodeBeforeMount)&&ct(P,te,m),Ut(f,!0);{ye.ce&&ye.ce._def.shadowRoot!==!1&&ye.ce._injectChildStyle(we);const Ze=f.subTree=sn(f);w(null,Ze,b,A,f,S,T),m.el=Ze.el}if(re&&Be(re,S),!qe&&(P=q&&q.onVnodeMounted)){const Ze=m;Be(()=>ct(P,te,Ze),S)}(m.shapeFlag&256||te&&ps(te.vnode)&&te.vnode.shapeFlag&256)&&f.a&&Be(f.a,S),f.isMounted=!0,m=b=A=null}};f.scope.on();const M=f.effect=new ol($);f.scope.off();const E=f.update=M.run.bind(M),B=f.job=M.runIfDirty.bind(M);B.i=f,B.id=f.uid,M.scheduler=()=>Io(B),Ut(f,!0),E()},ne=(f,m,b)=>{m.component=f;const A=f.vnode.props;f.vnode=m,f.next=null,ci(f,m.props,A,b),hi(f,m.children,b),nt(),El(f),rt()},X=(f,m,b,A,S,T,U,$,M=!1)=>{const E=f&&f.children,B=f?f.shapeFlag:0,P=m.children,{patchFlag:R,shapeFlag:q}=m;if(R>0){if(R&128){Ot(E,P,b,A,S,T,U,$,M);return}else if(R&256){vt(E,P,b,A,S,T,U,$,M);return}}q&8?(B&16&&_e(E,S,T),P!==E&&d(b,P)):B&16?q&16?Ot(E,P,b,A,S,T,U,$,M):_e(E,S,T,!0):(B&8&&d(b,""),q&16&&de(P,b,A,S,T,U,$,M))},vt=(f,m,b,A,S,T,U,$,M)=>{f=f||zt,m=m||zt;const E=f.length,B=m.length,P=Math.min(E,B);let R;for(R=0;R<P;R++){const q=m[R]=M?Tt(m[R]):ut(m[R]);w(f[R],q,b,null,S,T,U,$,M)}E>B?_e(f,S,T,!0,!1,P):de(m,b,A,S,T,U,$,M,P)},Ot=(f,m,b,A,S,T,U,$,M)=>{let E=0;const B=m.length;let P=f.length-1,R=B-1;for(;E<=P&&E<=R;){const q=f[E],Y=m[E]=M?Tt(m[E]):ut(m[E]);if(ys(q,Y))w(q,Y,b,null,S,T,U,$,M);else break;E++}for(;E<=P&&E<=R;){const q=f[P],Y=m[R]=M?Tt(m[R]):ut(m[R]);if(ys(q,Y))w(q,Y,b,null,S,T,U,$,M);else break;P--,R--}if(E>P){if(E<=R){const q=R+1,Y=q<B?m[q].el:A;for(;E<=R;)w(null,m[E]=M?Tt(m[E]):ut(m[E]),b,Y,S,T,U,$,M),E++}}else if(E>R)for(;E<=P;)De(f[E],S,T,!0),E++;else{const q=E,Y=E,re=new Map;for(E=Y;E<=R;E++){const g=m[E]=M?Tt(m[E]):ut(m[E]);g.key!=null&&re.set(g.key,E)}let te,ye=0;const we=R-Y+1;let qe=!1,Ze=0;const Nt=new Array(we);for(E=0;E<we;E++)Nt[E]=0;for(E=q;E<=P;E++){const g=f[E];if(ye>=we){De(g,S,T,!0);continue}let c;if(g.key!=null)c=re.get(g.key);else for(te=Y;te<=R;te++)if(Nt[te-Y]===0&&ys(g,m[te])){c=te;break}c===void 0?De(g,S,T,!0):(Nt[c-Y]=E+1,c>=Ze?Ze=c:qe=!0,w(g,m[c],b,null,S,T,U,$,M),ye++)}const io=qe?_i(Nt):zt;for(te=io.length-1,E=we-1;E>=0;E--){const g=Y+E,c=m[g],p=m[g+1],W=g+1<B?p.el||p.placeholder:A;Nt[E]===0?w(null,c,b,W,S,T,U,$,M):qe&&(te<0||E!==io[te]?tt(c,b,W,2):te--)}}},tt=(f,m,b,A,S=null)=>{const{el:T,type:U,transition:$,children:M,shapeFlag:E}=f;if(E&6){tt(f.component.subTree,m,b,A);return}if(E&128){f.suspense.move(m,b,A);return}if(E&64){U.move(f,m,b,jt);return}if(U===ve){o(T,m,b);for(let P=0;P<M.length;P++)tt(M[P],m,b,A);o(f.anchor,m,b);return}if(U===Qs){J(f,m,b);return}if(A!==2&&E&1&&$)if(A===0)$.beforeEnter(T),o(T,m,b),Be(()=>$.enter(T),S);else{const{leave:P,delayLeave:R,afterLeave:q}=$,Y=()=>{f.ctx.isUnmounted?l(T):o(T,m,b)},re=()=>{P(T,()=>{Y(),q&&q()})};R?R(T,Y,re):re()}else o(T,m,b)},De=(f,m,b,A=!1,S=!1)=>{const{type:T,props:U,ref:$,children:M,dynamicChildren:E,shapeFlag:B,patchFlag:P,dirs:R,cacheIndex:q}=f;if(P===-2&&(S=!1),$!=null&&(nt(),fs($,null,b,f,!0),rt()),q!=null&&(m.renderCache[q]=void 0),B&256){m.ctx.deactivate(f);return}const Y=B&1&&R,re=!ps(f);let te;if(re&&(te=U&&U.onVnodeBeforeUnmount)&&ct(te,m,f),B&6)ss(f.component,b,A);else{if(B&128){f.suspense.unmount(b,A);return}Y&&$t(f,null,m,"beforeUnmount"),B&64?f.type.remove(f,m,b,jt,A):E&&!E.hasOnce&&(T!==ve||P>0&&P&64)?_e(E,m,b,!1,!0):(T===ve&&P&384||!S&&B&16)&&_e(M,m,b),A&&Rt(f)}(re&&(te=U&&U.onVnodeUnmounted)||Y)&&Be(()=>{te&&ct(te,m,f),Y&&$t(f,null,m,"unmounted")},b)},Rt=f=>{const{type:m,el:b,anchor:A,transition:S}=f;if(m===ve){Bt(b,A);return}if(m===Qs){O(f);return}const T=()=>{l(b),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(f.shapeFlag&1&&S&&!S.persisted){const{leave:U,delayLeave:$}=S,M=()=>U(b,T);$?$(f.el,T,M):M()}else T()},Bt=(f,m)=>{let b;for(;f!==m;)b=x(f),l(f),f=b;l(m)},ss=(f,m,b)=>{const{bum:A,scope:S,job:T,subTree:U,um:$,m:M,a:E,parent:B,slots:{__:P}}=f;Zl(M),Zl(E),A&&Is(A),B&&z(P)&&P.forEach(R=>{B.renderCache[R]=void 0}),S.stop(),T&&(T.flags|=8,De(U,f,m,b)),$&&Be($,m),Be(()=>{f.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},_e=(f,m,b,A=!1,S=!1,T=0)=>{for(let U=T;U<f.length;U++)De(f[U],m,b,A,S)},_t=f=>{if(f.shapeFlag&6)return _t(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const m=x(f.anchor||f.el),b=m&&m[Br];return b?x(b):m};let Ts=!1;const ro=(f,m,b)=>{f==null?m._vnode&&De(m._vnode,null,null,!0):w(m._vnode||null,f,m,null,null,null,b),m._vnode=f,Ts||(Ts=!0,El(),Al(),Ts=!1)},jt={p:w,um:De,m:tt,r:Rt,mt:N,mc:de,pc:X,pbc:et,n:_t,o:e};return{render:ro,hydrate:void 0,createApp:ii(ro)}}function Ro({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Ut({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function vi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ql(e,t,s=!1){const o=e.children,l=t.children;if(z(o)&&z(l))for(let n=0;n<o.length;n++){const r=o[n];let i=l[n];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=l[n]=Tt(l[n]),i.el=r.el),!s&&i.patchFlag!==-2&&Ql(r,i)),i.type===Js&&(i.el=r.el),i.type===St&&!i.el&&(i.el=r.el)}}function _i(e){const t=e.slice(),s=[0];let o,l,n,r,i;const u=e.length;for(o=0;o<u;o++){const h=e[o];if(h!==0){if(l=s[s.length-1],e[l]<h){t[o]=l,s.push(o);continue}for(n=0,r=s.length-1;n<r;)i=n+r>>1,e[s[i]]<h?n=i+1:r=i;h<e[s[n]]&&(n>0&&(t[o]=s[n-1]),s[n]=o)}}for(n=s.length,r=s[n-1];n-- >0;)s[n]=r,r=t[r];return s}function Yl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yl(t)}function Zl(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const bi=Symbol.for("v-scx"),yi=()=>Ks(bi);function Ke(e,t,s){return Xl(e,t,s)}function Xl(e,t,s=ie){const{immediate:o,deep:l,flush:n,once:r}=s,i=Me({},s),u=t&&o||!t&&n!=="post";let h;if(ks){if(n==="sync"){const y=yi();h=y.__watcherHandles||(y.__watcherHandles=[])}else if(!u){const y=()=>{};return y.stop=ot,y.resume=ot,y.pause=ot,y}}const d=Pe;i.call=(y,k,w)=>it(y,d,k,w);let v=!1;n==="post"?i.scheduler=y=>{Be(y,d&&d.suspense)}:n!=="sync"&&(v=!0,i.scheduler=(y,k)=>{k?y():Io(y)}),i.augmentJob=y=>{t&&(y.flags|=4),v&&(y.flags|=2,d&&(y.id=d.uid,y.i=d))};const x=Mr(e,t,i);return ks&&(h?h.push(x):u&&x()),x}function wi(e,t,s){const o=this.proxy,l=ge(e)?e.includes(".")?en(o,e):()=>o[e]:e.bind(o,o);let n;K(t)?n=t:(n=t.handler,s=t);const r=ws(this),i=Xl(l,n.bind(o),s);return r(),i}function en(e,t){const s=t.split(".");return()=>{let o=e;for(let l=0;l<s.length&&o;l++)o=o[s[l]];return o}}const ki=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${wt(t)}Modifiers`]||e[`${At(t)}Modifiers`];function xi(e,t,...s){if(e.isUnmounted)return;const o=e.vnode.props||ie;let l=s;const n=t.startsWith("update:"),r=n&&ki(o,t.slice(7));r&&(r.trim&&(l=s.map(d=>ge(d)?d.trim():d)),r.number&&(l=s.map(mo)));let i,u=o[i=po(t)]||o[i=po(wt(t))];!u&&n&&(u=o[i=po(At(t))]),u&&it(u,e,6,l);const h=o[i+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,it(h,e,6,l)}}function tn(e,t,s=!1){const o=t.emitsCache,l=o.get(e);if(l!==void 0)return l;const n=e.emits;let r={},i=!1;if(!K(e)){const u=h=>{const d=tn(h,t,!0);d&&(i=!0,Me(r,d))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!n&&!i?(fe(e)&&o.set(e,null),null):(z(n)?n.forEach(u=>r[u]=null):Me(r,n),fe(e)&&o.set(e,r),r)}function Ws(e,t){return!e||!Es(t)?!1:(t=t.slice(2).replace(/Once$/,""),se(e,t[0].toLowerCase()+t.slice(1))||se(e,At(t))||se(e,t))}function Qf(){}function sn(e){const{type:t,vnode:s,proxy:o,withProxy:l,propsOptions:[n],slots:r,attrs:i,emit:u,render:h,renderCache:d,props:v,data:x,setupState:y,ctx:k,inheritAttrs:w}=e,_=zs(e);let j,G;try{if(s.shapeFlag&4){const O=l||o,ue=O;j=ut(h.call(ue,O,d,v,y,x,k)),G=i}else{const O=t;j=ut(O.length>1?O(v,{attrs:i,slots:r,emit:u}):O(v,null)),G=t.props?i:Ci(i)}}catch(O){vs.length=0,js(O,e,1),j=Q(St)}let J=j;if(G&&w!==!1){const O=Object.keys(G),{shapeFlag:ue}=J;O.length&&ue&7&&(n&&O.some(uo)&&(G=Si(G,n)),J=Xt(J,G,!1,!0))}return s.dirs&&(J=Xt(J,null,!1,!0),J.dirs=J.dirs?J.dirs.concat(s.dirs):s.dirs),s.transition&&Mo(J,s.transition),j=J,zs(_),j}const Ci=e=>{let t;for(const s in e)(s==="class"||s==="style"||Es(s))&&((t||(t={}))[s]=e[s]);return t},Si=(e,t)=>{const s={};for(const o in e)(!uo(o)||!(o.slice(9)in t))&&(s[o]=e[o]);return s};function Ti(e,t,s){const{props:o,children:l,component:n}=e,{props:r,children:i,patchFlag:u}=t,h=n.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return o?on(o,r,h):!!r;if(u&8){const d=t.dynamicProps;for(let v=0;v<d.length;v++){const x=d[v];if(r[x]!==o[x]&&!Ws(h,x))return!0}}}else return(l||i)&&(!i||!i.$stable)?!0:o===r?!1:o?r?on(o,r,h):!0:!!r;return!1}function on(e,t,s){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l<o.length;l++){const n=o[l];if(t[n]!==e[n]&&!Ws(s,n))return!0}return!1}function Ei({vnode:e,parent:t},s){for(;t;){const o=t.subTree;if(o.suspense&&o.suspense.activeBranch===e&&(o.el=e.el),o===e)(e=t.vnode).el=s,t=t.parent;else break}}const ln=e=>e.__isSuspense;function Ai(e,t){t&&t.pendingBranch?z(e)?t.effects.push(...e):t.effects.push(e):Or(e)}const ve=Symbol.for("v-fgt"),Js=Symbol.for("v-txt"),St=Symbol.for("v-cmt"),Qs=Symbol.for("v-stc"),vs=[];let je=null;function V(e=!1){vs.push(je=e?null:[])}function Vi(){vs.pop(),je=vs[vs.length-1]||null}let _s=1;function nn(e,t=!1){_s+=e,e<0&&je&&t&&(je.hasOnce=!0)}function rn(e){return e.dynamicChildren=_s>0?je||zt:null,Vi(),_s>0&&je&&je.push(e),e}function I(e,t,s,o,l,n){return rn(a(e,t,s,o,l,n,!0))}function bs(e,t,s,o,l){return rn(Q(e,t,s,o,l,!0))}function an(e){return e?e.__v_isVNode===!0:!1}function ys(e,t){return e.type===t.type&&e.key===t.key}const un=({key:e})=>e??null,Ys=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ge(e)||Ee(e)||K(e)?{i:Ge,r:e,k:t,f:!!s}:e:null);function a(e,t=null,s=null,o=0,l=null,n=e===ve?0:1,r=!1,i=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&un(t),ref:t&&Ys(t),scopeId:Il,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:o,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:Ge};return i?(Bo(u,s),n&128&&e.normalize(u)):s&&(u.shapeFlag|=ge(s)?8:16),_s>0&&!r&&je&&(u.patchFlag>0||n&6)&&u.patchFlag!==32&&je.push(u),u}const Q=Ii;function Ii(e,t=null,s=null,o=0,l=null,n=!1){if((!e||e===Xr)&&(e=St),an(e)){const i=Xt(e,t,!0);return s&&Bo(i,s),_s>0&&!n&&je&&(i.shapeFlag&6?je[je.indexOf(e)]=i:je.push(i)),i.patchFlag=-2,i}if(qi(e)&&(e=e.__vccOpts),t){t=Mi(t);let{class:i,style:u}=t;i&&!ge(i)&&(t.class=ke(i)),fe(u)&&(Ao(u)&&!z(u)&&(u=Me({},u)),t.style=Ht(u))}const r=ge(e)?1:ln(e)?128:jr(e)?64:fe(e)?4:K(e)?2:0;return a(e,t,s,o,l,r,n,!0)}function Mi(e){return e?Ao(e)||zl(e)?Me({},e):e:null}function Xt(e,t,s=!1,o=!1){const{props:l,ref:n,patchFlag:r,children:i,transition:u}=e,h=t?$i(l||{},t):l,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&un(h),ref:t&&t.ref?s&&n?z(n)?n.concat(Ys(t)):[n,Ys(t)]:Ys(t):n,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ve?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xt(e.ssContent),ssFallback:e.ssFallback&&Xt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&o&&Mo(d,u.clone(d)),d}function es(e=" ",t=0){return Q(Js,null,e,t)}function cn(e,t){const s=Q(Qs,null,e);return s.staticCount=t,s}function F(e="",t=!1){return t?(V(),bs(St,null,e)):Q(St,null,e)}function ut(e){return e==null||typeof e=="boolean"?Q(St):z(e)?Q(ve,null,e.slice()):an(e)?Tt(e):Q(Js,null,String(e))}function Tt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xt(e)}function Bo(e,t){let s=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(z(t))s=16;else if(typeof t=="object")if(o&65){const l=t.default;l&&(l._c&&(l._d=!1),Bo(e,l()),l._c&&(l._d=!0));return}else{s=32;const l=t._;!l&&!zl(t)?t._ctx=Ge:l===3&&Ge&&(Ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:Ge},s=32):(t=String(t),o&64?(s=16,t=[es(t)]):s=8);e.children=t,e.shapeFlag|=s}function $i(...e){const t={};for(let s=0;s<e.length;s++){const o=e[s];for(const l in o)if(l==="class")t.class!==o.class&&(t.class=ke([t.class,o.class]));else if(l==="style")t.style=Ht([t.style,o.style]);else if(Es(l)){const n=t[l],r=o[l];r&&n!==r&&!(z(n)&&n.includes(r))&&(t[l]=n?[].concat(n,r):r)}else l!==""&&(t[l]=o[l])}return t}function ct(e,t,s,o=null){it(e,t,7,[s,o])}const Ui=Bl();let Pi=0;function Li(e,t,s){const o=e.type,l=(t?t.appContext:e.appContext)||Ui,n={uid:Pi++,vnode:e,type:o,parent:t,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new sr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(l.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Hl(o,l),emitsOptions:tn(o,l),emit:null,emitted:null,propsDefaults:ie,inheritAttrs:o.inheritAttrs,ctx:ie,data:ie,props:ie,attrs:ie,slots:ie,refs:ie,setupState:ie,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return n.ctx={_:n},n.root=t?t.root:n,n.emit=xi.bind(null,n),e.ce&&e.ce(n),n}let Pe=null;const Di=()=>Pe||Ge;let Zs,jo;{const e=Ms(),t=(s,o)=>{let l;return(l=e[s])||(l=e[s]=[]),l.push(o),n=>{l.length>1?l.forEach(r=>r(n)):l[0](n)}};Zs=t("__VUE_INSTANCE_SETTERS__",s=>Pe=s),jo=t("__VUE_SSR_SETTERS__",s=>ks=s)}const ws=e=>{const t=Pe;return Zs(e),e.scope.on(),()=>{e.scope.off(),Zs(t)}},dn=()=>{Pe&&Pe.scope.off(),Zs(null)};function fn(e){return e.vnode.shapeFlag&4}let ks=!1;function Fi(e,t=!1,s=!1){t&&jo(t);const{props:o,children:l}=e.vnode,n=fn(e);ui(e,o,n,t),pi(e,l,s||t);const r=n?Oi(e,t):void 0;return t&&jo(!1),r}function Oi(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ei);const{setup:o}=s;if(o){nt();const l=e.setupContext=o.length>1?Bi(e):null,n=ws(e),r=Wt(o,e,0,[e.props,l]),i=Wo(r);if(rt(),n(),(i||e.sp)&&!ps(e)&&Ml(e),i){if(r.then(dn,dn),t)return r.then(u=>{pn(e,u)}).catch(u=>{js(u,e,0)});e.asyncDep=r}else pn(e,r)}else hn(e)}function pn(e,t,s){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:fe(t)&&(e.setupState=kl(t)),hn(e)}function hn(e,t,s){const o=e.type;e.render||(e.render=o.render||ot);{const l=ws(e);nt();try{ti(e)}finally{rt(),l()}}}const Ri={get(e,t){return Ae(e,"get",""),e[t]}};function Bi(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Ri),slots:e.slots,emit:e.emit,expose:t}}function Xs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(kl(xr(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in ms)return ms[s](e)},has(t,s){return s in t||s in ms}})):e.proxy}const ji=/(?:^|[-_])(\w)/g,Ni=e=>e.replace(ji,t=>t.toUpperCase()).replace(/[-_]/g,"");function zi(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function mn(e,t,s=!1){let o=zi(t);if(!o&&t.__file){const l=t.__file.match(/([^/\\]+)\.\w+$/);l&&(o=l[1])}if(!o&&e&&e.parent){const l=n=>{for(const r in n)if(n[r]===t)return r};o=l(e.components||e.parent.type.components)||l(e.appContext.components)}return o?Ni(o):s?"App":"Anonymous"}function qi(e){return K(e)&&"__vccOpts"in e}const Ve=(e,t)=>Vr(e,t,ks),Hi="3.5.18";/**
* @vue/runtime-dom v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let No;const gn=typeof window<"u"&&window.trustedTypes;if(gn)try{No=gn.createPolicy("vue",{createHTML:e=>e})}catch{}const vn=No?e=>No.createHTML(e):e=>e,Gi="http://www.w3.org/2000/svg",Ki="http://www.w3.org/1998/Math/MathML",mt=typeof document<"u"?document:null,_n=mt&&mt.createElement("template"),Wi={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,o)=>{const l=t==="svg"?mt.createElementNS(Gi,e):t==="mathml"?mt.createElementNS(Ki,e):s?mt.createElement(e,{is:s}):mt.createElement(e);return e==="select"&&o&&o.multiple!=null&&l.setAttribute("multiple",o.multiple),l},createText:e=>mt.createTextNode(e),createComment:e=>mt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,o,l,n){const r=s?s.previousSibling:t.lastChild;if(l&&(l===n||l.nextSibling))for(;t.insertBefore(l.cloneNode(!0),s),!(l===n||!(l=l.nextSibling)););else{_n.innerHTML=vn(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const i=_n.content;if(o==="svg"||o==="mathml"){const u=i.firstChild;for(;u.firstChild;)i.appendChild(u.firstChild);i.removeChild(u)}t.insertBefore(i,s)}return[r?r.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Ji=Symbol("_vtc");function Qi(e,t,s){const o=e[Ji];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const eo=Symbol("_vod"),bn=Symbol("_vsh"),to={beforeMount(e,{value:t},{transition:s}){e[eo]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):xs(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:o}){!t!=!s&&(o?t?(o.beforeEnter(e),xs(e,!0),o.enter(e)):o.leave(e,()=>{xs(e,!1)}):xs(e,t))},beforeUnmount(e,{value:t}){xs(e,t)}};function xs(e,t){e.style.display=t?e[eo]:"none",e[bn]=!t}const Yi=Symbol(""),Zi=/(^|;)\s*display\s*:/;function Xi(e,t,s){const o=e.style,l=ge(s);let n=!1;if(s&&!l){if(t)if(ge(t))for(const r of t.split(";")){const i=r.slice(0,r.indexOf(":")).trim();s[i]==null&&so(o,i,"")}else for(const r in t)s[r]==null&&so(o,r,"");for(const r in s)r==="display"&&(n=!0),so(o,r,s[r])}else if(l){if(t!==s){const r=o[Yi];r&&(s+=";"+r),o.cssText=s,n=Zi.test(s)}}else t&&e.removeAttribute("style");eo in e&&(e[eo]=n?o.display:"",e[bn]&&(o.display="none"))}const yn=/\s*!important$/;function so(e,t,s){if(z(s))s.forEach(o=>so(e,t,o));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const o=ea(e,t);yn.test(s)?e.setProperty(At(o),s.replace(yn,""),"important"):e[o]=s}}const wn=["Webkit","Moz","ms"],zo={};function ea(e,t){const s=zo[t];if(s)return s;let o=wt(t);if(o!=="filter"&&o in e)return zo[t]=o;o=Yo(o);for(let l=0;l<wn.length;l++){const n=wn[l]+o;if(n in e)return zo[t]=n}return t}const kn="http://www.w3.org/1999/xlink";function xn(e,t,s,o,l,n=er(t)){o&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(kn,t.slice(6,t.length)):e.setAttributeNS(kn,t,s):s==null||n&&!Xo(s)?e.removeAttribute(t):e.setAttribute(t,n?"":lt(s)?String(s):s)}function Cn(e,t,s,o,l){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?vn(s):s);return}const n=e.tagName;if(t==="value"&&n!=="PROGRESS"&&!n.includes("-")){const i=n==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(i!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let r=!1;if(s===""||s==null){const i=typeof e[t];i==="boolean"?s=Xo(s):s==null&&i==="string"?(s="",r=!0):i==="number"&&(s=0,r=!0)}try{e[t]=s}catch{}r&&e.removeAttribute(l||t)}function Pt(e,t,s,o){e.addEventListener(t,s,o)}function ta(e,t,s,o){e.removeEventListener(t,s,o)}const Sn=Symbol("_vei");function sa(e,t,s,o,l=null){const n=e[Sn]||(e[Sn]={}),r=n[t];if(o&&r)r.value=o;else{const[i,u]=oa(t);if(o){const h=n[t]=ra(o,l);Pt(e,i,h,u)}else r&&(ta(e,i,r,u),n[t]=void 0)}}const Tn=/(?:Once|Passive|Capture)$/;function oa(e){let t;if(Tn.test(e)){t={};let o;for(;o=e.match(Tn);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):At(e.slice(2)),t]}let qo=0;const la=Promise.resolve(),na=()=>qo||(la.then(()=>qo=0),qo=Date.now());function ra(e,t){const s=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=s.attached)return;it(ia(o,s.value),t,5,[o])};return s.value=e,s.attached=na(),s}function ia(e,t){if(z(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(o=>l=>!l._stopped&&o&&o(l))}else return t}const En=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,aa=(e,t,s,o,l,n)=>{const r=l==="svg";t==="class"?Qi(e,o,r):t==="style"?Xi(e,s,o):Es(t)?uo(t)||sa(e,t,s,o,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ua(e,t,o,r))?(Cn(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&xn(e,t,o,r,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ge(o))?Cn(e,wt(t),o,n,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),xn(e,t,o,r))};function ua(e,t,s,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&En(t)&&K(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const l=e.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return En(t)&&ge(s)?!1:t in e}const oo=e=>{const t=e.props["onUpdate:modelValue"]||!1;return z(t)?s=>Is(t,s):t};function ca(e){e.target.composing=!0}function An(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ts=Symbol("_assign"),pe={created(e,{modifiers:{lazy:t,trim:s,number:o}},l){e[ts]=oo(l);const n=o||l.props&&l.props.type==="number";Pt(e,t?"change":"input",r=>{if(r.target.composing)return;let i=e.value;s&&(i=i.trim()),n&&(i=mo(i)),e[ts](i)}),s&&Pt(e,"change",()=>{e.value=e.value.trim()}),t||(Pt(e,"compositionstart",ca),Pt(e,"compositionend",An),Pt(e,"change",An))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:o,trim:l,number:n}},r){if(e[ts]=oo(r),e.composing)return;const i=(n||e.type==="number")&&!/^0\d/.test(e.value)?mo(e.value):e.value,u=t??"";i!==u&&(document.activeElement===e&&e.type!=="range"&&(o&&t===s||l&&e.value.trim()===u)||(e.value=u))}},da={deep:!0,created(e,t,s){e[ts]=oo(s),Pt(e,"change",()=>{const o=e._modelValue,l=fa(e),n=e.checked,r=e[ts];if(z(o)){const i=el(o,l),u=i!==-1;if(n&&!u)r(o.concat(l));else if(!n&&u){const h=[...o];h.splice(i,1),r(h)}}else if(As(o)){const i=new Set(o);n?i.add(l):i.delete(l),r(i)}else r(In(e,n))})},mounted:Vn,beforeUpdate(e,t,s){e[ts]=oo(s),Vn(e,t,s)}};function Vn(e,{value:t,oldValue:s},o){e._modelValue=t;let l;if(z(t))l=el(t,o.props.value)>-1;else if(As(t))l=t.has(o.props.value);else{if(t===s)return;l=$s(t,In(e,!0))}e.checked!==l&&(e.checked=l)}function fa(e){return"_value"in e?e._value:e.value}function In(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const pa=["ctrl","shift","alt","meta"],ha={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>pa.some(s=>e[`${s}Key`]&&!t.includes(s))},Ne=(e,t)=>{const s=e._withMods||(e._withMods={}),o=t.join(".");return s[o]||(s[o]=(l,...n)=>{for(let r=0;r<t.length;r++){const i=ha[t[r]];if(i&&i(l,t))return}return e(l,...n)})},ma=Me({patchProp:aa},Wi);let Mn;function ga(){return Mn||(Mn=mi(ma))}const va=(...e)=>{const t=ga().createApp(...e),{mount:s}=t;return t.mount=o=>{const l=ba(o);if(!l)return;const n=t._component;!K(n)&&!n.render&&!n.template&&(n.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const r=s(l,!1,_a(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),r},t};function _a(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ba(e){return ge(e)?document.querySelector(e):e}const be={setToken(e){try{typeof GM_setValue<"u"&&GM_setValue("auth_token",e)}catch(t){console.warn("GM_setValue失败,使用localStorage:",t)}try{localStorage.setItem("auth_token",e)}catch(t){console.error("localStorage保存失败:",t)}},getToken(){let e=null;try{if(typeof GM_getValue<"u"&&(e=GM_getValue("auth_token",null),e))return e}catch(t){console.warn("GM_getValue失败,尝试localStorage:",t)}try{return e=localStorage.getItem("auth_token"),e}catch(t){return console.error("localStorage读取失败:",t),null}},removeToken(){try{typeof GM_deleteValue<"u"&&GM_deleteValue("auth_token")}catch(e){console.warn("GM_deleteValue失败:",e)}try{localStorage.removeItem("auth_token")}catch(e){console.error("localStorage删除失败:",e)}},setUser(e){const t=JSON.stringify(e);try{typeof GM_setValue<"u"&&GM_setValue("user_info",t)}catch(s){console.warn("GM_setValue保存用户信息失败,使用localStorage:",s)}try{localStorage.setItem("user_info",t)}catch(s){console.error("localStorage保存用户信息失败:",s)}},getUser(){let e=null;try{if(typeof GM_getValue<"u"&&(e=GM_getValue("user_info",null),e))return JSON.parse(e)}catch(t){console.warn("GM_getValue读取用户信息失败,尝试localStorage:",t)}try{return e=localStorage.getItem("user_info"),e?JSON.parse(e):null}catch(t){return console.error("localStorage读取用户信息失败:",t),null}},removeUser(){try{typeof GM_deleteValue<"u"&&GM_deleteValue("user_info")}catch(e){console.warn("GM_deleteValue删除用户信息失败:",e)}try{localStorage.removeItem("user_info")}catch(e){console.error("localStorage删除用户信息失败:",e)}},setApiState(e){try{const t=JSON.stringify(e);typeof GM_setValue<"u"?GM_setValue("api_state",t):localStorage.setItem("doubanflix_api_state",t)}catch(t){console.warn("保存API状态失败:",t);try{localStorage.setItem("doubanflix_api_state",JSON.stringify(e))}catch(s){console.error("localStorage保存API状态也失败:",s)}}},getApiState(){try{let e=null;return typeof GM_getValue<"u"?e=GM_getValue("api_state",null):e=localStorage.getItem("doubanflix_api_state"),e?JSON.parse(e):null}catch(e){console.warn("获取API状态失败:",e);try{const t=localStorage.getItem("doubanflix_api_state");return t?JSON.parse(t):null}catch(t){return console.error("localStorage获取API状态也失败:",t),null}}},removeApiState(){try{typeof GM_deleteValue<"u"?GM_deleteValue("api_state"):localStorage.removeItem("doubanflix_api_state")}catch(e){console.warn("清除API状态失败:",e);try{localStorage.removeItem("doubanflix_api_state")}catch(t){console.error("localStorage清除API状态也失败:",t)}}}},ya="https://das.doubanflix.com/api",wa="https://api.doubanflix.com/api",ka=1e4,xa=1e3,lo=2*60*60*1e3;class Ca{constructor(){this.primaryURL=ya,this.fallbackURL=wa,this.timeout=ka,this.resetTimer=null,this.initializeFromStorage()}initializeFromStorage(){const t=be.getApiState();if(t){if(this.isUsingFallback=t.isUsingFallback||!1,this.currentURL=this.isUsingFallback?this.fallbackURL:this.primaryURL,this.isUsingFallback&&t.switchTime){const s=new Date(t.switchTime).getTime(),l=Date.now()-s;if(l<lo){const n=lo-l;console.log(`从本地存储恢复API状态,继续使用备用接口,剩余 ${Math.round(n/1e3/60)} 分钟后自动切换回主接口`),this.resetTimer=setTimeout(()=>{console.log("定时器触发,自动切换回主接口"),this.forceResetToPrimary()},n)}else console.log("切换时间已过,自动重置到主接口"),this.forceResetToPrimary()}}else this.currentURL=this.primaryURL,this.isUsingFallback=!1}saveApiState(){const t={isUsingFallback:this.isUsingFallback,switchTime:this.isUsingFallback?new Date().toISOString():null};be.setApiState(t)}switchToFallback(){this.isUsingFallback||(console.warn("主要API接口无法访问,切换到备用接口:",this.fallbackURL),this.currentURL=this.fallbackURL,this.isUsingFallback=!0,this.saveApiState(),this.startAutoResetTimer())}resetToPrimary(){this.isUsingFallback&&(console.log("重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,be.removeApiState(),this.clearAutoResetTimer())}startAutoResetTimer(){this.clearAutoResetTimer(),console.log(`将在 ${lo/1e3/60} 分钟后自动尝试切换回主接口`),this.resetTimer=setTimeout(()=>{console.log("定时器触发,自动切换回主接口"),this.forceResetToPrimary()},lo)}clearAutoResetTimer(){this.resetTimer&&(clearTimeout(this.resetTimer),this.resetTimer=null)}forceResetToPrimary(){console.log("强制重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,be.removeApiState(),this.clearAutoResetTimer()}isNetworkError(t){return t.name==="AbortError"||t.name==="TypeError"||t.message.includes("Failed to fetch")||t.message.includes("Network request failed")||t.message.includes("请求超时")}addAuthHeaders(t={}){const s=be.getToken();return s&&(t.Authorization=`Bearer ${s}`),{"Content-Type":"application/json",...t}}async handleResponse(t){if(!t.ok){const s=await t.json().catch(()=>({}));switch(t.status){case 401:return be.getToken()?(be.removeToken(),{success:!1,error:"登录(不可用)已过期,请重新登录(不可用)",status:401,isAuthError:!0}):{success:!1,error:"请先登录(不可用)",status:401,isAuthError:!0};case 403:throw new Error("没有权限访问该资源");case 404:return{success:!1,error:"NOT_FOUND",status:404,message:"请求的资源不存在"};case 500:throw new Error("服务器内部错误");default:throw new Error(s.message||"请求失败")}}return t.json()}async request(t,s={}){const o=async l=>{const n=`${l}${t}`,r={headers:this.addAuthHeaders(s.headers),...s},i=new AbortController,u=setTimeout(()=>i.abort(),this.timeout);try{const h=await fetch(n,{...r,signal:i.signal});return clearTimeout(u),await this.handleResponse(h)}catch(h){throw clearTimeout(u),h.name==="AbortError"?new Error("请求超时,请检查网络连接"):h}};try{return await o(this.currentURL)}catch(l){if(this.isNetworkError(l)&&!this.isUsingFallback){console.warn("主要接口请求失败,尝试备用接口:",l.message),await new Promise(n=>setTimeout(n,xa));try{return this.switchToFallback(),await o(this.currentURL)}catch(n){throw console.error("备用接口也无法访问:",n.message),l}}throw l}}async get(t,s={}){const o=new URLSearchParams(s).toString(),l=o?`${t}?${o}`:t;return this.request(l,{method:"GET"})}async post(t,s={}){return this.request(t,{method:"POST",body:JSON.stringify(s)})}async put(t,s={}){return this.request(t,{method:"PUT",body:JSON.stringify(s)})}async delete(t){return this.request(t,{method:"DELETE"})}}const le=new Ca,ze={getChallenge(){return le.get("/auth/challenge")},register(e){return le.post("/auth/register",e)},login(e){return le.post("/auth/login",e)},verifyEmail(e){return le.post("/auth/verify-email",e)},resendVerificationCode(e){return le.post("/auth/resend-code",e)},getUserInfo(){return le.get("/user/profile")},getCurrentUser(){return le.get("/user/profile")},logout(){return le.post("/auth/logout")},forgotPassword(e){return le.post("/auth/forgot-password",e)},resetPassword(e){return le.post("/auth/reset-password",e)}},gt={getSubjectLinks(e,t="movies",s={}){return le.get(`/subjects/${t}/${e}/links`,s)},getMovieLinks(e,t={}){return le.get(`/movie/${e}/links`,t)},addSubjectLink(e,t="movies",s){return le.post(`/subjects/${t}/${e}/links`,s)},addMovieLink(e,t){return le.post(`/movies/${e}/links`,t)},updateSubjectLink(e,t,s="movies",o){return le.put(`/subjects/${s}/${e}/links/${t}`,o)},updateMovieLink(e,t){return le.put(`/movies/links/${e}`,t)},deleteSubjectLink(e,t,s="movies"){return le.delete(`/subjects/${s}/${e}/links/${t}`)},deleteMovieLink(e,t){return le.delete(`/movies/${e}/links/${t}`)},voteLink(e,t,s="movie"){return le.post(`/links/${e}/vote`,{vote_type:t,link_type:s})},removeVote(e,t,s="movie"){return le.post(`/links/${e}/vote`,{vote_type:t,link_type:s})},getLinkVoteStatus(e,t="movie"){return le.get(`/links/${e}/vote-status`,{link_type:t})},getUserVote(e,t="movie"){return le.get(`/links/${e}/vote-status`,{link_type:t})},reportLink(e){return le.post("/reports",e)}},Sa={getUserProfile(e){return le.get("/user/profile/")},getUserLinks(e={}){return le.get("/user/links",e)},getUserLinksByCategory(){return le.get("/user/links/category")},updateUserName(e){return le.put("/user/name",e)},getAllUsers(){return le.get("/admin/users")},banUser(e,t){return le.put(`/admin/users/${e}/ban`,{reason:t})},unbanUser(e){return le.put(`/admin/users/${e}/unban`)}};async function Ta(e){const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}function Ea(e,t){return e.startsWith("0".repeat(t))}async function no(e,t,s=null){let o=0;const l=Date.now();for(;;){const n=e+o.toString(),r=await Ta(n);if(Ea(r,t)){const u=Date.now()-l;return console.log(`工作量证明完成: nonce=${o}, 耗时=${u}ms, hash=${r}`),{challenge:e,nonce:o.toString(),hash:r}}o++,o%1e3===0&&(s&&s(o),await new Promise(i=>setTimeout(i,1)))}}const Ce=D(null),Et=D(null),xe=D(!1),ae=D(""),Ho=D(!1),Aa=Ve(()=>!!Ce.value&&!!Et.value),Va=Ve(()=>{var e;return((e=Ce.value)==null?void 0:e.email)||""}),Ia=Ve(()=>{var e;return((e=Ce.value)==null?void 0:e.id)||""}),Z={user:Ce,token:Et,loading:xe,error:ae,initialized:Ho,isAuthenticated:Aa,userEmail:Va,userId:Ia,async initAuth(){if(!Ho.value)try{xe.value=!0;const e=be.getToken(),t=be.getUser();if(e){Et.value=e,t&&(Ce.value=t,console.log("使用本地存储的用户信息:",t));try{const s=await ze.getCurrentUser();s&&s.data?(Ce.value=s.data,be.setUser(s.data)):s&&(Ce.value=s,be.setUser(s)),ae.value=""}catch(s){console.error("获取用户信息失败:",s),s.status===401?(be.removeToken(),be.removeUser(),Et.value=null,Ce.value=null,console.log("Token已过期,已清除登录(不可用)状态")):(console.warn("网络或其他错误,保留登录(不可用)状态:",s.message||s),!t&&e&&console.warn("首次网络失败且无本地用户信息,保持token但清空用户状态"))}}}catch(e){console.error("初始化认证失败:",e)}finally{xe.value=!1,Ho.value=!0}},async signIn(e,t){try{xe.value=!0,ae.value="";const s=await ze.login({email:e,password:t});return Et.value=s.data.token,Ce.value=s.data.user,be.setToken(s.data.token),be.setUser(s.data.user),{success:!0,user:s.data.user}}catch(s){return console.error("登录(不可用)错误:",s),ae.value=s.message||"登录(不可用)过程中发生错误",{success:!1,error:ae.value}}finally{xe.value=!1}},async signUp(e,t,s={}){try{xe.value=!0,ae.value="";const o=await ze.register({email:e,password:t,...s});return Et.value=o.token,Ce.value=o.user,be.setToken(o.token),{success:!0,data:o}}catch(o){return console.error("注册(不可用)错误:",o),ae.value=o.message||"注册(不可用)过程中发生错误",{success:!1,error:ae.value}}finally{xe.value=!1}},async signUpWithProof(e,t){try{xe.value=!0,ae.value="";const s=await ze.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await no(o,l,t),r={username:e.username,email:e.email,password:e.password,proof_of_work:{challenge:o,nonce:n.nonce,hash:n.hash}},i=await ze.register(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("注册(不可用)失败:",s),ae.value=s.message||"注册(不可用)失败",{success:!1,error:ae.value}}finally{xe.value=!1}},async verifyEmail(e,t){try{xe.value=!0,ae.value="";const s={email:e,code:t},o=await ze.verifyEmail(s);return o.success?{success:!0,data:o.data}:{success:!1,error:o.error}}catch(s){return console.error("邮箱验证失败:",s),ae.value=s.message||"验证失败",{success:!1,error:ae.value}}finally{xe.value=!1}},async resendVerificationCode(e,t=()=>{}){try{xe.value=!0,ae.value="";const s=await ze.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await no(o,l,t),r={email:e,challenge:o,solution:n.nonce},i=await ze.resendVerificationCode(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("重发验证码失败:",s),ae.value=s.message||"发送失败",{success:!1,error:ae.value}}finally{xe.value=!1}},async forgotPassword(e,t){try{xe.value=!0,ae.value="";const s=await ze.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await no(o,l,t),r={email:e,proof_of_work:{challenge:o,nonce:n.nonce,hash:n.hash}},i=await ze.forgotPassword(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.message||i.error}}catch(s){return console.error("忘记密码失败:",s),ae.value=s.message||"发送失败",{success:!1,error:ae.value}}finally{xe.value=!1}},async resetPassword(e,t,s){try{xe.value=!0,ae.value="";const o=await ze.resetPassword({email:e,code:t,password:s});return o.success?{success:!0,data:o.data}:{success:!1,error:o.message||o.error}}catch(o){return console.error("重置密码失败:",o),ae.value=o.message||"重置失败",{success:!1,error:ae.value}}finally{xe.value=!1}},async signOut(){try{return xe.value=!0,ae.value="",be.removeToken(),be.removeUser(),Et.value=null,Ce.value=null,{success:!0}}catch(e){return console.error("登出错误:",e),ae.value="登出过程中发生错误",be.removeToken(),be.removeUser(),Et.value=null,Ce.value=null,{success:!1,error:ae.value}}finally{xe.value=!1}},clearError(){ae.value=""},hasPermission(e){return!!Ce.value},getDisplayName(){var e;return Ce.value?((e=Ce.value.user_metadata)==null?void 0:e.full_name)||Ce.value.email||"用户":"未登录(不可用)"},getAvatarUrl(){var e;return Ce.value&&((e=Ce.value.user_metadata)==null?void 0:e.avatar_url)||null}},We=(e,t)=>{const s=e.__vccOpts||e;for(const[o,l]of t)s[o]=l;return s},Ma={class:"auth-switch"},$a={class:"switch-container"},Ua=["checked"],Pa=["checked"],La=We({__name:"AuthSwitch",props:{modelValue:{type:String,default:"login"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=Ve(()=>s.modelValue==="login"?"2%":"52%");return(l,n)=>(V(),I("div",Ma,[a("div",$a,[a("input",{id:"login",type:"radio",name:"authMode",value:"login",checked:e.modelValue==="login",onChange:n[0]||(n[0]=r=>l.$emit("update:modelValue","login")),class:"switch-input"},null,40,Ua),n[2]||(n[2]=a("label",{for:"login",class:"switch-label"},"登录(不可用)",-1)),a("input",{id:"register",type:"radio",name:"authMode",value:"register",checked:e.modelValue==="register",onChange:n[1]||(n[1]=r=>l.$emit("update:modelValue","register")),class:"switch-input"},null,40,Pa),n[3]||(n[3]=a("label",{for:"register",class:"switch-label"},"注册(不可用)",-1)),a("div",{class:"slider",style:Ht({left:o.value})},null,4)])]))}},[["__scopeId","data-v-d47a81a4"]]),Da={class:"toast-container"},$n=We({__name:"ToastContainer",props:{errorMessage:{type:String,default:""},successMessage:{type:String,default:""},duration:{type:Number,default:3e3},autoClose:{type:Boolean,default:!0}},emits:["clear-error","clear-success"],setup(e,{emit:t}){const s=e,o=t;let l=null,n=null;const r=()=>{l&&(clearTimeout(l),l=null),o("clear-error")},i=()=>{n&&(clearTimeout(n),n=null),o("clear-success")};return Ke(()=>s.errorMessage,u=>{u&&s.autoClose&&(l&&clearTimeout(l),l=setTimeout(()=>{r()},s.duration))}),Ke(()=>s.successMessage,u=>{u&&s.autoClose&&(n&&clearTimeout(n),n=setTimeout(()=>{i()},s.duration))}),hs(()=>{l&&clearTimeout(l),n&&clearTimeout(n)}),(u,h)=>(V(),I("div",Da,[e.errorMessage?(V(),I("div",{key:0,class:"toast error-toast",onClick:r},[a("span",null,H(e.errorMessage),1),h[0]||(h[0]=a("button",{class:"toast-close"},"×",-1))])):F("",!0),e.successMessage?(V(),I("div",{key:1,class:"toast success-toast",onClick:i},[a("span",null,H(e.successMessage),1),h[1]||(h[1]=a("button",{class:"toast-close"},"×",-1))])):F("",!0)]))}},[["__scopeId","data-v-52e28bd4"]]),Fa={class:"auth-container"},Oa={key:0,class:"initializing-container"},Ra={key:1,class:"user-info"},Ba={class:"user-header"},ja={class:"user-details"},Na={class:"user-display-name"},za={key:0,class:"user-email"},qa={class:"user-stats"},Ha={class:"stat-item"},Ga={class:"stat-value"},Ka={class:"stat-item"},Wa={class:"stat-value"},Ja={key:0,class:"nickname-edit-form"},Qa={class:"form-group"},Ya={class:"nickname-actions"},Za=["disabled"],Xa={key:2,class:"auth-forms"},eu={key:1,class:"back-button"},tu={class:"form-group"},su={class:"input-wrapper"},ou={class:"form-group"},lu={class:"input-wrapper"},nu=["disabled"],ru={class:"forgot-password-link"},iu={class:"form-group"},au={class:"form-group"},uu={class:"form-group"},cu={class:"form-group"},du={key:0,class:"proof-progress"},fu={class:"progress-bar"},pu=["disabled"],hu={class:"form-description"},mu={class:"form-group"},gu=["readonly"],vu={class:"form-group"},_u=["disabled"],bu={class:"resend-code"},yu=["disabled"],wu={class:"form-group"},ku={key:0,class:"proof-progress"},xu={class:"progress-bar"},Cu=["disabled"],Su={class:"form-group"},Tu={class:"form-group"},Eu={class:"form-group"},Au={class:"form-group"},Vu=["disabled"],Iu=We({__name:"AuthComponent",setup(e){const t=D(null),s=D(null),o=D("login"),l=D(!1);D(""),D("");const n=D(!1),r=D(!0),i=D(""),u=D(""),h=D({email:"",password:""});hs(()=>{stopWatching&&stopWatching()});const d=D({email:"",password:"",confirmPassword:"",username:""}),v=D({email:"",code:""}),x=D({email:""}),y=D({email:"",code:"",password:"",confirmPassword:""}),k=D(!1),w=D(0),_=D(""),j=D({username:""});Yt(async()=>{try{await Z.initAuth(),t.value=Z.user.value,t.value&&await J();const N=Ke(()=>Z.user.value,C=>{t.value=C,C?J():s.value=null},{immediate:!1})}finally{r.value=!1}});const G=()=>{i.value="",u.value=""},J=async()=>{if(t.value)try{const N=await ze.getCurrentUser();N?(s.value=N,console.log("用户资料数据:",N)):console.error("获取用户数据失败")}catch(N){console.error("加载用户资料异常:",N)}},O=()=>{var N;n.value=!n.value,n.value&&(j.value.username=((N=t.value)==null?void 0:N.username)||""),G()},ue=async()=>{var N,C;if(t.value){G(),l.value=!0;try{const L=j.value.username.trim();if(!L){i.value="用户名不能为空";return}if(L.length<2||L.length>10){i.value="用户名长度必须在2-10个字符之间";return}const ne=await Sa.updateUserName({username:L});if(ne.success){const X={...t.value,...ne.data};t.value=X,Z.user.value=X,u.value=ne.message||"用户名更新成功!",n.value=!1,await J()}else i.value=ne.message||"更新用户名失败"}catch(L){console.error("更新用户名错误:",L),(C=(N=L.response)==null?void 0:N.data)!=null&&C.message?i.value=L.response.data.message:i.value="更新用户名失败,请稍后重试"}finally{l.value=!1}}},Le=async()=>{G(),l.value=!0;try{const N=await Z.signIn(h.value.email,h.value.password);N.success?(t.value=N.user,u.value="登录(不可用)成功!",h.value={email:"",password:""},await J()):i.value=N.error||"登录(不可用)失败,请检查邮箱和密码"}catch(N){i.value="登录(不可用)过程中发生错误",console.error("登录(不可用)错误:",N)}finally{l.value=!1}},Ie=async()=>{if(G(),d.value.password!==d.value.confirmPassword){i.value="两次输入的密码不一致";return}l.value=!0;try{const N=await Z.signUpWithProof(d.value,C=>{k.value=!0,w.value=C});k.value=!1,w.value=0,N.success?(_.value=d.value.email,v.value.email=d.value.email,o.value="verify-email",u.value="注册(不可用)成功!请查收邮件并验证邮箱",d.value={email:"",password:"",confirmPassword:"",username:""}):i.value=N.error||"注册(不可用)失败,请稍后重试"}catch(N){k.value=!1,w.value=0,i.value="注册(不可用)过程中发生错误",console.error("注册(不可用)错误:",N)}finally{l.value=!1}},de=async()=>{G(),l.value=!0;try{const N=await Z.verifyEmail(v.value.email,v.value.code);N.success?(u.value="邮箱验证成功!请登录(不可用)",o.value="login",v.value={email:"",code:""},_.value=""):i.value=N.error||"验证失败,请重试"}catch(N){i.value="验证过程中发生错误",console.error("验证错误:",N)}finally{l.value=!1}},me=async()=>{G(),l.value=!0;try{const N=v.value.email||_.value,C=await Z.resendVerificationCode(N,L=>{console.log("重发验证码进度:",L)});C.success?u.value="验证码已重新发送,请查收邮件":i.value=C.error||"发送失败,请重试"}catch(N){i.value="发送过程中发生错误",console.error("重发验证码错误:",N)}finally{l.value=!1}},et=async()=>{G(),l.value=!0;try{const N=await Z.forgotPassword(x.value.email,C=>{k.value=!0,w.value=C});k.value=!1,w.value=0,N.success?(y.value.email=x.value.email,o.value="reset-password",u.value="重置码已发送,请查收邮件",x.value={email:""}):i.value=N.error||"发送失败,请重试"}catch(N){k.value=!1,w.value=0,i.value="发送过程中发生错误",console.error("忘记密码错误:",N)}finally{l.value=!1}},Qe=async()=>{if(G(),y.value.password!==y.value.confirmPassword){i.value="两次输入的密码不一致";return}l.value=!0;try{const N=await Z.resetPassword(y.value.email,y.value.code,y.value.password);N.success?(u.value="密码重置成功!请使用新密码登录(不可用)",o.value="login",y.value={email:"",code:"",password:"",confirmPassword:""}):i.value=N.error||"重置失败,请重试"}catch(N){i.value="重置过程中发生错误",console.error("重置密码错误:",N)}finally{l.value=!1}},Re=()=>{o.value="login",G()},Ye=()=>{Z.signOut(),u.value="已成功登出",t.value=null,s.value=null};return(N,C)=>(V(),I("div",Fa,[r.value?(V(),I("div",Oa,C[18]||(C[18]=[a("div",{class:"loading-spinner"},null,-1),a("p",null,"加载中...",-1)]))):t.value?(V(),I("div",Ra,[a("div",Ba,[a("div",ja,[a("div",Na,H(t.value.username||t.value.email),1),t.value.username?(V(),I("div",za,H(t.value.email),1)):F("",!0),a("div",qa,[a("span",Ha,[C[19]||(C[19]=a("span",{class:"stat-icon"},[a("svg",{viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"})])],-1)),a("span",Ga,H(s.value&&s.value.data&&s.value.data.total_likes||0),1)]),a("span",Ka,[C[20]||(C[20]=a("span",{class:"stat-icon down-icon"},[a("svg",{viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"})])],-1)),a("span",Wa,H(s.value&&s.value.data&&s.value.data.total_dislikes||0),1)])])]),a("button",{onClick:O,class:"edit-nickname-btn"},H(n.value?"取消":"编辑用户名"),1)]),n.value?(V(),I("div",Ja,[a("div",Qa,[C[21]||(C[21]=a("label",null,"用户名",-1)),oe(a("input",{"onUpdate:modelValue":C[0]||(C[0]=L=>j.value.username=L),type:"text",placeholder:"请输入用户名",class:"form-input",maxlength:"10"},null,512),[[pe,j.value.username]]),C[22]||(C[22]=a("div",{class:"nickname-hint"},"用户名长度为2-10个字符",-1))]),a("div",Ya,[a("button",{onClick:ue,disabled:l.value,class:"save-nickname-btn"},H(l.value?"保存中...":"保存"),9,Za),a("button",{onClick:O,class:"cancel-nickname-btn"}," 取消 ")])])):F("",!0),a("button",{onClick:Ye,class:"sign-out-btn"}," 退出登录(不可用) ")])):(V(),I("div",Xa,[["verify-email","forgot-password","reset-password"].includes(o.value)?F("",!0):(V(),bs(La,{key:0,modelValue:o.value,"onUpdate:modelValue":C[1]||(C[1]=L=>o.value=L)},null,8,["modelValue"])),["verify-email","forgot-password","reset-password"].includes(o.value)?(V(),I("div",eu,[a("button",{onClick:Re,class:"back-btn"}," ← 返回登录(不可用) ")])):F("",!0),o.value==="login"?(V(),I("form",{key:2,onSubmit:Ne(Le,["prevent"]),class:"auth-form","data-mode":"login"},[a("div",tu,[C[23]||(C[23]=a("label",null,"邮箱",-1)),a("div",su,[oe(a("input",{"onUpdate:modelValue":C[2]||(C[2]=L=>h.value.email=L),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[pe,h.value.email]])])]),a("div",ou,[C[24]||(C[24]=a("label",null,"密码",-1)),a("div",lu,[oe(a("input",{"onUpdate:modelValue":C[3]||(C[3]=L=>h.value.password=L),type:"password",required:"",placeholder:"请输入密码",class:"form-input"},null,512),[[pe,h.value.password]])])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},H(l.value?"登录(不可用)中...":"登录(不可用)"),9,nu),a("div",ru,[a("button",{type:"button",onClick:C[4]||(C[4]=L=>o.value="forgot-password"),class:"link-btn"}," 忘记密码? ")])],32)):F("",!0),o.value==="register"?(V(),I("form",{key:3,onSubmit:Ne(Ie,["prevent"]),class:"auth-form","data-mode":"register"},[a("div",iu,[C[25]||(C[25]=a("label",null,"用户名",-1)),oe(a("input",{"onUpdate:modelValue":C[5]||(C[5]=L=>d.value.username=L),type:"text",required:"",placeholder:"3-10个字符",class:"form-input",minlength:"3",maxlength:"10"},null,512),[[pe,d.value.username]])]),a("div",au,[C[26]||(C[26]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":C[6]||(C[6]=L=>d.value.email=L),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[pe,d.value.email]])]),a("div",uu,[C[27]||(C[27]=a("label",null,"密码",-1)),oe(a("input",{"onUpdate:modelValue":C[7]||(C[7]=L=>d.value.password=L),type:"password",required:"",placeholder:"至少6位",class:"form-input",minlength:"6"},null,512),[[pe,d.value.password]])]),a("div",cu,[C[28]||(C[28]=a("label",null,"确认密码",-1)),oe(a("input",{"onUpdate:modelValue":C[8]||(C[8]=L=>d.value.confirmPassword=L),type:"password",required:"",placeholder:"请再次输入密码",class:"form-input"},null,512),[[pe,d.value.confirmPassword]])]),k.value?(V(),I("div",du,[C[29]||(C[29]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",fu,[a("div",{class:"progress-fill",style:Ht({width:Math.min(w.value/1e3,100)+"%"})},null,4)])])):F("",!0),a("button",{type:"submit",disabled:l.value||k.value,class:"auth-submit-btn"},H(k.value?"计算中...":l.value?"注册(不可用)中...":"注册(不可用)"),9,pu)],32)):F("",!0),o.value==="verify-email"?(V(),I("form",{key:4,onSubmit:Ne(de,["prevent"]),class:"auth-form"},[C[32]||(C[32]=a("div",{class:"form-title"},"邮箱验证",-1)),a("div",hu," 我们已向 "+H(_.value||v.value.email)+" 发送了验证码,请查收邮件并输入验证码。 ",1),a("div",mu,[C[30]||(C[30]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":C[9]||(C[9]=L=>v.value.email=L),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:!!_.value},null,8,gu),[[pe,v.value.email]])]),a("div",vu,[C[31]||(C[31]=a("label",null,"验证码",-1)),oe(a("input",{"onUpdate:modelValue":C[10]||(C[10]=L=>v.value.code=L),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[pe,v.value.code]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},H(l.value?"验证中...":"验证邮箱"),9,_u),a("div",bu,[a("button",{type:"button",onClick:me,disabled:l.value,class:"link-btn"}," 重新发送验证码 ",8,yu)])],32)):F("",!0),o.value==="forgot-password"?(V(),I("form",{key:5,onSubmit:Ne(et,["prevent"]),class:"auth-form"},[C[35]||(C[35]=a("div",{class:"form-title"},"忘记密码",-1)),C[36]||(C[36]=a("div",{class:"form-description"}," 请输入您的邮箱地址,我们将向您发送重置密码的验证码。 ",-1)),a("div",wu,[C[33]||(C[33]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":C[11]||(C[11]=L=>x.value.email=L),type:"email",required:"",placeholder:"请输入注册(不可用)时使用的邮箱",class:"form-input"},null,512),[[pe,x.value.email]])]),k.value?(V(),I("div",ku,[C[34]||(C[34]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",xu,[a("div",{class:"progress-fill",style:Ht({width:Math.min(w.value/1e3,100)+"%"})},null,4)])])):F("",!0),a("button",{type:"submit",disabled:l.value||k.value,class:"auth-submit-btn"},H(k.value?"计算中...":l.value?"发送中...":"发送重置码"),9,Cu)],32)):F("",!0),o.value==="reset-password"?(V(),I("form",{key:6,onSubmit:Ne(Qe,["prevent"]),class:"auth-form"},[C[41]||(C[41]=a("div",{class:"form-title"},"重置密码",-1)),C[42]||(C[42]=a("div",{class:"form-description"}," 请输入您收到的验证码和新密码。 ",-1)),a("div",Su,[C[37]||(C[37]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":C[12]||(C[12]=L=>y.value.email=L),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:""},null,512),[[pe,y.value.email]])]),a("div",Tu,[C[38]||(C[38]=a("label",null,"验证码",-1)),oe(a("input",{"onUpdate:modelValue":C[13]||(C[13]=L=>y.value.code=L),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[pe,y.value.code]])]),a("div",Eu,[C[39]||(C[39]=a("label",null,"新密码",-1)),oe(a("input",{"onUpdate:modelValue":C[14]||(C[14]=L=>y.value.password=L),type:"password",required:"",placeholder:"请输入新密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[pe,y.value.password]])]),a("div",Au,[C[40]||(C[40]=a("label",null,"确认新密码",-1)),oe(a("input",{"onUpdate:modelValue":C[15]||(C[15]=L=>y.value.confirmPassword=L),type:"password",required:"",placeholder:"请再次输入新密码",class:"form-input"},null,512),[[pe,y.value.confirmPassword]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},H(l.value?"重置中...":"重置密码"),9,Vu)],32)):F("",!0)])),Q($n,{"error-message":i.value,"success-message":u.value,duration:3e3,"auto-close":!0,onClearError:C[16]||(C[16]=L=>i.value=""),onClearSuccess:C[17]||(C[17]=L=>u.value="")},null,8,["error-message","success-message"])]))}},[["__scopeId","data-v-09cfbe3d"]]);class Lt{static async getLinks(t,s={}){try{const o={},{linkType:l,platform:n,page:r=1,limit:i=5,sortBy:u="created_at",sortOrder:h="desc",category:d="movies"}=s;r&&(o.page=r),i&&(o.limit=i),u&&(o.sort_by=u),h&&(o.sort_order=h),l&&(o.type=l==="bt"?"magnet":l),n&&(o.platform=n);const v=await gt.getSubjectLinks(t,d,o);if(!v.success)throw v.error==="NOT_FOUND"||v.status===404?(console.log("电影不存在,返回空结果"),new Error("电影不存在")):(console.error("获取链接失败:",v.error),new Error(`获取链接失败: ${v.error}`));const x=v.data||{};let y=x.links||[];const k=x.pagination||{};Array.isArray(y)||(console.warn("API返回的links不是数组格式:",y),y=[]);const w=y.map(_=>({..._,up_votes:_.likes_count||0,down_votes:_.dislikes_count||0,score:(_.likes_count||0)-(_.dislikes_count||0),user_vote_type:_.user_vote_type==="like"?"up":_.user_vote_type==="dislike"?"down":_.user_vote_type||"",user_display_name:_.username||"匿名用户"}));return{success:!0,data:w,pagination:k,count:w.length,total:k.total||0}}catch(o){return console.error("获取链接服务错误:",o),{success:!1,error:o.message||"获取链接失败",data:[],pagination:{page:1,limit:5,total:0,pages:0},count:0,total:0}}}static async addLink(t){try{const{subjectId:s,movieId:o,category:l="movies",linkType:n,platform:r,url:i,extractCode:u,title:h,quality:d,size:v,original_url:x,has_4k:y,has_hdr:k,has_dolby_atmos:w,has_subtitles:_,is_flac:j,is_wav:G}=t,J=s||o;if(!J||!n||!i)throw new Error("缺少必填字段:subjectId, linkType, url");if(!["netdisk","bt","online"].includes(n))throw new Error("无效的链接类型");if(u&&u.length>10)throw new Error("提取码长度不能超过10个字符");const O=await ze.getChallenge();if(!O.success)throw new Error("获取工作量证明挑战失败");const{challenge:ue,difficulty:Le}=O.data,Ie=await no(ue,Le),de={title:h||"",url:i.trim(),type:n==="bt"?"magnet":n,password:u||"",quality:d||"",size:v||"",original_url:x||"",has_4k:!!y,has_hdr:!!k,has_dolby_atmos:!!w,has_subtitles:!!_,is_flac:!!j,is_wav:!!G,proof_of_work:Ie};n==="netdisk"&&r&&r.trim()&&(de.platform=r.trim());const me=await gt.addSubjectLink(J,l,de);if(!me.success)throw console.error("添加链接失败:",me.error),new Error(`添加链接失败: ${me.error}`);return{success:!0,data:me.data,message:"链接添加成功"}}catch(s){return console.error("添加链接服务错误:",s),{success:!1,error:s.message||"添加链接失败"}}}static async deleteLink(t,s,o="movies"){try{if(!s)throw new Error("链接ID不能为空");if(!t)throw new Error("主题ID不能为空");if(!Z.isAuthenticated.value)throw new Error("用户未登录(不可用)");const l=await gt.deleteSubjectLink(t,s,o);if(!l.success)throw console.error("删除链接失败:",l.error),new Error(`删除链接失败: ${l.error}`);return{success:!0,message:l.message||"链接删除成功"}}catch(l){return console.error("删除链接服务错误:",l),{success:!1,error:l.message||"删除链接失败"}}}static async updateLink(t,s,o=null,l="movies"){try{if(!t)throw new Error("链接ID不能为空");if(!Z.isAuthenticated.value)throw new Error("用户未登录(不可用)");if(!s.url||!s.linkType)throw new Error("链接地址和类型不能为空");const n={title:s.title||"",url:s.url,type:s.linkType,platform:s.platform||"",password:s.extractCode||"",size:s.size||"",original_url:s.original_url||"",has_4k:s.has_4k||!1,has_hdr:s.has_hdr||!1,has_dolby_atmos:s.has_dolby_atmos||!1,has_subtitles:s.has_subtitles||!1,is_flac:s.is_flac||!1,is_wav:s.is_wav||!1};let r;if(o?r=await gt.updateSubjectLink(o,t,l,n):r=await gt.updateMovieLink(t,n),!r.success)throw console.error("修改链接失败:",r.error),new Error(`修改链接失败: ${r.error}`);return{success:!0,message:r.message||"链接修改成功",data:r.data}}catch(n){return console.error("修改链接服务错误:",n),{success:!1,error:n.message||"修改链接失败"}}}static async voteLink(t,s,o="movie"){try{if(!t||!s)throw new Error("链接ID和投票类型不能为空");if(!["up","down"].includes(s))throw new Error("无效的投票类型");if(!Z.isAuthenticated.value)throw new Error("用户未登录(不可用)");const l=s==="up"?"like":"dislike",n=await gt.voteLink(t,l,o);if(!n.success)throw console.error("投票失败:",n.error),new Error(`投票失败: ${n.error}`);const r=n.data||{};return{success:!0,message:`${s==="up"?"点赞":"点踩"}成功`,data:{up_votes:r.likes_count||0,down_votes:r.dislikes_count||0,user_vote_type:r.user_vote_type==="like"?"up":r.user_vote_type==="dislike"?"down":null}}}catch(l){return console.error("投票服务错误:",l),{success:!1,error:l.message||"投票失败"}}}static async removeVote(t,s=0,o=0,l="up",n="movie"){try{if(!t)throw new Error("链接ID不能为空");if(!Z.isAuthenticated.value)throw new Error("用户未登录(不可用)");const r=l==="up"?"like":"dislike",i=await gt.removeVote(t,r,n);if(!i.success)throw console.error("取消投票失败:",i.error),new Error(`取消投票失败: ${i.error}`);const u=i.data||{};console.log("removeVote API原始响应:",u);let h,d;if(u.likes_count!==void 0&&u.dislikes_count!==void 0){const v=Math.max(0,u.likes_count||0),x=Math.max(0,u.dislikes_count||0);u.likes_count<0||u.dislikes_count<0?(console.warn("API返回负数,使用本地计算:",u),l==="up"?(h=Math.max(0,s-1),d=o):(h=s,d=Math.max(0,o-1))):(h=v,d=x),console.log("使用API返回数据:",{finalUpVotes:h,finalDownVotes:d,apiUpVotes:v,apiDownVotes:x})}else l==="up"?(h=Math.max(0,s-1),d=o):(h=s,d=Math.max(0,o-1)),console.log("使用本地计算数据:",{finalUpVotes:h,finalDownVotes:d,currentUpVotes:s,currentDownVotes:o,voteType:l});return{success:!0,message:"取消投票成功",data:{up_votes:h,down_votes:d,user_vote_type:null}}}catch(r){return console.error("取消投票服务错误:",r),{success:!1,error:r.message||"取消投票失败"}}}static async reportLink(t,s,o="",l="movie"){try{if(!t||!s)throw new Error("链接ID和反馈类型不能为空");if(!Z.isAuthenticated.value)throw new Error("用户未登录(不可用)");const n={link_id:t,link_type:l,type:s.trim(),reason:o.trim()||null},r=await gt.reportLink(n);if(!r.success)throw console.error("反馈失败:",r.error),new Error(`反馈失败: ${r.error}`);return{success:!0,data:r.data,message:"反馈提交成功"}}catch(n){return console.error("反馈服务错误:",n),{success:!1,error:n.message||"反馈失败"}}}}const Mu="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1756543843235'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='20280'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%20330.666667c14.933333%200%2029.866667%204.266667%2040.533333%2014.933333l277.33333399%20234.666667c27.733333%2023.466667%2029.866667%2064%208.53333301%2089.6-23.466667%2027.733333-64%2029.866667-89.6%208.53333299L512%20477.866667l-236.8%20200.53333299c-27.733333%2023.466667-68.266667%2019.19999999-89.6-8.53333299-23.466667-27.733333-19.19999999-68.266667%208.53333301-89.6l277.33333399-234.666667c10.666667-10.666667%2025.6-14.933333%2040.533333-14.933333z'%20fill='currentColor'%20p-id='20281'%3e%3c/path%3e%3c/svg%3e",$u={name:"CustomSelect",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0,default:()=>[]},placeholder:{type:String,default:"请选择"}},emits:["update:modelValue","change"],data(){return{isOpen:!1}},computed:{selectedLabel(){const e=this.options.find(t=>t.value===this.modelValue);return e?e.label:""}},mounted(){document.addEventListener("click",this.closeDropdown)},beforeUnmount(){document.removeEventListener("click",this.closeDropdown)},methods:{toggleDropdown(){this.isOpen=!this.isOpen},selectOption(e){this.$emit("update:modelValue",e.value),this.$emit("change",e.value),this.isOpen=!1},closeDropdown(){this.isOpen=!1}}},Uu={class:"selected-text"},Pu={class:"select-dropdown"},Lu=["onClick"];function Du(e,t,s,o,l,n){return V(),I("div",{class:ke(["custom-select",{"is-open":l.isOpen}]),onClick:t[1]||(t[1]=Ne(()=>{},["stop"]))},[a("div",{class:"select-trigger",onClick:t[0]||(t[0]=(...r)=>n.toggleDropdown&&n.toggleDropdown(...r))},[a("span",Uu,H(n.selectedLabel||s.placeholder),1),a("img",{src:Mu,class:ke(["arrow",{"arrow-up":l.isOpen}]),alt:"箭头"},null,2)]),oe(a("div",Pu,[(V(!0),I(ve,null,Hs(s.options,r=>(V(),I("div",{class:ke(["select-option",{selected:r.value===s.modelValue}]),key:r.value,onClick:i=>n.selectOption(r)},H(r.label),11,Lu))),128))],512),[[to,l.isOpen]])],2)}const Dt=We($u,[["render",Du],["__scopeId","data-v-3b2cba4f"]]),Fu={name:"LinkItemSkeleton"},Ou={class:"link-item skeleton"};function Ru(e,t,s,o,l,n){return V(),I("div",Ou,t[0]||(t[0]=[cn('<div class="link-header" data-v-115afd35><div class="platform-badge skeleton-element" data-v-115afd35><div class="skeleton-icon" data-v-115afd35></div></div><div class="link-meta" data-v-115afd35><div class="skeleton-element skeleton-language" data-v-115afd35></div></div></div><div class="link-content" data-v-115afd35><div class="link-title-row" data-v-115afd35><div class="skeleton-element skeleton-title" data-v-115afd35></div><div class="expand-arrow" data-v-115afd35><div class="skeleton-element skeleton-arrow" data-v-115afd35></div></div></div></div>',2)]))}const Un=We(Fu,[["render",Ru],["__scopeId","data-v-115afd35"]]),Bu=["checked"],ju={key:0,class:"checkbox-label"},Je=We({__name:"CheckBox",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""},color:{type:String,default:"blue",validator:e=>["blue","green","purple","red"].includes(e)}},emits:["update:modelValue"],setup(e){return(t,s)=>(V(),I("label",{class:ke(["ios-checkbox",e.color])},[a("input",{type:"checkbox",checked:e.modelValue,onChange:s[0]||(s[0]=o=>t.$emit("update:modelValue",o.target.checked))},null,40,Bu),s[1]||(s[1]=a("div",{class:"checkbox-wrapper"},[a("div",{class:"checkbox-bg"}),a("svg",{fill:"none",viewBox:"0 0 24 24",class:"checkbox-icon"},[a("path",{"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":"3",stroke:"currentColor",d:"M4 12L10 18L20 6",class:"check-path"})])],-1)),e.label?(V(),I("span",ju,H(e.label),1)):F("",!0)],2))}},[["__scopeId","data-v-150f8c13"]]),Nu={class:"tooltip"},zu={class:"tooltip"},Pn=We({__name:"CopyTooltip",props:{text:{type:String,required:!0},type:{type:String,default:"url",validator:e=>["url","code"].includes(e)}},emits:["copy-success","copy-error"],setup(e,{emit:t}){const s=e,o=t,l=D(!1),n=Ve(()=>l.value?"已复制":s.type==="url"?"点击复制链接(右键打开)":"点击复制提取码"),r=u=>u,i=async()=>{try{await navigator.clipboard.writeText(s.text),l.value=!0,o("copy-success",s.text),setTimeout(()=>{l.value=!1},2e3)}catch(u){console.error("复制失败:",u),o("copy-error",u)}};return(u,h)=>e.type==="url"?(V(),I("span",{key:0,class:ke(["copy-item",{copied:l.value}]),onClick:i},[es(H(r(e.text))+" ",1),a("span",Nu,H(n.value),1)],2)):e.type==="code"?(V(),I("code",{key:1,class:ke(["extract-code",{copied:l.value}]),onClick:i},[es(H(e.text)+" ",1),a("span",zu,H(n.value),1)],2)):F("",!0)}},[["__scopeId","data-v-aaaa00e5"]]),qu={quark:{domains:["pan.quark.cn"]},ali:{domains:["www.aliyundrive.com","www.alipan.com"]},baidu:{domains:["pan.baidu.com"]},tianyi:{domains:["cloud.189.cn","content.21cn.com"]},mobile:{domains:["caiyun.139.com","yun.139.com"]},115:{domains:["115cdn.com"]},xunlei:{domains:["pan.xunlei.com"]},uc:{domains:["drive.uc.cn"]},123:{domains:["www.123684.com"]},lanzou:{domains:["lanzou.com","lanzous.com","lanzoux.com","lanzoui.com","lanzouv.com","lanzouw.com","lanzouy.com","lanzn.com","wwi.lanzn.com"]}},Hu=/^magnet:\?xt=urn:btih:[a-fA-F0-9]{32,40}/;function Gu(e){if(!e||typeof e!="string")return{type:null,platform:null,isValid:!1};const t=e.trim();if(Hu.test(t))return{type:"bt",platform:null,isValid:!0};for(const[s,o]of Object.entries(qu))try{const l=new URL(t);if(o.domains.includes(l.hostname))return{type:"netdisk",platform:s,isValid:!0}}catch{continue}return/^https?:\/\/.+/.test(t)?{type:"online",platform:null,isValid:!0}:{type:null,platform:null,isValid:!1}}function Ln(e){if(!e||typeof e!="string")return null;const t=[/[?&]password=([a-zA-Z0-9]+)/i,/[?&]pwd=([a-zA-Z0-9]+)/i,/#([a-zA-Z0-9]{4})$/,/提取码[::]\s*([a-zA-Z0-9]+)/i,/密码[::]\s*([a-zA-Z0-9]+)/i,/访问码[::]\s*([a-zA-Z0-9]+)/i,/验证码[::]\s*([a-zA-Z0-9]+)/i,/code[::]\s*([a-zA-Z0-9]+)/i];for(const s of t){const o=e.match(s);if(o&&o[1])return o[1]}return null}function Ku(e){if(!e||typeof e!="string")return"";let t=e.trim();const s=t.match(/(https?:\/\/[^\s]+)/i);if(s)return s[1];const o=t.match(/(magnet:\?[^\s]+)/i);return o?o[1]:t}function Dn(e){if(!e||typeof e!="string")return{has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,file_size:null,is_flac:!1,is_wav:!1};e.toLowerCase();const t=/(^|[^a-zA-Z0-9])(4k|4K|2160p|2160P|3840x2160|3840X2160)([^a-zA-Z]|$)/i.test(e),s=/(^|[^a-zA-Z])(hdr|HDR|hdr[\d\+]*|HDR[\d\+]*|dolby\s*vision|Dolby\s*Vision|dolbyvision|DolbyVision)([^a-zA-Z]|$)/i.test(e),o=/(^|[^a-zA-Z\u4e00-\u9fff])(ddp[\d\.]*\s*atmos|DDP[\d\.]*\s*Atmos|杜比全景声|dolby\s*atmos|Dolby\s*Atmos|全景声|杜比音效|杜比立体声|杜比数字音效|杜比环绕声|杜比\s*[\u4e00-\u9fff]*音[\u4e00-\u9fff]*|dolby\s*[\w\s]*audio|Dolby\s*[\w\s]*Audio)([^a-zA-Z\u4e00-\u9fff]|$)/i.test(e),l=/(^|[^a-zA-Z])(flac|FLAC|\.flac|\.FLAC|无损flac|FLAC无损|flac无损)([^a-zA-Z]|$)/i.test(e),n=/(^|[^a-zA-Z])(wav|WAV|\.wav|\.WAV|无损wav|WAV无损|wav无损)([^a-zA-Z]|$)/i.test(e),r=[/[\(\[\(](\d+(?:\.\d+)?[KMGT]B?)[\)\]\)]/gi,/[\(\[\(](\d+(?:\.\d+)?[kmgt]b?)[\)\]\)]/gi,/容量(\d+(?:\.\d+)?[KMGT]B?)/gi,/大小(\d+(?:\.\d+)?[KMGT]B?)/gi,/(\d+(?:\.\d+)?[KMGT]B?)容量/gi,/(\d+(?:\.\d+)?[KMGT]B?)大小/gi,/[\||](\d+(?:\.\d+)?[KMGT]B?)[\||]/gi,/[\s\||](\d+(?:\.\d+)?[KMGT]B?)[\s\||]/gi];let i=null;for(const u of r){const h=e.match(u);if(h&&h.length>0){const d=h.map(v=>{const x=v.match(/(\d+(?:\.\d+)?[KMGTkmgt]B?)/i);if(x){let y=x[1];return(y.endsWith("GB")||y.endsWith("MB")||y.endsWith("KB")||y.endsWith("TB"))&&(y=y.slice(0,-1)),y=y.toUpperCase(),y}return null}).filter(Boolean);if(d.length>0){i=d.join(" + ");break}}}return{has_4k:t,has_hdr:s,has_dolby_atmos:o,file_size:i,is_flac:l,is_wav:n}}function Fn(e){const t=Ln(e),s=Ku(e),o=Gu(s),l=Ln(s),n=t||l;return{linkType:o.type||"",platform:o.platform||"",extractCode:n||"",cleanedUrl:s,isValid:o.isValid}}const Wu={class:"link-manager"},Ju={key:0,class:"modal-overlay"},Qu={class:"modal-content"},Yu={class:"modal-body"},Zu={class:"form-row"},Xu={class:"form-group"},ec={class:"form-row"},tc={key:0,class:"form-group"},sc={key:1,class:"form-group"},oc={class:"input-wrapper"},lc={class:"form-group"},nc={class:"input-wrapper"},rc={class:"form-row"},ic={class:"form-group"},ac={class:"input-wrapper"},uc={class:"form-group"},cc={class:"input-wrapper"},dc={class:"form-row"},fc={class:"form-group"},pc={class:"input-wrapper"},hc={key:0,class:"form-group"},mc={class:"checkbox-group"},gc={class:"form-actions"},vc=["disabled"],_c={key:1,class:"modal-overlay"},bc={class:"modal-content"},yc={class:"modal-body"},wc={class:"form-row"},kc={class:"form-group"},xc={class:"form-row"},Cc={key:0,class:"form-group"},Sc={key:1,class:"form-group"},Tc={class:"input-wrapper"},Ec={class:"form-group"},Ac={class:"input-wrapper"},Vc={class:"form-row"},Ic={class:"form-group"},Mc={class:"input-wrapper"},$c={class:"form-group"},Uc={class:"input-wrapper"},Pc={class:"form-row"},Lc={class:"form-group"},Dc={class:"input-wrapper"},Fc={key:0,class:"form-group"},Oc={class:"checkbox-group"},Rc={class:"form-actions"},Bc=["disabled"],jc={class:"links-section"},Nc={class:"filter-bar"},zc={class:"filter-controls"},qc=["disabled"],Hc={key:0,class:"links-list"},Gc={key:1,class:"links-list"},Kc={key:2,class:"links-list"},Wc=["onClick"],Jc={class:"link-header"},Qc={key:0,class:"platform-badge"},Yc=["src","alt"],Zc={class:"link-meta"},Xc={key:0,class:"language"},ed={key:1,class:"file-size"},td={key:2,class:"feature-tags"},sd={key:0,class:"feature-tag feature-4k"},od={key:1,class:"feature-tag feature-hdr"},ld={key:2,class:"feature-tag feature-dolby"},nd={key:3,class:"feature-tag feature-subtitle"},rd={key:0,class:"feature-tag feature-flac"},id={key:1,class:"feature-tag feature-wav"},ad={class:"link-content"},ud={class:"link-title-row"},cd={class:"link-details"},dd=["onContextmenu"],fd={class:"vote-section"},pd=["onClick","disabled"],hd={viewBox:"0 0 100 100",class:"vote-icon",xmlns:"http://www.w3.org/2000/svg"},md=["fill"],gd=["onClick","disabled"],vd={viewBox:"0 0 100 100",class:"vote-icon down-icon",xmlns:"http://www.w3.org/2000/svg"},_d=["fill"],bd={class:"action-buttons"},yd=["onClick"],wd=["onClick"],kd=["onClick"],xd={class:"link-footer"},Cd={class:"footer-left"},Sd=["href"],Td={class:"author"},Ed={class:"footer-right"},Ad={class:"date"},Vd={key:0,class:"report-count"},Id={key:3,class:"login-prompt"},Md={key:4,class:"empty-state"},$d={key:2,class:"pagination"},Ud=["disabled"],Pd={class:"pagination-info"},Ld=["disabled"],Dd={key:0,class:"modal-overlay"},Fd={class:"modal-content"},Od={class:"modal-body"},Rd={class:"form-actions"},Bd=["disabled"],jd={key:1,class:"modal-overlay"},Nd={class:"modal-content"},zd={class:"modal-body"},qd={class:"form-group"},Hd={class:"form-group"},Gd={class:"input-wrapper"},Kd={class:"form-actions"},Wd=["disabled"],Jd=800,Cs="doubanflix_link_draft",Qd=We({__name:"LinkManager",props:{subjectId:{type:String,required:!0},subjectCategory:{type:String,required:!0,validator:e=>["movie","albums","books","games"].includes(e)},linkType:{type:String,default:"all"}},setup(e){const t=e,s=Ve(()=>t.linkType),o=Ve(()=>({movies:"movie",albums:"album",books:"book",games:"game"})[t.subjectCategory]||"movie"),l=D([]),n=D(!1),r=D(!1),i=D(""),u=D(""),h=D(!1),d=D(!1),v=D(null),x=D(!1),y=D(new Set),k=D({page:1,limit:5,total:0,pages:0}),w=It({linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",original_url:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1,is_flac:!1,is_wav:!1}),_=It({id:"",linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",original_url:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1,is_flac:!1,is_wav:!1}),j=D(!1),G=It({platform:"",sortBy:"created_at"}),J=[{value:"",label:"请选择类型"},{value:"netdisk",label:"网盘"},{value:"bt",label:"BT"},{value:"online",label:"在线"}],O=[{value:"",label:"请选择平台"},{value:"quark",label:"夸克网盘"},{value:"ali",label:"阿里云盘"},{value:"baidu",label:"百度网盘"},{value:"tianyi",label:"天翼云盘"},{value:"mobile",label:"移动云盘"},{value:"115",label:"115网盘"},{value:"xunlei",label:"迅雷网盘"},{value:"uc",label:"UC网盘"},{value:"123",label:"123网盘"},{value:"lanzou",label:"蓝奏网盘"}];Ke(()=>w.url,(g,c)=>{if(g&&g.trim()){const p=Fn(g.trim());p.isValid&&(w.url=p.cleanedUrl,w.linkType=p.linkType,w.platform=p.platform,w.extractCode=p.extractCode)}else(!g||g.trim()==="")&&(w.linkType="",w.platform="",w.extractCode="")}),Ke(()=>_.url,(g,c)=>{if(!j.value)if(g&&g.trim()){const p=Fn(g.trim());p.isValid&&(_.url=p.cleanedUrl,_.linkType=p.linkType,_.platform=p.platform,_.extractCode=p.extractCode)}else(!g||g.trim()==="")&&(_.linkType="",_.platform="",_.extractCode="")}),Ke(()=>w.title,g=>{if(g&&g.trim()){const c=Dn(g.trim());t.subjectCategory==="movies"?(w.has_4k=c.has_4k,w.has_hdr=c.has_hdr,w.has_dolby_atmos=c.has_dolby_atmos):t.subjectCategory==="albums"&&(w.is_flac=c.is_flac,w.is_wav=c.is_wav),c.file_size&&!w.size&&(w.size=c.file_size)}}),Ke(()=>_.title,g=>{if(!j.value&&g&&g.trim()){const c=Dn(g.trim());t.subjectCategory==="movies"?(_.has_4k=c.has_4k,_.has_hdr=c.has_hdr,_.has_dolby_atmos=c.has_dolby_atmos):t.subjectCategory==="albums"&&(_.is_flac=c.is_flac,_.is_wav=c.is_wav),c.file_size&&!_.size&&(_.size=c.file_size)}});const ue=[{value:"created_at",label:"按时间"},{value:"likes_count",label:"按点赞数"},{value:"like_rate",label:"按点赞率"}],Le=Ve(()=>{switch(d.value?_.linkType:w.linkType){case"netdisk":return O;default:return[{value:"",label:"请选择平台"}]}}),Ie=Ve(()=>{const g=[{value:"",label:"所有平台"}];switch(t.linkType){case"netdisk":return g.concat([{value:"quark",label:"夸克"},{value:"ali",label:"阿里"},{value:"baidu",label:"百度"},{value:"tianyi",label:"天翼"},{value:"mobile",label:"移动"},{value:"115",label:"115"},{value:"xunlei",label:"迅雷"},{value:"uc",label:"UC"},{value:"123",label:"123"},{value:"lanzou",label:"蓝奏"}]);default:return g}}),de=Ve(()=>Z.isAuthenticated.value),me=async(g=1)=>{if(t.subjectId){if(Z.initialized.value||(r.value=!0,await Z.initAuth(),r.value=!1),!de.value){l.value=[],k.value={page:1,limit:5,total:0,pages:0},n.value=!1,i.value="";return}n.value=!0,i.value="";try{const c=t.linkType==="all"?void 0:t.linkType,p=await Lt.getLinks(t.subjectId,{linkType:c,platform:G.platform||void 0,sortBy:G.sortBy,sortOrder:"desc",page:g,limit:k.value.limit,category:t.subjectCategory});p.success?(l.value=p.data.links||p.data,p.pagination?k.value={page:p.pagination.current_page||p.pagination.page||1,limit:p.pagination.per_page||p.pagination.limit||5,total:p.pagination.total_items||p.pagination.total||0,pages:p.pagination.total_pages||p.pagination.pages||0}:p.data&&p.data.pagination&&(k.value={page:p.data.pagination.current_page||p.data.pagination.page||1,limit:p.data.pagination.per_page||p.data.pagination.limit||5,total:p.data.pagination.total_items||p.data.pagination.total||0,pages:p.data.pagination.total_pages||p.data.pagination.pages||0})):p.error&&(p.error.includes("电影不存在")||p.error.includes("主题不存在"))?(console.log("主题不存在,静默处理"),l.value=[],k.value={page:1,limit:5,total:0,pages:0}):p.error&&(p.error.includes("请先登录(不可用)")||p.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",p.error):i.value=p.error}catch(c){c.message&&(c.message.includes("电影不存在")||c.message.includes("主题不存在"))?(console.log("主题不存在,静默处理"),l.value=[],k.value={page:1,limit:5,total:0,pages:0}):c.message&&(c.message.includes("请先登录(不可用)")||c.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",c.message):(i.value="加载链接失败",console.error("加载链接错误:",c))}finally{n.value=!1}}},et=async()=>{if(de.value){x.value=!0,i.value="";try{const g=await Lt.addLink({subjectId:t.subjectId,category:t.subjectCategory,linkType:w.linkType,platform:w.platform,url:w.url,extractCode:w.extractCode,title:w.title,size:w.size,original_url:w.original_url,has_4k:w.has_4k,has_hdr:w.has_hdr,has_dolby_atmos:w.has_dolby_atmos,has_subtitles:w.has_subtitles,is_flac:w.is_flac,is_wav:w.is_wav});g.success?(u.value=g.message,Ot(),b(),h.value=!1,await me(),setTimeout(()=>{u.value=""},3e3)):g.error&&(g.error.includes("请先登录(不可用)")||g.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.error):i.value=g.error}catch(g){g.message&&(g.message.includes("请先登录(不可用)")||g.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.message):(i.value="添加链接失败",console.error("添加链接错误:",g))}finally{x.value=!1}}},Qe=D(new Map),Re=D(new Map),Ye=D(new Map),N=async(g,c)=>{if(!de.value)return;const p=l.value.find(st=>st.id===g);if(!p)return;if(Qe.value.has(g)&&clearTimeout(Qe.value.get(g)),Ye.value.has(g)){const st=Ye.value.get(g);st.cancelled=!0,console.log("取消上一次正在执行的投票操作:",g)}Re.value.has(g)||Re.value.set(g,{originalUserVote:p.user_vote_type,originalUpVotes:p.up_votes||0,originalDownVotes:p.down_votes||0,clickSequence:[],link:p});const W=Re.value.get(g);W.clickSequence.push({voteType:c,timestamp:Date.now()});const Fe=L(W.originalUserVote,W.clickSequence);let bt=W.originalUpVotes,Se=W.originalDownVotes;W.originalUserVote==="up"?Fe===null?bt=Math.max(0,W.originalUpVotes-1):Fe==="down"?(bt=Math.max(0,W.originalUpVotes-1),Se=W.originalDownVotes+1):bt=W.originalUpVotes:W.originalUserVote==="down"?Fe===null?Se=Math.max(0,W.originalDownVotes-1):Fe==="up"?(Se=Math.max(0,W.originalDownVotes-1),bt=W.originalUpVotes+1):Se=W.originalDownVotes:Fe==="up"?bt=W.originalUpVotes+1:Fe==="down"&&(Se=W.originalDownVotes+1),p.user_vote_type=Fe,p.up_votes=bt,p.down_votes=Se;const yt=setTimeout(async()=>{const st=Re.value.get(g);if(!st)return;const he={cancelled:!1,linkId:g,timestamp:Date.now()};Ye.value.set(g,he),Qe.value.delete(g),Re.value.delete(g),await C(st,he),Ye.value.get(g)===he&&Ye.value.delete(g)},Jd);Qe.value.set(g,yt)},C=async(g,c)=>{const{originalUserVote:p,originalUpVotes:W,originalDownVotes:Fe,clickSequence:bt,link:Se}=g,yt=Se.id;if(c&&c.cancelled){console.log("投票操作已被取消,跳过API请求:",yt);return}const st=L(p,bt);if(console.log("分析用户投票意图:",{linkId:yt,originalUserVote:p,clickSequence:bt.map(he=>he.voteType),finalIntention:st,currentUIState:Se.user_vote_type,executionId:c==null?void 0:c.timestamp}),st===p){console.log("用户最终意图与原始状态相同,跳过API请求");return}try{if(c&&c.cancelled){console.log("API请求前检查:投票操作已被取消:",yt);return}let he;if(st===null?he=await Lt.removeVote(yt,W,Fe,p,o.value):he=await Lt.voteLink(yt,st,o.value),c&&c.cancelled){console.log("API请求完成后检查:投票操作已被取消,忽略结果:",yt);return}he.success?he.data&&(Se.user_vote_type=he.data.user_vote_type,Se.up_votes=he.data.up_votes||0,Se.down_votes=he.data.down_votes||0):(Se.user_vote_type=p,Se.up_votes=W,Se.down_votes=Fe,he.error&&(he.error.includes("请先登录(不可用)")||he.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",he.error):i.value=he.error)}catch(he){if(c&&c.cancelled){console.log("异常处理中检查:投票操作已被取消,忽略错误:",yt);return}Se.user_vote_type=p,Se.up_votes=W,Se.down_votes=Fe,he.message&&(he.message.includes("请先登录(不可用)")||he.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",he.message):(i.value="投票操作失败",console.error("投票请求错误:",he))}},L=(g,c)=>{if(c.length===0)return g;let p=g;for(const W of c){const{voteType:Fe}=W;p===Fe?p=null:p=Fe}return p},ne=async g=>{De.value=g.id,Rt.value=g.subject_id||g.movie_id,tt.value=!0},X=()=>{tt.value=!1,De.value="",Rt.value="",Bt.value=!1},vt=async()=>{if(!(!De.value||!Rt.value))try{Bt.value=!0;const g=await Lt.deleteLink(Rt.value,De.value,t.subjectCategory);g.success?(u.value=g.message,X(),await me(),setTimeout(()=>{u.value=""},3e3)):g.error&&(g.error.includes("请先登录(不可用)")||g.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.error):i.value=g.error}catch(g){g.message&&(g.message.includes("请先登录(不可用)")||g.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.message):(i.value="删除链接失败",console.error("删除链接错误:",g))}finally{Bt.value=!1}},Ot=()=>{Object.assign(w,{linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",original_url:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1,is_flac:!1,is_wav:!1})},tt=D(!1),De=D(""),Rt=D(""),Bt=D(!1),ss=D(!1),_e=It({linkId:"",type:"",reason:""}),_t=D(!1),Ts=[{value:"invalid_link",label:"无效链接"},{value:"copyright_issue",label:"版权问题"},{value:"malicious_link",label:"恶意链接"},{value:"spam",label:"垃圾信息"},{value:"fake_content",label:"虚假内容"},{value:"other",label:"其他"}],ro=g=>{de.value&&(_e.linkId=g,_e.type="invalid_link",_e.reason="",ss.value=!0)},jt=async()=>{if(!_e.type){de.value&&(i.value="请选择反馈类型");return}_t.value=!0,i.value="";try{const g=await Lt.reportLink(_e.linkId,_e.type,_e.reason,o.value);g.success?(u.value=g.message,ss.value=!1,await me(),setTimeout(()=>{u.value=""},3e3)):g.error&&(g.error.includes("请先登录(不可用)")||g.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.error):i.value=g.error}catch(g){g.message&&(g.message.includes("请先登录(不可用)")||g.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.message):(i.value="反馈提交失败",console.error("反馈错误:",g))}finally{_t.value=!1}},Go=()=>{ss.value=!1,_e.linkId="",_e.reason="",_e.description=""},f=()=>{const g={linkType:w.linkType,platform:w.platform,url:w.url,extractCode:w.extractCode,title:w.title,language:w.language,has_4k:w.has_4k,has_hdr:w.has_hdr,has_dolby_atmos:w.has_dolby_atmos,has_subtitles:w.has_subtitles,timestamp:Date.now()};Object.values(g).some(p=>p&&p!==""&&typeof p!="number")&&localStorage.setItem(Cs,JSON.stringify(g))},m=()=>{try{const g=localStorage.getItem(Cs);if(g){const c=JSON.parse(g);if(Date.now()-c.timestamp>24*60*60*1e3)localStorage.removeItem(Cs);else return Object.assign(w,{linkType:c.linkType||"",platform:c.platform||"",url:c.url||"",extractCode:c.extractCode||"",title:c.title||"",language:c.language||"",has_4k:c.has_4k||!1,has_hdr:c.has_hdr||!1,has_dolby_atmos:c.has_dolby_atmos||!1,has_subtitles:c.has_subtitles||!1}),!0}}catch(g){console.error("恢复草稿失败:",g),localStorage.removeItem(Cs)}return!1},b=()=>{localStorage.removeItem(Cs)},A=()=>{h.value=!0,m()&&console.log("已恢复草稿内容")},S=()=>{f(),h.value=!1,Ot()},T=()=>{d.value=!1,v.value=null,$()},U=g=>{v.value=g,j.value=!0,_.id=g.id,_.linkType=g.type,_.platform=g.platform||"",_.url=g.url,_.extractCode=g.password||"",_.title=g.title||"",_.size=g.size||"",_.original_url=g.original_url||"",_.has_4k=g.has_4k||!1,_.has_hdr=g.has_hdr||!1,_.has_dolby_atmos=g.has_dolby_atmos||!1,_.has_subtitles=g.has_subtitles||!1,_.is_flac=g.is_flac||!1,_.is_wav=g.is_wav||!1,d.value=!0,Sl(()=>{j.value=!1})},$=()=>{_.id="",_.linkType="",_.platform="",_.url="",_.extractCode="",_.title="",_.size="",_.original_url="",_.has_4k=!1,_.has_hdr=!1,_.has_dolby_atmos=!1,_.has_subtitles=!1,_.is_flac=!1,_.is_wav=!1},M=async()=>{if(!x.value)try{x.value=!0,i.value="";const g=await Lt.updateLink(_.id,_,t.subjectId,t.subjectCategory);g.success?(u.value=g.message,T(),await me(k.value.page),setTimeout(()=>{u.value=""},3e3)):g.error&&(g.error.includes("请先登录(不可用)")||g.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.error):i.value=g.error}catch(g){console.error("修改链接失败:",g),g.message&&(g.message.includes("请先登录(不可用)")||g.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",g.message):i.value=g.message||"修改链接失败"}finally{x.value=!1}},E=g=>g.hasOwnProperty("is_owner")?de.value&&g.is_owner:de.value&&Z.userId.value===g.user_id,B=g=>({quark:"夸克",ali:"阿里",baidu:"百度",tianyi:"天翼",mobile:"移动",115:"115",xunlei:"迅雷",uc:"UC",123:"123",lanzou:"蓝奏",bilibili:"B站",iqiyi:"爱奇艺",youku:"优酷",tencent:"腾讯",bt:"磁力"})[g]||g,P=g=>{const c={quark:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540462038" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4774" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M469.134884 976.133953c-110.258605-9.763721-215.516279-59.534884-290.768372-137.168372-75.490233-78.109767-113.830698-154.552558-132.167442-263.858604-4.762791-28.338605-5.477209-95.970233-1.190698-123.832558 10.24-68.822326 33.101395-134.072558 64.297675-184.32 88.349767-142.407442 236.710698-226.470698 399.598139-226.470698 69.536744 0 132.167442 12.621395 192.416744 39.054884 52.628837 23.099535 110.496744 64.297674 149.313489 106.448372 60.725581 65.964651 91.92186 122.165581 114.783255 206.943256 18.098605 66.917209 18.574884 160.982326 1.428838 227.423255-19.289302 73.585116-45.484651 126.213953-92.636279 184.55814-40.96 50.96186-84.063256 86.92093-140.740466 117.402791-59.534884 32.148837-114.545116 48.104186-184.08186 53.819534-34.053953 2.857674-47.151628 2.857674-80.253023 0z m84.063256-238.615813c11.668837-5.00093 20.71814-19.051163 20.718139-32.625117 0-23.337674 4.524651-49.771163 10.47814-61.44 12.145116-23.813953 28.338605-32.148837 77.395348-39.769302 19.051163-2.857674 38.578605-6.906047 43.341396-8.811163 13.573953-5.953488 24.766512-17.384186 32.148837-33.339535 6.667907-14.526512 6.906047-15.955349 6.906047-53.105116-0.23814-41.19814-1.666977-50.247442-15.955349-87.15907-21.194419-55.486512-76.91907-110.734884-132.167442-130.738604-11.430698-4.048372-33.577674-9.525581-49.294884-12.383256-26.195349-4.286512-31.196279-4.524651-53.819535-1.905117-44.770233 5.23907-72.394419 14.050233-103.352558 32.625117-19.527442 11.906977-20.956279 13.097674-44.532093 36.435349-34.530233 34.053953-52.390698 67.155349-63.345116 116.688372-19.051163 86.92093 15.47907 178.604651 87.873488 233.853023 30.243721 23.099535 74.537674 41.674419 106.686512 44.770232 27.624186 2.857674 66.67907 1.190698 76.91907-3.095813z" fill="#3A25DD" p-id="4775"></path></svg>'),ali:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540539411" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5761" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M841.984 576.554667a18.816 18.816 0 0 1-13.184-21.973334c41.941333-200.448-75.605333-402.346667-269.226667-456.021333-199.509333-55.125333-405.333333 67.285333-459.52 273.109333v0.981334a460.586667 460.586667 0 0 0 62.464 371.2 439.893333 439.893333 0 0 0 208.768 167.765333c236.544 89.301333 491.178667-44.373333 566.272-283.349333a23.04 23.04 0 0 0-15.573333-29.269334l-80-22.442666z m-393.130667 194.133333c-72.704-20.010667-133.162667-68.266667-170.752-135.125333a298.112 298.112 0 0 1-28.288-219.989334C282.026667 293.12 404.48 220.501333 523.52 253.141333c112.64 31.232 182.4 146.346667 161.92 262.912a21.205333 21.205333 0 0 0 15.104 24.405334l75.605333 20.949333a17.493333 17.493333 0 0 1 11.733334 22.954667c-47.36 142.933333-195.114667 225.834667-338.986667 186.325333z" fill="#6666FF" p-id="5762"></path></svg>'),baidu:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540564286" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6851" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M292.571429 435.931429c-1.462857-11.702857-2.925714-24.868571-2.925715-38.034286C289.645714 275.017143 389.12 175.542857 512 175.542857c122.88 0 222.354286 99.474286 222.354286 223.817143 0 13.165714-1.462857 24.868571-2.925715 38.034286 112.64 0 204.8 92.16 204.8 206.262857 0 112.64-92.16 204.8-206.262857 204.8-57.051429 0-109.714286-23.405714-146.285714-61.44-19.017143-20.48-19.017143-52.662857 0-71.68 20.48-20.48 52.662857-20.48 71.68 0l1.462857 1.462857c19.017143 17.554286 43.885714 29.257143 71.68 29.257143 57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-26.331429 0-49.737143 10.24-68.754286 26.331428l-1.462857 1.462857-5.851428 5.851429-4.388572 4.388571-207.725714 210.651429c-38.034286 38.034286-89.234286 61.44-146.285714 61.44C179.931429 848.457143 87.771429 756.297143 87.771429 642.194286c0-112.64 90.697143-204.8 204.8-206.262857m1.462857 310.125714c57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-57.051429 0-103.862857 46.811429-103.862857 103.862857 0 57.051429 46.811429 103.862857 103.862857 103.862857M512 520.777143c67.291429 0 121.417143-54.125714 121.417143-121.417143 0-67.291429-54.125714-121.417143-121.417143-121.417143-67.291429 0-121.417143 54.125714-121.417143 121.417143 0 65.828571 54.125714 121.417143 121.417143 121.417143" fill="#06A7FF" p-id="6852"></path><path d="M631.954286 412.525714v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c-7.314286 117.028571-103.862857 209.188571-222.354286 209.188572s-215.04-92.16-222.354286-209.188572v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c5.851429 61.44 58.514286 108.251429 119.954286 108.251429 62.902857 0 114.102857-46.811429 119.954286-108.251429" fill="#FF436A" p-id="6853"></path></svg>'),tianyi:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540718396" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8675" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M833.39946667 423.28746667a185.00266667 185.00266667 0 0 0-205.55093334-134.07573333A226.304 226.304 0 0 0 463.0528 217.6c-93.52533333 0-176.5376 58.29973333-209.92 143.01866667A210.80746667 210.80746667 0 0 0 34.13333333 571.01653334c0 116.05333333 94.48106667 210.5344 210.5344 210.5344h281.87306667a41.09653333 41.09653333 0 0 0 0-82.1248H244.66773333a128.54613333 128.54613333 0 0 1-128.34133333-128.4096 128.54613333 128.54613333 0 0 1 157.01333333-125.20106667l40.82346667 9.35253333 8.46506667-41.09653333a143.7696 143.7696 0 0 1 140.42453333-114.34666667c45.73866667 0 89.15626667 22.18666667 116.05333333 59.32373334l17.47626667 24.02986666 28.2624-9.0112a101.5808 101.5808 0 0 1 132.36906667 88.95146667l2.79893333 35.97653333 36.0448 1.8432a117.62346667 117.62346667 0 0 1 111.68426667 117.62346667 117.89653333 117.89653333 0 0 1-128.88746667 117.21386667l-4.36906667-0.54613334a115.3024 115.3024 0 0 1-6.48533333-1.024l-5.12-1.09226666a128.88746667 128.88746667 0 0 1-15.83786667-4.98346667 133.46133333 133.46133333 0 0 1-10.4448-4.7104l-3.75466666-1.91146667a119.73973333 119.73973333 0 0 1-6.82666667-4.16426666l-2.2528-1.36533334a118.23786667 118.23786667 0 0 1-47.78666667-67.65226666h69.4272l-113.73226666-162.47466667-113.73226667 162.47466667h74.41066667c7.23626667 48.46933333 31.88053333 91.27253333 67.44746666 121.78773333l2.18453334 2.048 2.18453333 1.6384a182.39466667 182.39466667 0 0 0 9.216 7.03146667l4.02773333 2.8672c3.75466667 2.52586667 7.5776 4.98346667 11.53706667 7.30453333l3.072 1.77493333c4.36906667 2.4576 8.73813333 4.77866667 13.24373333 6.82666667l1.57013334 0.68266667c15.01866667 6.9632 31.06133333 12.01493333 47.78666666 15.01866666l1.36533334 0.2048c5.12 0.95573333 10.4448 1.6384 15.7696 2.11626667l2.048 0.13653333a203.22986667 203.22986667 0 0 0 46.55786666-1.57013333A200.22613333 200.22613333 0 0 0 989.86666667 618.46186667a199.81653333 199.81653333 0 0 0-156.4672-195.24266667" p-id="8676"></path></svg>'),mobile:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540741796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9705" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1020.16 266.88c-44.16 11.52-88.32 21.12-133.12 30.08-28.8 5.76-57.6 11.52-87.04 14.08-35.84 3.84-71.04 5.12-106.88 7.04-81.92 3.84-163.84 2.56-245.76 1.92-64.64-0.64-129.92 0-193.28 13.44-56.96 12.16-111.36 30.08-159.36 64-30.08 21.12-59.52 43.52-94.72 55.68 1.92 5.76 7.04 4.48 10.88 4.48 37.76 1.28 75.52-1.92 112.64-6.4 24.96-3.2 50.56-6.4 75.52-10.24 32-5.12 64-6.4 96-8.32 17.92-1.28 35.84-1.92 53.76 1.28 12.8 1.92 16.64 9.6 10.88 21.12-3.2 7.04-8.96 12.8-14.08 18.56-14.72 15.36-32 28.16-48 42.24-40.96 36.48-80.64 75.52-119.04 115.2-21.12 21.76-41.6 44.16-53.76 72.32-29.44 68.48-26.88 134.4 17.28 195.2 33.92 46.72 85.76 65.28 140.16 75.52 28.16 5.12 56.96 3.2 85.76 3.2 87.04 0 174.08-0.64 261.12 1.28 51.84 1.28 103.04 1.28 154.24-7.04 52.48-8.32 95.36-34.56 125.44-77.44 42.88-60.8 54.4-128.64 37.12-200.96-12.16-51.2-37.12-94.72-80.64-126.08-69.76-49.28-147.84-64-231.68-48.64-32.64 5.76-61.44 20.48-83.2 45.44-43.52 49.92-47.36 107.52-27.52 167.04 17.28 52.48 81.92 81.28 136.96 65.28 24.96-7.04 44.8-21.76 55.04-46.08 8.32-18.56 1.92-35.2-15.36-42.24-2.56 26.88-14.72 38.4-42.88 39.04H640a54.912 54.912 0 0 1-53.12-56.32c0-31.36 26.88-67.84 59.52-78.72 51.84-17.28 98.56-8.32 140.16 27.52 40.96 36.48 55.04 97.92 30.72 140.8-24.32 43.52-64 67.84-111.36 78.08-40.96 8.32-82.56 8.96-124.16 10.88-44.16 1.92-88.32 1.28-132.48-1.28-33.28-1.92-67.2-4.48-99.84-11.52-28.8-6.4-56.96-14.72-79.36-35.2a61.696 61.696 0 0 1-21.76-51.84c2.56-34.56 17.28-64.64 39.68-90.88a3790.08 3790.08 0 0 1 190.72-202.24c25.6-25.6 56.96-40.32 92.8-43.52 32-2.56 63.36-3.84 95.36-5.76 58.88-3.84 117.12-11.52 174.72-27.52 64-17.28 120.96-46.72 161.92-101.12 7.68-9.6 15.36-19.2 18.56-32h-3.84zM869.12 44.8c0 7.68-3.84 13.44-7.04 19.2-19.2 35.84-49.92 58.88-84.48 77.44-48 26.24-99.84 41.6-153.6 49.28-65.92 9.6-132.48 8.32-199.04 7.04-78.08-1.92-156.16 1.92-232.96 16.64-23.04 4.48-46.08 6.4-69.12 9.6-3.84 0-8.32 1.28-14.08 1.92 1.92-1.92 3.2-2.56 4.48-3.84 13.44-7.04 24.32-17.28 33.92-28.8 40.32-48.64 91.52-75.52 153.6-85.12 44.8-7.04 90.24-7.68 135.68-9.6 65.92-1.92 131.2-1.28 197.12-6.4 78.08-5.76 154.24-22.4 228.48-46.08 1.92 0 3.84-0.64 6.4-1.28z" fill="#0090FE" p-id="9706"></path></svg>'),115:"data:image/svg+xml;base64,"+btoa('<svg t="1758974307798" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13186" width="200" height="200"><path d="M701.004655 35.208896c29.184693-0.150426 57.568137-7.509021 84.900645-17.220197 20.924565 9.561773-3.704368 30.886451-7.559163 44.903699-9.81146 18.4717-18.371416 37.594223-29.084409 55.516408-10.562567 15.618723-29.785374 24.128537-48.4075 23.228027-75.139328-0.100284-150.228513 0-225.367841-0.050142-21.425985-0.851391-42.250266 12.565177-50.960649 32.03767-11.763928 24.329105-25.080212 47.957245-36.193317 72.586179 67.680449 13.216 137.012514 25.430182 198.886723 57.31845 58.670238 29.9358 109.880573 76.740802 139.615804 136.01172 37.294394 72.836889 39.797401 162.54298 5.106298 236.882082C696.149067 753.612827 625.013937 810.830993 545.56956 838.764182c-95.764064 32.989345-205.795063 33.939997-297.453622-12.214183-0.550539-0.751107-1.701758-2.252297-2.302439-3.053546 89.155553 11.914354 183.668113-3.604084 260.560364-51.611471 49.659003-30.836309 89.305979-80.195483 101.069907-138.214898 11.062963-44.803415 2.753717-93.411483-22.577205-131.957381-38.845727-60.021002-102.421694-100.519368-169.70203-121.895211-63.825654-21.926382-131.005706-30.036084-197.685361-37.594223 47.306422-93.110631 93.66117-186.721659 140.567479-280.032858 8.760524-17.020652 28.234041-27.432793 47.206138-26.78197C503.81969 35.208896 602.437755 35.609009 701.004655 35.208896z" fill="#224888" p-id="13187"></path></svg>'),xunlei:"data:image/svg+xml;base64,"+btoa('<svg t="1758974328647" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14190" width="200" height="200"><path d="M432.64 407.04s199.68-217.6 468.48-322.56c0 0 12.8-5.12 2.56 7.68s-56.32 84.48-66.56 97.28l-35.84 33.28 17.92-5.12-35.84 79.36-46.08 46.08 33.28-10.24-38.4 92.16-40.96 40.96 35.84-20.48s-17.92 38.4-35.84 66.56c0 0 163.84 17.92 302.08 81.92 0 0-76.8 20.48-107.52 28.16l-33.28-7.68 15.36 10.24-35.84 15.36c-2.56 0-28.16-7.68-40.96-2.56 0 0 15.36 5.12 17.92 10.24l-38.4 15.36s-7.68 5.12-15.36 5.12c-5.12 0-38.4-7.68-48.64-2.56 0 0 20.48 10.24 28.16 10.24 0 0-12.8 17.92-122.88 23.04 0 0 81.92 227.84 79.36 258.56-2.56 30.72-48.64-35.84-48.64-35.84s-69.12-76.8-89.6-92.16c-20.48-15.36-79.36-25.6-204.8-104.96s-125.44-181.76-117.76-230.4c7.68-48.64 7.68-84.48-23.04-94.72s-81.92-23.04-189.44-25.6c0 0-17.92-12.8 12.8-12.8 30.72 2.56 112.64 2.56 156.16-5.12 48.64-10.24 66.56-25.6 104.96-20.48 38.4 5.12 87.04 17.92 140.8 71.68z" fill="#1390F2" p-id="14191"></path></svg>'),uc:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1758974377018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17084" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M240.32 674.282667c11.093333-57.856 42.837333-102.656 89.450667-136.896 28.458667-20.885333 58.709333-39.338667 88.362666-58.538667 47.36-30.634667 87.018667-67.989333 107.221334-122.304 22.592-60.650667 20.970667-119.701333-20.117334-171.818667-52.053333-66.005333-122.389333-86.208-203.648-71.658666-59.093333 10.581333-107.52 41.173333-149.397333 82.88-17.429333 17.344-32.256 36.778667-43.648 61.354666 3.925333-2.645333 6.037333-4.053333 8.106667-5.482666 22.549333-15.722667 47.36-23.253333 74.986666-22.186667 46.144 1.813333 84.352 41.088 85.397334 87.189333 0.682667 30.336-8.725333 57.386667-26.88 80.704-23.104 29.76-48 58.112-72.298667 86.933334-52.266667 62.08-79.338667 132.672-68.416 214.336 10.965333 82.090667 53.802667 144.064 126.528 183.808 45.845333 25.024 96.149333 33.344 150.378667 32.832-2.922667-1.237333-4.096-1.856-5.333334-2.197334-104.170667-28.672-159.253333-142.016-140.693333-238.933333zM653.184 473.6c42.176 13.888 80.213333 36.138667 118.826667 57.344 40.576 22.293333 83.285333 23.210667 127.018666 10.304 8.533333-2.517333 12.010667-7.168 11.178667-16.042667-1.066667-11.690667-0.448-23.594667-2.197333-35.157333-11.584-76.970667-53.141333-130.026667-126.997334-156.288-9.258667-3.285333-12.224-8.405333-14.976-17.194667-5.290667-16.853333-12.416-33.237333-19.925333-49.28-3.093333-6.613333-9.088-11.84-14.869333-19.050666-5.504 8.234667-10.176 14.357333-13.930667 21.013333-14.122667 24.917333-18.666667 52.373333-19.690667 80.426667-0.298667 8.618667-2.56 14.997333-9.408 19.754666-15.189333 10.538667-29.632 22.549333-45.888 31.082667-34.794667 18.218667-70.549333 34.624-104.96 51.285333 39.018667-0.213333 77.653333 9.237333 115.84 21.802667z m43.456 380.224c-14.826667-3.456-30.058667-5.162667-45.738667-7.765333 0.789333-2.986667 1.365333-5.546667 2.154667-8.064 11.52-36.458667 13.568-73.386667 8.789333-111.36-15.893333-126.421333-143.893333-202.218667-246.506666-180.288-54.613333 11.648-93.269333 42.154667-115.690667 93.226666 82.154667-81.365333 205.12-56.512 255.872 13.781334 33.493333 46.378667 42.602667 97.408 25.472 152-17.173333 54.762667-56.661333 88.533333-111.573333 109.653333 70.634667 1.984 266.624-4.16 290.432-11.733333-2.666667-5.12-4.672-10.453333-7.914667-14.869334-13.845333-18.730667-33.088-29.44-55.296-34.581333z m-158.72-97.877333c-0.490667-64.533333-49.024-117.546667-117.056-117.909334-73.429333-0.362667-118.229333 59.946667-118.229333 117.717334 0 61.76 51.136 118.186667 117.546666 117.12 65.194667-0.042667 118.250667-52.266667 117.76-116.928z m-118.336 53.397333a53.461333 53.461333 0 0 1-53.333333-54.144c0.128-29.312 25.386667-54.464 54.186666-53.973333 29.248 0.490667 54.08 25.344 54.293334 54.314666 0.213333 29.632-24.704 53.930667-55.146667 53.802667z m493.653333-168.576c-5.866667-23.061333-22.058667-35.882667-43.904-41.322667-15.210667-3.818667-31.04-5.290667-46.656-7.296-42.645333-5.504-80.149333-23.210667-116.096-45.994666-72.213333-45.76-150.976-65.92-236.373333-55.978667-14.784 1.728-29.098667 7.402667-43.626667 11.242667l0.768 3.072c9.386667 0 18.88-0.917333 28.16 0.170666 22.570667 2.666667 45.717333 3.861333 67.456 9.898667 77.056 21.44 132.288 71.104 171.669334 139.306667 5.610667 9.749333 11.968 16.277333 22.826666 16.853333 15.616 0.853333 31.488 2.432 46.826667 0.426667a125.013333 125.013333 0 0 0 39.125333-12.458667c35.072-17.6 70.677333-25.450667 109.077334-10.752 0.853333-2.026667 1.344-2.645333 1.322666-3.221333a19.626667 19.626667 0 0 0-0.597333-3.946667z" fill="#FC7A28" p-id="17085"></path></svg>'),123:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1759299472449" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9534" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M296.48 1018.44c-157.16 0-285-129.24-285-288.12V293.72C11.48 134.84 139.32 5.6 296.48 5.6h431.04c157.16 0 285 129.24 285 288.12v436.56c0 158.88-127.84 288.12-285 288.12H296.48z" fill="#FFFFFF" p-id="9535"></path><path d="M306.08 68.08h411.88c128.4 0 232.32 105.24 232.32 235.32v417.16c0 130.08-103.92 235.32-232.32 235.32H306.08c-128.4 0-232.32-105.24-232.32-235.32V303.4c-0.04-130.04 103.88-235.32 232.32-235.32z" fill="#597DFC" p-id="9536"></path><path d="M234.88 304.48H147.24v415.04h87.64V304.48z m129.28 304.84c0.44-21.6 3.8-35.72 10.36-42.36 4.84-6.64 12.48-11.12 22.4-13.68 9.72-2.56 10.12-2.36 30.64-2.56h23.24c42.68 0 52.6-6.4 73.92-19.24 14.36-8.76 23.24-23.32 31.48-41.92 8.24-18.4 12.24-39.8 12.24-63.76 0-19.48-3.4-37.64-9.92-54.32-6.56-16.92-16.04-30.16-28.32-40.2-20.48-17.76-37.6-26.76-109.4-26.76H283.48v74h118.92c23.04 0 39.48 3.2 49.84 9.4 13.52 8.76 20.28 22.48 20.28 41.08 0 17.12-7.4 29.96-22.16 38.52-9.52 5.36-17.96 8.12-40.56 8.12h-14.16c-27.88 0-34.64 1.92-47.72 5.56-13.08 3.64-25.12 10.92-36.32 21.84-23.64 24.4-35.28 59.88-34.44 106.32v110.16h280.48v-73.36H363.72v-36.8h0.44z m353.56 110.2c30.64 0 53.64-1.48 69.08-4.72 15.44-3.2 29.56-9 42.68-17.76 29.56-19.04 44.16-48.36 44.16-87.72 0-42.8-18.16-76.16-54.72-100.12 36.56-21.6 54.72-51.56 54.72-90.28 0-22.48-4.24-44.28-16.48-63.96-12.24-21.16-31.04-34.64-52.4-42.56-9.08-3.44-17.32-5.36-24.92-6.2-7.6-0.84-24.92-1.48-51.96-1.92h-117v74h101.8c14.36 0 24.52 0.44 30.4 1.48 5.92 1.08 11.2 3.2 15.64 6.64 12.24 8.36 18.36 21.6 18.36 39.8 0 16.68-4.64 28.88-14.16 36.8-7.8 6.64-24.52 10.04-50.28 10.04h-62.96v73.36h62.96c21.32 0 36.32 2.56 44.76 7.48 13.52 7.92 20.28 22.24 20.28 43 0 17.12-5.28 29.96-16.04 38.52-8.64 7.08-24.92 10.48-49.2 10.48h-101.8v73.36h107.08v0.28z" fill="#FFFFFF" p-id="9537"></path></svg>'),lanzou:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1759812902857" class="icon" viewBox="0 0 1029 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5010" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.9765625" height="200"><path d="M2.56 2.56H1024V1024H2.56V2.56z" fill="#FFFFFF" p-id="5011"></path><path d="M0 817.152c17.92-25.088 54.784-69.632 117.248-102.4 49.152-25.6 94.208-33.28 122.368-35.84-31.744-112.128 13.824-230.4 107.008-286.208 76.8-45.568 175.104-43.52 255.488 5.12 14.336-31.232 71.168-144.896 204.288-204.288 95.232-42.496 181.248-35.84 219.648-30.72V5.12C684.544 3.584 342.016 1.536 0 0v817.152z" fill="#FF6600" p-id="5012"></path></svg>')};return c[g]||c.quark},R=g=>{const c=new Date(g);return c.toLocaleDateString("zh-CN")+" "+c.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},q=g=>{u.value="已复制到剪贴板",setTimeout(()=>{u.value=""},2e3)},Y=async(g,c)=>{try{if(window.open(g,"_blank"),c)try{await navigator.clipboard.writeText(c),u.value=`链接已打开,提取码 "${c}" 已复制到剪贴板`}catch{const W=document.createElement("textarea");W.value=c,W.style.position="fixed",W.style.left="-999999px",W.style.top="-999999px",document.body.appendChild(W),W.focus(),W.select();try{document.execCommand("copy"),u.value=`链接已打开,提取码 "${c}" 已复制到剪贴板`}catch{u.value=`链接已打开,提取码: ${c} (请手动复制)`}finally{document.body.removeChild(W)}}else u.value="链接已打开";setTimeout(()=>{u.value=""},3e3)}catch(p){console.error("操作失败:",p),i.value="操作失败"}},re=(g,c)=>{g.preventDefault(),Y(c.url,c.password)},te=g=>{y.value.has(g)?y.value.delete(g):y.value.add(g)},ye=g=>y.value.has(g),we=()=>{y.value.clear()};Ke(()=>t.subjectId,async g=>{g&&(we(),Z.initialized.value||(r.value=!0,await Z.initAuth(),r.value=!1),me())},{immediate:!0}),Ke(()=>t.linkType,async()=>{we(),G.platform="",k.value.page=1,t.subjectId&&(Z.initialized.value||(r.value=!0,await Z.initAuth(),r.value=!1),me())});const qe=g=>{g>=1&&g<=k.value.pages&&(we(),me(g))},Ze=()=>{k.value.page>1&&qe(k.value.page-1)},Nt=()=>{k.value.page<k.value.pages&&qe(k.value.page+1)},io=()=>{const g=document.querySelector(".auth-container")||document.querySelector(".auth-component")||document.querySelector("[data-auth-component]")||document.querySelector("#user-section");if(g)g.scrollIntoView({behavior:"smooth",block:"start"});else{const c=document.querySelector('.nav-btn[data-tab="user"]')||document.querySelector('button[data-tab="user"]')||Array.from(document.querySelectorAll(".nav-btn")).find(p=>p.textContent.includes("👤")||p.textContent.includes("用户"));if(c)c.click();else{const p=new CustomEvent("switchToUserTab",{bubbles:!0,detail:{tab:"user"}});document.dispatchEvent(p)}}};return Yt(async()=>{Z.initialized.value||(r.value=!0,await Z.initAuth(),r.value=!1),t.subjectId&&me()}),(g,c)=>(V(),I(ve,null,[a("div",Wu,[d.value?(V(),I("div",Ju,[a("div",Qu,[a("div",{class:"modal-header"},[c[40]||(c[40]=a("h4",null,"修改链接",-1)),a("button",{class:"close-btn",onClick:T},c[39]||(c[39]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",Yu,[a("form",{onSubmit:Ne(M,["prevent"])},[a("div",Zu,[a("div",Xu,[c[41]||(c[41]=a("label",null,"链接类型 *",-1)),Q(Dt,{modelValue:_.linkType,"onUpdate:modelValue":c[0]||(c[0]=p=>_.linkType=p),options:J,placeholder:"请选择类型",onChange:c[1]||(c[1]=p=>_.platform="")},null,8,["modelValue"])])]),a("div",ec,[_.linkType==="netdisk"?(V(),I("div",tc,[c[42]||(c[42]=a("label",null,"平台",-1)),Q(Dt,{modelValue:_.platform,"onUpdate:modelValue":c[2]||(c[2]=p=>_.platform=p),options:Le.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):F("",!0),_.linkType==="netdisk"?(V(),I("div",sc,[c[43]||(c[43]=a("label",null,"提取码",-1)),a("div",oc,[oe(a("input",{type:"text","onUpdate:modelValue":c[3]||(c[3]=p=>_.extractCode=p),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[pe,_.extractCode]])])])):F("",!0)]),a("div",lc,[c[44]||(c[44]=a("label",null,"链接地址 *",-1)),a("div",nc,[oe(a("input",{type:"url","onUpdate:modelValue":c[4]||(c[4]=p=>_.url=p),placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,512),[[pe,_.url]])])]),a("div",rc,[a("div",ic,[c[45]||(c[45]=a("label",null,"标题描述 *",-1)),a("div",ac,[oe(a("input",{type:"text","onUpdate:modelValue":c[5]||(c[5]=p=>_.title=p),placeholder:"简短描述这个链接"},null,512),[[pe,_.title]])])])]),a("div",uc,[c[46]||(c[46]=a("label",null,"原文链接",-1)),a("div",cc,[oe(a("input",{type:"url","onUpdate:modelValue":c[6]||(c[6]=p=>_.original_url=p),placeholder:"原文链接地址(可选)"},null,512),[[pe,_.original_url]])])]),a("div",dc,[a("div",fc,[c[47]||(c[47]=a("label",null,"文件大小",-1)),a("div",pc,[oe(a("input",{type:"text","onUpdate:modelValue":c[7]||(c[7]=p=>_.size=p),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[pe,_.size]])])])]),t.subjectCategory==="movies"||t.subjectCategory==="albums"?(V(),I("div",hc,[c[48]||(c[48]=a("label",null,"特性标签",-1)),a("div",mc,[t.subjectCategory==="movies"?(V(),I(ve,{key:0},[Q(Je,{modelValue:_.has_4k,"onUpdate:modelValue":c[8]||(c[8]=p=>_.has_4k=p),label:"4K画质",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:_.has_hdr,"onUpdate:modelValue":c[9]||(c[9]=p=>_.has_hdr=p),label:"HDR",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:_.has_dolby_atmos,"onUpdate:modelValue":c[10]||(c[10]=p=>_.has_dolby_atmos=p),label:"杜比全景声",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:_.has_subtitles,"onUpdate:modelValue":c[11]||(c[11]=p=>_.has_subtitles=p),label:"外挂字幕",color:"green"},null,8,["modelValue"])],64)):t.subjectCategory==="albums"?(V(),I(ve,{key:1},[Q(Je,{modelValue:_.is_flac,"onUpdate:modelValue":c[12]||(c[12]=p=>_.is_flac=p),label:"FLAC无损",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:_.is_wav,"onUpdate:modelValue":c[13]||(c[13]=p=>_.is_wav=p),label:"WAV无损",color:"green"},null,8,["modelValue"])],64)):F("",!0)])])):F("",!0),a("div",gc,[a("button",{type:"submit",disabled:x.value},H(x.value?"修改中...":"保存修改"),9,vc),a("button",{type:"button",onClick:T},"取消")])],32)])])])):F("",!0),h.value?(V(),I("div",_c,[a("div",bc,[a("div",{class:"modal-header"},[c[50]||(c[50]=a("h4",null,"添加新链接",-1)),a("button",{class:"close-btn",onClick:S},c[49]||(c[49]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",yc,[a("form",{onSubmit:Ne(et,["prevent"])},[a("div",wc,[a("div",kc,[c[51]||(c[51]=a("label",null,"链接类型 *",-1)),Q(Dt,{modelValue:w.linkType,"onUpdate:modelValue":c[14]||(c[14]=p=>w.linkType=p),options:J,placeholder:"请选择类型",onChange:c[15]||(c[15]=p=>w.platform="")},null,8,["modelValue"])])]),a("div",xc,[w.linkType==="netdisk"?(V(),I("div",Cc,[c[52]||(c[52]=a("label",null,"平台",-1)),Q(Dt,{modelValue:w.platform,"onUpdate:modelValue":c[16]||(c[16]=p=>w.platform=p),options:Le.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):F("",!0),w.linkType==="netdisk"?(V(),I("div",Sc,[c[53]||(c[53]=a("label",null,"提取码",-1)),a("div",Tc,[oe(a("input",{type:"text","onUpdate:modelValue":c[17]||(c[17]=p=>w.extractCode=p),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[pe,w.extractCode]])])])):F("",!0)]),a("div",Ec,[c[54]||(c[54]=a("label",null,"链接地址 *",-1)),a("div",Ac,[oe(a("input",{type:"url","onUpdate:modelValue":c[18]||(c[18]=p=>w.url=p),placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,512),[[pe,w.url]])])]),a("div",Vc,[a("div",Ic,[c[55]||(c[55]=a("label",null,"标题描述",-1)),a("div",Mc,[oe(a("input",{type:"text","onUpdate:modelValue":c[19]||(c[19]=p=>w.title=p),placeholder:"简短描述这个链接"},null,512),[[pe,w.title]])])])]),a("div",$c,[c[56]||(c[56]=a("label",null,"原文链接",-1)),a("div",Uc,[oe(a("input",{type:"url","onUpdate:modelValue":c[20]||(c[20]=p=>w.original_url=p),placeholder:"原文链接地址(可选)"},null,512),[[pe,w.original_url]])])]),a("div",Pc,[a("div",Lc,[c[57]||(c[57]=a("label",null,"文件大小",-1)),a("div",Dc,[oe(a("input",{type:"text","onUpdate:modelValue":c[21]||(c[21]=p=>w.size=p),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[pe,w.size]])])])]),t.subjectCategory==="movies"||t.subjectCategory==="albums"?(V(),I("div",Fc,[c[58]||(c[58]=a("label",null,"特性标签",-1)),a("div",Oc,[t.subjectCategory==="movies"?(V(),I(ve,{key:0},[Q(Je,{modelValue:w.has_4k,"onUpdate:modelValue":c[22]||(c[22]=p=>w.has_4k=p),label:"4K画质",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:w.has_hdr,"onUpdate:modelValue":c[23]||(c[23]=p=>w.has_hdr=p),label:"HDR",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:w.has_dolby_atmos,"onUpdate:modelValue":c[24]||(c[24]=p=>w.has_dolby_atmos=p),label:"杜比全景声",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:w.has_subtitles,"onUpdate:modelValue":c[25]||(c[25]=p=>w.has_subtitles=p),label:"外挂字幕",color:"green"},null,8,["modelValue"])],64)):t.subjectCategory==="albums"?(V(),I(ve,{key:1},[Q(Je,{modelValue:w.is_flac,"onUpdate:modelValue":c[26]||(c[26]=p=>w.is_flac=p),label:"FLAC无损",color:"green"},null,8,["modelValue"]),Q(Je,{modelValue:w.is_wav,"onUpdate:modelValue":c[27]||(c[27]=p=>w.is_wav=p),label:"WAV无损",color:"green"},null,8,["modelValue"])],64)):F("",!0)])])):F("",!0),a("div",Rc,[a("button",{type:"submit",disabled:x.value},H(x.value?"添加中...":"添加链接"),9,Bc),a("button",{type:"button",onClick:S},"取消")])],32)])])])):F("",!0),a("div",jc,[a("div",Nc,[a("div",zc,[s.value==="netdisk"?(V(),bs(Dt,{key:0,modelValue:G.platform,"onUpdate:modelValue":c[28]||(c[28]=p=>G.platform=p),options:Ie.value,placeholder:"所有平台",onChange:c[29]||(c[29]=()=>{we(),me()})},null,8,["modelValue","options"])):F("",!0),Q(Dt,{modelValue:G.sortBy,"onUpdate:modelValue":c[30]||(c[30]=p=>G.sortBy=p),options:ue,placeholder:"按时间",onChange:c[31]||(c[31]=()=>{we(),me()})},null,8,["modelValue"])]),a("button",{class:"add-link-btn-compact",onClick:A,disabled:!de.value,title:"添加链接"},c[59]||(c[59]=[a("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor"},[a("path",{d:"M8 1a.5.5 0 0 1 .5.5v6h6a.5.5 0 0 1 0 1h-6v6a.5.5 0 0 1-1 0v-6h-6a.5.5 0 0 1 0-1h6v-6A.5.5 0 0 1 8 1z"})],-1)]),8,qc)]),r.value?(V(),I("div",Hc,[(V(),I(ve,null,Hs(5,p=>Q(Un,{key:"auth-skeleton-"+p})),64))])):n.value?(V(),I("div",Gc,[(V(),I(ve,null,Hs(5,p=>Q(Un,{key:"skeleton-"+p})),64))])):l.value.length>0?(V(),I("div",Kc,[(V(!0),I(ve,null,Hs(l.value,p=>(V(),I("div",{class:"link-item",key:p.id,onClick:W=>te(p.id)},[a("div",Jc,[p.platform&&t.linkType!=="bt"&&t.linkType!=="online"?(V(),I("div",Qc,[a("img",{src:P(p.platform),alt:B(p.platform),class:"platform-icon"},null,8,Yc)])):F("",!0),a("div",Zc,[p.language?(V(),I("span",Xc,H(p.language),1)):F("",!0),p.size?(V(),I("span",ed,H(p.size),1)):F("",!0),t.subjectCategory==="movies"&&(p.has_4k||p.has_hdr||p.has_dolby_atmos||p.has_subtitles)||t.subjectCategory==="albums"&&(p.is_flac||p.is_wav)?(V(),I("div",td,[t.subjectCategory==="movies"?(V(),I(ve,{key:0},[p.has_4k?(V(),I("span",sd,"4K")):F("",!0),p.has_hdr?(V(),I("span",od,"HDR")):F("",!0),p.has_dolby_atmos?(V(),I("span",ld,"杜比")):F("",!0),p.has_subtitles?(V(),I("span",nd,"外挂字幕")):F("",!0)],64)):t.subjectCategory==="albums"?(V(),I(ve,{key:1},[p.is_flac?(V(),I("span",rd,"FLAC")):F("",!0),p.is_wav?(V(),I("span",id,"WAV")):F("",!0)],64)):F("",!0)])):F("",!0)])]),a("div",ad,[a("div",ud,[p.title?(V(),I("div",{key:0,class:ke(["link-title",{expanded:ye(p.id)}])},H(p.title),3)):F("",!0),a("div",{class:ke(["expand-arrow",{expanded:ye(p.id)}])},c[60]||(c[60]=[a("svg",{viewBox:"0 0 1024 1024",width:"16",height:"16"},[a("path",{d:"M512 330.666667c14.933333 0 29.866667 4.266667 40.533333 14.933333l277.33333399 234.666667c27.733333 23.466667 29.866667 64 8.53333301 89.6-23.466667 27.733333-64 29.866667-89.6 8.53333299L512 477.866667l-236.8 200.53333299c-27.733333 23.466667-68.266667 19.19999999-89.6-8.53333299-23.466667-27.733333-19.19999999-68.266667 8.53333301-89.6l277.33333399-234.666667c10.666667-10.666667 25.6-14.933333 40.533333-14.933333z",fill:"currentColor"})],-1)]),2)]),oe(a("div",cd,[a("div",{class:"link-url",onClick:c[32]||(c[32]=Ne(()=>{},["stop"])),onContextmenu:W=>re(W,p)},[Q(Pn,{text:p.url,type:"url",onCopySuccess:q},null,8,["text"])],40,dd),p.password?(V(),I("div",{key:0,class:"extract-code-container",onClick:c[33]||(c[33]=Ne(()=>{},["stop"]))},[c[61]||(c[61]=a("span",null,"提取码: ",-1)),Q(Pn,{text:p.password,type:"code",onCopySuccess:q},null,8,["text"])])):F("",!0)],512),[[to,ye(p.id)]])]),oe(a("div",{class:"link-actions",onClick:c[34]||(c[34]=Ne(()=>{},["stop"]))},[a("div",fd,[a("button",{class:ke(["vote-btn up",{active:p.user_vote_type==="up",pending:Re.value.has(p.id)}]),onClick:W=>N(p.id,"up"),disabled:!de.value},[(V(),I("svg",hd,[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:p.user_vote_type==="up"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,md)])),es(" "+H(p.up_votes||0),1)],10,pd),a("button",{class:ke(["vote-btn down",{active:p.user_vote_type==="down",pending:Re.value.has(p.id)}]),onClick:W=>N(p.id,"down"),disabled:!de.value},[(V(),I("svg",vd,[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:p.user_vote_type==="down"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,_d)])),es(" "+H(p.down_votes||0),1)],10,gd)]),a("div",bd,[E(p)?(V(),I("button",{key:0,class:"modify-btn",onClick:W=>U(p)}," 修改 ",8,yd)):F("",!0),E(p)?(V(),I("button",{key:1,class:"delete-btn",onClick:W=>ne(p)}," 删除 ",8,wd)):F("",!0),!E(p)&&de.value?(V(),I("button",{key:2,class:"report-btn",onClick:W=>ro(p.id)}," 反馈 ",8,kd)):F("",!0)])],512),[[to,ye(p.id)]]),oe(a("div",xd,[a("div",Cd,[p.original_url?(V(),I("a",{key:0,href:p.original_url,target:"_blank",class:"original-link",title:"查看原文"}," 来源 ",8,Sd)):F("",!0),a("span",Td,"添加by "+H(p.user_display_name||"匿名用户"),1)]),a("div",Ed,[a("span",Ad,H(R(p.created_at)),1),p.report_count>0?(V(),I("span",Vd," 被反馈 "+H(p.report_count)+" 次 ",1)):F("",!0)])],512),[[to,ye(p.id)]])],8,Wc))),128))])):!n.value&&!de.value&&l.value.length===0?(V(),I("div",Id,[a("div",{class:"login-prompt-content"},[c[62]||(c[62]=a("div",{class:"login-icon"},[a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"})])],-1)),c[63]||(c[63]=a("h3",null,"登录(不可用)后浏览链接",-1)),c[64]||(c[64]=a("p",null,"登录(不可用)后即可查看和添加资源链接",-1)),a("button",{class:"login-btn",onClick:io}," 立即登录(不可用) ")])])):!n.value&&l.value.length===0?(V(),I("div",Md,c[65]||(c[65]=[a("p",null,"暂无链接,成为第一个添加链接的人吧!",-1)]))):F("",!0)]),k.value.pages>1&&!n.value?(V(),I("div",$d,[a("button",{class:"pagination-btn",disabled:k.value.page<=1,onClick:Ze}," 上一页 ",8,Ud),a("span",Pd,H(k.value.page)+" / "+H(k.value.pages),1),a("button",{class:"pagination-btn",disabled:k.value.page>=k.value.pages,onClick:Nt}," 下一页 ",8,Ld)])):F("",!0),Q($n,{"error-message":i.value,"success-message":u.value,duration:3e3,"auto-close":!0,onClearError:c[35]||(c[35]=p=>i.value=""),onClearSuccess:c[36]||(c[36]=p=>u.value="")},null,8,["error-message","success-message"])]),tt.value?(V(),I("div",Dd,[a("div",Fd,[a("div",{class:"modal-header"},[c[67]||(c[67]=a("h4",null,"删除链接",-1)),a("button",{class:"close-btn",onClick:X},c[66]||(c[66]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",Od,[c[68]||(c[68]=a("div",{class:"delete-confirmation"},[a("div",{class:"warning-icon"},"⚠️"),a("p",null,"确定要删除这个链接吗?"),a("p",{class:"warning-text"},"此操作不可撤销")],-1)),a("div",Rd,[a("button",{type:"button",class:"delete-confirm-btn",disabled:Bt.value,onClick:vt},H(Bt.value?"删除中...":"确认删除"),9,Bd),a("button",{type:"button",onClick:X}," 取消 ")])])])])):F("",!0),ss.value?(V(),I("div",jd,[a("div",Nd,[a("div",{class:"modal-header"},[c[70]||(c[70]=a("h4",null,"反馈链接",-1)),a("button",{class:"close-btn",onClick:Go},c[69]||(c[69]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",zd,[a("form",{onSubmit:Ne(jt,["prevent"])},[a("div",qd,[c[71]||(c[71]=a("label",{for:"report-type"},"反馈类型 *",-1)),Q(Dt,{id:"report-type",modelValue:_e.type,"onUpdate:modelValue":c[37]||(c[37]=p=>_e.type=p),options:Ts,placeholder:"请选择反馈类型",required:""},null,8,["modelValue"])]),a("div",Hd,[c[72]||(c[72]=a("label",{for:"report-reason"},"详细原因",-1)),a("div",Gd,[oe(a("input",{id:"report-reason","onUpdate:modelValue":c[38]||(c[38]=p=>_e.reason=p),placeholder:"请详细描述反馈原因(可选)",rows:"4"},null,512),[[pe,_e.reason]])])]),a("div",Kd,[a("button",{type:"submit",disabled:_t.value||!_e.type},H(_t.value?"提交中...":"提交反馈"),9,Wd),a("button",{type:"button",onClick:Go}," 取消 ")])],32)])])])):F("",!0)],64))}},[["__scopeId","data-v-ef6eff02"]]),Yd={class:"content-wrapper"},Zd={class:"navigation-bar"},Xd={class:"tab-content"},ef={key:0,class:"tab-panel"},tf={key:1,class:"no-subject"},sf={key:1,class:"tab-panel"},of=We({__name:"WindowContent",setup(e){const t=D("links"),s=D("all"),o=D(""),l=D(""),n=D({title:"",year:"",rating:"",category:""}),r=(u,h=null)=>{t.value=u,u==="links"&&h&&(s.value=h)},i=()=>{try{const u=window.location.href;let h="",d=null;if(u.includes("movie.douban.com/subject/")?(h="movies",d=u.match(/\/subject\/(\d+)\/?/)):u.includes("music.douban.com/subject/")?(h="albums",d=u.match(/\/subject\/(\d+)\/?/)):u.includes("book.douban.com/subject/")?(h="books",d=u.match(/\/subject\/(\d+)\/?/)):u.includes("www.douban.com/game/")&&(h="games",d=u.match(/\/game\/(\d+)\/?/)),d&&h)o.value=d[1],l.value=h,n.value.category=h;else{o.value="",l.value="",n.value={title:"",year:"",rating:"",category:""};return}const v=document.querySelector('h1 span[property="v:itemreviewed"]')||document.querySelector("h1 span")||document.querySelector("h1");v&&(n.value.title=v.textContent.trim());const x=document.querySelector(".year")||document.querySelector("span.year");if(x){const k=x.textContent.match(/(\d{4})/);k&&(n.value.year=k[1])}const y=document.querySelector(".rating_num")||document.querySelector('[property="v:average"]');y&&(n.value.rating=y.textContent.trim())}catch(u){console.error("获取豆瓣主题信息失败:",u)}};return Yt(()=>{i(),new MutationObserver(()=>{(window.location.href.includes("/subject/")||window.location.href.includes("/game/"))&&setTimeout(i,500)}).observe(document.body,{childList:!0,subtree:!0});const h=d=>{d.detail&&d.detail.tab==="user"&&r("user")};return document.addEventListener("switchToUserTab",h),()=>{document.removeEventListener("switchToUserTab",h)}}),(u,h)=>(V(),I("div",Yd,[a("div",Zd,[a("button",{class:ke(["nav-btn",{active:t.value==="links"&&s.value==="netdisk"}]),onClick:h[0]||(h[0]=d=>r("links","netdisk"))}," 💾 网盘 ",2),a("button",{class:ke(["nav-btn",{active:t.value==="links"&&s.value==="bt"}]),onClick:h[1]||(h[1]=d=>r("links","bt"))}," 🧲 BT ",2),a("button",{class:ke(["nav-btn",{active:t.value==="links"&&s.value==="online"}]),onClick:h[2]||(h[2]=d=>r("links","online"))}," 📺 在线 ",2),a("button",{class:ke(["nav-btn",{active:t.value==="user"}]),onClick:h[3]||(h[3]=d=>r("user"))}," 👤 用户 ",2)]),a("div",Xd,[t.value==="links"?(V(),I("div",ef,[o.value&&l.value?(V(),bs(Qd,{key:0,"subject-id":o.value,"subject-category":l.value,"link-type":s.value},null,8,["subject-id","subject-category","link-type"])):(V(),I("div",tf,h[4]||(h[4]=[a("p",null,"未检测到支持的豆瓣页面,请在豆瓣详情页使用此功能。",-1),a("p",{class:"hint"},"支持的页面格式:",-1),a("ul",{class:"hint-list"},[a("li",null,"电影:https://movie.douban.com/subject/[ID]/"),a("li",null,"专辑:https://music.douban.com/subject/[ID]/"),a("li",null,"书籍:https://book.douban.com/subject/[ID]/"),a("li",null,"游戏:https://www.douban.com/game/[ID]/")],-1)])))])):F("",!0),t.value==="user"?(V(),I("div",sf,[Q(Iu)])):F("",!0)])]))}},[["__scopeId","data-v-578dbf54"]]),lf={key:0,class:"debug-panel"},nf={class:"debug-content"},rf={class:"debug-section"},af={class:"status-item"},uf={class:"status-item"},cf={class:"value"},df={class:"status-item"},ff={class:"value token"},pf={class:"status-item"},hf={class:"value token"},mf={class:"status-item"},gf={class:"debug-section"},vf={key:0,class:"test-result"},_f={class:"debug-section"},bf={class:"headers-preview"},yf=We({__name:"DebugPanel",setup(e){const t=D(!1),s=D(""),o=D(""),l=Ve(()=>Z.isAuthenticated.value),n=Ve(()=>Z.token.value),r=Ve(()=>Z.user.value?`${Z.user.value.email} (ID: ${Z.user.value.id})`:"无用户信息"),i=Ve(()=>{const y=n.value,k=s.value;return y&&k&&y===k}),u=Ve(()=>{const y=s.value;return JSON.stringify(y?{Authorization:`Bearer ${y.substring(0,20)}...`,"Content-Type":"application/json"}:{"Content-Type":"application/json"},null,2)}),h=()=>{t.value=!t.value,t.value&&d()},d=()=>{s.value=localStorage.getItem("auth_token")||"",console.log("Token状态刷新:",{memory:n.value,localStorage:s.value,match:i.value})},v=async()=>{try{o.value="测试中...";const y=await gt.getLinks();o.value=JSON.stringify({success:!0,dataLength:(y==null?void 0:y.length)||0,message:"请求成功"},null,2)}catch(y){o.value=JSON.stringify({success:!1,error:y.message,status:y.status||"unknown"},null,2)}},x=()=>{localStorage.removeItem("auth_token"),Z.token.value=null,Z.user.value=null,d(),o.value="",console.log("所有Token已清除")};return Yt(()=>{d(),window.addEventListener("storage",y=>{y.key==="auth_token"&&d()})}),(y,k)=>t.value?(V(),I("div",lf,[a("div",{class:"debug-header"},[k[0]||(k[0]=a("h3",null,"🔧 调试面板",-1)),a("button",{onClick:h,class:"close-btn"},"×")]),a("div",nf,[a("div",rf,[k[6]||(k[6]=a("h4",null,"认证状态",-1)),a("div",af,[k[1]||(k[1]=a("span",{class:"label"},"登录(不可用)状态:",-1)),a("span",{class:ke(["status",l.value?"success":"error"])},H(l.value?"已登录(不可用)":"未登录(不可用)"),3)]),a("div",uf,[k[2]||(k[2]=a("span",{class:"label"},"用户信息:",-1)),a("span",cf,H(r.value),1)]),a("div",df,[k[3]||(k[3]=a("span",{class:"label"},"Token (内存):",-1)),a("span",ff,H(n.value||"无"),1)]),a("div",pf,[k[4]||(k[4]=a("span",{class:"label"},"Token (localStorage):",-1)),a("span",hf,H(s.value||"无"),1)]),a("div",mf,[k[5]||(k[5]=a("span",{class:"label"},"Token匹配:",-1)),a("span",{class:ke(["status",i.value?"success":"error"])},H(i.value?"匹配":"不匹配"),3)])]),a("div",gf,[k[8]||(k[8]=a("h4",null,"测试操作",-1)),a("div",{class:"button-group"},[a("button",{onClick:d,class:"debug-btn"},"刷新Token状态"),a("button",{onClick:v,class:"debug-btn"},"测试API请求"),a("button",{onClick:x,class:"debug-btn danger"},"清除所有Token")]),o.value?(V(),I("div",vf,[k[7]||(k[7]=a("h5",null,"API测试结果:",-1)),a("pre",null,H(o.value),1)])):F("",!0)]),a("div",_f,[k[9]||(k[9]=a("h4",null,"请求头预览",-1)),a("div",bf,[a("code",null,H(u.value),1)])])])])):F("",!0)}},[["__scopeId","data-v-dba5723e"]]),Ss="1.1.4",On="https://scriptcat.org/scripts/code/4290/DoubanFlix%20-%20%E5%9C%A8%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1%E9%A1%B5%E9%9D%A2%E8%8E%B7%E5%8F%96%E6%B7%BB%E5%8A%A0%E8%B5%84%E6%BA%90%E9%93%BE%E6%8E%A5%EF%BC%88%E7%BD%91%E7%9B%98%EF%BC%8C%E7%A3%81%E5%8A%9B%EF%BC%8C%E5%9C%A8%E7%BA%BF%EF%BC%89.user.js",Ft={LAST_CHECK_TIME:"doubanflix_last_version_check",SKIP_VERSION:"doubanflix_skip_version",SKIP_UNTIL:"doubanflix_skip_until"};function Rn(e,t){const s=e.split(".").map(Number),o=t.split(".").map(Number),l=Math.max(s.length,o.length);for(let n=0;n<l;n++){const r=s[n]||0,i=o[n]||0;if(r>i)return 1;if(r<i)return-1}return 0}async function wf(){return new Promise(e=>{try{if(typeof GM_xmlhttpRequest>"u"){console.warn("GM_xmlhttpRequest 不可用,可能不在用户脚本环境中"),e({success:!1,error:"GM_xmlhttpRequest API 不可用"});return}GM_xmlhttpRequest({method:"GET",url:On,headers:{"User-Agent":"DoubanFlix Version Checker"},timeout:1e4,onload:function(t){try{if(t.status!==200)throw new Error(`HTTP ${t.status}: ${t.statusText}`);const s=t.responseText,o=s.match(/@version\s+([^\r\n]+)/),l=s.match(/@name\s+([^\r\n]+)/),n=s.match(/@description\s+([^\r\n]+)/);let r="";const i=s.split(`
`);let u=!1;for(const h of i){if(h.trim()==="// ==/UserScript==")break;if(h.includes("@updatenote")){u=!0;const d=h.match(/@updatenote\s+(.+)/);d&&(r=d[1].trim())}else if(u){const d=h.match(/^\/\/\s+(.+)/);if(d&&!h.includes("@"))r+=`
`+d[1].trim();else if(h.trim().startsWith("//")&&h.includes("@"))break}}if(!o)throw new Error("无法解析脚本版本信息");e({version:o[1].trim(),name:l?l[1].trim():"DoubanFlix",description:n?n[1].trim():"",updateNote:r||"",downloadUrl:On,success:!0})}catch(s){console.error("解析脚本信息失败:",s),e({success:!1,error:s.message})}},onerror:function(t){console.error("请求脚本信息失败:",t),e({success:!1,error:"网络请求失败"})},ontimeout:function(){console.error("请求脚本信息超时"),e({success:!1,error:"请求超时"})}})}catch(t){console.error("获取脚本信息失败:",t),e({success:!1,error:t.message})}})}function Bn(){const e=localStorage.getItem(Ft.SKIP_UNTIL);if(e){const t=parseInt(e);if(Date.now()<t)return!0;localStorage.removeItem(Ft.SKIP_UNTIL),localStorage.removeItem(Ft.SKIP_VERSION)}return!1}function jn(e,t=7){const s=Date.now()+t*24*60*60*1e3;localStorage.setItem(Ft.SKIP_VERSION,e),localStorage.setItem(Ft.SKIP_UNTIL,s.toString())}async function Nn(e=!1){try{if(!e&&Bn())return{hasUpdate:!1,skipped:!0,message:"用户选择暂时跳过版本检查"};const t=await wf();if(!t.success)return{hasUpdate:!1,error:!0,message:`检查更新失败: ${t.error}`};const s=t.version,o=Rn(s,Ss);return localStorage.setItem(Ft.LAST_CHECK_TIME,Date.now().toString()),o>0?{hasUpdate:!0,currentVersion:Ss,latestVersion:s,scriptInfo:t,message:`发现新版本 ${s},当前版本 ${Ss}`}:{hasUpdate:!1,currentVersion:Ss,latestVersion:s,message:"当前已是最新版本"}}catch(t){return console.error("版本检查失败:",t),{hasUpdate:!1,error:!0,message:`版本检查失败: ${t.message}`}}}function zn(){const e=localStorage.getItem(Ft.LAST_CHECK_TIME);return e?parseInt(e):null}function kf(e=24){const t=zn();if(!t)return!0;const s=Date.now(),o=e*60*60*1e3;return s-t>=o}const qn={checkForUpdates:Nn,setSkipVersionCheck:jn,shouldSkipVersionCheck:Bn,getLastCheckTime:zn,shouldCheckForUpdates:kf,compareVersions:Rn,CURRENT_VERSION:Ss},xf={name:"UpdateNotification",props:{updateInfo:{type:Object,required:!0},visible:{type:Boolean,default:!1}},emits:["close","update","later"],setup(e,{emit:t}){const s=D(!1),o=D(!1),l=()=>{t("close")};return{skipForWeek:s,isUpdating:o,handleClose:l,handleOverlayClick:()=>{l()},handleSkipChange:()=>{},handleLater:()=>{s.value&&qn.setSkipVersionCheck(e.updateInfo.latestVersion,7),t("later"),l()},handleUpdate:async()=>{try{o.value=!0,s.value&&qn.setSkipVersionCheck(e.updateInfo.latestVersion,7),t("update",e.updateInfo),setTimeout(()=>{window.open(e.updateInfo.scriptInfo.downloadUrl,"_blank"),l()},500)}catch(d){console.error("处理更新失败:",d)}finally{setTimeout(()=>{o.value=!1},1e3)}},formatUpdateLog:d=>{if(!d)return"";if(d.includes(`
`))return d.split(`
`).map(k=>k.trim()).filter(k=>k.length>0).map(k=>k.match(/^\d+\.\s/)?k:k.startsWith("*")?k.replace(/^\*\s*/,"• "):k.startsWith("-")?k.replace(/^-\s*/,"• "):"• "+k).join("<br>").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>");if(d.match(/^\d+\.\d+\.\d+/))return d.replace(/\n/g,"<br>").replace(/\*\s*(.+)/g,"• $1").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>");const v=["更新日志","新日志","更新说明","版本更新","changelog","update log"];let x=d;for(const k of v){const w=x.toLowerCase().indexOf(k.toLowerCase());if(w!==-1){x=x.substring(w+k.length).replace(/^[:\s\-=]+/,"").trim();break}}const y=x.split(`
`).filter(k=>k.trim());return y.length>5&&(x=y.slice(0,5).join(`
`)+`
...`),x.replace(/\n/g,"<br>").replace(/\*\s*(.+)/g,"• $1").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>")}}}},Cf={class:"notification-header"},Sf={class:"version-info"},Tf={class:"version-row"},Ef={class:"version-current"},Af={class:"version-row"},Vf={class:"version-latest"},If={key:0,class:"update-description"},Mf=["innerHTML"],$f={class:"notification-actions"},Uf={class:"skip-option"},Pf={class:"skip-checkbox"},Lf={class:"action-buttons"},Df=["disabled"],Ff=["disabled"],Of={key:0,class:"loading-spinner"};function Rf(e,t,s,o,l,n){var r,i,u,h;return s.visible?(V(),I("div",{key:0,class:"update-notification-overlay",onClick:t[6]||(t[6]=(...d)=>o.handleOverlayClick&&o.handleOverlayClick(...d))},[a("div",{class:"update-notification",onClick:t[5]||(t[5]=Ne(()=>{},["stop"]))},[a("div",Cf,[t[8]||(t[8]=cn('<div class="header-icon" data-v-8ddffaa9><svg width="24" height="24" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-8ddffaa9><path d="M303.3088 772.9152l-68.608-3.8912c-44.6464-1.4336-89.2928-37.4784-114.8928-65.1264-26.624-28.4672-37.2736-68.4032-36.864-107.9296-0.2048-39.936 12.4928-88.6784 39.5264-117.76 23.3472-25.3952 61.0304-49.152 101.7856-59.8016h0.4096l43.4176-6.7584c1.2288-0.2048 2.2528-1.024 2.6624-2.4576l12.4928-49.3568c11.0592-52.224 35.2256-111.4112 73.9328-147.2512 55.5008-50.5856 137.4208-67.1744 210.3296-51.2 72.704 15.9744 140.4928 76.5952 175.3088 135.5776l19.2512 33.1776c0.4096 0.8192 1.2288 1.2288 2.048 1.4336l36.2496 8.3968h0.2048c48.9472 15.9744 82.3296 41.5744 111.8208 73.728 11.4688 12.288 23.7568 32.768 31.5392 47.7184 5.9392 12.0832 21.0944 30.72 40.1408 24.1664 17.2032-6.144 20.0704-27.648 7.5776-53.0432-11.4688-23.9616-26.2144-45.8752-44.2368-65.3312-41.7792-46.08-84.5824-75.1616-145.2032-81.92-1.024-0.2048-2.048-0.8192-2.4576-1.8432-40.5504-91.3408-120.832-157.9008-216.6784-178.9952-96.4608-21.2992-197.2224 5.9392-270.7456 72.9088-50.7904 47.5136-71.0656 109.568-85.8112 177.9712-0.2048 1.2288-1.4336 2.2528-2.6624 2.4576-51.6096 5.9392-99.5328 30.5152-135.168 69.0176C2.2528 519.5776 1.8432 664.3712 87.2448 757.76c39.1168 43.008 93.3888 69.632 150.9376 72.704 14.7456 0.8192 63.0784 2.4576 65.536 2.6624h0.2048c10.4448-0.2048 20.2752-4.5056 27.4432-12.0832s6.9632-28.4672-0.4096-36.0448c-7.3728-7.7824-17.2032-12.0832-27.648-12.0832z m669.696-236.7488c-13.1072-0.4096-25.1904 7.3728-30.5152 19.456-5.3248 12.288-2.8672 26.4192 6.3488 36.0448 9.216 9.6256 22.9376 12.4928 35.2256 7.5776 12.0832-4.9152 20.0704-16.9984 20.0704-30.3104 0.4096-17.8176-13.5168-32.3584-31.1296-32.768z m-15.36 114.4832c-12.6976 0.2048-18.8416 8.3968-26.2144 19.456-6.3488 9.4208-11.264 16.9984-17.408 26.624-24.1664 37.4784-84.5824 79.4624-145.6128 78.4384h-38.0928c-22.3232 0.4096-39.7312 7.168-37.4784 29.9008 2.048 21.2992 24.3712 23.552 34.4064 23.552h35.4304c87.8592-0.2048 167.5264-46.2848 214.2208-122.0608 7.7824-11.264 11.8784-24.7808 8.3968-38.0928-2.2528-9.0112-14.9504-18.0224-27.648-17.8176z m-259.6864-101.9904l-153.3952-156.4672c-5.9392-6.3488-14.1312-10.0352-22.9376-10.0352-8.6016 0-16.9984 3.6864-22.9376 10.0352l-155.8528 157.696c-12.6976 13.312-15.5648 32.768-2.4576 45.6704 8.192 8.192 29.696 8.6016 43.008-2.8672l0.2048-0.2048 105.2672-110.592c2.048-2.048 5.5296-0.6144 5.5296 2.2528v413.0816c-0.4096 12.0832 5.5296 23.552 15.7696 29.696 5.9392 3.4816 16.384 3.8912 22.528 0 10.0352-6.3488 16.1792-17.6128 15.7696-29.696V484.1472c0-2.8672 3.4816-4.3008 5.3248-2.2528l106.7008 110.7968c5.9392 6.144 28.672 15.5648 42.1888 1.6384 13.312-13.1072 8.192-32.3584-4.7104-45.6704z m0 0" fill="#4CAF50" data-v-8ddffaa9></path></svg></div><div class="header-content" data-v-8ddffaa9><h3 class="notification-title" data-v-8ddffaa9>发现新版本</h3><p class="notification-subtitle" data-v-8ddffaa9>DoubanFlix 有新版本可用</p></div>',2)),a("button",{class:"close-btn",onClick:t[0]||(t[0]=(...d)=>o.handleClose&&o.handleClose(...d)),title:"关闭"},t[7]||(t[7]=[a("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4L4 12M4 4L12 12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)]))]),a("div",Sf,[a("div",Tf,[t[9]||(t[9]=a("span",{class:"version-label"},"当前版本:",-1)),a("span",Ef,H(s.updateInfo.currentVersion),1)]),a("div",Af,[t[10]||(t[10]=a("span",{class:"version-label"},"最新版本:",-1)),a("span",Vf,H(s.updateInfo.latestVersion),1)])]),(r=s.updateInfo.scriptInfo)!=null&&r.updateNote||(i=s.updateInfo.scriptInfo)!=null&&i.description?(V(),I("div",If,[t[11]||(t[11]=a("h4",{class:"description-title"},"更新日志",-1)),a("div",{class:"description-content",innerHTML:o.formatUpdateLog(((u=s.updateInfo.scriptInfo)==null?void 0:u.updateNote)||((h=s.updateInfo.scriptInfo)==null?void 0:h.description))},null,8,Mf)])):F("",!0),a("div",$f,[a("div",Uf,[a("label",Pf,[oe(a("input",{type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=d=>o.skipForWeek=d),onChange:t[2]||(t[2]=(...d)=>o.handleSkipChange&&o.handleSkipChange(...d))},null,544),[[da,o.skipForWeek]]),t[12]||(t[12]=a("span",{class:"checkmark"},null,-1)),t[13]||(t[13]=a("span",{class:"skip-text"},"一周内不再提醒",-1))])]),a("div",Lf,[a("button",{class:"btn btn-secondary",onClick:t[3]||(t[3]=(...d)=>o.handleLater&&o.handleLater(...d)),disabled:o.isUpdating}," 稍后提醒 ",8,Df),a("button",{class:"btn btn-primary",onClick:t[4]||(t[4]=(...d)=>o.handleUpdate&&o.handleUpdate(...d)),disabled:o.isUpdating},[o.isUpdating?(V(),I("span",Of)):F("",!0),es(" "+H(o.isUpdating?"正在跳转...":"立即更新"),1)],8,Ff)])])])])):F("",!0)}const Bf=We(xf,[["render",Rf],["__scopeId","data-v-8ddffaa9"]]),jf={key:0,class:"custom-window"},Nf={class:"window-content"},zf={class:"window-header"},qf={class:"window-title"},Hf=We({__name:"App",setup(e){const t=D(!0),s=D(!1),o=D("DoubanFlix 1.1.4"),l=D(null),n=D(!1),r=()=>new Promise(_=>{const j=()=>{const J=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel")||document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]');return J?(console.log("找到aside元素:",J.className||J.tagName),_(J),!0):!1};if(j())return;const G=new MutationObserver(J=>{for(const O of J)if(O.type==="childList"){for(const ue of O.addedNodes)if(ue.nodeType===Node.ELEMENT_NODE&&j()){G.disconnect();return}}});G.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{G.disconnect(),console.log("超时未找到aside元素,强制显示窗口"),_(null)},1e4)}),i=()=>{t.value=!t.value,t.value&&s.value&&u()},u=()=>{const _=document.querySelector("#bilibili-custom-window");if(!_){console.log("未找到Vue应用容器");return}const j=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel")||document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]');j?_.parentNode!==j&&(j.firstChild?j.insertBefore(_,j.firstChild):j.appendChild(_),console.log("Vue应用容器已移动到aside元素的第一个位置:",j.className||j.tagName)):console.log("未找到aside元素,Vue应用容器保持在当前位置")},h=()=>{t.value=!1},d=async()=>{try{const _=await Nn();_.hasUpdate&&(l.value=_,n.value=!0)}catch(_){console.error("版本检查失败:",_)}},v=()=>{n.value=!1,l.value=null},x=()=>{window.open("https://scriptcat.org/scripts/code/4290/DoubanFlix%20-%20%E5%9C%A8%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1%E9%A1%B5%E9%9D%A2%E8%8E%B7%E5%8F%96%E6%B7%BB%E5%8A%A0%E8%B5%84%E6%BA%90%E9%93%BE%E6%8E%A5%EF%BC%88%E7%BD%91%E7%9B%98%EF%BC%8C%E7%A3%81%E5%8A%9B%EF%BC%8C%E5%9C%A8%E7%BA%BF%EF%BC%89.user.js","_blank"),v()},y=(_=0)=>{_>0&&jn(_),v()},k=()=>{i()},w=_=>{_.ctrlKey&&_.key==="q"&&(_.preventDefault(),i())};return Yt(async()=>{Z.initAuth().catch(_=>{console.error("用户认证初始化失败:",_)}),window.addEventListener("toggle-window",k),document.addEventListener("keydown",w),await r(),s.value=!0,u(),setTimeout(()=>{d()},2e3)}),hs(()=>{window.removeEventListener("toggle-window",k),document.removeEventListener("keydown",w)}),(_,j)=>(V(),I(ve,null,[t.value&&s.value?(V(),I("div",jf,[a("div",Nf,[Q(of)]),a("div",zf,[a("span",qf,H(o.value),1),a("button",{class:"close-btn",onClick:h},"×")])])):F("",!0),Q(yf),l.value&&n.value?(V(),bs(Bf,{key:1,"update-info":l.value,visible:n.value,onClose:v,onUpdate:x,onLater:y},null,8,["update-info","visible"])):F("",!0)],64))}},[["__scopeId","data-v-7b8c4245"]]);async function Gf(){const e=document.querySelectorAll("h1"),t=document.querySelector(".article");t&&e.length>0&&e.forEach(l=>{t.insertBefore(l,t.firstChild)});const s=document.createElement("div");s.id="bilibili-custom-window",document.body.appendChild(s),va(Hf).mount("#bilibili-custom-window"),console.log("DoubanFlix应用已初始化")}Gf()})()})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址