// ==UserScript==
// @name DoubanFlix - 在豆瓣页面获取添加资源链接(网盘,磁力,在线),支持电影,游戏,音乐,书籍
// @namespace http://tampermonkey.net/
// @version 1.1.7
// @description 在豆瓣页面获取添加资源链接(网盘,磁力,在线),支持电影,游戏,音乐,书籍
// @updatenote 1. 修复油猴安装失败问题
// @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
// @connect lanzoum.com
// @connect baidu.com
// @connect weiyun.com
// @connect aliyundrive.com
// @connect cloud.189.cn
// @connect 123pan.com
// @connect quark.cn
// @connect xunlei.com
// @connect cowtransfer.com
// @connect wenshushu.cn
// @connect 115cdn.com
// @connect bilibili.com
// @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}.url-input-container[data-v-dc5500ab]{position:relative;width:100%}.input-wrapper[data-v-dc5500ab]{position:relative;width:100%;border:1px solid #ddd;border-radius:6px;background:#fff;transition:border-color .2s ease}.input-wrapper.focused[data-v-dc5500ab]{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.editable-input[data-v-dc5500ab]{padding:8px 12px;min-height:20px;font-size:14px;line-height:20px;outline:none;border:none;background:transparent;cursor:text;word-break:break-all;white-space:pre-wrap}.editable-input[data-v-dc5500ab]:empty:before{content:attr(data-placeholder);color:#999;pointer-events:none}.normal-text{color:#999}.recognized-text{color:#000}.link-manager[data-v-07b4981c]{max-width:1000px;margin:0 auto}.link-stats[data-v-07b4981c]{display:flex;gap:20px;margin-bottom:20px;padding:15px;background:#f5f5f5;border-radius:8px}.stat-item[data-v-07b4981c]{display:flex;flex-direction:column;align-items:center}.stat-label[data-v-07b4981c]{font-size:12px;color:#666;margin-bottom:4px}.stat-value[data-v-07b4981c]{font-size:18px;font-weight:700;color:#333}.add-link-section[data-v-07b4981c]{margin-bottom:20px;display:flex;align-items:center;gap:10px}.add-link-btn[data-v-07b4981c]{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.add-link-btn[data-v-07b4981c]:hover:not(:disabled){background:#0056b3}.add-link-btn[data-v-07b4981c]:disabled{background:#ccc;cursor:not-allowed}.auth-hint[data-v-07b4981c]{color:#666;font-size:12px}.add-form[data-v-07b4981c]{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:20px}.add-form h4[data-v-07b4981c]{margin:0 0 15px;color:#333}.form-row[data-v-07b4981c]{display:flex;gap:15px}.form-group[data-v-07b4981c]{flex:1;display:flex;align-items:center;gap:10px;margin-bottom:24px}.form-group label[data-v-07b4981c]{margin-bottom:0;font-weight:540;color:#333;font-size:13px;white-space:nowrap;min-width:80px;text-align:right}.checkbox-group[data-v-07b4981c]{display:flex;flex-wrap:wrap;gap:15px}.form-group input[data-v-07b4981c],.form-group select[data-v-07b4981c]{width:95%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group select[data-v-07b4981c]:focus{outline:none}.input-wrapper[data-v-07b4981c]{width:100%;border:1px solid #ddd;border-radius:6px}.input-wrapper input[data-v-07b4981c]{width:95%;border:none;outline:none;font-size:14px;background:transparent}.form-actions[data-v-07b4981c]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-actions button[data-v-07b4981c]{font-weight:300;padding:10px 20px;border:none;border-radius:8px;cursor:pointer;font-size:14px}.form-actions button[type=submit][data-v-07b4981c]{background:#beecc859;color:#2e8339}.form-actions button[type=submit][data-v-07b4981c]:hover:not(:disabled){background:#beecc870}.form-actions button[type=submit][data-v-07b4981c]:disabled{background:#b1efbf;cursor:not-allowed}.form-actions button[type=button][data-v-07b4981c]{background:#f1f1f1;color:#828282}.form-actions button[type=button][data-v-07b4981c]:hover{background:#ececec}.filter-bar[data-v-07b4981c]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;border-radius:6px}.filter-controls[data-v-07b4981c]{display:flex;gap:10px}.filter-bar .custom-select[data-v-07b4981c]{width:auto;min-width:100px}.add-link-btn-compact[data-v-07b4981c]{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-07b4981c]:hover:not(:disabled){background:#dae9f7;transform:scale(1)}.add-link-btn-compact[data-v-07b4981c]:disabled{color:#b2b2b2;background:#f5f4f4;cursor:not-allowed;transform:none}.filter-bar select[data-v-07b4981c]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.links-list[data-v-07b4981c]{display:flex;flex-direction:column;gap:15px}.link-item[data-v-07b4981c]{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-07b4981c]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.link-type-badge[data-v-07b4981c]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700;color:#fff}.link-type-badge.netdisk[data-v-07b4981c]{background:#28a745}.link-type-badge.bt[data-v-07b4981c]{background:#dc3545}.link-type-badge.online[data-v-07b4981c]{background:#007bff}.platform-badge[data-v-07b4981c]{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-07b4981c]{width:16px;height:16px;object-fit:contain}.link-meta[data-v-07b4981c]{display:flex;justify-content:space-between;align-items:center;width:100%}.file-size[data-v-07b4981c]{padding:2px 5px;border-radius:3px;font-size:10px;background:#e3f2fd!important;color:#1976d2!important;font-weight:500}.feature-tags[data-v-07b4981c]{display:flex;gap:3px;flex-wrap:wrap;margin-left:auto}.feature-tag[data-v-07b4981c]{padding:2px 5px;background:#007bff;color:#fff;border-radius:3px;font-size:10px;font-weight:700}.feature-tag.feature-4k[data-v-07b4981c]{border:1px solid #eff524;background:#f6ff00;color:#232323}.feature-tag.feature-hdr[data-v-07b4981c]{background:#ffe55a;color:#232323}.feature-tag.feature-dolby[data-v-07b4981c]{background:#eaeaea;color:#121212;font-weight:300}.feature-tag.feature-subtitle[data-v-07b4981c]{background:#cee2e8;color:#036;font-weight:300}.feature-tag.feature-flac[data-v-07b4981c]{background:#ededed;color:#383838;font-weight:500}.feature-tag.feature-wav[data-v-07b4981c]{background:#ffe3b3;color:#ce7f0d;font-weight:500}.link-content[data-v-07b4981c]{margin-bottom:15px}.link-title-row[data-v-07b4981c]{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-07b4981c]{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-07b4981c]{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-07b4981c]: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-07b4981c]:after{opacity:0}.expand-arrow[data-v-07b4981c]{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-07b4981c]:hover{color:#333}.expand-arrow.expanded[data-v-07b4981c]{transform:rotate(180deg)}.link-details[data-v-07b4981c]{margin-top:10px;animation:slideDown-07b4981c .3s ease forwards}.link-status[data-v-07b4981c]{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;background:#f8f9fa;border-radius:6px;border-left:3px solid #dee2e6}.status-label[data-v-07b4981c]{font-size:13px;color:#666;font-weight:500}.status-badge[data-v-07b4981c]{font-size:13px;font-weight:500;padding:2px 8px;border-radius:12px;background:#0000000d}.status-badge.success[data-v-07b4981c]{background:#52c41a1a;border:1px solid rgba(82,196,26,.2)}.status-badge.warning[data-v-07b4981c]{background:#faad141a;border:1px solid rgba(250,173,20,.2)}.status-badge.error[data-v-07b4981c]{background:#ff4d4f1a;border:1px solid rgba(255,77,79,.2)}.status-badge.loading[data-v-07b4981c]{background:#1890ff1a;border:1px solid rgba(24,144,255,.2)}.status-badge.partial[data-v-07b4981c]{background:#fa8c161a;border:1px solid rgba(250,140,22,.2)}@keyframes slideDown-07b4981c{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.link-url[data-v-07b4981c]{display:flex;align-items:center;gap:8px;margin-bottom:5px;cursor:pointer}.link-url a[data-v-07b4981c]{color:#007bff;text-decoration:none;flex:1;word-break:break-all}.link-url span[data-v-07b4981c]:hover{text-decoration:none;background-color:transparent}.link-url[data-v-07b4981c]:before{content:"";background-position:center;background-size:100% 100%;background-repeat:no-repeat;box-sizing:border-box;width:0;height:0;margin:0;flex-shrink:0;display:none}.link-url.one-pan-tip-success[data-v-07b4981c]:before,.link-url.one-pan-tip-error[data-v-07b4981c]:before,.link-url.one-pan-tip-partial[data-v-07b4981c]:before,.link-url.one-pan-tip-other[data-v-07b4981c]:before,.link-url.one-pan-tip-lock[data-v-07b4981c]:before{width:1em;height:1em;margin:0 1px;display:inline-block}.link-url.one-pan-tip-success[data-v-07b4981c]:before{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAACrUlEQVR4Xt2Yu2sUQRzHV/BFxNzMXhEQkRAEJbd763+gnYIWVjYitrYBC8FaSzttFBs7LQQLMdnZ3SSKWFhoYWFvOl+IoImJ5283Znf2O7PPmz3QL3zIcff9PZidnUcs63/V4Nm07QTskhvaC8PAvuoIfu7Y0tQh9E1EjmD3qIn1YWiP6G8xESHsNYw3qtlodv9wmavFa+Kt9keu35vDvGNpGPAnWKgtruDrmL+V3IBvYfKxoSkwEPYZrFVPI2uXt6JJahAn4texbKW6bmoHJ+xdwNqFooBNTNAlWF8rmlMPMLBzoorm5h9ae5WgSSHYXewnFb3K5t/AuoQlo6aYTRLvEhU7BW1nt7EnGi32CI0GebVThz5/0fye4C1rRo1W9w00GkGw93KdOZ/3FI+E7E1UNcxtoDn7Dus4Pj+LvlyMzxYydwdvIzW1khXY1syidaDGAGSnEc+3T2sMKiG/QWvOYTrKqL9JUFNvpX5Soa+A71mAYJc1hhx0EPSlGhTDP6En8QX8jeyLlYyUxlvARhroBPyKxgDwO1KtRPR9rjk3YEvoqfn4ZDbTYFoqzmsMeQoWQGr487aHp0uCLCVPBW5g/0iD531+BA1FSDVT0ZwL8LuGjy+FpsLHXCI0FFK14VqtHl+Gz0QuWXJxQFMRFc0p/gaciqzdmOwDmkrRzLm2j08GcyZCUyXSyLnPe7z145OQ+0nlrarGOnhNpkEJg5fTNvaUKL73oXlSxIOC/eSEAZPi6FNrH/aiyMRcaYIn2GPsQSs3ZCcxuDOEvYX1S0Ur8DUliWHiuyvWrSU34hcxmUF+Y73GMj3n6BSS33bGEe3698dt8MSL/iheiDG3EVGDt+LbDBYtg+brz+PiYB9zdSa6B96kwmvEN+LX3xGN/+/xNTmfvbb2YMw/rz8ZKxg+Um5CmgAAAABJRU5ErkJggg==)}.link-url.one-pan-tip-error[data-v-07b4981c]{text-decoration:line-through}.link-url.one-pan-tip-error[data-v-07b4981c]:before{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAACm0lEQVR4Xu2Xv47TQBDGfSf+iGQdCSS4gpKr4I6TvQl0lLwEb0HFS9BQ09JR8wQ0UNDQIihAoCsgdhJfOHF3ZsaSrfG36/U6cVIgPumnKPbM7Hh2Z70Ogv/aotI4fJPqcDrXYT4fE/S7oN+ZDpczrb4u9PAx+mxEeRDspFH4jgbO0w7kD0b5/L66hfF6URqpV10TQrii9HCXMPbK4oA4yHqoFzhGJ2XjQWQG7YdEhz9xPC9lR4OIpu4CA/ZJEodfcNxWYZBNQQ//FsduVP9ryk1+GFzHHAzNYvUaHTcNdzvmURPd3UWnPvCZgUQPn2E+lWgnf48OSKKv3ilsPRtDVsO1D/4eO6rmcsRBWGcT00ZyAoPRa+o72kjm++qmtK+Ehg1cSJ+m5DApujZFGxM1lT6Fklh9NA3tnE+wEvX7WFm6lmIMG5ltOunGDA1dcKWkPyfL17FSSce40reQT+dYqE0rnyLkf2qmXxYfJ9K/EJ+n0MgHrFyp1GtNmWCcVStWkD+ESml1ijbe3BvdkLFWTmxpW7BBc7e2gXH4KTM0asPsPnVW/++3CUukfxnkBxq5wEqV3YdrjhsCfV1I30LTSD1CoyYwqdRc6F6bMPJnUl+rldDQhjl99s0TK5d6TOs0Gj6VPpXanowbRNq3bZ74hjhtiU/GO9K+0uJguIfGElmt1Jy+Jqppben8T6WdVXz8sDhVcHL0Xv2G111wTP4QxusSzMNQroPL6LQF/M79tHZeWpw3Aq87HN+pZIUNtysL3TGpUvRhcozB+oKTyu8GV3BMb/FHKQZdF+f5vouyw4FuaXVvaIl8wPhri7aK53z8xcE8+YzxetfJ0bXb9OTLtr3pnF/g8egJzdsuxtiajg+CPTrk7dvfKf+Q/gIqVFE2PCWqFwAAAABJRU5ErkJggg==)}.link-url.one-pan-tip-partial[data-v-07b4981c]:before{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAADYAAAAAQAAANgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAADCgAwAEAAAAAQAAADAAAAAAVrtQ3wAAAAlwSFlzAAAhOAAAITgBRZYxYAAABb9JREFUaAXtWd9vG0UQ3t3z2aljN0nlNKVSlLaEuCEQUfIACIQET5UQBSRStS8IIfHGW976lH8g/wBIiCd+KEhAEVKfICCkgsBUBBwnURuIUpGmTohaO45j+27Z75xDe3t79jnEiIic5NzM7OzMN3t7ezMTQg6vwxX4f6+AsZ/hT05OskzmzjEWT/XFjFR/pCM1aMZS/TEz1W10puJHzJRx5cpbOzMzM3y//NJ/amhsbMz8ZbHwICE0TWySJpzHG9qktEQYWSCELzw6lLyVyWSqDfWbDO45AADPLm4/adu1ZwgnsSZ+9MOU7DAW+XZk6Mh3ew2k5QA457Sz8+FzFrWe45wk9chak1JKCgY3vtramrtBKW1pe7UUwMjISHRpufqKZZPh1iCG0zYYnTszEPk0m81Wws0QGzesYk/PWFepWrzMbX4iYA5nhK5Qg85zxldNmxf6+uwCdNfWWLLKaJLa9AFu8bM24f1CrPVNGb0TNxMfbG5m7gX48Yi1RjwagnHAV7be5NxOqGMCR41S9v3ROLuez2eL/nG/pLd3JHG/ZD8l7D0hXuaIqiHsFePRznfCBNH0GMW2Wfuz/JrY+8dURwYjuXg0+X7x/uxcqZQP/diha1XXl44mTv1s80q3eJd6vbZ5tMarp88+dGI2n89b3jEvx7ysl8MLiz2v2zaMGV9uFxc/Clql8fFxI5ZMp/ED7bVc5zAXNmBLHYfPpeXay8Cgjsl8w8F4fPjxGrEuyBNAR5nxcbGY+1WVuzwAf/7F7Ou7e10c+3TlxRdG35ueng5czURi+JGKbb3q2nDvEWJcLZVyP7m8eteuDJRwzq9tlC8J0nPGY7VKxdwPqiGZv7ViDYmVe9qViXOxa3Hp7h9WZWPDlan3SmX9rhk7bot5p+UxTvnJx0ZP/bi6umrLcpcO3EL4SKnnPPZ8uZj7xp0cdDcs//dBJ1PnwzZ8yHJgABZZJtPaALD6zhdW1hSnTYeZvOYRtYGp+6A12TSwAJMsc2ltAE5uo6QHOCqDXljX2H7c4QO+PLYElnq+5ZE6jDYAJzHz6nKc815R+7hdX0pKIZJFzeULACmxk1VKyjhFwn6kpGl7JuELPj0GRKbrYPMIiTjhlGtq6sMeNSVGeqCotZ31+RRpuoNN8ewLoGr4TxDkNsq8trM6nzpsvgCMqj8AJGZtR6w40PnUYfMFYDN/AG5WqfhoK6vzqcPmC6CtqNpg3BcAs4lvuyCfb8V3jRnbqr5OpurIvM6nDpsvAMv0B4BiRDbejD7e3bWEMtHVAw2Zy4e563zqsPmKCdMihR3FAyopIfpNEQeyt29f306l0m8Xy3QMSokOnoEscIJmgNrkpCoGtrIi9D2BiYlLmwStD+lCGSixocj19YVCuTg/gx/oUJMkJW6JFo18CUwONlkmaG09EE2mXyIWPyfp8q5Oc+rf+hqj5Ly3VZ3w4DPojUph4TMJk0P6nkBdgYvGk+eiqGE9kiZMmIosyMSuL2VxfZic6doA0DETz8bzKqAAR3Ef5FSWuxWZ2HqX8UN1FlRWyvNAw0e92JdGBBYHkyRySW1FhurH7OijwtAZV1HcGQrwWmUjK8m05F4qMtcQjSRFHUz6XB53ZkS+Xvl9VnuIaJ8AJqHdJx+FkKGh1ZEYfhZ0Oy7YVptmwAAsQf4CA0CvEu0+daJtW8+jAFflMn/h/OhNOR0GDZmso9KwCduqHBga9U2VF8U7HS2NeDJ9UV0VaKG4b1QfY89fvTY7CF2Ab9SRwMprwYtWY6kwP92oX9owADhHY+vmcu0NXW8IBThq2L2Wmnhhy9XCed0CocU4OBB5t1mftGkACOK/3FoMFcDfQRzU5i4CwNX+9jrJnRkwP2m2bepo6n9DPwF3El7sA/sPDjcI3A/sv5jkINxADuQ/+dRAwKNvg9YHugcowN0aFpUUihHk80iJhZ62UauzeSg7XIHDFWi8An8B0+Xbcz5Btc4AAAAASUVORK5CYII=)}.link-url.one-pan-tip-other[data-v-07b4981c]:before{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAD5UlEQVR4Xr2YT2jTUBzHMxR0wmDaNXndxIk6EA9TEPQo/rns5MHtJjK2JrHrhhcRBP/cRHYTFMXDQBAVdhVBBGEHDx48iHhQEQ8DFYS5Jenabd3i71eX9uXbpE3S6gce697vb977vT+JoiTAVZSOwlhPr2WIT+v5jLt8UbgONdsUboH+rk5k3JUJ4Vq6pv8a6+lC+7Zjm+nhNQrKCcRpnLxjimfor2VKo+kBJyBg3MY+LFN7i/4TUcrVB8BgPJW2ITbo/zX+zdOJemhTzHf3Y6xIcB1xraBTbpv9s4uGuh/tZGxTm+JpRPta0x6iTUPcEWVL0NQVc/y06mHUb8b8yO7OyqgG+LQN7T3qhxKUFDl4hXpxoQfuDJpmx1BfoG4dQUPv6OkjqNcKgaOXTZ1CvSo0KnUGPA2o1w7KE/DwlCzXNeopTlbVMKliTt2HemFY+b7UgpHZ40ykhTt1YBvKg1jJ+WdnjZJFnbq6sgxtBnUQ2tnH3Mn6qee2wf165hzaIBj3u9G7oypc1NUzsrBETyLZBkL71rxsw1sI12d9catzaCtjG+pdeKhCVYjOSk32Jzojr3i6/MQoXzZSx2V/KEdw1Lz+DrmTz0LZKAh55aLMgxbSm1ry6m2Uy1immJFzcAwxrfwe7+6XO6nNoiEi6a6jzIPq72otkPYU5TK8WOQcVnkRYK1YRuogGiaBpvub55OOLhPlSFmaBd7nfB1B9ZIEOgOveT65flEeBOl+lQfItwtHddIISuqDHID3R9QJgnTv+RILWxFJKMu3EboGobwRli4uhyZGv8toEBXfGUtXbpQ3g2xyvsTkqawUXUJa9WHr4oYvMfkymLT4HVO7VHWqa09QHgWyfe1LDK85aBAFKvDBJTNznlshmzmK8ihUzlY5D37FkjtorifR6H9QkHLgJBWX3vvkxHhfQ6N/jW3uOuQbHFP8PfhxOt3RvdvBtinuTWUrjfZJ7I8CXp2qpw+/rciCJBttzV77gbJG8HuAHLtuVeNG6w4pkW6hzPKFVF/VjusjBhiXVvgtnwJ1zskKcUeNjyK6viy4Qff2ECy6RDYcLQ/MPlSxDRSyqbNyLG6hNxs335VCZf5qg3qtUtTFCYxDF8ufqOeDFB6gEX+/QL2k0JQ/Rv+Ry4a/e6Fx5fuXod1B3TiQn3X0G7tc6PXtOTqpJGjypyTx6MtQtHdHJ7tzEPcpr0UeKcQZ1057XwqD2ubG/JGSneajzDK1cfp7nabrJZ8g+Pblb9pnjBcLXv7NvpHFaTx1S6PpAYyTmOERZQs5LmGgqI0TohKYRr9thQLdD6sbuVW+1xriHSV1DH004w9PygmOZFyzWwAAAABJRU5ErkJggg==)}.link-url.one-pan-tip-lock[data-v-07b4981c]:before{content:"";background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAABwUlEQVR4Xu1XvUoDQRA+0EoMub+oJBpv9wQLFSzsbASfwc4nsLMwcffERPEJbH0BQXwG2zQWEmttRIuA2Ch2Ohs4vMzueUncjRDug6/Zmdnvy85m99aycuQYIzi0XnWr9RU8/i/wKLv3aPTlUY4IY4S94HzjcEK+KptR0yH8HNcbgVNlm1g8iy5hj3ge7cCiom1OwC5LwcGcHTTs4kK04YcNyZxDDs/wXNoAe+qzR5DwZ5wTA1q4i83hHD0o7U33CIVHmUIu4afJGmhpC+f8GSBykRQpl5tTOEcF8QOMrhr8/d/jycUewvE0uJRfGTUGAm3YYy1BWL07HE9Dkda24zowpr+VRuCFx93NaoIujTpYry/Asj8ke2yE8/sVrJsJ6O2HNJFmwgW+hnUzMZix7oX8ChygxrQxdATMED4r5aTQqLFChXlSLWE3OE9Fo8Ysa2dCruUM56lo1Jgd8HVc61L2hvNUNGpM0LK2JuM6OOmvcTyNxo1B7m1c5y81FXE1c2MCubH++PPk8sXFL8XVHIEx+PztvhX5Ex7/jSMxNgyHMgbnUQdPpJs2iRaxbib85VpB/YzXQz880f8dnyPHuOIbV69cHR4KWOMAAAAASUVORK5CYII=)}.extract-code-container[data-v-07b4981c]{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-07b4981c]{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-07b4981c]:hover{background:#e6e6e6}.copy-btn[data-v-07b4981c]{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px}.copy-btn[data-v-07b4981c]:hover{background:#f8f9fa}.link-actions[data-v-07b4981c]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;margin-bottom:10px}.vote-section[data-v-07b4981c]{display:flex;align-items:center;gap:10px}.vote-btn[data-v-07b4981c]{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-07b4981c]{width:12px;height:12px}.vote-icon.down-icon[data-v-07b4981c]{transform:rotate(180deg)}.vote-btn[data-v-07b4981c]:hover:not(:disabled){background:#e9ecef}.vote-btn[data-v-07b4981c]:disabled{opacity:.6;cursor:not-allowed}.vote-btn.active.up[data-v-07b4981c]{color:#155724}.vote-btn.active.down[data-v-07b4981c]{color:#721c24}.vote-btn.pending[data-v-07b4981c]{opacity:.7;position:relative}.pending-indicator[data-v-07b4981c]{font-size:10px;margin-left:2px;animation:pulse-07b4981c 1.5s ease-in-out infinite}@keyframes pulse-07b4981c{0%,to{opacity:1}50%{opacity:.5}}.action-buttons[data-v-07b4981c]{display:flex;gap:8px}.action-buttons button[data-v-07b4981c]{padding:4px 8px;border:none;border-radius:6px;cursor:pointer;font-size:12px}.edit-btn[data-v-07b4981c]{background:#ffc107;color:#212529}.edit-btn[data-v-07b4981c]:hover{background:#e0a800}.modify-btn[data-v-07b4981c]{width:48px;height:28px;background:#d4ecef66;color:#22899b}.modify-btn[data-v-07b4981c]:hover{background:#d4ecef80}.delete-btn[data-v-07b4981c]{width:48px;height:28px;background:#ffccd052;color:#e62e2e}.delete-btn[data-v-07b4981c]:hover{background:#ffccd060}.delete-confirmation[data-v-07b4981c]{text-align:center;padding:20px 0}.warning-icon[data-v-07b4981c]{font-size:48px;margin-bottom:16px}.delete-confirmation p[data-v-07b4981c]{margin:8px 0;font-size:16px}.warning-text[data-v-07b4981c]{color:#dc3545;font-size:14px;font-weight:500}.delete-confirm-btn[data-v-07b4981c]{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-07b4981c]:hover:not(:disabled){background:#f8d7dad2!important;border:1px solid #f5c6cb!important}.delete-confirm-btn[data-v-07b4981c]:disabled{background:#6c757d;cursor:not-allowed}.report-btn[data-v-07b4981c]{width:48px;height:28px;background:#f4f4f4;color:#495057}.report-btn[data-v-07b4981c]:hover{color:#495057;background:#ededed}.link-footer[data-v-07b4981c]{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-07b4981c]{display:flex;align-items:center;gap:8px}.footer-right[data-v-07b4981c]{display:flex;align-items:center;gap:12px}.original-link[data-v-07b4981c]{color:#007bff;text-decoration:none;font-size:12px}.original-link[data-v-07b4981c]:hover{background-color:transparent}.report-count[data-v-07b4981c]{color:#dc3545;font-weight:700}.empty-state[data-v-07b4981c]{text-align:center;padding:40px;color:#666}.loading[data-v-07b4981c]{text-align:center;padding:20px;color:#666}.error-message[data-v-07b4981c]{background:#f8d7da;color:#721c24;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #f5c6cb}.success-message[data-v-07b4981c]{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-07b4981c]{padding:10px}.form-row[data-v-07b4981c]{flex-direction:column;gap:10px}.filter-bar[data-v-07b4981c]{flex-direction:column;gap:8px}.link-header[data-v-07b4981c]{flex-wrap:wrap}.link-meta[data-v-07b4981c]{margin-left:0;margin-top:5px}.link-actions[data-v-07b4981c]{flex-direction:column;gap:10px;align-items:flex-start}}.modal-overlay[data-v-07b4981c]{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-07b4981c]{background:#fff;border-radius:16px;width:90%;max-width:600px;max-height:90vh;box-shadow:0 4px 20px #00000026}.modal-header[data-v-07b4981c]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;margin-bottom:20px}.modal-header h4[data-v-07b4981c]{margin-left:10px;margin-bottom:0;color:#333;font-size:18px}.close-btn[data-v-07b4981c]{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-07b4981c]:hover{background:#f5f5f5;color:#333}.modal-body[data-v-07b4981c]{padding:0 20px 20px}.vote-section[data-v-07b4981c]{width:100%}.input-wrapper textarea[data-v-07b4981c]{width:100%;border:none;outline:none;font-size:14px;font-family:inherit;resize:vertical;min-height:80px;background:transparent}.input-wrapper[data-v-07b4981c]:has(textarea):focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper textarea[data-v-07b4981c]::placeholder{color:#999}.pagination[data-v-07b4981c]{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:10px;padding:10px;background:#fff;border-radius:8px}.pagination-btn[data-v-07b4981c]{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-07b4981c]:hover:not(:disabled){background:#b3d8ff;color:#007bff;border-color:#b3d8ff}.pagination-btn[data-v-07b4981c]:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;border-color:#ddd}.pagination-info[data-v-07b4981c]{font-size:14px;color:#666;font-weight:500}.login-prompt[data-v-07b4981c]{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-07b4981c]{text-align:center;max-width:400px}.login-icon[data-v-07b4981c]{margin-bottom:20px;color:#6c757d;opacity:.8}.login-prompt h3[data-v-07b4981c]{font-size:24px;font-weight:600;color:#495057;margin-bottom:12px;line-height:1.3}.login-prompt p[data-v-07b4981c]{font-size:16px;color:#6c757d;margin-bottom:24px;line-height:1.5}.login-btn[data-v-07b4981c]{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-07b4981c]:hover{transform:translateY(-2px);box-shadow:#0000000f 4px 4px 20px}.login-btn[data-v-07b4981c]:active{transform:translateY(0);box-shadow:0 2px 10px #007bff4d}.url-preview[data-v-07b4981c]{display:none;margin-top:8px;padding:8px 12px;background:#f8f9fa;border-radius:6px;border-left:3px solid #007bff}.url-preview-label[data-v-07b4981c]{display:block;font-size:11px;color:#666;font-weight:500;margin-bottom:4px}.url-preview-text[data-v-07b4981c]{display:block;font-size:12px;color:#333;font-family:Courier New,monospace;word-break:break-all;line-height:1.4}.content-wrapper[data-v-92e3c6bc]{padding:16px}.movie-info[data-v-92e3c6bc]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:4px solid #00a1d6}.movie-title[data-v-92e3c6bc]{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.3}.movie-meta[data-v-92e3c6bc]{display:flex;gap:12px;align-items:center}.movie-meta .year[data-v-92e3c6bc]{background:#6c757d;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:500}.movie-meta .rating[data-v-92e3c6bc]{color:#ff6b35;font-weight:600;font-size:13px}.navigation-bar[data-v-92e3c6bc]{display:flex;border-bottom:1px solid #e0e0e0;margin-bottom:16px}.nav-btn[data-v-92e3c6bc]{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-92e3c6bc]{color:#00a1d6;border-bottom-color:#00a1d6}.tab-content[data-v-92e3c6bc]{min-height:200px}.tab-panel[data-v-92e3c6bc]{padding-top:16px 0}.tab-panel h4[data-v-92e3c6bc]{margin:0 0 12px;color:#333;font-size:16px;font-weight:600}.tab-panel p[data-v-92e3c6bc]{margin:0;color:#666;line-height:1.5}.sub-nav[data-v-92e3c6bc]{display:flex;gap:4px;margin-bottom:12px;padding:4px;background:#e9ecef;border-radius:6px}.sub-tab[data-v-92e3c6bc]{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-92e3c6bc]:hover{background:#dee2e6;color:#495057}.sub-tab.active[data-v-92e3c6bc]{background:#007bff;color:#fff;font-weight:500}.sub-content[data-v-92e3c6bc]{margin-top:8px}.sub-tab-content[data-v-92e3c6bc]{padding:8px 0}.sub-tab-content p[data-v-92e3c6bc]{margin:4px 0;color:#666;font-size:12px}.no-subject[data-v-92e3c6bc]{text-align:center;padding:40px 20px;color:#666}.no-subject p[data-v-92e3c6bc]{margin:8px 0;line-height:1.5}.no-subject .hint[data-v-92e3c6bc]{font-size:12px;color:#999;font-style:italic}.hint-list[data-v-92e3c6bc]{color:#666;font-size:13px;margin:4px 0 0 16px;padding:0}.hint-list li[data-v-92e3c6bc]{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-1502c348]{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-1502c348]{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-1502c348]{font-weight:300;font-size:12px}.close-btn[data-v-1502c348]{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-1502c348]:hover{background-color:#fff3}.window-content[data-v-1502c348]{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 vn(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ue={},Kt=[],lt=()=>{},sl=()=>!1,Us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),_n=e=>e.startsWith("onUpdate:"),Fe=Object.assign,yn=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},nl=Object.prototype.hasOwnProperty,oe=(e,t)=>nl.call(e,t),H=Array.isArray,Jt=e=>is(e)==="[object Map]",Ps=e=>is(e)==="[object Set]",so=e=>is(e)==="[object Date]",J=e=>typeof e=="function",me=e=>typeof e=="string",it=e=>typeof e=="symbol",fe=e=>e!==null&&typeof e=="object",no=e=>(fe(e)||J(e))&&J(e.then)&&J(e.catch),oo=Object.prototype.toString,is=e=>oo.call(e),ol=e=>is(e).slice(8,-1),ro=e=>is(e)==="[object Object]",wn=e=>me(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,as=vn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Is=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},rl=/-(\w)/g,Et=Is(e=>e.replace(rl,(t,s)=>s?s.toUpperCase():"")),ll=/\B([A-Z])/g,It=Is(e=>e.replace(ll,"-$1").toLowerCase()),lo=Is(e=>e.charAt(0).toUpperCase()+e.slice(1)),bn=Is(e=>e?`on${lo(e)}`:""),At=(e,t)=>!Object.is(e,t),Ds=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},xn=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},kn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let io;const Os=()=>io||(io=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Qt(e){if(H(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],o=me(n)?cl(n):Qt(n);if(o)for(const r in o)t[r]=o[r]}return t}else if(me(e)||fe(e))return e}const il=/;(?![^(]*\))/g,al=/:([^]+)/,ul=/\/\*[^]*?\*\//g;function cl(e){const t={};return e.replace(ul,"").split(il).forEach(s=>{if(s){const n=s.split(al);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ve(e){let t="";if(me(e))t=e;else if(H(e))for(let s=0;s<e.length;s++){const n=ve(e[s]);n&&(t+=n+" ")}else if(fe(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const dl=vn("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function ao(e){return!!e||e===""}function fl(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=Fs(e[n],t[n]);return s}function Fs(e,t){if(e===t)return!0;let s=so(e),n=so(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=it(e),n=it(t),s||n)return e===t;if(s=H(e),n=H(t),s||n)return s&&n?fl(e,t):!1;if(s=fe(e),n=fe(t),s||n){if(!s||!n)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const l in e){const i=e.hasOwnProperty(l),u=t.hasOwnProperty(l);if(i&&!u||!i&&u||!Fs(e[l],t[l]))return!1}}return String(e)===String(t)}function uo(e,t){return e.findIndex(s=>Fs(s,t))}const co=e=>!!(e&&e.__v_isRef===!0),G=e=>me(e)?e:e==null?"":H(e)||fe(e)&&(e.toString===oo||!J(e.toString))?co(e)?G(e.value):JSON.stringify(e,fo,2):String(e),fo=(e,t)=>co(t)?fo(e,t.value):Jt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,o],r)=>(s[Cn(n,r)+" =>"]=o,s),{})}:Ps(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Cn(s))}:it(t)?Cn(t):fe(t)&&!H(t)&&!ro(t)?String(t):t,Cn=(e,t="")=>{var s;return it(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 Ne;class pl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Ne,!t&&Ne&&(this.index=(Ne.scopes||(Ne.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=Ne;try{return Ne=this,t()}finally{Ne=s}}}on(){++this._on===1&&(this.prevScope=Ne,Ne=this)}off(){this._on>0&&--this._on===0&&(Ne=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function hl(){return Ne}let de;const Tn=new WeakSet;class po{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,Ne&&Ne.active&&Ne.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Tn.has(this)&&(Tn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||go(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,wo(this),mo(this);const t=de,s=ot;de=this,ot=!0;try{return this.fn()}finally{vo(this),de=t,ot=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Vn(t);this.deps=this.depsTail=void 0,wo(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Tn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){An(this)&&this.run()}get dirty(){return An(this)}}let ho=0,us,cs;function go(e,t=!1){if(e.flags|=8,t){e.next=cs,cs=e;return}e.next=us,us=e}function Sn(){ho++}function En(){if(--ho>0)return;if(cs){let t=cs;for(cs=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;us;){let t=us;for(us=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function mo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function vo(e){let t,s=e.depsTail,n=s;for(;n;){const o=n.prevDep;n.version===-1?(n===s&&(s=o),Vn(n),gl(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=o}e.deps=t,e.depsTail=s}function An(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_o(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _o(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===ds)||(e.globalVersion=ds,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!An(e))))return;e.flags|=2;const t=e.dep,s=de,n=ot;de=e,ot=!0;try{mo(e);const o=e.fn(e._value);(t.version===0||At(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{de=s,ot=n,vo(e),e.flags&=-3}}function Vn(e,t=!1){const{dep:s,prevSub:n,nextSub:o}=e;if(n&&(n.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)Vn(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function gl(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ot=!0;const yo=[];function at(){yo.push(ot),ot=!1}function ut(){const e=yo.pop();ot=e===void 0?!0:e}function wo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=de;de=void 0;try{t()}finally{de=s}}}let ds=0;class ml{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 Mn{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(!de||!ot||de===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==de)s=this.activeLink=new ml(de,this),de.deps?(s.prevDep=de.depsTail,de.depsTail.nextDep=s,de.depsTail=s):de.deps=de.depsTail=s,bo(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=de.depsTail,s.nextDep=void 0,de.depsTail.nextDep=s,de.depsTail=s,de.deps===s&&(de.deps=n)}return s}trigger(t){this.version++,ds++,this.notify(t)}notify(t){Sn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{En()}}}function bo(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)bo(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ln=new WeakMap,Dt=Symbol(""),$n=Symbol(""),fs=Symbol("");function Le(e,t,s){if(ot&&de){let n=Ln.get(e);n||Ln.set(e,n=new Map);let o=n.get(s);o||(n.set(s,o=new Mn),o.map=n,o.key=s),o.track()}}function gt(e,t,s,n,o,r){const l=Ln.get(e);if(!l){ds++;return}const i=u=>{u&&u.trigger()};if(Sn(),t==="clear")l.forEach(i);else{const u=H(e),p=u&&wn(s);if(u&&s==="length"){const d=Number(n);l.forEach((v,C)=>{(C==="length"||C===fs||!it(C)&&C>=d)&&i(v)})}else switch((s!==void 0||l.has(void 0))&&i(l.get(s)),p&&i(l.get(fs)),t){case"add":u?p&&i(l.get("length")):(i(l.get(Dt)),Jt(e)&&i(l.get($n)));break;case"delete":u||(i(l.get(Dt)),Jt(e)&&i(l.get($n)));break;case"set":Jt(e)&&i(l.get(Dt));break}}En()}function Zt(e){const t=te(e);return t===e?t:(Le(t,"iterate",fs),Ze(e)?t:t.map(Ee))}function Rs(e){return Le(e=te(e),"iterate",fs),e}const vl={__proto__:null,[Symbol.iterator](){return Un(this,Symbol.iterator,Ee)},concat(...e){return Zt(this).concat(...e.map(t=>H(t)?Zt(t):t))},entries(){return Un(this,"entries",e=>(e[1]=Ee(e[1]),e))},every(e,t){return mt(this,"every",e,t,void 0,arguments)},filter(e,t){return mt(this,"filter",e,t,s=>s.map(Ee),arguments)},find(e,t){return mt(this,"find",e,t,Ee,arguments)},findIndex(e,t){return mt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return mt(this,"findLast",e,t,Ee,arguments)},findLastIndex(e,t){return mt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return mt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Pn(this,"includes",e)},indexOf(...e){return Pn(this,"indexOf",e)},join(e){return Zt(this).join(e)},lastIndexOf(...e){return Pn(this,"lastIndexOf",e)},map(e,t){return mt(this,"map",e,t,void 0,arguments)},pop(){return ps(this,"pop")},push(...e){return ps(this,"push",e)},reduce(e,...t){return xo(this,"reduce",e,t)},reduceRight(e,...t){return xo(this,"reduceRight",e,t)},shift(){return ps(this,"shift")},some(e,t){return mt(this,"some",e,t,void 0,arguments)},splice(...e){return ps(this,"splice",e)},toReversed(){return Zt(this).toReversed()},toSorted(e){return Zt(this).toSorted(e)},toSpliced(...e){return Zt(this).toSpliced(...e)},unshift(...e){return ps(this,"unshift",e)},values(){return Un(this,"values",Ee)}};function Un(e,t,s){const n=Rs(e),o=n[t]();return n!==e&&!Ze(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.value&&(r.value=s(r.value)),r}),o}const _l=Array.prototype;function mt(e,t,s,n,o,r){const l=Rs(e),i=l!==e&&!Ze(e),u=l[t];if(u!==_l[t]){const v=u.apply(e,r);return i?Ee(v):v}let p=s;l!==e&&(i?p=function(v,C){return s.call(this,Ee(v),C,e)}:s.length>2&&(p=function(v,C){return s.call(this,v,C,e)}));const d=u.call(l,p,n);return i&&o?o(d):d}function xo(e,t,s,n){const o=Rs(e);let r=s;return o!==e&&(Ze(e)?s.length>3&&(r=function(l,i,u){return s.call(this,l,i,u,e)}):r=function(l,i,u){return s.call(this,l,Ee(i),u,e)}),o[t](r,...n)}function Pn(e,t,s){const n=te(e);Le(n,"iterate",fs);const o=n[t](...s);return(o===-1||o===!1)&&Dn(s[0])?(s[0]=te(s[0]),n[t](...s)):o}function ps(e,t,s=[]){at(),Sn();const n=te(e)[t].apply(e,s);return En(),ut(),n}const yl=vn("__proto__,__v_isRef,__isVue"),ko=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(it));function wl(e){it(e)||(e=String(e));const t=te(this);return Le(t,"has",e),t.hasOwnProperty(e)}class Co{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!o;if(s==="__v_isReadonly")return o;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(o?r?Mo:Vo:r?Ao:Eo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=H(t);if(!o){let u;if(l&&(u=vl[s]))return u;if(s==="hasOwnProperty")return wl}const i=Reflect.get(t,s,Ae(t)?t:n);return(it(s)?ko.has(s):yl(s))||(o||Le(t,"get",s),r)?i:Ae(i)?l&&wn(s)?i:i.value:fe(i)?o?Lo(i):Ot(i):i}}class To extends Co{constructor(t=!1){super(!1,t)}set(t,s,n,o){let r=t[s];if(!this._isShallow){const u=Vt(r);if(!Ze(n)&&!Vt(n)&&(r=te(r),n=te(n)),!H(t)&&Ae(r)&&!Ae(n))return u?!1:(r.value=n,!0)}const l=H(t)&&wn(s)?Number(s)<t.length:oe(t,s),i=Reflect.set(t,s,n,Ae(t)?t:o);return t===te(o)&&(l?At(n,r)&>(t,"set",s,n):gt(t,"add",s,n)),i}deleteProperty(t,s){const n=oe(t,s);t[s];const o=Reflect.deleteProperty(t,s);return o&&n&>(t,"delete",s,void 0),o}has(t,s){const n=Reflect.has(t,s);return(!it(s)||!ko.has(s))&&Le(t,"has",s),n}ownKeys(t){return Le(t,"iterate",H(t)?"length":Dt),Reflect.ownKeys(t)}}class So extends Co{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const bl=new To,xl=new So,kl=new To(!0),Cl=new So(!0),In=e=>e,Bs=e=>Reflect.getPrototypeOf(e);function Tl(e,t,s){return function(...n){const o=this.__v_raw,r=te(o),l=Jt(r),i=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,p=o[e](...n),d=s?In:t?qs:Ee;return!t&&Le(r,"iterate",u?$n:Dt),{next(){const{value:v,done:C}=p.next();return C?{value:v,done:C}:{value:i?[d(v[0]),d(v[1])]:d(v),done:C}},[Symbol.iterator](){return this}}}}function js(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Sl(e,t){const s={get(o){const r=this.__v_raw,l=te(r),i=te(o);e||(At(o,i)&&Le(l,"get",o),Le(l,"get",i));const{has:u}=Bs(l),p=t?In:e?qs:Ee;if(u.call(l,o))return p(r.get(o));if(u.call(l,i))return p(r.get(i));r!==l&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Le(te(o),"iterate",Dt),Reflect.get(o,"size",o)},has(o){const r=this.__v_raw,l=te(r),i=te(o);return e||(At(o,i)&&Le(l,"has",o),Le(l,"has",i)),o===i?r.has(o):r.has(o)||r.has(i)},forEach(o,r){const l=this,i=l.__v_raw,u=te(i),p=t?In:e?qs:Ee;return!e&&Le(u,"iterate",Dt),i.forEach((d,v)=>o.call(r,p(d),p(v),l))}};return Fe(s,e?{add:js("add"),set:js("set"),delete:js("delete"),clear:js("clear")}:{add(o){!t&&!Ze(o)&&!Vt(o)&&(o=te(o));const r=te(this);return Bs(r).has.call(r,o)||(r.add(o),gt(r,"add",o,o)),this},set(o,r){!t&&!Ze(r)&&!Vt(r)&&(r=te(r));const l=te(this),{has:i,get:u}=Bs(l);let p=i.call(l,o);p||(o=te(o),p=i.call(l,o));const d=u.call(l,o);return l.set(o,r),p?At(r,d)&>(l,"set",o,r):gt(l,"add",o,r),this},delete(o){const r=te(this),{has:l,get:i}=Bs(r);let u=l.call(r,o);u||(o=te(o),u=l.call(r,o)),i&&i.call(r,o);const p=r.delete(o);return u&>(r,"delete",o,void 0),p},clear(){const o=te(this),r=o.size!==0,l=o.clear();return r&>(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{s[o]=Tl(o,e,t)}),s}function Ns(e,t){const s=Sl(e,t);return(n,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(oe(s,o)&&o in n?s:n,o,r)}const El={get:Ns(!1,!1)},Al={get:Ns(!1,!0)},Vl={get:Ns(!0,!1)},Ml={get:Ns(!0,!0)},Eo=new WeakMap,Ao=new WeakMap,Vo=new WeakMap,Mo=new WeakMap;function Ll(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function $l(e){return e.__v_skip||!Object.isExtensible(e)?0:Ll(ol(e))}function Ot(e){return Vt(e)?e:zs(e,!1,bl,El,Eo)}function Ul(e){return zs(e,!1,kl,Al,Ao)}function Lo(e){return zs(e,!0,xl,Vl,Vo)}function v1(e){return zs(e,!0,Cl,Ml,Mo)}function zs(e,t,s,n,o){if(!fe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=$l(e);if(r===0)return e;const l=o.get(e);if(l)return l;const i=new Proxy(e,r===2?n:s);return o.set(e,i),i}function Yt(e){return Vt(e)?Yt(e.__v_raw):!!(e&&e.__v_isReactive)}function Vt(e){return!!(e&&e.__v_isReadonly)}function Ze(e){return!!(e&&e.__v_isShallow)}function Dn(e){return e?!!e.__v_raw:!1}function te(e){const t=e&&e.__v_raw;return t?te(t):e}function Pl(e){return!oe(e,"__v_skip")&&Object.isExtensible(e)&&xn(e,"__v_skip",!0),e}const Ee=e=>fe(e)?Ot(e):e,qs=e=>fe(e)?Lo(e):e;function Ae(e){return e?e.__v_isRef===!0:!1}function F(e){return Il(e,!1)}function Il(e,t){return Ae(e)?e:new Dl(e,t)}class Dl{constructor(t,s){this.dep=new Mn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:te(t),this._value=s?t:Ee(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Ze(t)||Vt(t);t=n?t:te(t),At(t,s)&&(this._rawValue=t,this._value=n?t:Ee(t),this.dep.trigger())}}function Ol(e){return Ae(e)?e.value:e}const Fl={get:(e,t,s)=>t==="__v_raw"?e:Ol(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const o=e[t];return Ae(o)&&!Ae(s)?(o.value=s,!0):Reflect.set(e,t,s,n)}};function $o(e){return Yt(e)?e:new Proxy(e,Fl)}class Rl{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Mn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ds-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&de!==this)return go(this,!0),!0}get value(){const t=this.dep.track();return _o(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Bl(e,t,s=!1){let n,o;return J(e)?n=e:(n=e.get,o=e.set),new Rl(n,o,s)}const Hs={},Gs=new WeakMap;let Ft;function jl(e,t=!1,s=Ft){if(s){let n=Gs.get(s);n||Gs.set(s,n=[]),n.push(e)}}function Nl(e,t,s=ue){const{immediate:n,deep:o,once:r,scheduler:l,augmentJob:i,call:u}=s,p=R=>o?R:Ze(R)||o===!1||o===0?vt(R,1):vt(R);let d,v,C,b,x=!1,I=!1;if(Ae(e)?(v=()=>e.value,x=Ze(e)):Yt(e)?(v=()=>p(e),x=!0):H(e)?(I=!0,x=e.some(R=>Yt(R)||Ze(R)),v=()=>e.map(R=>{if(Ae(R))return R.value;if(Yt(R))return p(R);if(J(R))return u?u(R,2):R()})):J(e)?t?v=u?()=>u(e,2):e:v=()=>{if(C){at();try{C()}finally{ut()}}const R=Ft;Ft=d;try{return u?u(e,3,[b]):e(b)}finally{Ft=R}}:v=lt,t&&o){const R=v,ie=o===!0?1/0:o;v=()=>vt(R(),ie)}const U=hl(),w=()=>{d.stop(),U&&U.active&&yn(U.effects,d)};if(r&&t){const R=t;t=(...ie)=>{R(...ie),w()}}let y=I?new Array(e.length).fill(Hs):Hs;const Q=R=>{if(!(!(d.flags&1)||!d.dirty&&!R))if(t){const ie=d.run();if(o||x||(I?ie.some((ze,Pe)=>At(ze,y[Pe])):At(ie,y))){C&&C();const ze=Ft;Ft=d;try{const Pe=[ie,y===Hs?void 0:I&&y[0]===Hs?[]:y,b];y=ie,u?u(t,3,Pe):t(...Pe)}finally{Ft=ze}}}else d.run()};return i&&i(Q),d=new po(v),d.scheduler=l?()=>l(Q,!1):Q,b=R=>jl(R,!1,d),C=d.onStop=()=>{const R=Gs.get(d);if(R){if(u)u(R,4);else for(const ie of R)ie();Gs.delete(d)}},t?n?Q(!0):y=d.run():l?l(Q.bind(null,!0),!0):d.run(),w.pause=d.pause.bind(d),w.resume=d.resume.bind(d),w.stop=w,w}function vt(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--,Ae(e))vt(e.value,t,s);else if(H(e))for(let n=0;n<e.length;n++)vt(e[n],t,s);else if(Ps(e)||Jt(e))e.forEach(n=>{vt(n,t,s)});else if(ro(e)){for(const n in e)vt(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&vt(e[n],t,s)}return e}/**
* @vue/runtime-core v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const hs=[];let On=!1;function _1(e,...t){if(On)return;On=!0,at();const s=hs.length?hs[hs.length-1].component:null,n=s&&s.appContext.config.warnHandler,o=zl();if(n)Xt(n,s,11,[e+t.map(r=>{var l,i;return(i=(l=r.toString)==null?void 0:l.call(r))!=null?i:JSON.stringify(r)}).join(""),s&&s.proxy,o.map(({vnode:r})=>`at <${Cr(s,r.type)}>`).join(`
`),o]);else{const r=[`[Vue warn]: ${e}`,...t];o.length&&r.push(`
`,...ql(o)),console.warn(...r)}ut(),On=!1}function zl(){let e=hs[hs.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 n=e.component&&e.component.parent;e=n&&n.vnode}return t}function ql(e){const t=[];return e.forEach((s,n)=>{t.push(...n===0?[]:[`
`],...Hl(s))}),t}function Hl({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,o=` at <${Cr(e.component,e.type,n)}`,r=">"+s;return e.props?[o,...Gl(e.props),r]:[o+r]}function Gl(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(n=>{t.push(...Uo(n,e[n]))}),s.length>3&&t.push(" ..."),t}function Uo(e,t,s){return me(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:Ae(t)?(t=Uo(e,te(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):J(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=te(t),s?t:[`${e}=`,t])}function Xt(e,t,s,n){try{return n?e(...n):e()}catch(o){Ws(o,t,s)}}function ct(e,t,s,n){if(J(e)){const o=Xt(e,t,s,n);return o&&no(o)&&o.catch(r=>{Ws(r,t,s)}),o}if(H(e)){const o=[];for(let r=0;r<e.length;r++)o.push(ct(e[r],t,s,n));return o}}function Ws(e,t,s,n=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||ue;if(t){let i=t.parent;const u=t.proxy,p=`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,p)===!1)return}i=i.parent}if(r){at(),Xt(r,null,10,[e,u,p]),ut();return}}Wl(e,s,o,n,l)}function Wl(e,t,s,n=!0,o=!1){if(o)throw e;console.error(e)}const Re=[];let dt=-1;const es=[];let Mt=null,ts=0;const Po=Promise.resolve();let Ks=null;function Io(e){const t=Ks||Po;return e?t.then(this?e.bind(this):e):t}function Kl(e){let t=dt+1,s=Re.length;for(;t<s;){const n=t+s>>>1,o=Re[n],r=gs(o);r<e||r===e&&o.flags&2?t=n+1:s=n}return t}function Fn(e){if(!(e.flags&1)){const t=gs(e),s=Re[Re.length-1];!s||!(e.flags&2)&&t>=gs(s)?Re.push(e):Re.splice(Kl(t),0,e),e.flags|=1,Do()}}function Do(){Ks||(Ks=Po.then(Ro))}function Jl(e){H(e)?es.push(...e):Mt&&e.id===-1?Mt.splice(ts+1,0,e):e.flags&1||(es.push(e),e.flags|=1),Do()}function Oo(e,t,s=dt+1){for(;s<Re.length;s++){const n=Re[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;Re.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function Fo(e){if(es.length){const t=[...new Set(es)].sort((s,n)=>gs(s)-gs(n));if(es.length=0,Mt){Mt.push(...t);return}for(Mt=t,ts=0;ts<Mt.length;ts++){const s=Mt[ts];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Mt=null,ts=0}}const gs=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Ro(e){try{for(dt=0;dt<Re.length;dt++){const t=Re[dt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Xt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;dt<Re.length;dt++){const t=Re[dt];t&&(t.flags&=-2)}dt=-1,Re.length=0,Fo(),Ks=null,(Re.length||es.length)&&Ro()}}let Ye=null,Bo=null;function Js(e){const t=Ye;return Ye=e,Bo=e&&e.type.__scopeId||null,t}function Ql(e,t=Ye,s){if(!t||e._n)return e;const n=(...o)=>{n._d&&gr(-1);const r=Js(t);let l;try{l=e(...o)}finally{Js(r),n._d&&gr(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function le(e,t){if(Ye===null)return e;const s=rn(Ye),n=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,l,i,u=ue]=t[o];r&&(J(r)&&(r={mounted:r,updated:r}),r.deep&&vt(l),n.push({dir:r,instance:s,value:l,oldValue:void 0,arg:i,modifiers:u}))}return e}function Rt(e,t,s,n){const o=e.dirs,r=t&&t.dirs;for(let l=0;l<o.length;l++){const i=o[l];r&&(i.oldValue=r[l].value);let u=i.dir[n];u&&(at(),ct(u,s,8,[e.el,i,e,t]),ut())}}const Zl=Symbol("_vte"),Yl=e=>e.__isTeleport;function Rn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Rn(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 jo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function ms(e,t,s,n,o=!1){if(H(e)){e.forEach((x,I)=>ms(x,t&&(H(t)?t[I]:t),s,n,o));return}if(vs(n)&&!o){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&ms(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?rn(n.component):n.el,l=o?null:r,{i,r:u}=e,p=t&&t.r,d=i.refs===ue?i.refs={}:i.refs,v=i.setupState,C=te(v),b=v===ue?()=>!1:x=>oe(C,x);if(p!=null&&p!==u&&(me(p)?(d[p]=null,b(p)&&(v[p]=null)):Ae(p)&&(p.value=null)),J(u))Xt(u,i,12,[l,d]);else{const x=me(u),I=Ae(u);if(x||I){const U=()=>{if(e.f){const w=x?b(u)?v[u]:d[u]:u.value;o?H(w)&&yn(w,r):H(w)?w.includes(r)||w.push(r):x?(d[u]=[r],b(u)&&(v[u]=d[u])):(u.value=[r],e.k&&(d[e.k]=u.value))}else x?(d[u]=l,b(u)&&(v[u]=l)):I&&(u.value=l,e.k&&(d[e.k]=l))};l?(U.id=-1,He(U,s)):U()}}}Os().requestIdleCallback,Os().cancelIdleCallback;const vs=e=>!!e.type.__asyncLoader,No=e=>e.type.__isKeepAlive;function Xl(e,t){zo(e,"a",t)}function ei(e,t){zo(e,"da",t)}function zo(e,t,s=je){const n=e.__wdc||(e.__wdc=()=>{let o=s;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Qs(t,n,s),s){let o=s.parent;for(;o&&o.parent;)No(o.parent.vnode)&&ti(n,t,s,o),o=o.parent}}function ti(e,t,s,n){const o=Qs(t,e,n,!0);_s(()=>{yn(n[t],o)},s)}function Qs(e,t,s=je,n=!1){if(s){const o=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...l)=>{at();const i=Ts(s),u=ct(t,s,e,l);return i(),ut(),u});return n?o.unshift(r):o.push(r),r}}const _t=e=>(t,s=je)=>{(!Ss||e==="sp")&&Qs(e,(...n)=>t(...n),s)},si=_t("bm"),ss=_t("m"),ni=_t("bu"),oi=_t("u"),ri=_t("bum"),_s=_t("um"),li=_t("sp"),ii=_t("rtg"),ai=_t("rtc");function ui(e,t=je){Qs("ec",e,t)}const ci=Symbol.for("v-ndc");function Zs(e,t,s,n){let o;const r=s,l=H(e);if(l||me(e)){const i=l&&Yt(e);let u=!1,p=!1;i&&(u=!Ze(e),p=Vt(e),e=Rs(e)),o=new Array(e.length);for(let d=0,v=e.length;d<v;d++)o[d]=t(u?p?qs(Ee(e[d])):Ee(e[d]):e[d],d,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let i=0;i<e;i++)o[i]=t(i+1,i,void 0,r)}else if(fe(e))if(e[Symbol.iterator])o=Array.from(e,(i,u)=>t(i,u,void 0,r));else{const i=Object.keys(e);o=new Array(i.length);for(let u=0,p=i.length;u<p;u++){const d=i[u];o[u]=t(e[d],d,u,r)}}else o=[];return o}const Bn=e=>e?br(e)?rn(e):Bn(e.parent):null,ys=Fe(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=>Bn(e.parent),$root:e=>Bn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Wo(e),$forceUpdate:e=>e.f||(e.f=()=>{Fn(e.update)}),$nextTick:e=>e.n||(e.n=Io.bind(e.proxy)),$watch:e=>$i.bind(e)}),jn=(e,t)=>e!==ue&&!e.__isScriptSetup&&oe(e,t),di={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:o,props:r,accessCache:l,type:i,appContext:u}=e;let p;if(t[0]!=="$"){const b=l[t];if(b!==void 0)switch(b){case 1:return n[t];case 2:return o[t];case 4:return s[t];case 3:return r[t]}else{if(jn(n,t))return l[t]=1,n[t];if(o!==ue&&oe(o,t))return l[t]=2,o[t];if((p=e.propsOptions[0])&&oe(p,t))return l[t]=3,r[t];if(s!==ue&&oe(s,t))return l[t]=4,s[t];Nn&&(l[t]=0)}}const d=ys[t];let v,C;if(d)return t==="$attrs"&&Le(e.attrs,"get",""),d(e);if((v=i.__cssModules)&&(v=v[t]))return v;if(s!==ue&&oe(s,t))return l[t]=4,s[t];if(C=u.config.globalProperties,oe(C,t))return C[t]},set({_:e},t,s){const{data:n,setupState:o,ctx:r}=e;return jn(o,t)?(o[t]=s,!0):n!==ue&&oe(n,t)?(n[t]=s,!0):oe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:o,propsOptions:r}},l){let i;return!!s[l]||e!==ue&&oe(e,l)||jn(t,l)||(i=r[0])&&oe(i,l)||oe(n,l)||oe(ys,l)||oe(o.config.globalProperties,l)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:oe(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function qo(e){return H(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Nn=!0;function fi(e){const t=Wo(e),s=e.proxy,n=e.ctx;Nn=!1,t.beforeCreate&&Ho(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:l,watch:i,provide:u,inject:p,created:d,beforeMount:v,mounted:C,beforeUpdate:b,updated:x,activated:I,deactivated:U,beforeDestroy:w,beforeUnmount:y,destroyed:Q,unmounted:R,render:ie,renderTracked:ze,renderTriggered:Pe,errorCaptured:Ie,serverPrefetch:Qe,expose:ge,inheritAttrs:De,components:xe,directives:Ve,filters:W}=t;if(p&&pi(p,n,null),l)for(const ee in l){const se=l[ee];J(se)&&(n[ee]=se.bind(s))}if(o){const ee=o.call(s,s);fe(ee)&&(e.data=Ot(ee))}if(Nn=!0,r)for(const ee in r){const se=r[ee],bt=J(se)?se.bind(s,s):J(se.get)?se.get.bind(s,s):lt,Ht=!J(se)&&J(se.set)?se.set.bind(s):lt,xt=$e({get:bt,set:Ht});Object.defineProperty(n,ee,{enumerable:!0,configurable:!0,get:()=>xt.value,set:qe=>xt.value=qe})}if(i)for(const ee in i)Go(i[ee],n,s,ee);if(u){const ee=J(u)?u.call(s):u;Reflect.ownKeys(ee).forEach(se=>{yi(se,ee[se])})}d&&Ho(d,e,"c");function O(ee,se){H(se)?se.forEach(bt=>ee(bt.bind(s))):se&&ee(se.bind(s))}if(O(si,v),O(ss,C),O(ni,b),O(oi,x),O(Xl,I),O(ei,U),O(ui,Ie),O(ai,ze),O(ii,Pe),O(ri,y),O(_s,R),O(li,Qe),H(ge))if(ge.length){const ee=e.exposed||(e.exposed={});ge.forEach(se=>{Object.defineProperty(ee,se,{get:()=>s[se],set:bt=>s[se]=bt,enumerable:!0})})}else e.exposed||(e.exposed={});ie&&e.render===lt&&(e.render=ie),De!=null&&(e.inheritAttrs=De),xe&&(e.components=xe),Ve&&(e.directives=Ve),Qe&&jo(e)}function pi(e,t,s=lt){H(e)&&(e=zn(e));for(const n in e){const o=e[n];let r;fe(o)?"default"in o?r=Xs(o.from||n,o.default,!0):r=Xs(o.from||n):r=Xs(o),Ae(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[n]=r}}function Ho(e,t,s){ct(H(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Go(e,t,s,n){let o=n.includes(".")?cr(s,n):()=>s[n];if(me(e)){const r=t[e];J(r)&&Xe(o,r)}else if(J(e))Xe(o,e.bind(s));else if(fe(e))if(H(e))e.forEach(r=>Go(r,t,s,n));else{const r=J(e.handler)?e.handler.bind(s):t[e.handler];J(r)&&Xe(o,r,e)}}function Wo(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,i=r.get(t);let u;return i?u=i:!o.length&&!s&&!n?u=t:(u={},o.length&&o.forEach(p=>Ys(u,p,l,!0)),Ys(u,t,l)),fe(t)&&r.set(t,u),u}function Ys(e,t,s,n=!1){const{mixins:o,extends:r}=t;r&&Ys(e,r,s,!0),o&&o.forEach(l=>Ys(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const i=hi[l]||s&&s[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const hi={data:Ko,props:Jo,emits:Jo,methods:ws,computed:ws,beforeCreate:Be,created:Be,beforeMount:Be,mounted:Be,beforeUpdate:Be,updated:Be,beforeDestroy:Be,beforeUnmount:Be,destroyed:Be,unmounted:Be,activated:Be,deactivated:Be,errorCaptured:Be,serverPrefetch:Be,components:ws,directives:ws,watch:mi,provide:Ko,inject:gi};function Ko(e,t){return t?e?function(){return Fe(J(e)?e.call(this,this):e,J(t)?t.call(this,this):t)}:t:e}function gi(e,t){return ws(zn(e),zn(t))}function zn(e){if(H(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Be(e,t){return e?[...new Set([].concat(e,t))]:t}function ws(e,t){return e?Fe(Object.create(null),e,t):t}function Jo(e,t){return e?H(e)&&H(t)?[...new Set([...e,...t])]:Fe(Object.create(null),qo(e),qo(t??{})):t}function mi(e,t){if(!e)return t;if(!t)return e;const s=Fe(Object.create(null),e);for(const n in t)s[n]=Be(e[n],t[n]);return s}function Qo(){return{app:null,config:{isNativeTag:sl,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 vi=0;function _i(e,t){return function(n,o=null){J(n)||(n=Fe({},n)),o!=null&&!fe(o)&&(o=null);const r=Qo(),l=new WeakSet,i=[];let u=!1;const p=r.app={_uid:vi++,_component:n,_props:o,_container:null,_context:r,_instance:null,version:sa,get config(){return r.config},set config(d){},use(d,...v){return l.has(d)||(d&&J(d.install)?(l.add(d),d.install(p,...v)):J(d)&&(l.add(d),d(p,...v))),p},mixin(d){return r.mixins.includes(d)||r.mixins.push(d),p},component(d,v){return v?(r.components[d]=v,p):r.components[d]},directive(d,v){return v?(r.directives[d]=v,p):r.directives[d]},mount(d,v,C){if(!u){const b=p._ceVNode||Z(n,o);return b.appContext=r,C===!0?C="svg":C===!1&&(C=void 0),e(b,d,C),u=!0,p._container=d,d.__vue_app__=p,rn(b.component)}},onUnmount(d){i.push(d)},unmount(){u&&(ct(i,p._instance,16),e(null,p._container),delete p._container.__vue_app__)},provide(d,v){return r.provides[d]=v,p},runWithContext(d){const v=ns;ns=p;try{return d()}finally{ns=v}}};return p}}let ns=null;function yi(e,t){if(je){let s=je.provides;const n=je.parent&&je.parent.provides;n===s&&(s=je.provides=Object.create(n)),s[e]=t}}function Xs(e,t,s=!1){const n=Wi();if(n||ns){let o=ns?ns._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return s&&J(t)?t.call(n&&n.proxy):t}}const Zo={},Yo=()=>Object.create(Zo),Xo=e=>Object.getPrototypeOf(e)===Zo;function wi(e,t,s,n=!1){const o={},r=Yo();e.propsDefaults=Object.create(null),er(e,t,o,r);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);s?e.props=n?o:Ul(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function bi(e,t,s,n){const{props:o,attrs:r,vnode:{patchFlag:l}}=e,i=te(o),[u]=e.propsOptions;let p=!1;if((n||l>0)&&!(l&16)){if(l&8){const d=e.vnode.dynamicProps;for(let v=0;v<d.length;v++){let C=d[v];if(en(e.emitsOptions,C))continue;const b=t[C];if(u)if(oe(r,C))b!==r[C]&&(r[C]=b,p=!0);else{const x=Et(C);o[x]=qn(u,i,x,b,e,!1)}else b!==r[C]&&(r[C]=b,p=!0)}}}else{er(e,t,o,r)&&(p=!0);let d;for(const v in i)(!t||!oe(t,v)&&((d=It(v))===v||!oe(t,d)))&&(u?s&&(s[v]!==void 0||s[d]!==void 0)&&(o[v]=qn(u,i,v,void 0,e,!0)):delete o[v]);if(r!==i)for(const v in r)(!t||!oe(t,v))&&(delete r[v],p=!0)}p&>(e.attrs,"set","")}function er(e,t,s,n){const[o,r]=e.propsOptions;let l=!1,i;if(t)for(let u in t){if(as(u))continue;const p=t[u];let d;o&&oe(o,d=Et(u))?!r||!r.includes(d)?s[d]=p:(i||(i={}))[d]=p:en(e.emitsOptions,u)||(!(u in n)||p!==n[u])&&(n[u]=p,l=!0)}if(r){const u=te(s),p=i||ue;for(let d=0;d<r.length;d++){const v=r[d];s[v]=qn(o,u,v,p[v],e,!oe(p,v))}}return l}function qn(e,t,s,n,o,r){const l=e[s];if(l!=null){const i=oe(l,"default");if(i&&n===void 0){const u=l.default;if(l.type!==Function&&!l.skipFactory&&J(u)){const{propsDefaults:p}=o;if(s in p)n=p[s];else{const d=Ts(o);n=p[s]=u.call(null,t),d()}}else n=u;o.ce&&o.ce._setProp(s,n)}l[0]&&(r&&!i?n=!1:l[1]&&(n===""||n===It(s))&&(n=!0))}return n}const xi=new WeakMap;function tr(e,t,s=!1){const n=s?xi:t.propsCache,o=n.get(e);if(o)return o;const r=e.props,l={},i=[];let u=!1;if(!J(e)){const d=v=>{u=!0;const[C,b]=tr(v,t,!0);Fe(l,C),b&&i.push(...b)};!s&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!r&&!u)return fe(e)&&n.set(e,Kt),Kt;if(H(r))for(let d=0;d<r.length;d++){const v=Et(r[d]);sr(v)&&(l[v]=ue)}else if(r)for(const d in r){const v=Et(d);if(sr(v)){const C=r[d],b=l[v]=H(C)||J(C)?{type:C}:Fe({},C),x=b.type;let I=!1,U=!0;if(H(x))for(let w=0;w<x.length;++w){const y=x[w],Q=J(y)&&y.name;if(Q==="Boolean"){I=!0;break}else Q==="String"&&(U=!1)}else I=J(x)&&x.name==="Boolean";b[0]=I,b[1]=U,(I||oe(b,"default"))&&i.push(v)}}const p=[l,i];return fe(e)&&n.set(e,p),p}function sr(e){return e[0]!=="$"&&!as(e)}const Hn=e=>e==="_"||e==="__"||e==="_ctx"||e==="$stable",Gn=e=>H(e)?e.map(ft):[ft(e)],ki=(e,t,s)=>{if(t._n)return t;const n=Ql((...o)=>Gn(t(...o)),s);return n._c=!1,n},nr=(e,t,s)=>{const n=e._ctx;for(const o in e){if(Hn(o))continue;const r=e[o];if(J(r))t[o]=ki(o,r,n);else if(r!=null){const l=Gn(r);t[o]=()=>l}}},or=(e,t)=>{const s=Gn(t);e.slots.default=()=>s},rr=(e,t,s)=>{for(const n in t)(s||!Hn(n))&&(e[n]=t[n])},Ci=(e,t,s)=>{const n=e.slots=Yo();if(e.vnode.shapeFlag&32){const o=t.__;o&&xn(n,"__",o,!0);const r=t._;r?(rr(n,t,s),s&&xn(n,"_",r,!0)):nr(t,n)}else t&&or(e,t)},Ti=(e,t,s)=>{const{vnode:n,slots:o}=e;let r=!0,l=ue;if(n.shapeFlag&32){const i=t._;i?s&&i===1?r=!1:rr(o,t,s):(r=!t.$stable,nr(t,o)),l=t}else t&&(or(e,t),l={default:1});if(r)for(const i in o)!Hn(i)&&l[i]==null&&delete o[i]},He=Ri;function Si(e){return Ei(e)}function Ei(e,t){const s=Os();s.__VUE__=!0;const{insert:n,remove:o,patchProp:r,createElement:l,createText:i,createComment:u,setText:p,setElementText:d,parentNode:v,nextSibling:C,setScopeId:b=lt,insertStaticContent:x}=e,I=(f,g,_,A=null,T=null,S=null,P=void 0,$=null,L=!!g.dynamicChildren)=>{if(f===g)return;f&&!Cs(f,g)&&(A=kt(f),qe(f,T,S,!0),f=null),g.patchFlag===-2&&(L=!1,g.dynamicChildren=null);const{type:E,ref:z,shapeFlag:D}=g;switch(E){case tn:U(f,g,_,A);break;case Lt:w(f,g,_,A);break;case sn:f==null&&y(g,_,A,P);break;case _e:xe(f,g,_,A,T,S,P,$,L);break;default:D&1?ie(f,g,_,A,T,S,P,$,L):D&6?Ve(f,g,_,A,T,S,P,$,L):(D&64||D&128)&&E.process(f,g,_,A,T,S,P,$,L,ye)}z!=null&&T?ms(z,f&&f.ref,S,g||f,!g):z==null&&f&&f.ref!=null&&ms(f.ref,null,S,f,!0)},U=(f,g,_,A)=>{if(f==null)n(g.el=i(g.children),_,A);else{const T=g.el=f.el;g.children!==f.children&&p(T,g.children)}},w=(f,g,_,A)=>{f==null?n(g.el=u(g.children||""),_,A):g.el=f.el},y=(f,g,_,A)=>{[f.el,f.anchor]=x(f.children,g,_,A,f.el,f.anchor)},Q=({el:f,anchor:g},_,A)=>{let T;for(;f&&f!==g;)T=C(f),n(f,_,A),f=T;n(g,_,A)},R=({el:f,anchor:g})=>{let _;for(;f&&f!==g;)_=C(f),o(f),f=_;o(g)},ie=(f,g,_,A,T,S,P,$,L)=>{g.type==="svg"?P="svg":g.type==="math"&&(P="mathml"),f==null?ze(g,_,A,T,S,P,$,L):Qe(f,g,T,S,P,$,L)},ze=(f,g,_,A,T,S,P,$)=>{let L,E;const{props:z,shapeFlag:D,transition:N,dirs:K}=f;if(L=f.el=l(f.type,S,z&&z.is,z),D&8?d(L,f.children):D&16&&Ie(f.children,L,null,A,T,Wn(f,S),P,$),K&&Rt(f,null,A,"created"),Pe(L,f,f.scopeId,P,A),z){for(const ae in z)ae!=="value"&&!as(ae)&&r(L,ae,null,z[ae],S,A);"value"in z&&r(L,"value",null,z.value,S),(E=z.onVnodeBeforeMount)&&pt(E,A,f)}K&&Rt(f,null,A,"beforeMount");const Y=Ai(T,N);Y&&N.beforeEnter(L),n(L,g,_),((E=z&&z.onVnodeMounted)||Y||K)&&He(()=>{E&&pt(E,A,f),Y&&N.enter(L),K&&Rt(f,null,A,"mounted")},T)},Pe=(f,g,_,A,T)=>{if(_&&b(f,_),A)for(let S=0;S<A.length;S++)b(f,A[S]);if(T){let S=T.subTree;if(g===S||hr(S.type)&&(S.ssContent===g||S.ssFallback===g)){const P=T.vnode;Pe(f,P,P.scopeId,P.slotScopeIds,T.parent)}}},Ie=(f,g,_,A,T,S,P,$,L=0)=>{for(let E=L;E<f.length;E++){const z=f[E]=$?$t(f[E]):ft(f[E]);I(null,z,g,_,A,T,S,P,$)}},Qe=(f,g,_,A,T,S,P)=>{const $=g.el=f.el;let{patchFlag:L,dynamicChildren:E,dirs:z}=g;L|=f.patchFlag&16;const D=f.props||ue,N=g.props||ue;let K;if(_&&Bt(_,!1),(K=N.onVnodeBeforeUpdate)&&pt(K,_,g,f),z&&Rt(g,f,_,"beforeUpdate"),_&&Bt(_,!0),(D.innerHTML&&N.innerHTML==null||D.textContent&&N.textContent==null)&&d($,""),E?ge(f.dynamicChildren,E,$,_,A,Wn(g,T),S):P||se(f,g,$,null,_,A,Wn(g,T),S,!1),L>0){if(L&16)De($,D,N,_,T);else if(L&2&&D.class!==N.class&&r($,"class",null,N.class,T),L&4&&r($,"style",D.style,N.style,T),L&8){const Y=g.dynamicProps;for(let ae=0;ae<Y.length;ae++){const ne=Y[ae],Oe=D[ne],Me=N[ne];(Me!==Oe||ne==="value")&&r($,ne,Oe,Me,T,_)}}L&1&&f.children!==g.children&&d($,g.children)}else!P&&E==null&&De($,D,N,_,T);((K=N.onVnodeUpdated)||z)&&He(()=>{K&&pt(K,_,g,f),z&&Rt(g,f,_,"updated")},A)},ge=(f,g,_,A,T,S,P)=>{for(let $=0;$<g.length;$++){const L=f[$],E=g[$],z=L.el&&(L.type===_e||!Cs(L,E)||L.shapeFlag&198)?v(L.el):_;I(L,E,z,null,A,T,S,P,!0)}},De=(f,g,_,A,T)=>{if(g!==_){if(g!==ue)for(const S in g)!as(S)&&!(S in _)&&r(f,S,g[S],null,T,A);for(const S in _){if(as(S))continue;const P=_[S],$=g[S];P!==$&&S!=="value"&&r(f,S,$,P,T,A)}"value"in _&&r(f,"value",g.value,_.value,T)}},xe=(f,g,_,A,T,S,P,$,L)=>{const E=g.el=f?f.el:i(""),z=g.anchor=f?f.anchor:i("");let{patchFlag:D,dynamicChildren:N,slotScopeIds:K}=g;K&&($=$?$.concat(K):K),f==null?(n(E,_,A),n(z,_,A),Ie(g.children||[],_,z,T,S,P,$,L)):D>0&&D&64&&N&&f.dynamicChildren?(ge(f.dynamicChildren,N,_,T,S,P,$),(g.key!=null||T&&g===T.subTree)&&lr(f,g,!0)):se(f,g,_,z,T,S,P,$,L)},Ve=(f,g,_,A,T,S,P,$,L)=>{g.slotScopeIds=$,f==null?g.shapeFlag&512?T.ctx.activate(g,_,A,P,L):W(g,_,A,T,S,P,L):k(f,g,L)},W=(f,g,_,A,T,S,P)=>{const $=f.component=Gi(f,A,T);if(No(f)&&($.ctx.renderer=ye),Ki($,!1,P),$.asyncDep){if(T&&T.registerDep($,O,P),!f.el){const L=$.subTree=Z(Lt);w(null,L,g,_),f.placeholder=L.el}}else O($,f,g,_,T,S,P)},k=(f,g,_)=>{const A=g.component=f.component;if(Oi(f,g,_))if(A.asyncDep&&!A.asyncResolved){ee(A,g,_);return}else A.next=g,A.update();else g.el=f.el,A.vnode=g},O=(f,g,_,A,T,S,P)=>{const $=()=>{if(f.isMounted){let{next:D,bu:N,u:K,parent:Y,vnode:ae}=f;{const st=ir(f);if(st){D&&(D.el=ae.el,ee(f,D,P)),st.asyncDep.then(()=>{f.isUnmounted||$()});return}}let ne=D,Oe;Bt(f,!1),D?(D.el=ae.el,ee(f,D,P)):D=ae,N&&Ds(N),(Oe=D.props&&D.props.onVnodeBeforeUpdate)&&pt(Oe,Y,D,ae),Bt(f,!0);const Me=fr(f),tt=f.subTree;f.subTree=Me,I(tt,Me,v(tt.el),kt(tt),f,T,S),D.el=Me.el,ne===null&&Fi(f,Me.el),K&&He(K,T),(Oe=D.props&&D.props.onVnodeUpdated)&&He(()=>pt(Oe,Y,D,ae),T)}else{let D;const{el:N,props:K}=g,{bm:Y,m:ae,parent:ne,root:Oe,type:Me}=f,tt=vs(g);Bt(f,!1),Y&&Ds(Y),!tt&&(D=K&&K.onVnodeBeforeMount)&&pt(D,ne,g),Bt(f,!0);{Oe.ce&&Oe.ce._def.shadowRoot!==!1&&Oe.ce._injectChildStyle(Me);const st=f.subTree=fr(f);I(null,st,_,A,f,T,S),g.el=st.el}if(ae&&He(ae,T),!tt&&(D=K&&K.onVnodeMounted)){const st=g;He(()=>pt(D,ne,st),T)}(g.shapeFlag&256||ne&&vs(ne.vnode)&&ne.vnode.shapeFlag&256)&&f.a&&He(f.a,T),f.isMounted=!0,g=_=A=null}};f.scope.on();const L=f.effect=new po($);f.scope.off();const E=f.update=L.run.bind(L),z=f.job=L.runIfDirty.bind(L);z.i=f,z.id=f.uid,L.scheduler=()=>Fn(z),Bt(f,!0),E()},ee=(f,g,_)=>{g.component=f;const A=f.vnode.props;f.vnode=g,f.next=null,bi(f,g.props,A,_),Ti(f,g.children,_),at(),Oo(f),ut()},se=(f,g,_,A,T,S,P,$,L=!1)=>{const E=f&&f.children,z=f?f.shapeFlag:0,D=g.children,{patchFlag:N,shapeFlag:K}=g;if(N>0){if(N&128){Ht(E,D,_,A,T,S,P,$,L);return}else if(N&256){bt(E,D,_,A,T,S,P,$,L);return}}K&8?(z&16&&ht(E,T,S),D!==E&&d(_,D)):z&16?K&16?Ht(E,D,_,A,T,S,P,$,L):ht(E,T,S,!0):(z&8&&d(_,""),K&16&&Ie(D,_,A,T,S,P,$,L))},bt=(f,g,_,A,T,S,P,$,L)=>{f=f||Kt,g=g||Kt;const E=f.length,z=g.length,D=Math.min(E,z);let N;for(N=0;N<D;N++){const K=g[N]=L?$t(g[N]):ft(g[N]);I(f[N],K,_,null,T,S,P,$,L)}E>z?ht(f,T,S,!0,!1,D):Ie(g,_,A,T,S,P,$,L,D)},Ht=(f,g,_,A,T,S,P,$,L)=>{let E=0;const z=g.length;let D=f.length-1,N=z-1;for(;E<=D&&E<=N;){const K=f[E],Y=g[E]=L?$t(g[E]):ft(g[E]);if(Cs(K,Y))I(K,Y,_,null,T,S,P,$,L);else break;E++}for(;E<=D&&E<=N;){const K=f[D],Y=g[N]=L?$t(g[N]):ft(g[N]);if(Cs(K,Y))I(K,Y,_,null,T,S,P,$,L);else break;D--,N--}if(E>D){if(E<=N){const K=N+1,Y=K<z?g[K].el:A;for(;E<=N;)I(null,g[E]=L?$t(g[E]):ft(g[E]),_,Y,T,S,P,$,L),E++}}else if(E>N)for(;E<=D;)qe(f[E],T,S,!0),E++;else{const K=E,Y=E,ae=new Map;for(E=Y;E<=N;E++){const ke=g[E]=L?$t(g[E]):ft(g[E]);ke.key!=null&&ae.set(ke.key,E)}let ne,Oe=0;const Me=N-Y+1;let tt=!1,st=0;const Wt=new Array(Me);for(E=0;E<Me;E++)Wt[E]=0;for(E=K;E<=D;E++){const ke=f[E];if(Oe>=Me){qe(ke,T,S,!0);continue}let nt;if(ke.key!=null)nt=ae.get(ke.key);else for(ne=Y;ne<=N;ne++)if(Wt[ne-Y]===0&&Cs(ke,g[ne])){nt=ne;break}nt===void 0?qe(ke,T,S,!0):(Wt[nt-Y]=E+1,nt>=st?st=nt:tt=!0,I(ke,g[nt],_,null,T,S,P,$,L),Oe++)}const Pt=tt?Vi(Wt):Kt;for(ne=Pt.length-1,E=Me-1;E>=0;E--){const ke=Y+E,nt=g[ke],$s=g[ke+1],mn=ke+1<z?$s.el||$s.placeholder:A;Wt[E]===0?I(null,nt,_,mn,T,S,P,$,L):tt&&(ne<0||E!==Pt[ne]?xt(nt,_,mn,2):ne--)}}},xt=(f,g,_,A,T=null)=>{const{el:S,type:P,transition:$,children:L,shapeFlag:E}=f;if(E&6){xt(f.component.subTree,g,_,A);return}if(E&128){f.suspense.move(g,_,A);return}if(E&64){P.move(f,g,_,ye);return}if(P===_e){n(S,g,_);for(let D=0;D<L.length;D++)xt(L[D],g,_,A);n(f.anchor,g,_);return}if(P===sn){Q(f,g,_);return}if(A!==2&&E&1&&$)if(A===0)$.beforeEnter(S),n(S,g,_),He(()=>$.enter(S),T);else{const{leave:D,delayLeave:N,afterLeave:K}=$,Y=()=>{f.ctx.isUnmounted?o(S):n(S,g,_)},ae=()=>{D(S,()=>{Y(),K&&K()})};N?N(S,Y,ae):ae()}else n(S,g,_)},qe=(f,g,_,A=!1,T=!1)=>{const{type:S,props:P,ref:$,children:L,dynamicChildren:E,shapeFlag:z,patchFlag:D,dirs:N,cacheIndex:K}=f;if(D===-2&&(T=!1),$!=null&&(at(),ms($,null,_,f,!0),ut()),K!=null&&(g.renderCache[K]=void 0),z&256){g.ctx.deactivate(f);return}const Y=z&1&&N,ae=!vs(f);let ne;if(ae&&(ne=P&&P.onVnodeBeforeUnmount)&&pt(ne,g,f),z&6)Ms(f.component,_,A);else{if(z&128){f.suspense.unmount(_,A);return}Y&&Rt(f,null,g,"beforeUnmount"),z&64?f.type.remove(f,g,_,ye,A):E&&!E.hasOnce&&(S!==_e||D>0&&D&64)?ht(E,g,_,!1,!0):(S===_e&&D&384||!T&&z&16)&&ht(L,g,_),A&&hn(f)}(ae&&(ne=P&&P.onVnodeUnmounted)||Y)&&He(()=>{ne&&pt(ne,g,f),Y&&Rt(f,null,g,"unmounted")},_)},hn=f=>{const{type:g,el:_,anchor:A,transition:T}=f;if(g===_e){gn(_,A);return}if(g===sn){R(f);return}const S=()=>{o(_),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(f.shapeFlag&1&&T&&!T.persisted){const{leave:P,delayLeave:$}=T,L=()=>P(_,S);$?$(f.el,S,L):L()}else S()},gn=(f,g)=>{let _;for(;f!==g;)_=C(f),o(f),f=_;o(g)},Ms=(f,g,_)=>{const{bum:A,scope:T,job:S,subTree:P,um:$,m:L,a:E,parent:z,slots:{__:D}}=f;ar(L),ar(E),A&&Ds(A),z&&H(D)&&D.forEach(N=>{z.renderCache[N]=void 0}),T.stop(),S&&(S.flags|=8,qe(P,f,g,_)),$&&He($,g),He(()=>{f.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve())},ht=(f,g,_,A=!1,T=!1,S=0)=>{for(let P=S;P<f.length;P++)qe(f[P],g,_,A,T)},kt=f=>{if(f.shapeFlag&6)return kt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const g=C(f.anchor||f.el),_=g&&g[Zl];return _?C(_):g};let Ct=!1;const Gt=(f,g,_)=>{f==null?g._vnode&&qe(g._vnode,null,null,!0):I(g._vnode||null,f,g,null,null,null,_),g._vnode=f,Ct||(Ct=!0,Oo(),Fo(),Ct=!1)},ye={p:I,um:qe,m:xt,r:hn,mt:W,mc:Ie,pc:se,pbc:ge,n:kt,o:e};return{render:Gt,hydrate:void 0,createApp:_i(Gt)}}function Wn({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 Bt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ai(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function lr(e,t,s=!1){const n=e.children,o=t.children;if(H(n)&&H(o))for(let r=0;r<n.length;r++){const l=n[r];let i=o[r];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=o[r]=$t(o[r]),i.el=l.el),!s&&i.patchFlag!==-2&&lr(l,i)),i.type===tn&&(i.el=l.el),i.type===Lt&&!i.el&&(i.el=l.el)}}function Vi(e){const t=e.slice(),s=[0];let n,o,r,l,i;const u=e.length;for(n=0;n<u;n++){const p=e[n];if(p!==0){if(o=s[s.length-1],e[o]<p){t[n]=o,s.push(n);continue}for(r=0,l=s.length-1;r<l;)i=r+l>>1,e[s[i]]<p?r=i+1:l=i;p<e[s[r]]&&(r>0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,l=s[r-1];r-- >0;)s[r]=l,l=t[l];return s}function ir(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ir(t)}function ar(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Mi=Symbol.for("v-scx"),Li=()=>Xs(Mi);function Xe(e,t,s){return ur(e,t,s)}function ur(e,t,s=ue){const{immediate:n,deep:o,flush:r,once:l}=s,i=Fe({},s),u=t&&n||!t&&r!=="post";let p;if(Ss){if(r==="sync"){const b=Li();p=b.__watcherHandles||(b.__watcherHandles=[])}else if(!u){const b=()=>{};return b.stop=lt,b.resume=lt,b.pause=lt,b}}const d=je;i.call=(b,x,I)=>ct(b,d,x,I);let v=!1;r==="post"?i.scheduler=b=>{He(b,d&&d.suspense)}:r!=="sync"&&(v=!0,i.scheduler=(b,x)=>{x?b():Fn(b)}),i.augmentJob=b=>{t&&(b.flags|=4),v&&(b.flags|=2,d&&(b.id=d.uid,b.i=d))};const C=Nl(e,t,i);return Ss&&(p?p.push(C):u&&C()),C}function $i(e,t,s){const n=this.proxy,o=me(e)?e.includes(".")?cr(n,e):()=>n[e]:e.bind(n,n);let r;J(t)?r=t:(r=t.handler,s=t);const l=Ts(this),i=ur(o,r.bind(n),s);return l(),i}function cr(e,t){const s=t.split(".");return()=>{let n=e;for(let o=0;o<s.length&&n;o++)n=n[s[o]];return n}}const Ui=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Et(t)}Modifiers`]||e[`${It(t)}Modifiers`];function Pi(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||ue;let o=s;const r=t.startsWith("update:"),l=r&&Ui(n,t.slice(7));l&&(l.trim&&(o=s.map(d=>me(d)?d.trim():d)),l.number&&(o=s.map(kn)));let i,u=n[i=bn(t)]||n[i=bn(Et(t))];!u&&r&&(u=n[i=bn(It(t))]),u&&ct(u,e,6,o);const p=n[i+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,ct(p,e,6,o)}}function dr(e,t,s=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const r=e.emits;let l={},i=!1;if(!J(e)){const u=p=>{const d=dr(p,t,!0);d&&(i=!0,Fe(l,d))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!r&&!i?(fe(e)&&n.set(e,null),null):(H(r)?r.forEach(u=>l[u]=null):Fe(l,r),fe(e)&&n.set(e,l),l)}function en(e,t){return!e||!Us(t)?!1:(t=t.slice(2).replace(/Once$/,""),oe(e,t[0].toLowerCase()+t.slice(1))||oe(e,It(t))||oe(e,t))}function y1(){}function fr(e){const{type:t,vnode:s,proxy:n,withProxy:o,propsOptions:[r],slots:l,attrs:i,emit:u,render:p,renderCache:d,props:v,data:C,setupState:b,ctx:x,inheritAttrs:I}=e,U=Js(e);let w,y;try{if(s.shapeFlag&4){const R=o||n,ie=R;w=ft(p.call(ie,R,d,v,b,C,x)),y=i}else{const R=t;w=ft(R.length>1?R(v,{attrs:i,slots:l,emit:u}):R(v,null)),y=t.props?i:Ii(i)}}catch(R){bs.length=0,Ws(R,e,1),w=Z(Lt)}let Q=w;if(y&&I!==!1){const R=Object.keys(y),{shapeFlag:ie}=Q;R.length&&ie&7&&(r&&R.some(_n)&&(y=Di(y,r)),Q=os(Q,y,!1,!0))}return s.dirs&&(Q=os(Q,null,!1,!0),Q.dirs=Q.dirs?Q.dirs.concat(s.dirs):s.dirs),s.transition&&Rn(Q,s.transition),w=Q,Js(U),w}const Ii=e=>{let t;for(const s in e)(s==="class"||s==="style"||Us(s))&&((t||(t={}))[s]=e[s]);return t},Di=(e,t)=>{const s={};for(const n in e)(!_n(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function Oi(e,t,s){const{props:n,children:o,component:r}=e,{props:l,children:i,patchFlag:u}=t,p=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?pr(n,l,p):!!l;if(u&8){const d=t.dynamicProps;for(let v=0;v<d.length;v++){const C=d[v];if(l[C]!==n[C]&&!en(p,C))return!0}}}else return(o||i)&&(!i||!i.$stable)?!0:n===l?!1:n?l?pr(n,l,p):!0:!!l;return!1}function pr(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let o=0;o<n.length;o++){const r=n[o];if(t[r]!==e[r]&&!en(s,r))return!0}return!1}function Fi({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const hr=e=>e.__isSuspense;function Ri(e,t){t&&t.pendingBranch?H(e)?t.effects.push(...e):t.effects.push(e):Jl(e)}const _e=Symbol.for("v-fgt"),tn=Symbol.for("v-txt"),Lt=Symbol.for("v-cmt"),sn=Symbol.for("v-stc"),bs=[];let Ge=null;function V(e=!1){bs.push(Ge=e?null:[])}function Bi(){bs.pop(),Ge=bs[bs.length-1]||null}let xs=1;function gr(e,t=!1){xs+=e,e<0&&Ge&&t&&(Ge.hasOnce=!0)}function mr(e){return e.dynamicChildren=xs>0?Ge||Kt:null,Bi(),xs>0&&Ge&&Ge.push(e),e}function M(e,t,s,n,o,r){return mr(a(e,t,s,n,o,r,!0))}function ks(e,t,s,n,o){return mr(Z(e,t,s,n,o,!0))}function vr(e){return e?e.__v_isVNode===!0:!1}function Cs(e,t){return e.type===t.type&&e.key===t.key}const _r=({key:e})=>e??null,nn=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?me(e)||Ae(e)||J(e)?{i:Ye,r:e,k:t,f:!!s}:e:null);function a(e,t=null,s=null,n=0,o=null,r=e===_e?0:1,l=!1,i=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&_r(t),ref:t&&nn(t),scopeId:Bo,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:r,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ye};return i?(Kn(u,s),r&128&&e.normalize(u)):s&&(u.shapeFlag|=me(s)?8:16),xs>0&&!l&&Ge&&(u.patchFlag>0||r&6)&&u.patchFlag!==32&&Ge.push(u),u}const Z=ji;function ji(e,t=null,s=null,n=0,o=null,r=!1){if((!e||e===ci)&&(e=Lt),vr(e)){const i=os(e,t,!0);return s&&Kn(i,s),xs>0&&!r&&Ge&&(i.shapeFlag&6?Ge[Ge.indexOf(e)]=i:Ge.push(i)),i.patchFlag=-2,i}if(ta(e)&&(e=e.__vccOpts),t){t=Ni(t);let{class:i,style:u}=t;i&&!me(i)&&(t.class=ve(i)),fe(u)&&(Dn(u)&&!H(u)&&(u=Fe({},u)),t.style=Qt(u))}const l=me(e)?1:hr(e)?128:Yl(e)?64:fe(e)?4:J(e)?2:0;return a(e,t,s,n,o,l,r,!0)}function Ni(e){return e?Dn(e)||Xo(e)?Fe({},e):e:null}function os(e,t,s=!1,n=!1){const{props:o,ref:r,patchFlag:l,children:i,transition:u}=e,p=t?zi(o||{},t):o,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&_r(p),ref:t&&t.ref?s&&r?H(r)?r.concat(nn(t)):[r,nn(t)]:nn(t):r,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!==_e?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&os(e.ssContent),ssFallback:e.ssFallback&&os(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&Rn(d,u.clone(d)),d}function rs(e=" ",t=0){return Z(tn,null,e,t)}function yr(e,t){const s=Z(sn,null,e);return s.staticCount=t,s}function B(e="",t=!1){return t?(V(),ks(Lt,null,e)):Z(Lt,null,e)}function ft(e){return e==null||typeof e=="boolean"?Z(Lt):H(e)?Z(_e,null,e.slice()):vr(e)?$t(e):Z(tn,null,String(e))}function $t(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:os(e)}function Kn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(H(t))s=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),Kn(e,o()),o._c&&(o._d=!0));return}else{s=32;const o=t._;!o&&!Xo(t)?t._ctx=Ye:o===3&&Ye&&(Ye.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else J(t)?(t={default:t,_ctx:Ye},s=32):(t=String(t),n&64?(s=16,t=[rs(t)]):s=8);e.children=t,e.shapeFlag|=s}function zi(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const o in n)if(o==="class")t.class!==n.class&&(t.class=ve([t.class,n.class]));else if(o==="style")t.style=Qt([t.style,n.style]);else if(Us(o)){const r=t[o],l=n[o];l&&r!==l&&!(H(r)&&r.includes(l))&&(t[o]=r?[].concat(r,l):l)}else o!==""&&(t[o]=n[o])}return t}function pt(e,t,s,n=null){ct(e,t,7,[s,n])}const qi=Qo();let Hi=0;function Gi(e,t,s){const n=e.type,o=(t?t.appContext:e.appContext)||qi,r={uid:Hi++,vnode:e,type:n,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new pl(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:tr(n,o),emitsOptions:dr(n,o),emit:null,emitted:null,propsDefaults:ue,inheritAttrs:n.inheritAttrs,ctx:ue,data:ue,props:ue,attrs:ue,slots:ue,refs:ue,setupState:ue,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 r.ctx={_:r},r.root=t?t.root:r,r.emit=Pi.bind(null,r),e.ce&&e.ce(r),r}let je=null;const Wi=()=>je||Ye;let on,Jn;{const e=Os(),t=(s,n)=>{let o;return(o=e[s])||(o=e[s]=[]),o.push(n),r=>{o.length>1?o.forEach(l=>l(r)):o[0](r)}};on=t("__VUE_INSTANCE_SETTERS__",s=>je=s),Jn=t("__VUE_SSR_SETTERS__",s=>Ss=s)}const Ts=e=>{const t=je;return on(e),e.scope.on(),()=>{e.scope.off(),on(t)}},wr=()=>{je&&je.scope.off(),on(null)};function br(e){return e.vnode.shapeFlag&4}let Ss=!1;function Ki(e,t=!1,s=!1){t&&Jn(t);const{props:n,children:o}=e.vnode,r=br(e);wi(e,n,r,t),Ci(e,o,s||t);const l=r?Ji(e,t):void 0;return t&&Jn(!1),l}function Ji(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,di);const{setup:n}=s;if(n){at();const o=e.setupContext=n.length>1?Zi(e):null,r=Ts(e),l=Xt(n,e,0,[e.props,o]),i=no(l);if(ut(),r(),(i||e.sp)&&!vs(e)&&jo(e),i){if(l.then(wr,wr),t)return l.then(u=>{xr(e,u)}).catch(u=>{Ws(u,e,0)});e.asyncDep=l}else xr(e,l)}else kr(e)}function xr(e,t,s){J(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:fe(t)&&(e.setupState=$o(t)),kr(e)}function kr(e,t,s){const n=e.type;e.render||(e.render=n.render||lt);{const o=Ts(e);at();try{fi(e)}finally{ut(),o()}}}const Qi={get(e,t){return Le(e,"get",""),e[t]}};function Zi(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Qi),slots:e.slots,emit:e.emit,expose:t}}function rn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy($o(Pl(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in ys)return ys[s](e)},has(t,s){return s in t||s in ys}})):e.proxy}const Yi=/(?:^|[-_])(\w)/g,Xi=e=>e.replace(Yi,t=>t.toUpperCase()).replace(/[-_]/g,"");function ea(e,t=!0){return J(e)?e.displayName||e.name:e.name||t&&e.__name}function Cr(e,t,s=!1){let n=ea(t);if(!n&&t.__file){const o=t.__file.match(/([^/\\]+)\.\w+$/);o&&(n=o[1])}if(!n&&e&&e.parent){const o=r=>{for(const l in r)if(r[l]===t)return l};n=o(e.components||e.parent.type.components)||o(e.appContext.components)}return n?Xi(n):s?"App":"Anonymous"}function ta(e){return J(e)&&"__vccOpts"in e}const $e=(e,t)=>Bl(e,t,Ss),sa="3.5.18";/**
* @vue/runtime-dom v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Qn;const Tr=typeof window<"u"&&window.trustedTypes;if(Tr)try{Qn=Tr.createPolicy("vue",{createHTML:e=>e})}catch{}const Sr=Qn?e=>Qn.createHTML(e):e=>e,na="http://www.w3.org/2000/svg",oa="http://www.w3.org/1998/Math/MathML",yt=typeof document<"u"?document:null,Er=yt&&yt.createElement("template"),ra={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const o=t==="svg"?yt.createElementNS(na,e):t==="mathml"?yt.createElementNS(oa,e):s?yt.createElement(e,{is:s}):yt.createElement(e);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>yt.createTextNode(e),createComment:e=>yt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>yt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,o,r){const l=s?s.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),s),!(o===r||!(o=o.nextSibling)););else{Er.innerHTML=Sr(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const i=Er.content;if(n==="svg"||n==="mathml"){const u=i.firstChild;for(;u.firstChild;)i.appendChild(u.firstChild);i.removeChild(u)}t.insertBefore(i,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},la=Symbol("_vtc");function ia(e,t,s){const n=e[la];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const ln=Symbol("_vod"),Ar=Symbol("_vsh"),an={beforeMount(e,{value:t},{transition:s}){e[ln]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):Es(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:n}){!t!=!s&&(n?t?(n.beforeEnter(e),Es(e,!0),n.enter(e)):n.leave(e,()=>{Es(e,!1)}):Es(e,t))},beforeUnmount(e,{value:t}){Es(e,t)}};function Es(e,t){e.style.display=t?e[ln]:"none",e[Ar]=!t}const aa=Symbol(""),ua=/(^|;)\s*display\s*:/;function ca(e,t,s){const n=e.style,o=me(s);let r=!1;if(s&&!o){if(t)if(me(t))for(const l of t.split(";")){const i=l.slice(0,l.indexOf(":")).trim();s[i]==null&&un(n,i,"")}else for(const l in t)s[l]==null&&un(n,l,"");for(const l in s)l==="display"&&(r=!0),un(n,l,s[l])}else if(o){if(t!==s){const l=n[aa];l&&(s+=";"+l),n.cssText=s,r=ua.test(s)}}else t&&e.removeAttribute("style");ln in e&&(e[ln]=r?n.display:"",e[Ar]&&(n.display="none"))}const Vr=/\s*!important$/;function un(e,t,s){if(H(s))s.forEach(n=>un(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=da(e,t);Vr.test(s)?e.setProperty(It(n),s.replace(Vr,""),"important"):e[n]=s}}const Mr=["Webkit","Moz","ms"],Zn={};function da(e,t){const s=Zn[t];if(s)return s;let n=Et(t);if(n!=="filter"&&n in e)return Zn[t]=n;n=lo(n);for(let o=0;o<Mr.length;o++){const r=Mr[o]+n;if(r in e)return Zn[t]=r}return t}const Lr="http://www.w3.org/1999/xlink";function $r(e,t,s,n,o,r=dl(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(Lr,t.slice(6,t.length)):e.setAttributeNS(Lr,t,s):s==null||r&&!ao(s)?e.removeAttribute(t):e.setAttribute(t,r?"":it(s)?String(s):s)}function Ur(e,t,s,n,o){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Sr(s):s);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const i=r==="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 l=!1;if(s===""||s==null){const i=typeof e[t];i==="boolean"?s=ao(s):s==null&&i==="string"?(s="",l=!0):i==="number"&&(s=0,l=!0)}try{e[t]=s}catch{}l&&e.removeAttribute(o||t)}function jt(e,t,s,n){e.addEventListener(t,s,n)}function fa(e,t,s,n){e.removeEventListener(t,s,n)}const Pr=Symbol("_vei");function pa(e,t,s,n,o=null){const r=e[Pr]||(e[Pr]={}),l=r[t];if(n&&l)l.value=n;else{const[i,u]=ha(t);if(n){const p=r[t]=va(n,o);jt(e,i,p,u)}else l&&(fa(e,i,l,u),r[t]=void 0)}}const Ir=/(?:Once|Passive|Capture)$/;function ha(e){let t;if(Ir.test(e)){t={};let n;for(;n=e.match(Ir);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):It(e.slice(2)),t]}let Yn=0;const ga=Promise.resolve(),ma=()=>Yn||(ga.then(()=>Yn=0),Yn=Date.now());function va(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;ct(_a(n,s.value),t,5,[n])};return s.value=e,s.attached=ma(),s}function _a(e,t){if(H(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const Dr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ya=(e,t,s,n,o,r)=>{const l=o==="svg";t==="class"?ia(e,n,l):t==="style"?ca(e,s,n):Us(t)?_n(t)||pa(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):wa(e,t,n,l))?(Ur(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&$r(e,t,n,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!me(n))?Ur(e,Et(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),$r(e,t,n,l))};function wa(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Dr(t)&&J(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 o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Dr(t)&&me(s)?!1:t in e}const cn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return H(t)?s=>Ds(t,s):t};function ba(e){e.target.composing=!0}function Or(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ls=Symbol("_assign"),he={created(e,{modifiers:{lazy:t,trim:s,number:n}},o){e[ls]=cn(o);const r=n||o.props&&o.props.type==="number";jt(e,t?"change":"input",l=>{if(l.target.composing)return;let i=e.value;s&&(i=i.trim()),r&&(i=kn(i)),e[ls](i)}),s&&jt(e,"change",()=>{e.value=e.value.trim()}),t||(jt(e,"compositionstart",ba),jt(e,"compositionend",Or),jt(e,"change",Or))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:o,number:r}},l){if(e[ls]=cn(l),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?kn(e.value):e.value,u=t??"";i!==u&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||o&&e.value.trim()===u)||(e.value=u))}},xa={deep:!0,created(e,t,s){e[ls]=cn(s),jt(e,"change",()=>{const n=e._modelValue,o=ka(e),r=e.checked,l=e[ls];if(H(n)){const i=uo(n,o),u=i!==-1;if(r&&!u)l(n.concat(o));else if(!r&&u){const p=[...n];p.splice(i,1),l(p)}}else if(Ps(n)){const i=new Set(n);r?i.add(o):i.delete(o),l(i)}else l(Rr(e,r))})},mounted:Fr,beforeUpdate(e,t,s){e[ls]=cn(s),Fr(e,t,s)}};function Fr(e,{value:t,oldValue:s},n){e._modelValue=t;let o;if(H(t))o=uo(t,n.props.value)>-1;else if(Ps(t))o=t.has(n.props.value);else{if(t===s)return;o=Fs(t,Rr(e,!0))}e.checked!==o&&(e.checked=o)}function ka(e){return"_value"in e?e._value:e.value}function Rr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const Ca=["ctrl","shift","alt","meta"],Ta={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)=>Ca.some(s=>e[`${s}Key`]&&!t.includes(s))},We=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(o,...r)=>{for(let l=0;l<t.length;l++){const i=Ta[t[l]];if(i&&i(o,t))return}return e(o,...r)})},Sa=Fe({patchProp:ya},ra);let Br;function Ea(){return Br||(Br=Si(Sa))}const Aa=(...e)=>{const t=Ea().createApp(...e),{mount:s}=t;return t.mount=n=>{const o=Ma(n);if(!o)return;const r=t._component;!J(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=s(o,!1,Va(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t};function Va(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ma(e){return me(e)?document.querySelector(e):e}const we={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)}}}},La="https://das.doubanflix.com/api",$a="https://api.doubanflix.com/api",Ua=1e4,Pa=1e3,dn=2*60*60*1e3;class Ia{constructor(){this.primaryURL=La,this.fallbackURL=$a,this.timeout=Ua,this.resetTimer=null,this.initializeFromStorage()}initializeFromStorage(){const t=we.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(),o=Date.now()-s;if(o<dn){const r=dn-o;console.log(`从本地存储恢复API状态,继续使用备用接口,剩余 ${Math.round(r/1e3/60)} 分钟后自动切换回主接口`),this.resetTimer=setTimeout(()=>{console.log("定时器触发,自动切换回主接口"),this.forceResetToPrimary()},r)}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};we.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,we.removeApiState(),this.clearAutoResetTimer())}startAutoResetTimer(){this.clearAutoResetTimer(),console.log(`将在 ${dn/1e3/60} 分钟后自动尝试切换回主接口`),this.resetTimer=setTimeout(()=>{console.log("定时器触发,自动切换回主接口"),this.forceResetToPrimary()},dn)}clearAutoResetTimer(){this.resetTimer&&(clearTimeout(this.resetTimer),this.resetTimer=null)}forceResetToPrimary(){console.log("强制重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,we.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=we.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 we.getToken()?(we.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 n=async o=>{const r=`${o}${t}`,l={headers:this.addAuthHeaders(s.headers),...s},i=new AbortController,u=setTimeout(()=>i.abort(),this.timeout);try{const p=await fetch(r,{...l,signal:i.signal});return clearTimeout(u),await this.handleResponse(p)}catch(p){throw clearTimeout(u),p.name==="AbortError"?new Error("请求超时,请检查网络连接"):p}};try{return await n(this.currentURL)}catch(o){if(this.isNetworkError(o)&&!this.isUsingFallback){console.warn("主要接口请求失败,尝试备用接口:",o.message),await new Promise(r=>setTimeout(r,Pa));try{return this.switchToFallback(),await n(this.currentURL)}catch(r){throw console.error("备用接口也无法访问:",r.message),o}}throw o}}async get(t,s={}){const n=new URLSearchParams(s).toString(),o=n?`${t}?${n}`:t;return this.request(o,{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 re=new Ia,Ke={getChallenge(){return re.get("/auth/challenge")},register(e){return re.post("/auth/register",e)},login(e){return re.post("/auth/login",e)},verifyEmail(e){return re.post("/auth/verify-email",e)},resendVerificationCode(e){return re.post("/auth/resend-code",e)},getUserInfo(){return re.get("/user/profile")},getCurrentUser(){return re.get("/user/profile")},logout(){return re.post("/auth/logout")},forgotPassword(e){return re.post("/auth/forgot-password",e)},resetPassword(e){return re.post("/auth/reset-password",e)}},wt={getSubjectLinks(e,t="movies",s={}){return re.get(`/subjects/${t}/${e}/links`,s)},getMovieLinks(e,t={}){return re.get(`/movie/${e}/links`,t)},addSubjectLink(e,t="movies",s){return re.post(`/subjects/${t}/${e}/links`,s)},addMovieLink(e,t){return re.post(`/movies/${e}/links`,t)},updateSubjectLink(e,t,s="movies",n){return re.put(`/subjects/${s}/${e}/links/${t}`,n)},updateMovieLink(e,t){return re.put(`/movies/links/${e}`,t)},deleteSubjectLink(e,t,s="movies"){return re.delete(`/subjects/${s}/${e}/links/${t}`)},deleteMovieLink(e,t){return re.delete(`/movies/${e}/links/${t}`)},voteLink(e,t,s="movie"){return re.post(`/links/${e}/vote`,{vote_type:t,link_type:s})},removeVote(e,t,s="movie"){return re.post(`/links/${e}/vote`,{vote_type:t,link_type:s})},getLinkVoteStatus(e,t="movie"){return re.get(`/links/${e}/vote-status`,{link_type:t})},getUserVote(e,t="movie"){return re.get(`/links/${e}/vote-status`,{link_type:t})},reportLink(e){return re.post("/reports",e)}},Da={getUserProfile(e){return re.get("/user/profile/")},getUserLinks(e={}){return re.get("/user/links",e)},getUserLinksByCategory(){return re.get("/user/links/category")},updateUserName(e){return re.put("/user/name",e)},getAllUsers(){return re.get("/admin/users")},banUser(e,t){return re.put(`/admin/users/${e}/ban`,{reason:t})},unbanUser(e){return re.put(`/admin/users/${e}/unban`)}};async function Oa(e){const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(r=>r.toString(16).padStart(2,"0")).join("")}function Fa(e,t){return e.startsWith("0".repeat(t))}async function fn(e,t,s=null){let n=0;const o=Date.now();for(;;){const r=e+n.toString(),l=await Oa(r);if(Fa(l,t)){const u=Date.now()-o;return console.log(`工作量证明完成: nonce=${n}, 耗时=${u}ms, hash=${l}`),{challenge:e,nonce:n.toString(),hash:l}}n++,n%1e3===0&&(s&&s(n),await new Promise(i=>setTimeout(i,1)))}}const Te=F(null),Ut=F(null),be=F(!1),ce=F(""),Xn=F(!1),Ra=$e(()=>!!Te.value&&!!Ut.value),Ba=$e(()=>{var e;return((e=Te.value)==null?void 0:e.email)||""}),ja=$e(()=>{var e;return((e=Te.value)==null?void 0:e.id)||""}),X={user:Te,token:Ut,loading:be,error:ce,initialized:Xn,isAuthenticated:Ra,userEmail:Ba,userId:ja,async initAuth(){if(!Xn.value)try{be.value=!0;const e=we.getToken(),t=we.getUser();if(e){Ut.value=e,t&&(Te.value=t,console.log("使用本地存储的用户信息:",t));try{const s=await Ke.getCurrentUser();s&&s.data?(Te.value=s.data,we.setUser(s.data)):s&&(Te.value=s,we.setUser(s)),ce.value=""}catch(s){console.error("获取用户信息失败:",s),s.status===401?(we.removeToken(),we.removeUser(),Ut.value=null,Te.value=null,console.log("Token已过期,已清除登录(不可用)状态")):(console.warn("网络或其他错误,保留登录(不可用)状态:",s.message||s),!t&&e&&console.warn("首次网络失败且无本地用户信息,保持token但清空用户状态"))}}}catch(e){console.error("初始化认证失败:",e)}finally{be.value=!1,Xn.value=!0}},async signIn(e,t){try{be.value=!0,ce.value="";const s=await Ke.login({email:e,password:t});return Ut.value=s.data.token,Te.value=s.data.user,we.setToken(s.data.token),we.setUser(s.data.user),{success:!0,user:s.data.user}}catch(s){return console.error("登录(不可用)错误:",s),ce.value=s.message||"登录(不可用)过程中发生错误",{success:!1,error:ce.value}}finally{be.value=!1}},async signUp(e,t,s={}){try{be.value=!0,ce.value="";const n=await Ke.register({email:e,password:t,...s});return Ut.value=n.token,Te.value=n.user,we.setToken(n.token),{success:!0,data:n}}catch(n){return console.error("注册(不可用)错误:",n),ce.value=n.message||"注册(不可用)过程中发生错误",{success:!1,error:ce.value}}finally{be.value=!1}},async signUpWithProof(e,t){try{be.value=!0,ce.value="";const s=await Ke.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:n,difficulty:o}=s.data,r=await fn(n,o,t),l={username:e.username,email:e.email,password:e.password,proof_of_work:{challenge:n,nonce:r.nonce,hash:r.hash}},i=await Ke.register(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("注册(不可用)失败:",s),ce.value=s.message||"注册(不可用)失败",{success:!1,error:ce.value}}finally{be.value=!1}},async verifyEmail(e,t){try{be.value=!0,ce.value="";const s={email:e,code:t},n=await Ke.verifyEmail(s);return n.success?{success:!0,data:n.data}:{success:!1,error:n.error}}catch(s){return console.error("邮箱验证失败:",s),ce.value=s.message||"验证失败",{success:!1,error:ce.value}}finally{be.value=!1}},async resendVerificationCode(e,t=()=>{}){try{be.value=!0,ce.value="";const s=await Ke.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:n,difficulty:o}=s.data,r=await fn(n,o,t),l={email:e,challenge:n,solution:r.nonce},i=await Ke.resendVerificationCode(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("重发验证码失败:",s),ce.value=s.message||"发送失败",{success:!1,error:ce.value}}finally{be.value=!1}},async forgotPassword(e,t){try{be.value=!0,ce.value="";const s=await Ke.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:n,difficulty:o}=s.data,r=await fn(n,o,t),l={email:e,proof_of_work:{challenge:n,nonce:r.nonce,hash:r.hash}},i=await Ke.forgotPassword(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.message||i.error}}catch(s){return console.error("忘记密码失败:",s),ce.value=s.message||"发送失败",{success:!1,error:ce.value}}finally{be.value=!1}},async resetPassword(e,t,s){try{be.value=!0,ce.value="";const n=await Ke.resetPassword({email:e,code:t,password:s});return n.success?{success:!0,data:n.data}:{success:!1,error:n.message||n.error}}catch(n){return console.error("重置密码失败:",n),ce.value=n.message||"重置失败",{success:!1,error:ce.value}}finally{be.value=!1}},async signOut(){try{return be.value=!0,ce.value="",we.removeToken(),we.removeUser(),Ut.value=null,Te.value=null,{success:!0}}catch(e){return console.error("登出错误:",e),ce.value="登出过程中发生错误",we.removeToken(),we.removeUser(),Ut.value=null,Te.value=null,{success:!1,error:ce.value}}finally{be.value=!1}},clearError(){ce.value=""},hasPermission(e){return!!Te.value},getDisplayName(){var e;return Te.value?((e=Te.value.user_metadata)==null?void 0:e.full_name)||Te.value.email||"用户":"未登录(不可用)"},getAvatarUrl(){var e;return Te.value&&((e=Te.value.user_metadata)==null?void 0:e.avatar_url)||null}},Je=(e,t)=>{const s=e.__vccOpts||e;for(const[n,o]of t)s[n]=o;return s},Na={class:"auth-switch"},za={class:"switch-container"},qa=["checked"],Ha=["checked"],Ga=Je({__name:"AuthSwitch",props:{modelValue:{type:String,default:"login"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,n=$e(()=>s.modelValue==="login"?"2%":"52%");return(o,r)=>(V(),M("div",Na,[a("div",za,[a("input",{id:"login",type:"radio",name:"authMode",value:"login",checked:e.modelValue==="login",onChange:r[0]||(r[0]=l=>o.$emit("update:modelValue","login")),class:"switch-input"},null,40,qa),r[2]||(r[2]=a("label",{for:"login",class:"switch-label"},"登录(不可用)",-1)),a("input",{id:"register",type:"radio",name:"authMode",value:"register",checked:e.modelValue==="register",onChange:r[1]||(r[1]=l=>o.$emit("update:modelValue","register")),class:"switch-input"},null,40,Ha),r[3]||(r[3]=a("label",{for:"register",class:"switch-label"},"注册(不可用)",-1)),a("div",{class:"slider",style:Qt({left:n.value})},null,4)])]))}},[["__scopeId","data-v-d47a81a4"]]),Wa={class:"toast-container"},jr=Je({__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,n=t;let o=null,r=null;const l=()=>{o&&(clearTimeout(o),o=null),n("clear-error")},i=()=>{r&&(clearTimeout(r),r=null),n("clear-success")};return Xe(()=>s.errorMessage,u=>{u&&s.autoClose&&(o&&clearTimeout(o),o=setTimeout(()=>{l()},s.duration))}),Xe(()=>s.successMessage,u=>{u&&s.autoClose&&(r&&clearTimeout(r),r=setTimeout(()=>{i()},s.duration))}),_s(()=>{o&&clearTimeout(o),r&&clearTimeout(r)}),(u,p)=>(V(),M("div",Wa,[e.errorMessage?(V(),M("div",{key:0,class:"toast error-toast",onClick:l},[a("span",null,G(e.errorMessage),1),p[0]||(p[0]=a("button",{class:"toast-close"},"×",-1))])):B("",!0),e.successMessage?(V(),M("div",{key:1,class:"toast success-toast",onClick:i},[a("span",null,G(e.successMessage),1),p[1]||(p[1]=a("button",{class:"toast-close"},"×",-1))])):B("",!0)]))}},[["__scopeId","data-v-52e28bd4"]]),Ka={class:"auth-container"},Ja={key:0,class:"initializing-container"},Qa={key:1,class:"user-info"},Za={class:"user-header"},Ya={class:"user-details"},Xa={class:"user-display-name"},eu={key:0,class:"user-email"},tu={class:"user-stats"},su={class:"stat-item"},nu={class:"stat-value"},ou={class:"stat-item"},ru={class:"stat-value"},lu={key:0,class:"nickname-edit-form"},iu={class:"form-group"},au={class:"nickname-actions"},uu=["disabled"],cu={key:2,class:"auth-forms"},du={key:1,class:"back-button"},fu={class:"form-group"},pu={class:"input-wrapper"},hu={class:"form-group"},gu={class:"input-wrapper"},mu=["disabled"],vu={class:"forgot-password-link"},_u={class:"form-group"},yu={class:"form-group"},wu={class:"form-group"},bu={class:"form-group"},xu={key:0,class:"proof-progress"},ku={class:"progress-bar"},Cu=["disabled"],Tu={class:"form-description"},Su={class:"form-group"},Eu=["readonly"],Au={class:"form-group"},Vu=["disabled"],Mu={class:"resend-code"},Lu=["disabled"],$u={class:"form-group"},Uu={key:0,class:"proof-progress"},Pu={class:"progress-bar"},Iu=["disabled"],Du={class:"form-group"},Ou={class:"form-group"},Fu={class:"form-group"},Ru={class:"form-group"},Bu=["disabled"],ju=Je({__name:"AuthComponent",setup(e){const t=F(null),s=F(null),n=F("login"),o=F(!1);F(""),F("");const r=F(!1),l=F(!0),i=F(""),u=F(""),p=F({email:"",password:""});_s(()=>{stopWatching&&stopWatching()});const d=F({email:"",password:"",confirmPassword:"",username:""}),v=F({email:"",code:""}),C=F({email:""}),b=F({email:"",code:"",password:"",confirmPassword:""}),x=F(!1),I=F(0),U=F(""),w=F({username:""});ss(async()=>{try{await X.initAuth(),t.value=X.user.value,t.value&&await Q();const W=Xe(()=>X.user.value,k=>{t.value=k,k?Q():s.value=null},{immediate:!1})}finally{l.value=!1}});const y=()=>{i.value="",u.value=""},Q=async()=>{if(t.value)try{const W=await Ke.getCurrentUser();W?(s.value=W,console.log("用户资料数据:",W)):console.error("获取用户数据失败")}catch(W){console.error("加载用户资料异常:",W)}},R=()=>{var W;r.value=!r.value,r.value&&(w.value.username=((W=t.value)==null?void 0:W.username)||""),y()},ie=async()=>{var W,k;if(t.value){y(),o.value=!0;try{const O=w.value.username.trim();if(!O){i.value="用户名不能为空";return}if(O.length<2||O.length>10){i.value="用户名长度必须在2-10个字符之间";return}const ee=await Da.updateUserName({username:O});if(ee.success){const se={...t.value,...ee.data};t.value=se,X.user.value=se,u.value=ee.message||"用户名更新成功!",r.value=!1,await Q()}else i.value=ee.message||"更新用户名失败"}catch(O){console.error("更新用户名错误:",O),(k=(W=O.response)==null?void 0:W.data)!=null&&k.message?i.value=O.response.data.message:i.value="更新用户名失败,请稍后重试"}finally{o.value=!1}}},ze=async()=>{y(),o.value=!0;try{const W=await X.signIn(p.value.email,p.value.password);W.success?(t.value=W.user,u.value="登录(不可用)成功!",p.value={email:"",password:""},await Q()):i.value=W.error||"登录(不可用)失败,请检查邮箱和密码"}catch(W){i.value="登录(不可用)过程中发生错误",console.error("登录(不可用)错误:",W)}finally{o.value=!1}},Pe=async()=>{if(y(),d.value.password!==d.value.confirmPassword){i.value="两次输入的密码不一致";return}o.value=!0;try{const W=await X.signUpWithProof(d.value,k=>{x.value=!0,I.value=k});x.value=!1,I.value=0,W.success?(U.value=d.value.email,v.value.email=d.value.email,n.value="verify-email",u.value="注册(不可用)成功!请查收邮件并验证邮箱",d.value={email:"",password:"",confirmPassword:"",username:""}):i.value=W.error||"注册(不可用)失败,请稍后重试"}catch(W){x.value=!1,I.value=0,i.value="注册(不可用)过程中发生错误",console.error("注册(不可用)错误:",W)}finally{o.value=!1}},Ie=async()=>{y(),o.value=!0;try{const W=await X.verifyEmail(v.value.email,v.value.code);W.success?(u.value="邮箱验证成功!请登录(不可用)",n.value="login",v.value={email:"",code:""},U.value=""):i.value=W.error||"验证失败,请重试"}catch(W){i.value="验证过程中发生错误",console.error("验证错误:",W)}finally{o.value=!1}},Qe=async()=>{y(),o.value=!0;try{const W=v.value.email||U.value,k=await X.resendVerificationCode(W,O=>{console.log("重发验证码进度:",O)});k.success?u.value="验证码已重新发送,请查收邮件":i.value=k.error||"发送失败,请重试"}catch(W){i.value="发送过程中发生错误",console.error("重发验证码错误:",W)}finally{o.value=!1}},ge=async()=>{y(),o.value=!0;try{const W=await X.forgotPassword(C.value.email,k=>{x.value=!0,I.value=k});x.value=!1,I.value=0,W.success?(b.value.email=C.value.email,n.value="reset-password",u.value="重置码已发送,请查收邮件",C.value={email:""}):i.value=W.error||"发送失败,请重试"}catch(W){x.value=!1,I.value=0,i.value="发送过程中发生错误",console.error("忘记密码错误:",W)}finally{o.value=!1}},De=async()=>{if(y(),b.value.password!==b.value.confirmPassword){i.value="两次输入的密码不一致";return}o.value=!0;try{const W=await X.resetPassword(b.value.email,b.value.code,b.value.password);W.success?(u.value="密码重置成功!请使用新密码登录(不可用)",n.value="login",b.value={email:"",code:"",password:"",confirmPassword:""}):i.value=W.error||"重置失败,请重试"}catch(W){i.value="重置过程中发生错误",console.error("重置密码错误:",W)}finally{o.value=!1}},xe=()=>{n.value="login",y()},Ve=()=>{X.signOut(),u.value="已成功登出",t.value=null,s.value=null};return(W,k)=>(V(),M("div",Ka,[l.value?(V(),M("div",Ja,k[18]||(k[18]=[a("div",{class:"loading-spinner"},null,-1),a("p",null,"加载中...",-1)]))):t.value?(V(),M("div",Qa,[a("div",Za,[a("div",Ya,[a("div",Xa,G(t.value.username||t.value.email),1),t.value.username?(V(),M("div",eu,G(t.value.email),1)):B("",!0),a("div",tu,[a("span",su,[k[19]||(k[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",nu,G(s.value&&s.value.data&&s.value.data.total_likes||0),1)]),a("span",ou,[k[20]||(k[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",ru,G(s.value&&s.value.data&&s.value.data.total_dislikes||0),1)])])]),a("button",{onClick:R,class:"edit-nickname-btn"},G(r.value?"取消":"编辑用户名"),1)]),r.value?(V(),M("div",lu,[a("div",iu,[k[21]||(k[21]=a("label",null,"用户名",-1)),le(a("input",{"onUpdate:modelValue":k[0]||(k[0]=O=>w.value.username=O),type:"text",placeholder:"请输入用户名",class:"form-input",maxlength:"10"},null,512),[[he,w.value.username]]),k[22]||(k[22]=a("div",{class:"nickname-hint"},"用户名长度为2-10个字符",-1))]),a("div",au,[a("button",{onClick:ie,disabled:o.value,class:"save-nickname-btn"},G(o.value?"保存中...":"保存"),9,uu),a("button",{onClick:R,class:"cancel-nickname-btn"}," 取消 ")])])):B("",!0),a("button",{onClick:Ve,class:"sign-out-btn"}," 退出登录(不可用) ")])):(V(),M("div",cu,[["verify-email","forgot-password","reset-password"].includes(n.value)?B("",!0):(V(),ks(Ga,{key:0,modelValue:n.value,"onUpdate:modelValue":k[1]||(k[1]=O=>n.value=O)},null,8,["modelValue"])),["verify-email","forgot-password","reset-password"].includes(n.value)?(V(),M("div",du,[a("button",{onClick:xe,class:"back-btn"}," ← 返回登录(不可用) ")])):B("",!0),n.value==="login"?(V(),M("form",{key:2,onSubmit:We(ze,["prevent"]),class:"auth-form","data-mode":"login"},[a("div",fu,[k[23]||(k[23]=a("label",null,"邮箱",-1)),a("div",pu,[le(a("input",{"onUpdate:modelValue":k[2]||(k[2]=O=>p.value.email=O),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[he,p.value.email]])])]),a("div",hu,[k[24]||(k[24]=a("label",null,"密码",-1)),a("div",gu,[le(a("input",{"onUpdate:modelValue":k[3]||(k[3]=O=>p.value.password=O),type:"password",required:"",placeholder:"请输入密码",class:"form-input"},null,512),[[he,p.value.password]])])]),a("button",{type:"submit",disabled:o.value,class:"auth-submit-btn"},G(o.value?"登录(不可用)中...":"登录(不可用)"),9,mu),a("div",vu,[a("button",{type:"button",onClick:k[4]||(k[4]=O=>n.value="forgot-password"),class:"link-btn"}," 忘记密码? ")])],32)):B("",!0),n.value==="register"?(V(),M("form",{key:3,onSubmit:We(Pe,["prevent"]),class:"auth-form","data-mode":"register"},[a("div",_u,[k[25]||(k[25]=a("label",null,"用户名",-1)),le(a("input",{"onUpdate:modelValue":k[5]||(k[5]=O=>d.value.username=O),type:"text",required:"",placeholder:"3-10个字符",class:"form-input",minlength:"3",maxlength:"10"},null,512),[[he,d.value.username]])]),a("div",yu,[k[26]||(k[26]=a("label",null,"邮箱",-1)),le(a("input",{"onUpdate:modelValue":k[6]||(k[6]=O=>d.value.email=O),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[he,d.value.email]])]),a("div",wu,[k[27]||(k[27]=a("label",null,"密码",-1)),le(a("input",{"onUpdate:modelValue":k[7]||(k[7]=O=>d.value.password=O),type:"password",required:"",placeholder:"至少6位",class:"form-input",minlength:"6"},null,512),[[he,d.value.password]])]),a("div",bu,[k[28]||(k[28]=a("label",null,"确认密码",-1)),le(a("input",{"onUpdate:modelValue":k[8]||(k[8]=O=>d.value.confirmPassword=O),type:"password",required:"",placeholder:"请再次输入密码",class:"form-input"},null,512),[[he,d.value.confirmPassword]])]),x.value?(V(),M("div",xu,[k[29]||(k[29]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",ku,[a("div",{class:"progress-fill",style:Qt({width:Math.min(I.value/1e3,100)+"%"})},null,4)])])):B("",!0),a("button",{type:"submit",disabled:o.value||x.value,class:"auth-submit-btn"},G(x.value?"计算中...":o.value?"注册(不可用)中...":"注册(不可用)"),9,Cu)],32)):B("",!0),n.value==="verify-email"?(V(),M("form",{key:4,onSubmit:We(Ie,["prevent"]),class:"auth-form"},[k[32]||(k[32]=a("div",{class:"form-title"},"邮箱验证",-1)),a("div",Tu," 我们已向 "+G(U.value||v.value.email)+" 发送了验证码,请查收邮件并输入验证码。 ",1),a("div",Su,[k[30]||(k[30]=a("label",null,"邮箱",-1)),le(a("input",{"onUpdate:modelValue":k[9]||(k[9]=O=>v.value.email=O),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:!!U.value},null,8,Eu),[[he,v.value.email]])]),a("div",Au,[k[31]||(k[31]=a("label",null,"验证码",-1)),le(a("input",{"onUpdate:modelValue":k[10]||(k[10]=O=>v.value.code=O),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[he,v.value.code]])]),a("button",{type:"submit",disabled:o.value,class:"auth-submit-btn"},G(o.value?"验证中...":"验证邮箱"),9,Vu),a("div",Mu,[a("button",{type:"button",onClick:Qe,disabled:o.value,class:"link-btn"}," 重新发送验证码 ",8,Lu)])],32)):B("",!0),n.value==="forgot-password"?(V(),M("form",{key:5,onSubmit:We(ge,["prevent"]),class:"auth-form"},[k[35]||(k[35]=a("div",{class:"form-title"},"忘记密码",-1)),k[36]||(k[36]=a("div",{class:"form-description"}," 请输入您的邮箱地址,我们将向您发送重置密码的验证码。 ",-1)),a("div",$u,[k[33]||(k[33]=a("label",null,"邮箱",-1)),le(a("input",{"onUpdate:modelValue":k[11]||(k[11]=O=>C.value.email=O),type:"email",required:"",placeholder:"请输入注册(不可用)时使用的邮箱",class:"form-input"},null,512),[[he,C.value.email]])]),x.value?(V(),M("div",Uu,[k[34]||(k[34]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",Pu,[a("div",{class:"progress-fill",style:Qt({width:Math.min(I.value/1e3,100)+"%"})},null,4)])])):B("",!0),a("button",{type:"submit",disabled:o.value||x.value,class:"auth-submit-btn"},G(x.value?"计算中...":o.value?"发送中...":"发送重置码"),9,Iu)],32)):B("",!0),n.value==="reset-password"?(V(),M("form",{key:6,onSubmit:We(De,["prevent"]),class:"auth-form"},[k[41]||(k[41]=a("div",{class:"form-title"},"重置密码",-1)),k[42]||(k[42]=a("div",{class:"form-description"}," 请输入您收到的验证码和新密码。 ",-1)),a("div",Du,[k[37]||(k[37]=a("label",null,"邮箱",-1)),le(a("input",{"onUpdate:modelValue":k[12]||(k[12]=O=>b.value.email=O),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:""},null,512),[[he,b.value.email]])]),a("div",Ou,[k[38]||(k[38]=a("label",null,"验证码",-1)),le(a("input",{"onUpdate:modelValue":k[13]||(k[13]=O=>b.value.code=O),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[he,b.value.code]])]),a("div",Fu,[k[39]||(k[39]=a("label",null,"新密码",-1)),le(a("input",{"onUpdate:modelValue":k[14]||(k[14]=O=>b.value.password=O),type:"password",required:"",placeholder:"请输入新密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[he,b.value.password]])]),a("div",Ru,[k[40]||(k[40]=a("label",null,"确认新密码",-1)),le(a("input",{"onUpdate:modelValue":k[15]||(k[15]=O=>b.value.confirmPassword=O),type:"password",required:"",placeholder:"请再次输入新密码",class:"form-input"},null,512),[[he,b.value.confirmPassword]])]),a("button",{type:"submit",disabled:o.value,class:"auth-submit-btn"},G(o.value?"重置中...":"重置密码"),9,Bu)],32)):B("",!0)])),Z(jr,{"error-message":i.value,"success-message":u.value,duration:3e3,"auto-close":!0,onClearError:k[16]||(k[16]=O=>i.value=""),onClearSuccess:k[17]||(k[17]=O=>u.value="")},null,8,["error-message","success-message"])]))}},[["__scopeId","data-v-09cfbe3d"]]);class Nt{static async getLinks(t,s={}){try{const n={},{linkType:o,platform:r,page:l=1,limit:i=5,sortBy:u="created_at",sortOrder:p="desc",category:d="movies"}=s;l&&(n.page=l),i&&(n.limit=i),u&&(n.sort_by=u),p&&(n.sort_order=p),o&&(n.type=o==="bt"?"magnet":o),r&&(n.platform=r);const v=await wt.getSubjectLinks(t,d,n);if(!v.success)throw v.error==="NOT_FOUND"||v.status===404?(console.log("电影不存在,返回空结果"),new Error("电影不存在")):(console.error("获取链接失败:",v.error),new Error(`获取链接失败: ${v.error}`));const C=v.data||{};let b=C.links||[];const x=C.pagination||{};Array.isArray(b)||(console.warn("API返回的links不是数组格式:",b),b=[]);const I=b.map(U=>({...U,up_votes:U.likes_count||0,down_votes:U.dislikes_count||0,score:(U.likes_count||0)-(U.dislikes_count||0),user_vote_type:U.user_vote_type==="like"?"up":U.user_vote_type==="dislike"?"down":U.user_vote_type||"",user_display_name:U.username||"匿名用户"}));return{success:!0,data:I,pagination:x,count:I.length,total:x.total||0}}catch(n){return console.error("获取链接服务错误:",n),{success:!1,error:n.message||"获取链接失败",data:[],pagination:{page:1,limit:5,total:0,pages:0},count:0,total:0}}}static async addLink(t){try{const{subjectId:s,movieId:n,category:o="movies",linkType:r,platform:l,url:i,extractCode:u,title:p,quality:d,size:v,original_url:C,has_4k:b,has_hdr:x,has_dolby_atmos:I,has_subtitles:U,is_flac:w,is_wav:y}=t,Q=s||n;if(!Q||!r||!i)throw new Error("缺少必填字段:subjectId, linkType, url");if(!["netdisk","bt","online"].includes(r))throw new Error("无效的链接类型");if(u&&u.length>10)throw new Error("提取码长度不能超过10个字符");const R=await Ke.getChallenge();if(!R.success)throw new Error("获取工作量证明挑战失败");const{challenge:ie,difficulty:ze}=R.data,Pe=await fn(ie,ze),Ie={title:p||"",url:i.trim(),type:r==="bt"?"magnet":r,password:u||"",quality:d||"",size:v||"",original_url:C||"",has_4k:!!b,has_hdr:!!x,has_dolby_atmos:!!I,has_subtitles:!!U,is_flac:!!w,is_wav:!!y,proof_of_work:Pe};r==="netdisk"&&l&&l.trim()&&(Ie.platform=l.trim());const Qe=await wt.addSubjectLink(Q,o,Ie);if(!Qe.success)throw console.error("添加链接失败:",Qe.error),new Error(`添加链接失败: ${Qe.error}`);return{success:!0,data:Qe.data,message:"链接添加成功"}}catch(s){return console.error("添加链接服务错误:",s),{success:!1,error:s.message||"添加链接失败"}}}static async deleteLink(t,s,n="movies"){try{if(!s)throw new Error("链接ID不能为空");if(!t)throw new Error("主题ID不能为空");if(!X.isAuthenticated.value)throw new Error("用户未登录(不可用)");const o=await wt.deleteSubjectLink(t,s,n);if(!o.success)throw console.error("删除链接失败:",o.error),new Error(`删除链接失败: ${o.error}`);return{success:!0,message:o.message||"链接删除成功"}}catch(o){return console.error("删除链接服务错误:",o),{success:!1,error:o.message||"删除链接失败"}}}static async updateLink(t,s,n=null,o="movies"){try{if(!t)throw new Error("链接ID不能为空");if(!X.isAuthenticated.value)throw new Error("用户未登录(不可用)");if(!s.url||!s.linkType)throw new Error("链接地址和类型不能为空");const r={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 l;if(n?l=await wt.updateSubjectLink(n,t,o,r):l=await wt.updateMovieLink(t,r),!l.success)throw console.error("修改链接失败:",l.error),new Error(`修改链接失败: ${l.error}`);return{success:!0,message:l.message||"链接修改成功",data:l.data}}catch(r){return console.error("修改链接服务错误:",r),{success:!1,error:r.message||"修改链接失败"}}}static async voteLink(t,s,n="movie"){try{if(!t||!s)throw new Error("链接ID和投票类型不能为空");if(!["up","down"].includes(s))throw new Error("无效的投票类型");if(!X.isAuthenticated.value)throw new Error("用户未登录(不可用)");const o=s==="up"?"like":"dislike",r=await wt.voteLink(t,o,n);if(!r.success)throw console.error("投票失败:",r.error),new Error(`投票失败: ${r.error}`);const l=r.data||{};return{success:!0,message:`${s==="up"?"点赞":"点踩"}成功`,data:{up_votes:l.likes_count||0,down_votes:l.dislikes_count||0,user_vote_type:l.user_vote_type==="like"?"up":l.user_vote_type==="dislike"?"down":null}}}catch(o){return console.error("投票服务错误:",o),{success:!1,error:o.message||"投票失败"}}}static async removeVote(t,s=0,n=0,o="up",r="movie"){try{if(!t)throw new Error("链接ID不能为空");if(!X.isAuthenticated.value)throw new Error("用户未登录(不可用)");const l=o==="up"?"like":"dislike",i=await wt.removeVote(t,l,r);if(!i.success)throw console.error("取消投票失败:",i.error),new Error(`取消投票失败: ${i.error}`);const u=i.data||{};console.log("removeVote API原始响应:",u);let p,d;if(u.likes_count!==void 0&&u.dislikes_count!==void 0){const v=Math.max(0,u.likes_count||0),C=Math.max(0,u.dislikes_count||0);u.likes_count<0||u.dislikes_count<0?(console.warn("API返回负数,使用本地计算:",u),o==="up"?(p=Math.max(0,s-1),d=n):(p=s,d=Math.max(0,n-1))):(p=v,d=C),console.log("使用API返回数据:",{finalUpVotes:p,finalDownVotes:d,apiUpVotes:v,apiDownVotes:C})}else o==="up"?(p=Math.max(0,s-1),d=n):(p=s,d=Math.max(0,n-1)),console.log("使用本地计算数据:",{finalUpVotes:p,finalDownVotes:d,currentUpVotes:s,currentDownVotes:n,voteType:o});return{success:!0,message:"取消投票成功",data:{up_votes:p,down_votes:d,user_vote_type:null}}}catch(l){return console.error("取消投票服务错误:",l),{success:!1,error:l.message||"取消投票失败"}}}static async reportLink(t,s,n="",o="movie"){try{if(!t||!s)throw new Error("链接ID和反馈类型不能为空");if(!X.isAuthenticated.value)throw new Error("用户未登录(不可用)");const r={link_id:t,link_type:o,type:s.trim(),reason:n.trim()||null},l=await wt.reportLink(r);if(!l.success)throw console.error("反馈失败:",l.error),new Error(`反馈失败: ${l.error}`);return{success:!0,data:l.data,message:"反馈提交成功"}}catch(r){return console.error("反馈服务错误:",r),{success:!1,error:r.message||"反馈失败"}}}}const Nu="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",zu={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}}},qu={class:"selected-text"},Hu={class:"select-dropdown"},Gu=["onClick"];function Wu(e,t,s,n,o,r){return V(),M("div",{class:ve(["custom-select",{"is-open":o.isOpen}]),onClick:t[1]||(t[1]=We(()=>{},["stop"]))},[a("div",{class:"select-trigger",onClick:t[0]||(t[0]=(...l)=>r.toggleDropdown&&r.toggleDropdown(...l))},[a("span",qu,G(r.selectedLabel||s.placeholder),1),a("img",{src:Nu,class:ve(["arrow",{"arrow-up":o.isOpen}]),alt:"箭头"},null,2)]),le(a("div",Hu,[(V(!0),M(_e,null,Zs(s.options,l=>(V(),M("div",{class:ve(["select-option",{selected:l.value===s.modelValue}]),key:l.value,onClick:i=>r.selectOption(l)},G(l.label),11,Gu))),128))],512),[[an,o.isOpen]])],2)}const zt=Je(zu,[["render",Wu],["__scopeId","data-v-3b2cba4f"]]),Ku={name:"LinkItemSkeleton"},Ju={class:"link-item skeleton"};function Qu(e,t,s,n,o,r){return V(),M("div",Ju,t[0]||(t[0]=[yr('<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 Nr=Je(Ku,[["render",Qu],["__scopeId","data-v-115afd35"]]),Zu=["checked"],Yu={key:0,class:"checkbox-label"},et=Je({__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(),M("label",{class:ve(["ios-checkbox",e.color])},[a("input",{type:"checkbox",checked:e.modelValue,onChange:s[0]||(s[0]=n=>t.$emit("update:modelValue",n.target.checked))},null,40,Zu),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(),M("span",Yu,G(e.label),1)):B("",!0)],2))}},[["__scopeId","data-v-150f8c13"]]),Xu={class:"tooltip"},ec={class:"tooltip"},zr=Je({__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,n=t,o=F(!1),r=$e(()=>o.value?"已复制":s.type==="url"?"点击复制链接(右键打开)":"点击复制提取码"),l=u=>u,i=async()=>{try{await navigator.clipboard.writeText(s.text),o.value=!0,n("copy-success",s.text),setTimeout(()=>{o.value=!1},2e3)}catch(u){console.error("复制失败:",u),n("copy-error",u)}};return(u,p)=>e.type==="url"?(V(),M("span",{key:0,class:ve(["copy-item",{copied:o.value}]),onClick:i},[rs(G(l(e.text))+" ",1),a("span",Xu,G(r.value),1)],2)):e.type==="code"?(V(),M("code",{key:1,class:ve(["extract-code",{copied:o.value}]),onClick:i},[rs(G(e.text)+" ",1),a("span",ec,G(r.value),1)],2)):B("",!0)}},[["__scopeId","data-v-aaaa00e5"]]),tc={name:"UrlInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""},required:{type:Boolean,default:!1},recognizedUrl:{type:String,default:""}},emits:["update:modelValue"],data(){return{isFocused:!1,isUpdating:!1}},computed:{formattedContent(){const e=this.modelValue||"",t=this.recognizedUrl;if(!t)return`<span class="normal-text">${this.escapeHtml(e)}</span>`;if(!e.includes(t))return`<span class="normal-text">${this.escapeHtml(e)}</span>`;const s=e.indexOf(t);if(s===-1)return`<span class="normal-text">${this.escapeHtml(e)}</span>`;let n="";if(s>0){const r=e.substring(0,s);n+=`<span class="normal-text">${this.escapeHtml(r)}</span>`}n+=`<span class="recognized-text">${this.escapeHtml(t)}</span>`;const o=s+t.length;if(o<e.length){const r=e.substring(o);n+=`<span class="normal-text">${this.escapeHtml(r)}</span>`}return n}},methods:{escapeHtml(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML},handleInput(e){if(this.isUpdating)return;const t=window.getSelection();let s=0;if(t.rangeCount>0){const o=t.getRangeAt(0),r=o.cloneRange();r.selectNodeContents(e.target),r.setEnd(o.endContainer,o.endOffset),s=r.toString().length}const n=e.target.textContent||"";this.isUpdating=!0,this.$emit("update:modelValue",n),this.$nextTick(()=>{this.setCursorPosition(s),this.isUpdating=!1})},handlePaste(e){e.preventDefault(),this.isUpdating=!0;const s=(e.clipboardData||window.clipboardData).getData("text"),n=window.getSelection(),o=n.getRangeAt(0),r=o.cloneRange();r.selectNodeContents(this.$refs.editableInput),r.setEnd(o.startContainer,o.startOffset);const l=r.toString().length;o.deleteContents(),o.insertNode(document.createTextNode(s));const i=l+s.length;o.collapse(!1),n.removeAllRanges(),n.addRange(o);const u=this.$refs.editableInput.textContent||"";setTimeout(()=>{this.$emit("update:modelValue",u),this.$nextTick(()=>{this.setCursorPosition(i),this.isUpdating=!1})},50)},handleFocus(){this.isFocused=!0},handleBlur(){this.isFocused=!1},handleKeydown(e){e.key==="Enter"&&e.preventDefault()},updateContent(){if(!this.$refs.editableInput)return;const e=this.$refs.editableInput.textContent||"",t=this.modelValue||"";if(e===t)return;this.isUpdating=!0;const s=window.getSelection();let n=0;if(s.rangeCount>0){const o=s.getRangeAt(0),r=o.cloneRange();r.selectNodeContents(this.$refs.editableInput),r.setEnd(o.endContainer,o.endOffset),n=r.toString().length}e!==t?(this.$refs.editableInput.innerHTML=this.formattedContent,this.$nextTick(()=>{this.setCursorPosition(n),this.isUpdating=!1})):this.isUpdating=!1},setCursorPosition(e){const t=this.$refs.editableInput;if(!t)return;const s=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null,!1);let n=0,o=null,r=0;for(;s.nextNode();){const l=s.currentNode,i=l.textContent.length;if(n+i>=e){o=l,r=e-n;break}n+=i}if(o){const l=document.createRange();l.setStart(o,Math.min(r,o.textContent.length)),l.collapse(!0);const i=window.getSelection();i.removeAllRanges(),i.addRange(l)}}},watch:{modelValue(e){this.isUpdating||(this.$refs.editableInput&&this.$refs.editableInput.textContent||"")!==(e||"")&&this.$nextTick(()=>{this.updateContent()})},recognizedUrl(){this.isUpdating||this.$nextTick(()=>{this.updateContent()})}},mounted(){this.modelValue&&this.updateContent()}},sc={class:"url-input-container"},nc=["data-placeholder","innerHTML"];function oc(e,t,s,n,o,r){return V(),M("div",sc,[a("div",{class:ve(["input-wrapper",{focused:o.isFocused}])},[a("div",{ref:"editableInput",class:"editable-input",contenteditable:"true","data-placeholder":s.placeholder,onInput:t[0]||(t[0]=(...l)=>r.handleInput&&r.handleInput(...l)),onFocus:t[1]||(t[1]=(...l)=>r.handleFocus&&r.handleFocus(...l)),onBlur:t[2]||(t[2]=(...l)=>r.handleBlur&&r.handleBlur(...l)),onPaste:t[3]||(t[3]=(...l)=>r.handlePaste&&r.handlePaste(...l)),onKeydown:t[4]||(t[4]=(...l)=>r.handleKeydown&&r.handleKeydown(...l)),innerHTML:r.formattedContent},null,40,nc)],2)])}const qr=Je(tc,[["render",oc],["__scopeId","data-v-dc5500ab"]]),rc={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"]}},lc=/^magnet:\?xt=urn:btih:[a-fA-F0-9]{32,40}/;function ic(e){if(!e||typeof e!="string")return{type:null,platform:null,isValid:!1};const t=e.trim();if(lc.test(t))return{type:"bt",platform:null,isValid:!0};for(const[s,n]of Object.entries(rc))try{const o=new URL(t);if(n.domains.includes(o.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 Hr(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 n=e.match(s);if(n&&n[1])return n[1]}return null}function pn(e){if(!e||typeof e!="string")return"";let t=e.trim();t=t.split(`
`)[0].trim();const s=t.match(/^(https?:\/\/[^\s\(\)]+)/);if(s)return s[1];const n=t.match(/^(magnet:\?[^\s\(\)]+)/);if(n)return n[1];const o=t.match(/^(https?:\/\/[^\s\(\)]+)\([^)]*\)(.*)$/);if(o)return o[1];const r=t.match(/^([^\(\)]+?)\s*\([^)]*\)/);if(r){const l=r[1].trim();if(/^https?:\/\//.test(l)||/^magnet:/.test(l))return l}return t}function Gr(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=[/[\(\[\(【](\d+(?:\.\d+)?[MGT]B?)[\)\]\)】]/gi,/[\(\[\(【](\d+(?:\.\d+)?[mgt]b?)[\)\]\)】]/gi,/容量(\d+(?:\.\d+)?[MGT]B?)/gi,/大小(\d+(?:\.\d+)?[MGT]B?)/gi,/(\d+(?:\.\d+)?[MGT]B?)容量/gi,/(\d+(?:\.\d+)?[MGT]B?)大小/gi,/[\||](\d+(?:\.\d+)?[MGT]B?)[\||]/gi,/[\s\||](\d+(?:\.\d+)?[MGT]B?)[\s\||]/gi,/(?:^|\s)(\d+(?:\.\d+)?[MGT]B?)(?=\s|$)/gi,/(?:单集|每集|共计|总计|总共)(\d+(?:\.\d+)?[MGT]B?)/gi,/(\d+(?:\.\d+)?[MGT]B?)(?:单集|每集|共计|总计|总共)/gi];let s=null,n=[];for(const d of t){const v=e.match(d);if(v&&v.length>0){const C=v.map(b=>{const x=b.match(/(\d+(?:\.\d+)?[KMGTkmgt]B?)/i);if(x){let I=x[1];return(I.endsWith("GB")||I.endsWith("MB")||I.endsWith("KB")||I.endsWith("TB"))&&(I=I.slice(0,-1)),I=I.toUpperCase(),I}return null}).filter(Boolean);if(C.length>0){s=C.join(" + "),n=v;break}}}let o=e;n.length>0&&n.forEach(d=>{o=o.replace(d," ")});const r=/(^|[^a-zA-Z0-9])(4k|4K|2160p|2160P|3840x2160|3840X2160)([^a-zA-Z]|$)/i.test(o),l=/(^|[^a-zA-Z])(hdr|HDR|hdr[\d\+]*|HDR[\d\+]*|dolby\s*vision|Dolby\s*Vision|dolbyvision|DolbyVision)([^a-zA-Z]|$)/i.test(e),i=/(^|[^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),u=/(^|[^a-zA-Z])(flac|FLAC|\.flac|\.FLAC|无损flac|FLAC无损|flac无损)([^a-zA-Z]|$)/i.test(e),p=/(^|[^a-zA-Z])(wav|WAV|\.wav|\.WAV|无损wav|WAV无损|wav无损)([^a-zA-Z]|$)/i.test(e);return{has_4k:r,has_hdr:l,has_dolby_atmos:i,file_size:s,is_flac:u,is_wav:p}}function eo(e){const t=Hr(e),s=pn(e),n=ic(s),o=Hr(s),r=t||o;return{linkType:n.type||"",platform:n.platform||"",extractCode:r||"",cleanedUrl:s,isValid:n.isValid}}const Ue={ajax:e=>new Promise((t,s)=>{if(console.log("[LinkChecker] 发送请求:",{method:e.type||"GET",url:e.url,headers:e.headers||{}}),typeof GM_xmlhttpRequest<"u")console.log("[LinkChecker] 使用 GM_xmlhttpRequest"),GM_xmlhttpRequest({method:e.type||"GET",url:e.url,headers:e.headers||{},data:e.data,timeout:e.timeout||1e4,onload:function(n){if(console.log("[LinkChecker] 请求成功:",{status:n.status,url:e.url,responseLength:n.responseText?n.responseText.length:0}),e.dataType==="json")try{const o=JSON.parse(n.responseText);e.success&&e.success(o),t(o)}catch(o){console.warn("[LinkChecker] JSON解析错误:",o),e.success&&e.success(n.responseText),t(n.responseText)}else e.success&&e.success(n.responseText),t(n.responseText)},onerror:function(n){console.error("[LinkChecker] 请求失败:",{status:n.status,statusText:n.statusText,url:e.url}),e.error&&e.error(n),s(new Error(`Request failed: ${n.statusText}`))},ontimeout:function(){console.error("[LinkChecker] 请求超时:",e.url),e.error&&e.error({status:0,statusText:"Timeout"}),s(new Error("Request timeout"))}});else{console.log("[LinkChecker] 使用原生 XMLHttpRequest");const n=new XMLHttpRequest;n.open(e.type||"GET",e.url,!0),e.headers&&Object.keys(e.headers).forEach(o=>{n.setRequestHeader(o,e.headers[o])}),n.timeout=e.timeout||1e4,n.onload=function(){if(n.status>=200&&n.status<300)if(console.log("[LinkChecker] 原生请求成功:",{status:n.status,url:e.url,responseLength:n.responseText?n.responseText.length:0}),e.dataType==="json")try{const o=JSON.parse(n.responseText);e.success&&e.success(o),t(o)}catch(o){console.warn("[LinkChecker] JSON解析错误:",o),e.success&&e.success(n.responseText),t(n.responseText)}else e.success&&e.success(n.responseText),t(n.responseText);else console.error("[LinkChecker] 原生请求失败:",{status:n.status,statusText:n.statusText,url:e.url}),e.error&&e.error(n),s(new Error(`Request failed: ${n.statusText}`))},n.onerror=function(){e.error&&e.error(n),s(new Error("Network error"))},n.ontimeout=function(){e.error&&e.error(n),s(new Error("Request timeout"))},e.data?e.data instanceof FormData||typeof e.data=="string"?n.send(e.data):n.send(JSON.stringify(e.data)):n.send()}})},q={info:(...e)=>console.log("[LinkChecker]",...e),debug:(...e)=>console.debug("[LinkChecker]",...e),warn:(...e)=>console.warn("[LinkChecker]",...e),error:(...e)=>console.error("[LinkChecker]",...e)},Wr={baidu:{reg:/(?:https?:\/\/)?\b(e?yun|pan)\.baidu\.com\/s\/([\w\-]{5,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?(?:e?yun|pan)\.baidu\.com\/s\/([\w\-]{5,})(?!\.)/gi,prefix:"https://pan.baidu.com/s/",checkFun:(e,t)=>{q.info("🔍 百度网盘检测开始:",e);let s=e&&e.includes&&e.includes("http")?e:"https://pan.baidu.com/s/"+e;q.info("📡 请求URL:",s),Ue.ajax({type:"get",url:s,success:n=>{q.info("百度网盘响应:",{shareId:e,responseLength:n?n.length:0,responsePreview:n?n.substring(0,200):"null",responseType:typeof n});let o=1;!n||typeof n!="string"?(o=0,q.warn("百度网盘无响应或响应格式错误")):n.includes("过期时间:")?(o=1,q.info("百度网盘链接有效(包含过期时间)")):n.includes("输入提取码")||n.includes("请输入提取码")||n.includes("输入提取")?(o=2,q.info("百度网盘需要提取码")):n.includes("不存在")||n.includes("已失效")?(o=-1,q.warn("百度网盘链接失效")):q.info("百度网盘链接有效");const r={state:o};q.info("百度网盘检测结果:",r),t&&t(r)},error:function(n){q.error("💥 百度网盘请求失败:",n),t&&t({state:0})}})}},weiyun:{reg:/(?:https?:\/\/)?\bshare\.weiyun\.com\/([\w\-]{7,})(?!.)(?!\.)/gi,replaceReg:/(?:https?:\/\/)?share\.weiyun\.com\/([\w\-]{7,})(?!\.)/gi,prefix:"https://share.weiyun.com/",checkFun:(e,t)=>{let s=e&&e.includes&&e.includes("http")?e:"https://share.weiyun.com/"+e;Ue.ajax({type:"get",url:s,success:n=>{let o=0;q.info(e,"weiyun",n),!n||typeof n!="string"?o=0:n.includes("已删除")||n.includes("违反相关法规")||n.includes("已过期")||n.includes("已经删除")||n.includes("目录无效")?o=-1:n.includes('"need_pwd":null')&&n.includes('"pwd":""')?o=1:(n.includes('"need_pwd":1')||n.includes('"pwd":"'))&&(o=2),t&&t({state:o})},error:function(){t&&t({state:0})}})}},lanzou:{reg:/(?:https?:\/\/)?(?:[\w\-]+\.)?\blanzou.?\.com\/([\w\-]{7,})(?!\.)(?:\/)?/gi,replaceReg:/(?:https?:\/\/)?(?:[\w\-]+\.)?lan(?:zou?|.v|z).?\.com\/([\w\-]{7,})(?!\.)(?:\/)?/gi,prefix:"https://www.lanzoum.com/",checkFun:(e,t)=>{let s=e&&e.includes&&e.includes("http")?e:"https://www.lanzoum.com/"+e;Ue.ajax({type:"get",url:s,success:n=>{let o=1;!n||typeof n!="string"?o=0:n.includes("输入密码")?o=2:(n.includes("来晚啦")||n.includes("不存在"))&&(o=-1),t&&t({state:o})},error:function(){t&&t({state:0})}})}},aliyun:{reg:/(?:https?:\/\/)?www\.aliyundrive\.com\/s\/([\w\-]{8,})(?![.\/])$/gi,replaceReg:/(?:https?:\/\/)?www\.ali(?:pan|yundrive)\.com\/s\/([\w\-]{8,})(?![.\/])/gi,prefix:"https://www.aliyundrive.com/s/",checkFun:(e,t)=>{q.info("aliyun id ",e),Ue.ajax({type:"post",url:"https://api.aliyundrive.com/adrive/v3/share_link/get_share_by_anonymous",data:JSON.stringify({share_id:e}),headers:{"Content-Type":"application/json"},dataType:"json",success:s=>{q.debug("aliyun response ",s);let n=1;!s||typeof s!="object"?n=0:s.code&&s.code.indexOf("ShareLink")>-1?n=-1:(s.code||s.file_count&&s.file_count==0)&&(n=0),t&&t({state:n})},error:function(){t&&t({state:0})}})}},pan123:{reg:/(?:h?ttps?:\/\/)?(?:www\.)?\b(?:123pan|123865)\.com\/s\/([\w\-]{8,})\b/gi,replaceReg:/(?:h?ttps?:\/\/)?(?:www\.)?(?:123pan|123865)\.com\/s\/([\w\-]{8,})(\.html)?\b/gi,prefix:"https://www.123pan.com/s/",checkFun:(e,t)=>{q.info("Pan123 check id "+e),Ue.ajax({type:"get",url:"https://www.123pan.com/api/share/info?shareKey="+e,success:s=>{q.debug("Pan123 check response",s);let n=typeof s=="string"?JSON.parse(s):s,o=1;s?typeof s=="string"&&s.includes("分享页面不存在")||n&&n.code!=0?o=-1:n&&n.data&&n.data.HasPwd&&(o=2):o=0,t&&t({state:o})},error:function(){t&&t({state:0})}})}},quark:{reg:/(?:https?:\/\/)?\bpan.quark\.cn\/s\/([\w\-]{8,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?pan.quark\.cn\/s\/([\w\-]{8,})(?!\.)/gi,prefix:"https://pan.quark.cn/s/",checkFun:(e,t)=>{q.info("Quark check id "+e),Ue.ajax({type:"post",data:JSON.stringify({pwd_id:e,passcode:""}),url:"https://drive-h.quark.cn/1/clouddrive/share/sharepage/token?pr=ucpro&fr=pc",headers:{"Content-Type":"application/json"},dataType:"json",success:s=>{q.debug("Quark token response",s);let n=typeof s=="string"?JSON.parse(s):s,o=0;if(q.debug("Quark token rsp",n.message),!s||!n)o=0;else if(n.message&&n.message.includes("需要提取码"))o=2;else if(n.message&&n.message.includes("ok")){var r=n.data.stoken.replace(/\+/g,"%2B").replace(/\"/g,"%22").replace(/\'/g,"%27").replace(/\//g,"%2F");const l=Date.now(),i="https://drive-h.quark.cn/1/clouddrive/share/sharepage/detail?pr=ucpro&fr=pc&uc_param_str=&ver=2&pwd_id="+e+"&stoken="+r+"&pdir_fid=0&force=0&_page=1&_size=50&_fetch_banner=1&_fetch_share=1&fetch_relate_conversation=1&_fetch_total=1&_sort=file_type:asc,file_name:asc&__dt="+Math.floor(Math.random()*1e4)+"&__t="+l;Ue.ajax({type:"get",url:i,success:u=>{q.debug("checkQuark detail response",u);let p=typeof u=="string"?JSON.parse(u):u,d=0;if(p&&p.status===404&&p.code===41004){d=-1,q.warn("Quark file not found (404):",p.message),t&&t({state:d});return}if(p&&p.status&&p.status!==200){d=-1,q.warn("Quark request failed:",{status:p.status,code:p.code,message:p.message}),t&&t({state:d});return}p&&p.data&&p.data.share&&(p.data.share.status==1?d=p.data.share.partial_violation?11:1:p.data.share.status==3?d=p.data.share.partial_violation?-1:1:p.data.share.status>1&&(d=-1)),t&&t({state:d})},error:function(){t&&t({state:0})}})}else o=-1;(!n.message||!n.message.includes("ok"))&&t&&t({state:o})},error:function(){t&&t({state:0})}})}},baidu2:{reg:/(?:https?:\/\/)?\b(e?yun|pan)\.baidu\.com\/(?:share|wap)\/init\?surl=([\w\-]{5,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?(?:e?yun|pan)\.baidu\.com\/(?:share|wap)\/init\?surl=([\w\-]{5,})(?!\.)/gi,prefix:"https://pan.baidu.com/share/init?surl=",checkFun:(e,t)=>{q.info("Baidu2 check id "+e);let s=e&&e.includes&&e.includes("http")?e:"https://pan.baidu.com/s/"+e;Ue.ajax({type:"get",url:s,success:n=>{q.debug("Baidu2 check response",n);let o=1;!n||typeof n!="string"?o=0:n.includes("输入提取码")||n.includes("请输入提取码")?o=2:(n.includes("不存在")||n.includes("已失效"))&&(o=-1),t&&t({state:o})},error:function(){t&&t({state:0})}})}},aliyun2:{reg:/(?:https?:\/\/)?(?:(?:www\.)?aliyundrive\.com\/s|alywp\.net)\/([A-Za-z0-9]+)/gi,replaceReg:/(?:https?:\/\/)?(?:(?:www\.)?aliyundrive\.com\/s|alywp\.net)\/([A-Za-z0-9]+)/gi,prefix:"https://www.aliyundrive.com/s/",checkFun:(e,t)=>{q.info("Aliyun2 check id "+e),Ue.ajax({type:"post",url:"https://api.aliyundrive.com/adrive/v3/share_link/get_share_by_anonymous",data:JSON.stringify({share_id:e}),headers:{"Content-Type":"application/json"},dataType:"json",success:s=>{q.debug("Aliyun2 check response",s);let n=1;!s||typeof s!="object"?n=0:s.code&&s.code.indexOf("ShareLink")>-1?n=-1:(s.code||s.file_count&&s.file_count==0)&&(n=0),t&&t({state:n})},error:function(){t&&t({state:0})}})}},ty189:{reg:/(?:https?:\/\/)?cloud\.189\.cn\/(?:t\/|web\/share\?code=)([\w\-]{8,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?cloud\.189\.cn\/(?:t\/|web\/share\?code=)([\w\-]{8,})(?!\.)/gi,prefix:"https://cloud.189.cn/t/",aTagRepalce:[/\/web\/share\?code=/,"/t/"],checkFun:(e,t)=>{q.info("Ty189 check id "+e),Ue.ajax({type:"post",url:"https://api.cloud.189.cn/open/share/getShareInfoByCodeV2.action",headers:{"Content-Type":"application/x-www-form-urlencoded"},data:`shareCode=${encodeURIComponent(e)}`,success:s=>{q.debug("Ty189 check response",s);let n=1;s?s.includes("ShareInfoNotFound")||s.includes("ShareNotFound")||s.includes("FileNotFound")||s.includes("ShareExpiredError")||s.includes("ShareAuditNotPass")?n=-1:s.includes("needAccessCode")&&(n=2):n=0,t&&t({state:n})},error:()=>t&&t({state:0})})}},xunlei:{reg:/(?:https?:\/\/)?\bpan.xunlei\.com\/s\/([\w\-]{25,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?pan.xunlei\.com\/s\/([\w\-]{25,})(?!\.)/gi,prefix:"https://pan.xunlei.com/s/",checkFun:(e,t)=>{q.info("Xunlei check id "+e),Ue.ajax({type:"post",data:JSON.stringify({client_id:"Xqp0kJBXWhwaTpB6",device_id:"925b7631473a13716b791d7f28289cad",action:"get:/drive/v1/share",meta:{package_name:"pan.xunlei.com",client_version:"1.45.0",captcha_sign:"1.fe2108ad808a74c9ac0243309242726c",timestamp:"1645241033384"}}),headers:{"Content-Type":"application/json"},url:"https://xluser-ssl.xunlei.com/v1/shield/captcha/init",success:s=>{q.debug("Xunlei token response",s);let o=JSON.parse(s).captcha_token;Ue.ajax({type:"get",url:"https://api-pan.xunlei.com/drive/v1/share?share_id="+e.replace("https://pan.xunlei.com/s/",""),headers:{"x-captcha-token":o,"x-client-id":"Xqp0kJBXWhwaTpB6","x-device-id":"925b7631473a13716b791d7f28289cad"},success:r=>{q.debug("Xunlei detail response",r);let l=1;r?r.includes("NOT_FOUND")||r.includes("SENSITIVE_RESOURCE")||r.includes("EXPIRED")?l=-1:r.includes("PASS_CODE_EMPTY")&&(l=2):l=0,t&&t({state:l})},error:function(){t&&t({state:0})}})},error:function(){t&&t({state:0})}})}},nainiu:{reg:/(?:https?:\/\/)?(?:[\w\-]+\.)?\bcowtransfer\.com\/s\/([\w\-]{10,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?(?:[\w\-]+\.)?cowtransfer\.com\/s\/([\w\-]{10,})(?!\.)/gi,prefix:"https://cowtransfer.com/s/",checkFun:(e,t)=>{q.info("Nainiu check id "+e),Ue.ajax({type:"get",url:"https://cowtransfer.com/core/api/transfer/share?uniqueUrl="+e,success:s=>{q.debug("Nainiu check response",s);let n=typeof s=="string"?JSON.parse(s):s,o=1;s?n.code!="0000"?o=-1:n.data.needPassword&&n.data.needPassword&&(o=2):o=0,t&&t({state:o})},error:function(){t&&t({state:0})}})}},wenshushu:{reg:/(?:https?:\/\/)?\bt.wss.ink\/f\/([\w\-]{8,})(?!\.)/gi,replaceReg:/(?:https?:\/\/)?wss1.cn\/f\/([\w\-]{8,})(?!\.)/gi,prefix:"https://t.wss.ink/f/",checkFun:(e,t)=>{q.info("Wenshushu check id "+e),Ue.ajax({type:"post",url:"https://www.wenshushu.cn/ap/task/mgrtask",data:JSON.stringify({tid:e}),headers:{"Content-Type":"application/json","x-token":"wss:7pmakczzw6i"},dataType:"json",success:s=>{q.debug("Wenshushu check response",s);let n=1;s?s.code!=0&&(n=-1):n=0,t&&t({state:n})},error:function(){t&&t({state:0})}})}},pan115:{reg:/(?:h?ttps?:\/\/)?(?:www\.)?\b(?:115|anxia|115cdn)\.com\/s\/([\w\-]{8,})(?!\.)/gi,replaceReg:/(?:h?ttps?:\/\/)?(?:www\.)?(?:115|anxia|115cdn)\.com\/s\/([\w\-]{8,})(?!\.)/gi,prefix:"https://115cdn.com/s/",checkFun:(e,t)=>{q.info("Pan115 check id "+e),e=e.replace("https://115cdn.com/s/",""),Ue.ajax({type:"get",url:"https://115cdn.com/webapi/share/snap?share_code="+e+"&receive_code=",success:s=>{q.debug("Pan115 check response",s);let n=typeof s=="string"?JSON.parse(s):s,o=0;s?n.state?o=1:n.error&&n.error.includes("访问码")?o=2:n.error&&(n.error.includes("不存在或已被删除")||n.error.includes("分享已取消"))&&(o=-1):o=0,t&&t({state:o})},error:function(){t&&t({state:0})}})}},bilibili:{reg:/(?:https?:\/\/)?(?:www\.)?bilibili\.com\/video\/(BV[\w\d]+|av\d+)/i,replaceReg:/(?:https?:\/\/)?(?:www\.)?bilibili\.com\/video\/(BV[\w\d]+|av\d+)/i,prefix:"https://www.bilibili.com/video/",checkFun:(e,t)=>{q.info("🔍 B站视频检测开始:",e);let s=e;e.includes("http")||(s=e.startsWith("BV")||e.startsWith("av")?`https://www.bilibili.com/video/${e}`:`https://www.bilibili.com/video/${e}`),q.info("📡 请求URL:",s),Ue.ajax({type:"GET",url:s,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8"},timeout:1e4,success:n=>{q.info("B站视频响应:",{videoId:e,responseLength:n?n.length:0,responseType:typeof n});let o=1;!n||typeof n!="string"?(o=0,q.warn("B站视频无响应或响应格式错误")):n.includes("视频不见了")||n.includes("视频内容已被UP主删除")||n.includes("视频无法观看")||n.includes("啥都木有")||n.includes("页面不存在")?(o=-1,q.warn("B站视频失效:",e)):(o=1,q.info("B站视频有效:",e));const r={state:o};q.info("B站视频检测结果:",r),t&&t(r)},error:function(n){q.error("💥 B站视频请求失败:",n),t&&t({state:0})}})}}};class ac{constructor(){this.checkCache=new Map,this.cacheTimeout=5*60*1e3}identifyLink(t){if(!t||typeof t!="string")return null;for(const[s,n]of Object.entries(Wr)){n.reg.lastIndex=0;const o=n.reg.exec(t);if(o)return{type:s,shareId:o[2]||o[1],url:t}}return null}async checkLink(t,s){q.info("开始检测链接:",t);const n=this.identifyLink(t);if(!n){const l={state:0,message:"不支持的链接类型"};return q.warn("不支持的链接类型:",t),s&&s(l),l}q.info("识别链接信息:",n);const o=`${n.type}_${n.shareId}`,r=this.checkCache.get(o);return r&&Date.now()-r.timestamp<this.cacheTimeout?(q.info("使用缓存结果:",o,r.result),s&&s(r.result),r.result):new Promise(l=>{const i=Wr[n.type];if(!i||!i.checkFun){const u={state:0,message:"检测功能未实现"};q.error("检测功能未实现:",n.type),s&&s(u),l(u);return}q.info("开始执行检测函数:",n.type,n.shareId);try{i.checkFun(n.shareId,u=>{q.info("检测函数回调:",{type:n.type,shareId:n.shareId,result:u}),this.checkCache.set(o,{result:u,timestamp:Date.now()}),q.info("结果已缓存:",o),s&&s(u),l(u)})}catch(u){q.error("检测函数执行异常:",u);const p={state:0,message:"检测异常: "+u.message};s&&s(p),l(p)}})}getStateInfo(t){return{1:{text:"有效",class:"success",color:"#52c41a"},2:{text:"有效",class:"warning",color:"#faad14"},0:{text:"检测中...",class:"loading",color:"#1890ff"},[-1]:{text:"失效",class:"error",color:"#ff4d4f"},11:{text:"部分违规",class:"partial",color:"#fa8c16"}}[t]||{text:"未知",class:"unknown",color:"#d9d9d9"}}clearCache(){this.checkCache.clear()}}const to=new ac,uc={class:"link-manager"},cc={key:0,class:"modal-overlay"},dc={class:"modal-content"},fc={class:"modal-body"},pc={class:"form-row"},hc={class:"form-group"},gc={class:"form-row"},mc={key:0,class:"form-group"},vc={key:1,class:"form-group"},_c={class:"input-wrapper"},yc={class:"form-group"},wc={class:"input-wrapper"},bc={key:0,class:"url-preview"},xc={class:"url-preview-text"},kc={class:"form-row"},Cc={class:"form-group"},Tc={class:"input-wrapper"},Sc={class:"form-group"},Ec={class:"input-wrapper"},Ac={class:"form-row"},Vc={class:"form-group"},Mc={class:"input-wrapper"},Lc={key:0,class:"form-group"},$c={class:"checkbox-group"},Uc={class:"form-actions"},Pc=["disabled"],Ic={key:1,class:"modal-overlay"},Dc={class:"modal-content"},Oc={class:"modal-body"},Fc={class:"form-row"},Rc={class:"form-group"},Bc={class:"form-row"},jc={key:0,class:"form-group"},Nc={key:1,class:"form-group"},zc={class:"input-wrapper"},qc={class:"form-group"},Hc={class:"input-wrapper"},Gc={key:0,class:"url-preview"},Wc={class:"url-preview-text"},Kc={class:"form-row"},Jc={class:"form-group"},Qc={class:"input-wrapper"},Zc={class:"form-group"},Yc={class:"input-wrapper"},Xc={class:"form-row"},ed={class:"form-group"},td={class:"input-wrapper"},sd={key:0,class:"form-group"},nd={class:"checkbox-group"},od={class:"form-actions"},rd=["disabled"],ld={class:"links-section"},id={class:"filter-bar"},ad={class:"filter-controls"},ud=["disabled"],cd={key:0,class:"links-list"},dd={key:1,class:"links-list"},fd={key:2,class:"links-list"},pd=["onClick"],hd={class:"link-header"},gd={key:0,class:"platform-badge"},md=["src","alt"],vd={class:"link-meta"},_d={key:0,class:"language"},yd={key:1,class:"file-size"},wd={key:2,class:"feature-tags"},bd={key:0,class:"feature-tag feature-4k"},xd={key:1,class:"feature-tag feature-hdr"},kd={key:2,class:"feature-tag feature-dolby"},Cd={key:3,class:"feature-tag feature-subtitle"},Td={key:0,class:"feature-tag feature-flac"},Sd={key:1,class:"feature-tag feature-wav"},Ed={class:"link-content"},Ad={class:"link-title-row"},Vd={class:"link-details"},Md=["title","onContextmenu"],Ld={class:"vote-section"},$d=["onClick","disabled"],Ud={viewBox:"0 0 100 100",class:"vote-icon",xmlns:"http://www.w3.org/2000/svg"},Pd=["fill"],Id=["onClick","disabled"],Dd={viewBox:"0 0 100 100",class:"vote-icon down-icon",xmlns:"http://www.w3.org/2000/svg"},Od=["fill"],Fd={class:"action-buttons"},Rd=["onClick"],Bd=["onClick"],jd=["onClick"],Nd={class:"link-footer"},zd={class:"footer-left"},qd=["href"],Hd={class:"author"},Gd={class:"footer-right"},Wd={class:"date"},Kd={key:0,class:"report-count"},Jd={key:3,class:"login-prompt"},Qd={key:4,class:"empty-state"},Zd={key:2,class:"pagination"},Yd=["disabled"],Xd={class:"pagination-info"},ef=["disabled"],tf={key:0,class:"modal-overlay"},sf={class:"modal-content"},nf={class:"modal-body"},of={class:"form-actions"},rf=["disabled"],lf={key:1,class:"modal-overlay"},af={class:"modal-content"},uf={class:"modal-body"},cf={class:"form-group"},df={class:"form-group"},ff={class:"input-wrapper"},pf={class:"form-actions"},hf=["disabled"],gf=800,As="doubanflix_link_draft",mf=Je({__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=$e(()=>t.linkType),n=$e(()=>({movies:"movie",albums:"album",books:"book",games:"game"})[t.subjectCategory]||"movie"),o=F([]),r=F(!1),l=F(!1),i=F(""),u=F(""),p=F(!1),d=F(!1),v=F(null),C=F(!1),b=F(new Set),x=F(new Map),I=F(new Set),U=F({page:1,limit:5,total:0,pages:0}),w=Ot({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}),y=Ot({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}),Q=F(!1),R=Ot({platform:"",sortBy:"created_at"}),ie=[{value:"",label:"请选择类型"},{value:"netdisk",label:"网盘"},{value:"bt",label:"BT"},{value:"online",label:"在线"}],ze=[{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:"蓝奏网盘"}];Xe(()=>w.url,(m,c)=>{if(m&&m.trim()){const h=pn(m.trim());if(h===De.value)return;De.value=h;const j=eo(m.trim());j.isValid&&(w.linkType=j.linkType,w.platform=j.platform,w.extractCode=j.extractCode)}else(!m||m.trim()==="")&&(De.value="",w.linkType="",w.platform="",w.extractCode="")}),Xe(()=>y.url,(m,c)=>{if(m!==c&&!Q.value)if(m&&m.trim()){const h=pn(m.trim());if(h===xe.value)return;xe.value=h;const j=eo(m.trim());j.isValid&&(y.linkType=j.linkType,y.platform=j.platform,y.extractCode=j.extractCode)}else(!m||m.trim()==="")&&(xe.value="",y.linkType="",y.platform="",y.extractCode="")}),Xe(()=>w.title,m=>{if(m&&m.trim()){const c=Gr(m.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)}}),Xe(()=>y.title,m=>{if(!Q.value&&m&&m.trim()){const c=Gr(m.trim());t.subjectCategory==="movies"?(y.has_4k=c.has_4k,y.has_hdr=c.has_hdr,y.has_dolby_atmos=c.has_dolby_atmos):t.subjectCategory==="albums"&&(y.is_flac=c.is_flac,y.is_wav=c.is_wav),c.file_size&&!y.size&&(y.size=c.file_size)}});const Pe=[{value:"created_at",label:"按时间"},{value:"likes_count",label:"按点赞数"},{value:"like_rate",label:"按点赞率"}],Ie=$e(()=>{switch(d.value?y.linkType:w.linkType){case"netdisk":return ze;default:return[{value:"",label:"请选择平台"}]}}),Qe=$e(()=>{const m=[{value:"",label:"所有平台"}];switch(t.linkType){case"netdisk":return m.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 m}}),ge=$e(()=>X.isAuthenticated.value),De=F(""),xe=F(""),Ve=async(m=1)=>{if(t.subjectId){if(X.initialized.value||(l.value=!0,await X.initAuth(),l.value=!1),!ge.value){o.value=[],U.value={page:1,limit:5,total:0,pages:0},r.value=!1,i.value="";return}r.value=!0,i.value="";try{const c=t.linkType==="all"?void 0:t.linkType,h=await Nt.getLinks(t.subjectId,{linkType:c,platform:R.platform||void 0,sortBy:R.sortBy,sortOrder:"desc",page:m,limit:U.value.limit,category:t.subjectCategory});h.success?(o.value=h.data.links||h.data,h.pagination?U.value={page:h.pagination.current_page||h.pagination.page||1,limit:h.pagination.per_page||h.pagination.limit||5,total:h.pagination.total_items||h.pagination.total||0,pages:h.pagination.total_pages||h.pagination.pages||0}:h.data&&h.data.pagination&&(U.value={page:h.data.pagination.current_page||h.data.pagination.page||1,limit:h.data.pagination.per_page||h.data.pagination.limit||5,total:h.data.pagination.total_items||h.data.pagination.total||0,pages:h.data.pagination.total_pages||h.data.pagination.pages||0})):h.error&&(h.error.includes("电影不存在")||h.error.includes("主题不存在"))?(console.log("主题不存在,静默处理"),o.value=[],U.value={page:1,limit:5,total:0,pages:0}):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):i.value=h.error}catch(c){c.message&&(c.message.includes("电影不存在")||c.message.includes("主题不存在"))?(console.log("主题不存在,静默处理"),o.value=[],U.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{r.value=!1}}},W=async()=>{if(ge.value){C.value=!0,i.value="";try{const m=await Nt.addLink({subjectId:t.subjectId,category:t.subjectCategory,linkType:w.linkType,platform:w.platform,url:De.value||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});m.success?(u.value=m.message,gn(),P(),p.value=!1,await Ve(),setTimeout(()=>{u.value=""},3e3)):m.error&&(m.error.includes("请先登录(不可用)")||m.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.error):i.value=m.error}catch(m){m.message&&(m.message.includes("请先登录(不可用)")||m.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.message):(i.value="添加链接失败",console.error("添加链接错误:",m))}finally{C.value=!1}}},k=F(new Map),O=F(new Map),ee=F(new Map),se=async(m,c)=>{if(!ge.value)return;const h=o.value.find(rt=>rt.id===m);if(!h)return;if(k.value.has(m)&&clearTimeout(k.value.get(m)),ee.value.has(m)){const rt=ee.value.get(m);rt.cancelled=!0,console.log("取消上一次正在执行的投票操作:",m)}O.value.has(m)||O.value.set(m,{originalUserVote:h.user_vote_type,originalUpVotes:h.up_votes||0,originalDownVotes:h.down_votes||0,clickSequence:[],link:h});const j=O.value.get(m);j.clickSequence.push({voteType:c,timestamp:Date.now()});const Ce=Ht(j.originalUserVote,j.clickSequence);let Tt=j.originalUpVotes,Se=j.originalDownVotes;j.originalUserVote==="up"?Ce===null?Tt=Math.max(0,j.originalUpVotes-1):Ce==="down"?(Tt=Math.max(0,j.originalUpVotes-1),Se=j.originalDownVotes+1):Tt=j.originalUpVotes:j.originalUserVote==="down"?Ce===null?Se=Math.max(0,j.originalDownVotes-1):Ce==="up"?(Se=Math.max(0,j.originalDownVotes-1),Tt=j.originalUpVotes+1):Se=j.originalDownVotes:Ce==="up"?Tt=j.originalUpVotes+1:Ce==="down"&&(Se=j.originalDownVotes+1),h.user_vote_type=Ce,h.up_votes=Tt,h.down_votes=Se;const St=setTimeout(async()=>{const rt=O.value.get(m);if(!rt)return;const pe={cancelled:!1,linkId:m,timestamp:Date.now()};ee.value.set(m,pe),k.value.delete(m),O.value.delete(m),await bt(rt,pe),ee.value.get(m)===pe&&ee.value.delete(m)},gf);k.value.set(m,St)},bt=async(m,c)=>{const{originalUserVote:h,originalUpVotes:j,originalDownVotes:Ce,clickSequence:Tt,link:Se}=m,St=Se.id;if(c&&c.cancelled){console.log("投票操作已被取消,跳过API请求:",St);return}const rt=Ht(h,Tt);if(console.log("分析用户投票意图:",{linkId:St,originalUserVote:h,clickSequence:Tt.map(pe=>pe.voteType),finalIntention:rt,currentUIState:Se.user_vote_type,executionId:c==null?void 0:c.timestamp}),rt===h){console.log("用户最终意图与原始状态相同,跳过API请求");return}try{if(c&&c.cancelled){console.log("API请求前检查:投票操作已被取消:",St);return}let pe;if(rt===null?pe=await Nt.removeVote(St,j,Ce,h,n.value):pe=await Nt.voteLink(St,rt,n.value),c&&c.cancelled){console.log("API请求完成后检查:投票操作已被取消,忽略结果:",St);return}pe.success?pe.data&&(Se.user_vote_type=pe.data.user_vote_type,Se.up_votes=pe.data.up_votes||0,Se.down_votes=pe.data.down_votes||0):(Se.user_vote_type=h,Se.up_votes=j,Se.down_votes=Ce,pe.error&&(pe.error.includes("请先登录(不可用)")||pe.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",pe.error):i.value=pe.error)}catch(pe){if(c&&c.cancelled){console.log("异常处理中检查:投票操作已被取消,忽略错误:",St);return}Se.user_vote_type=h,Se.up_votes=j,Se.down_votes=Ce,pe.message&&(pe.message.includes("请先登录(不可用)")||pe.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",pe.message):(i.value="投票操作失败",console.error("投票请求错误:",pe))}},Ht=(m,c)=>{if(c.length===0)return m;let h=m;for(const j of c){const{voteType:Ce}=j;h===Ce?h=null:h=Ce}return h},xt=async m=>{ht.value=m.id,kt.value=m.subject_id||m.movie_id,Ms.value=!0},qe=()=>{Ms.value=!1,ht.value="",kt.value="",Ct.value=!1},hn=async()=>{if(!(!ht.value||!kt.value))try{Ct.value=!0;const m=await Nt.deleteLink(kt.value,ht.value,t.subjectCategory);m.success?(u.value=m.message,qe(),await Ve(),setTimeout(()=>{u.value=""},3e3)):m.error&&(m.error.includes("请先登录(不可用)")||m.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.error):i.value=m.error}catch(m){m.message&&(m.message.includes("请先登录(不可用)")||m.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.message):(i.value="删除链接失败",console.error("删除链接错误:",m))}finally{Ct.value=!1}},gn=()=>{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}),De.value=""},Ms=F(!1),ht=F(""),kt=F(""),Ct=F(!1),Gt=F(!1),ye=Ot({linkId:"",type:"",reason:""}),Ls=F(!1),f=[{value:"invalid_link",label:"无效链接"},{value:"copyright_issue",label:"版权问题"},{value:"malicious_link",label:"恶意链接"},{value:"spam",label:"垃圾信息"},{value:"fake_content",label:"虚假内容"},{value:"other",label:"其他"}],g=m=>{ge.value&&(ye.linkId=m,ye.type="invalid_link",ye.reason="",Gt.value=!0)},_=async()=>{if(!ye.type){ge.value&&(i.value="请选择反馈类型");return}Ls.value=!0,i.value="";try{const m=await Nt.reportLink(ye.linkId,ye.type,ye.reason,n.value);m.success?(u.value=m.message,Gt.value=!1,await Ve(),setTimeout(()=>{u.value=""},3e3)):m.error&&(m.error.includes("请先登录(不可用)")||m.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.error):i.value=m.error}catch(m){m.message&&(m.message.includes("请先登录(不可用)")||m.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.message):(i.value="反馈提交失败",console.error("反馈错误:",m))}finally{Ls.value=!1}},A=()=>{Gt.value=!1,ye.linkId="",ye.reason="",ye.description=""},T=()=>{const m={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(m).some(h=>h&&h!==""&&typeof h!="number")&&localStorage.setItem(As,JSON.stringify(m))},S=()=>{try{const m=localStorage.getItem(As);if(m){const c=JSON.parse(m);if(Date.now()-c.timestamp>24*60*60*1e3)localStorage.removeItem(As);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(m){console.error("恢复草稿失败:",m),localStorage.removeItem(As)}return!1},P=()=>{localStorage.removeItem(As)},$=()=>{p.value=!0,S()&&console.log("已恢复草稿内容")},L=()=>{T(),p.value=!1,gn()},E=()=>{d.value=!1,v.value=null,D()},z=m=>{v.value=m,Q.value=!0,y.id=m.id,y.linkType=m.type,y.platform=m.platform||"",y.url=m.url,y.extractCode=m.password||"",y.title=m.title||"",y.size=m.size||"",y.original_url=m.original_url||"",y.has_4k=m.has_4k||!1,y.has_hdr=m.has_hdr||!1,y.has_dolby_atmos=m.has_dolby_atmos||!1,y.has_subtitles=m.has_subtitles||!1,y.is_flac=m.is_flac||!1,y.is_wav=m.is_wav||!1,y.url&&y.url.trim()?xe.value=pn(y.url.trim()):xe.value="",d.value=!0,Io(()=>{if(Q.value=!1,y.url&&y.url.trim()&&(!y.linkType||!y.platform)){const c=eo(y.url.trim());c.isValid&&(y.linkType=c.linkType,y.platform=c.platform,!y.extractCode&&c.extractCode&&(y.extractCode=c.extractCode))}})},D=()=>{y.id="",y.linkType="",y.platform="",y.extractCode="",y.title="",y.size="",y.original_url="",y.has_4k=!1,y.has_hdr=!1,y.has_dolby_atmos=!1,y.has_subtitles=!1,y.is_flac=!1,y.is_wav=!1,xe.value=""},N=async()=>{if(!C.value)try{C.value=!0,i.value="";const m={...y};xe.value&&xe.value.trim()&&(m.url=xe.value.trim());const c=await Nt.updateLink(m.id,m,t.subjectId,t.subjectCategory);c.success?(u.value=c.message,E(),await Ve(U.value.page),setTimeout(()=>{u.value=""},3e3)):c.error&&(c.error.includes("请先登录(不可用)")||c.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",c.error):i.value=c.error}catch(m){console.error("修改链接失败:",m),m.message&&(m.message.includes("请先登录(不可用)")||m.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",m.message):i.value=m.message||"修改链接失败"}finally{C.value=!1}},K=m=>m.hasOwnProperty("is_owner")?ge.value&&m.is_owner:ge.value&&X.userId.value===m.user_id,Y=m=>{if(!m)return null;try{if(new URL(m).hostname.includes("bilibili.com"))return"bilibili"}catch{}return null},ae=m=>({quark:"夸克",ali:"阿里",baidu:"百度",tianyi:"天翼",mobile:"移动",115:"115",xunlei:"迅雷",uc:"UC",123:"123",lanzou:"蓝奏",bilibili:"B站",iqiyi:"爱奇艺",youku:"优酷",tencent:"腾讯",bt:"磁力"})[m]||m,ne=m=>{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>'),bilibili:"data:image/svg+xml;base64,"+btoa('<svg t="1760446076356" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15778" width="200" height="200"><path d="M306.005333 117.632L444.330667 256h135.296l138.368-138.325333a42.666667 42.666667 0 0 1 60.373333 60.373333L700.330667 256H789.333333A149.333333 149.333333 0 0 1 938.666667 405.333333v341.333334a149.333333 149.333333 0 0 1-149.333334 149.333333h-554.666666A149.333333 149.333333 0 0 1 85.333333 746.666667v-341.333334A149.333333 149.333333 0 0 1 234.666667 256h88.96L245.632 177.962667a42.666667 42.666667 0 0 1 60.373333-60.373334zM789.333333 341.333333h-554.666666a64 64 0 0 0-63.701334 57.856L170.666667 405.333333v341.333334a64 64 0 0 0 57.856 63.701333L234.666667 810.666667h554.666666a64 64 0 0 0 63.701334-57.856L853.333333 746.666667v-341.333334A64 64 0 0 0 789.333333 341.333333zM341.333333 469.333333a42.666667 42.666667 0 0 1 42.666667 42.666667v85.333333a42.666667 42.666667 0 0 1-85.333333 0v-85.333333a42.666667 42.666667 0 0 1 42.666666-42.666667z m341.333334 0a42.666667 42.666667 0 0 1 42.666666 42.666667v85.333333a42.666667 42.666667 0 0 1-85.333333 0v-85.333333a42.666667 42.666667 0 0 1 42.666667-42.666667z" fill="#fb7299" p-id="15779"></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[m]||c.quark},Oe=m=>{const c=new Date(m);return c.toLocaleDateString("zh-CN")+" "+c.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},Me=m=>{u.value="已复制到剪贴板",setTimeout(()=>{u.value=""},2e3)},tt=async(m,c)=>{try{if(window.open(m,"_blank"),c)try{await navigator.clipboard.writeText(c),u.value=`链接已打开,提取码 "${c}" 已复制到剪贴板`}catch{const j=document.createElement("textarea");j.value=c,j.style.position="fixed",j.style.left="-999999px",j.style.top="-999999px",document.body.appendChild(j),j.focus(),j.select();try{document.execCommand("copy"),u.value=`链接已打开,提取码 "${c}" 已复制到剪贴板`}catch{u.value=`链接已打开,提取码: ${c} (请手动复制)`}finally{document.body.removeChild(j)}}else u.value="链接已打开";setTimeout(()=>{u.value=""},3e3)}catch(h){console.error("操作失败:",h),i.value="操作失败"}},st=(m,c)=>{m.preventDefault(),tt(c.url,c.password)},Wt=m=>{b.value.has(m)?b.value.delete(m):(b.value.add(m),nt(m))},Pt=m=>b.value.has(m),ke=()=>{b.value.clear(),x.value.clear(),I.value.clear()},nt=async m=>{const c=o.value.find(j=>j.id===m);if(!(!c||!c.url||I.value.has(m)||x.value.has(m)||!to.identifyLink(c.url))){I.value.add(m),x.value.set(m,{state:0,message:"检测中..."});try{const j=await to.checkLink(c.url),Ce=to.getStateInfo(j.state);x.value.set(m,{state:j.state,message:Ce.text,class:Ce.class,color:Ce.color})}catch(j){console.error("链接检测失败:",j),x.value.set(m,{state:0,message:"检测失败",class:"error",color:"#ff4d4f"})}finally{I.value.delete(m)}}},$s=m=>x.value.get(m)||null,mn=m=>{const c=$s(m);return c?{1:"one-pan-tip-success",2:"one-pan-tip-success",0:"",[-1]:"one-pan-tip-error",11:"one-pan-tip-partial"}[c.state]||"one-pan-tip-other":""},f1=m=>{const c=$s(m);return c&&c.message||""};Xe(()=>t.subjectId,async m=>{m&&(ke(),X.initialized.value||(l.value=!0,await X.initAuth(),l.value=!1),Ve())},{immediate:!0}),Xe(()=>t.linkType,async()=>{ke(),R.platform="",U.value.page=1,t.subjectId&&(X.initialized.value||(l.value=!0,await X.initAuth(),l.value=!1),Ve())});const tl=m=>{m>=1&&m<=U.value.pages&&(ke(),Ve(m))},p1=()=>{U.value.page>1&&tl(U.value.page-1)},h1=()=>{U.value.page<U.value.pages&&tl(U.value.page+1)},g1=()=>{const m=document.querySelector(".auth-container")||document.querySelector(".auth-component")||document.querySelector("[data-auth-component]")||document.querySelector("#user-section");if(m)m.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(h=>h.textContent.includes("👤")||h.textContent.includes("用户"));if(c)c.click();else{const h=new CustomEvent("switchToUserTab",{bubbles:!0,detail:{tab:"user"}});document.dispatchEvent(h)}}};return ss(async()=>{X.initialized.value||(l.value=!0,await X.initAuth(),l.value=!1),t.subjectId&&Ve()}),(m,c)=>(V(),M(_e,null,[a("div",uc,[d.value?(V(),M("div",cc,[a("div",dc,[a("div",{class:"modal-header"},[c[40]||(c[40]=a("h4",null,"修改链接",-1)),a("button",{class:"close-btn",onClick:E},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",fc,[a("form",{onSubmit:We(N,["prevent"])},[a("div",pc,[a("div",hc,[c[41]||(c[41]=a("label",null,"链接类型 *",-1)),Z(zt,{modelValue:y.linkType,"onUpdate:modelValue":c[0]||(c[0]=h=>y.linkType=h),options:ie,placeholder:"请选择类型",onChange:c[1]||(c[1]=h=>y.platform="")},null,8,["modelValue"])])]),a("div",gc,[y.linkType==="netdisk"?(V(),M("div",mc,[c[42]||(c[42]=a("label",null,"平台",-1)),Z(zt,{modelValue:y.platform,"onUpdate:modelValue":c[2]||(c[2]=h=>y.platform=h),options:Ie.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):B("",!0),y.linkType==="netdisk"?(V(),M("div",vc,[c[43]||(c[43]=a("label",null,"提取码",-1)),a("div",_c,[le(a("input",{type:"text","onUpdate:modelValue":c[3]||(c[3]=h=>y.extractCode=h),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[he,y.extractCode]])])])):B("",!0)]),a("div",yc,[c[45]||(c[45]=a("label",null,"链接地址 *",-1)),a("div",wc,[Z(qr,{modelValue:y.url,"onUpdate:modelValue":c[4]||(c[4]=h=>y.url=h),"recognized-url":xe.value,placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,8,["modelValue","recognized-url"])]),y.url&&xe.value?(V(),M("div",bc,[c[44]||(c[44]=a("small",{class:"url-preview-label"},"识别后的链接:",-1)),a("small",xc,G(xe.value),1)])):B("",!0)]),a("div",kc,[a("div",Cc,[c[46]||(c[46]=a("label",null,"标题描述 *",-1)),a("div",Tc,[le(a("input",{type:"text","onUpdate:modelValue":c[5]||(c[5]=h=>y.title=h),placeholder:"简短描述这个链接"},null,512),[[he,y.title]])])])]),a("div",Sc,[c[47]||(c[47]=a("label",null,"原文链接",-1)),a("div",Ec,[le(a("input",{type:"url","onUpdate:modelValue":c[6]||(c[6]=h=>y.original_url=h),placeholder:"原文链接地址(可选)"},null,512),[[he,y.original_url]])])]),a("div",Ac,[a("div",Vc,[c[48]||(c[48]=a("label",null,"文件大小",-1)),a("div",Mc,[le(a("input",{type:"text","onUpdate:modelValue":c[7]||(c[7]=h=>y.size=h),placeholder:"如: 2.5G 或 1024M(剧集一般填写单集平均大小)",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[he,y.size]])])])]),t.subjectCategory==="movies"||t.subjectCategory==="albums"?(V(),M("div",Lc,[c[49]||(c[49]=a("label",null,"特性标签",-1)),a("div",$c,[t.subjectCategory==="movies"?(V(),M(_e,{key:0},[Z(et,{modelValue:y.has_4k,"onUpdate:modelValue":c[8]||(c[8]=h=>y.has_4k=h),label:"4K画质",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:y.has_hdr,"onUpdate:modelValue":c[9]||(c[9]=h=>y.has_hdr=h),label:"HDR",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:y.has_dolby_atmos,"onUpdate:modelValue":c[10]||(c[10]=h=>y.has_dolby_atmos=h),label:"杜比全景声",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:y.has_subtitles,"onUpdate:modelValue":c[11]||(c[11]=h=>y.has_subtitles=h),label:"外挂字幕",color:"green"},null,8,["modelValue"])],64)):t.subjectCategory==="albums"?(V(),M(_e,{key:1},[Z(et,{modelValue:y.is_flac,"onUpdate:modelValue":c[12]||(c[12]=h=>y.is_flac=h),label:"FLAC无损",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:y.is_wav,"onUpdate:modelValue":c[13]||(c[13]=h=>y.is_wav=h),label:"WAV无损",color:"green"},null,8,["modelValue"])],64)):B("",!0)])])):B("",!0),a("div",Uc,[a("button",{type:"submit",disabled:C.value},G(C.value?"修改中...":"保存修改"),9,Pc),a("button",{type:"button",onClick:E},"取消")])],32)])])])):B("",!0),p.value?(V(),M("div",Ic,[a("div",Dc,[a("div",{class:"modal-header"},[c[51]||(c[51]=a("h4",null,"添加新链接",-1)),a("button",{class:"close-btn",onClick:L},c[50]||(c[50]=[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",Oc,[a("form",{onSubmit:We(W,["prevent"])},[a("div",Fc,[a("div",Rc,[c[52]||(c[52]=a("label",null,"链接类型 *",-1)),Z(zt,{modelValue:w.linkType,"onUpdate:modelValue":c[14]||(c[14]=h=>w.linkType=h),options:ie,placeholder:"请选择类型",onChange:c[15]||(c[15]=h=>w.platform="")},null,8,["modelValue"])])]),a("div",Bc,[w.linkType==="netdisk"?(V(),M("div",jc,[c[53]||(c[53]=a("label",null,"平台",-1)),Z(zt,{modelValue:w.platform,"onUpdate:modelValue":c[16]||(c[16]=h=>w.platform=h),options:Ie.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):B("",!0),w.linkType==="netdisk"?(V(),M("div",Nc,[c[54]||(c[54]=a("label",null,"提取码",-1)),a("div",zc,[le(a("input",{type:"text","onUpdate:modelValue":c[17]||(c[17]=h=>w.extractCode=h),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[he,w.extractCode]])])])):B("",!0)]),a("div",qc,[c[56]||(c[56]=a("label",null,"链接地址 *",-1)),a("div",Hc,[Z(qr,{modelValue:w.url,"onUpdate:modelValue":c[18]||(c[18]=h=>w.url=h),"recognized-url":De.value,placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,8,["modelValue","recognized-url"])]),w.url&&De.value?(V(),M("div",Gc,[c[55]||(c[55]=a("small",{class:"url-preview-label"},"识别后的链接:",-1)),a("small",Wc,G(De.value),1)])):B("",!0)]),a("div",Kc,[a("div",Jc,[c[57]||(c[57]=a("label",null,"标题描述 *",-1)),a("div",Qc,[le(a("input",{type:"text","onUpdate:modelValue":c[19]||(c[19]=h=>w.title=h),placeholder:"简短描述这个链接"},null,512),[[he,w.title]])])])]),a("div",Zc,[c[58]||(c[58]=a("label",null,"原文链接",-1)),a("div",Yc,[le(a("input",{type:"url","onUpdate:modelValue":c[20]||(c[20]=h=>w.original_url=h),placeholder:"原文链接地址(可选)"},null,512),[[he,w.original_url]])])]),a("div",Xc,[a("div",ed,[c[59]||(c[59]=a("label",null,"文件大小",-1)),a("div",td,[le(a("input",{type:"text","onUpdate:modelValue":c[21]||(c[21]=h=>w.size=h),placeholder:"如: 2.5G 或 1024M(剧集一般填写单集平均大小)",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[he,w.size]])])])]),t.subjectCategory==="movies"||t.subjectCategory==="albums"?(V(),M("div",sd,[c[60]||(c[60]=a("label",null,"特性标签",-1)),a("div",nd,[t.subjectCategory==="movies"?(V(),M(_e,{key:0},[Z(et,{modelValue:w.has_4k,"onUpdate:modelValue":c[22]||(c[22]=h=>w.has_4k=h),label:"4K画质",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:w.has_hdr,"onUpdate:modelValue":c[23]||(c[23]=h=>w.has_hdr=h),label:"HDR",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:w.has_dolby_atmos,"onUpdate:modelValue":c[24]||(c[24]=h=>w.has_dolby_atmos=h),label:"杜比全景声",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:w.has_subtitles,"onUpdate:modelValue":c[25]||(c[25]=h=>w.has_subtitles=h),label:"外挂字幕",color:"green"},null,8,["modelValue"])],64)):t.subjectCategory==="albums"?(V(),M(_e,{key:1},[Z(et,{modelValue:w.is_flac,"onUpdate:modelValue":c[26]||(c[26]=h=>w.is_flac=h),label:"FLAC无损",color:"green"},null,8,["modelValue"]),Z(et,{modelValue:w.is_wav,"onUpdate:modelValue":c[27]||(c[27]=h=>w.is_wav=h),label:"WAV无损",color:"green"},null,8,["modelValue"])],64)):B("",!0)])])):B("",!0),a("div",od,[a("button",{type:"submit",disabled:C.value},G(C.value?"添加中...":"添加链接"),9,rd),a("button",{type:"button",onClick:L},"取消")])],32)])])])):B("",!0),a("div",ld,[a("div",id,[a("div",ad,[s.value==="netdisk"?(V(),ks(zt,{key:0,modelValue:R.platform,"onUpdate:modelValue":c[28]||(c[28]=h=>R.platform=h),options:Qe.value,placeholder:"所有平台",onChange:c[29]||(c[29]=()=>{ke(),Ve()})},null,8,["modelValue","options"])):B("",!0),Z(zt,{modelValue:R.sortBy,"onUpdate:modelValue":c[30]||(c[30]=h=>R.sortBy=h),options:Pe,placeholder:"按时间",onChange:c[31]||(c[31]=()=>{ke(),Ve()})},null,8,["modelValue"])]),a("button",{class:"add-link-btn-compact",onClick:$,disabled:!ge.value,title:"添加链接"},c[61]||(c[61]=[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,ud)]),l.value?(V(),M("div",cd,[(V(),M(_e,null,Zs(5,h=>Z(Nr,{key:"auth-skeleton-"+h})),64))])):r.value?(V(),M("div",dd,[(V(),M(_e,null,Zs(5,h=>Z(Nr,{key:"skeleton-"+h})),64))])):o.value.length>0?(V(),M("div",fd,[(V(!0),M(_e,null,Zs(o.value,h=>(V(),M("div",{class:"link-item",key:h.id,onClick:j=>Wt(h.id)},[a("div",hd,[h.platform&&t.linkType!=="bt"&&t.linkType!=="online"||t.linkType==="online"&&Y(h.url)?(V(),M("div",gd,[a("img",{src:ne(h.platform||Y(h.url)),alt:ae(h.platform||Y(h.url)),class:"platform-icon"},null,8,md)])):B("",!0),a("div",vd,[h.language?(V(),M("span",_d,G(h.language),1)):B("",!0),h.size?(V(),M("span",yd,G(h.size),1)):B("",!0),t.subjectCategory==="movies"&&(h.has_4k||h.has_hdr||h.has_dolby_atmos||h.has_subtitles)||t.subjectCategory==="albums"&&(h.is_flac||h.is_wav)?(V(),M("div",wd,[t.subjectCategory==="movies"?(V(),M(_e,{key:0},[h.has_4k?(V(),M("span",bd,"4K")):B("",!0),h.has_hdr?(V(),M("span",xd,"HDR")):B("",!0),h.has_dolby_atmos?(V(),M("span",kd,"杜比")):B("",!0),h.has_subtitles?(V(),M("span",Cd,"外挂字幕")):B("",!0)],64)):t.subjectCategory==="albums"?(V(),M(_e,{key:1},[h.is_flac?(V(),M("span",Td,"FLAC")):B("",!0),h.is_wav?(V(),M("span",Sd,"WAV")):B("",!0)],64)):B("",!0)])):B("",!0)])]),a("div",Ed,[a("div",Ad,[h.title?(V(),M("div",{key:0,class:ve(["link-title",{expanded:Pt(h.id)}])},G(h.title),3)):B("",!0),a("div",{class:ve(["expand-arrow",{expanded:Pt(h.id)}])},c[62]||(c[62]=[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)]),le(a("div",Vd,[a("div",{class:ve(["link-url",mn(h.id)]),title:f1(h.id),onClick:c[32]||(c[32]=We(()=>{},["stop"])),onContextmenu:j=>st(j,h)},[Z(zr,{text:h.url,type:"url",onCopySuccess:Me},null,8,["text"])],42,Md),h.password?(V(),M("div",{key:0,class:"extract-code-container",onClick:c[33]||(c[33]=We(()=>{},["stop"]))},[c[63]||(c[63]=a("span",null,"提取码: ",-1)),Z(zr,{text:h.password,type:"code",onCopySuccess:Me},null,8,["text"])])):B("",!0)],512),[[an,Pt(h.id)]])]),le(a("div",{class:"link-actions",onClick:c[34]||(c[34]=We(()=>{},["stop"]))},[a("div",Ld,[a("button",{class:ve(["vote-btn up",{active:h.user_vote_type==="up",pending:O.value.has(h.id)}]),onClick:j=>se(h.id,"up"),disabled:!ge.value},[(V(),M("svg",Ud,[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:h.user_vote_type==="up"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,Pd)])),rs(" "+G(h.up_votes||0),1)],10,$d),a("button",{class:ve(["vote-btn down",{active:h.user_vote_type==="down",pending:O.value.has(h.id)}]),onClick:j=>se(h.id,"down"),disabled:!ge.value},[(V(),M("svg",Dd,[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:h.user_vote_type==="down"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,Od)])),rs(" "+G(h.down_votes||0),1)],10,Id)]),a("div",Fd,[K(h)?(V(),M("button",{key:0,class:"modify-btn",onClick:j=>z(h)}," 修改 ",8,Rd)):B("",!0),K(h)?(V(),M("button",{key:1,class:"delete-btn",onClick:j=>xt(h)}," 删除 ",8,Bd)):B("",!0),!K(h)&&ge.value?(V(),M("button",{key:2,class:"report-btn",onClick:j=>g(h.id)}," 反馈 ",8,jd)):B("",!0)])],512),[[an,Pt(h.id)]]),le(a("div",Nd,[a("div",zd,[h.original_url?(V(),M("a",{key:0,href:h.original_url,target:"_blank",class:"original-link",title:"查看原文"}," 来源 ",8,qd)):B("",!0),a("span",Hd,"添加by "+G(h.user_display_name||"匿名用户"),1)]),a("div",Gd,[a("span",Wd,G(Oe(h.created_at)),1),h.report_count>0?(V(),M("span",Kd," 被反馈 "+G(h.report_count)+" 次 ",1)):B("",!0)])],512),[[an,Pt(h.id)]])],8,pd))),128))])):!r.value&&!ge.value&&o.value.length===0?(V(),M("div",Jd,[a("div",{class:"login-prompt-content"},[c[64]||(c[64]=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[65]||(c[65]=a("h3",null,"登录(不可用)后浏览链接",-1)),c[66]||(c[66]=a("p",null,"登录(不可用)后即可查看和添加资源链接",-1)),a("button",{class:"login-btn",onClick:g1}," 立即登录(不可用) ")])])):!r.value&&o.value.length===0?(V(),M("div",Qd,c[67]||(c[67]=[a("p",null,"暂无链接,成为第一个添加链接的人吧!",-1)]))):B("",!0)]),U.value.pages>1&&!r.value?(V(),M("div",Zd,[a("button",{class:"pagination-btn",disabled:U.value.page<=1,onClick:p1}," 上一页 ",8,Yd),a("span",Xd,G(U.value.page)+" / "+G(U.value.pages),1),a("button",{class:"pagination-btn",disabled:U.value.page>=U.value.pages,onClick:h1}," 下一页 ",8,ef)])):B("",!0),Z(jr,{"error-message":i.value,"success-message":u.value,duration:3e3,"auto-close":!0,onClearError:c[35]||(c[35]=h=>i.value=""),onClearSuccess:c[36]||(c[36]=h=>u.value="")},null,8,["error-message","success-message"])]),Ms.value?(V(),M("div",tf,[a("div",sf,[a("div",{class:"modal-header"},[c[69]||(c[69]=a("h4",null,"删除链接",-1)),a("button",{class:"close-btn",onClick:qe},c[68]||(c[68]=[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",nf,[c[70]||(c[70]=a("div",{class:"delete-confirmation"},[a("div",{class:"warning-icon"},"⚠️"),a("p",null,"确定要删除这个链接吗?"),a("p",{class:"warning-text"},"此操作不可撤销")],-1)),a("div",of,[a("button",{type:"button",class:"delete-confirm-btn",disabled:Ct.value,onClick:hn},G(Ct.value?"删除中...":"确认删除"),9,rf),a("button",{type:"button",onClick:qe}," 取消 ")])])])])):B("",!0),Gt.value?(V(),M("div",lf,[a("div",af,[a("div",{class:"modal-header"},[c[72]||(c[72]=a("h4",null,"反馈链接",-1)),a("button",{class:"close-btn",onClick:A},c[71]||(c[71]=[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",uf,[a("form",{onSubmit:We(_,["prevent"])},[a("div",cf,[c[73]||(c[73]=a("label",{for:"report-type"},"反馈类型 *",-1)),Z(zt,{id:"report-type",modelValue:ye.type,"onUpdate:modelValue":c[37]||(c[37]=h=>ye.type=h),options:f,placeholder:"请选择反馈类型",required:""},null,8,["modelValue"])]),a("div",df,[c[74]||(c[74]=a("label",{for:"report-reason"},"详细原因",-1)),a("div",ff,[le(a("input",{id:"report-reason","onUpdate:modelValue":c[38]||(c[38]=h=>ye.reason=h),placeholder:"请详细描述反馈原因(可选)",rows:"4"},null,512),[[he,ye.reason]])])]),a("div",pf,[a("button",{type:"submit",disabled:Ls.value||!ye.type},G(Ls.value?"提交中...":"提交反馈"),9,hf),a("button",{type:"button",onClick:A}," 取消 ")])],32)])])])):B("",!0)],64))}},[["__scopeId","data-v-07b4981c"]]),vf={class:"content-wrapper"},_f={class:"navigation-bar"},yf={class:"tab-content"},wf={key:0,class:"tab-panel"},bf={key:1,class:"no-subject"},xf={key:1,class:"tab-panel"},kf=Je({__name:"WindowContent",setup(e){const t=F("links"),s=F("netdisk"),n=F(""),o=F(""),r=F({title:"",year:"",rating:"",category:""}),l=(u,p=null)=>{t.value=u,u==="links"&&p&&(s.value=p)},i=()=>{try{const u=window.location.href;let p="",d=null;if(u.includes("movie.douban.com/subject/")?(p="movies",d=u.match(/\/subject\/(\d+)\/?/)):u.includes("music.douban.com/subject/")?(p="albums",d=u.match(/\/subject\/(\d+)\/?/)):u.includes("book.douban.com/subject/")?(p="books",d=u.match(/\/subject\/(\d+)\/?/)):u.includes("www.douban.com/game/")&&(p="games",d=u.match(/\/game\/(\d+)\/?/)),d&&p)n.value=d[1],o.value=p,r.value.category=p;else{n.value="",o.value="",r.value={title:"",year:"",rating:"",category:""};return}const v=document.querySelector('h1 span[property="v:itemreviewed"]')||document.querySelector("h1 span")||document.querySelector("h1");v&&(r.value.title=v.textContent.trim());const C=document.querySelector(".year")||document.querySelector("span.year");if(C){const x=C.textContent.match(/(\d{4})/);x&&(r.value.year=x[1])}const b=document.querySelector(".rating_num")||document.querySelector('[property="v:average"]');b&&(r.value.rating=b.textContent.trim())}catch(u){console.error("获取豆瓣主题信息失败:",u)}};return ss(()=>{i(),new MutationObserver(()=>{(window.location.href.includes("/subject/")||window.location.href.includes("/game/"))&&setTimeout(i,500)}).observe(document.body,{childList:!0,subtree:!0});const p=d=>{d.detail&&d.detail.tab==="user"&&l("user")};return document.addEventListener("switchToUserTab",p),()=>{document.removeEventListener("switchToUserTab",p)}}),(u,p)=>(V(),M("div",vf,[a("div",_f,[a("button",{class:ve(["nav-btn",{active:t.value==="links"&&s.value==="netdisk"}]),onClick:p[0]||(p[0]=d=>l("links","netdisk"))}," 💾 网盘 ",2),a("button",{class:ve(["nav-btn",{active:t.value==="links"&&s.value==="bt"}]),onClick:p[1]||(p[1]=d=>l("links","bt"))}," 🧲 BT ",2),a("button",{class:ve(["nav-btn",{active:t.value==="links"&&s.value==="online"}]),onClick:p[2]||(p[2]=d=>l("links","online"))}," 📺 在线 ",2),a("button",{class:ve(["nav-btn",{active:t.value==="user"}]),onClick:p[3]||(p[3]=d=>l("user"))}," 👤 用户 ",2)]),a("div",yf,[t.value==="links"?(V(),M("div",wf,[n.value&&o.value?(V(),ks(mf,{key:0,"subject-id":n.value,"subject-category":o.value,"link-type":s.value},null,8,["subject-id","subject-category","link-type"])):(V(),M("div",bf,p[4]||(p[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)])))])):B("",!0),t.value==="user"?(V(),M("div",xf,[Z(ju)])):B("",!0)])]))}},[["__scopeId","data-v-92e3c6bc"]]),Cf={key:0,class:"debug-panel"},Tf={class:"debug-content"},Sf={class:"debug-section"},Ef={class:"status-item"},Af={class:"status-item"},Vf={class:"value"},Mf={class:"status-item"},Lf={class:"value token"},$f={class:"status-item"},Uf={class:"value token"},Pf={class:"status-item"},If={class:"debug-section"},Df={key:0,class:"test-result"},Of={class:"debug-section"},Ff={class:"headers-preview"},Rf=Je({__name:"DebugPanel",setup(e){const t=F(!1),s=F(""),n=F(""),o=$e(()=>X.isAuthenticated.value),r=$e(()=>X.token.value),l=$e(()=>X.user.value?`${X.user.value.email} (ID: ${X.user.value.id})`:"无用户信息"),i=$e(()=>{const b=r.value,x=s.value;return b&&x&&b===x}),u=$e(()=>{const b=s.value;return JSON.stringify(b?{Authorization:`Bearer ${b.substring(0,20)}...`,"Content-Type":"application/json"}:{"Content-Type":"application/json"},null,2)}),p=()=>{t.value=!t.value,t.value&&d()},d=()=>{s.value=localStorage.getItem("auth_token")||"",console.log("Token状态刷新:",{memory:r.value,localStorage:s.value,match:i.value})},v=async()=>{try{n.value="测试中...";const b=await wt.getLinks();n.value=JSON.stringify({success:!0,dataLength:(b==null?void 0:b.length)||0,message:"请求成功"},null,2)}catch(b){n.value=JSON.stringify({success:!1,error:b.message,status:b.status||"unknown"},null,2)}},C=()=>{localStorage.removeItem("auth_token"),X.token.value=null,X.user.value=null,d(),n.value="",console.log("所有Token已清除")};return ss(()=>{d(),window.addEventListener("storage",b=>{b.key==="auth_token"&&d()})}),(b,x)=>t.value?(V(),M("div",Cf,[a("div",{class:"debug-header"},[x[0]||(x[0]=a("h3",null,"🔧 调试面板",-1)),a("button",{onClick:p,class:"close-btn"},"×")]),a("div",Tf,[a("div",Sf,[x[6]||(x[6]=a("h4",null,"认证状态",-1)),a("div",Ef,[x[1]||(x[1]=a("span",{class:"label"},"登录(不可用)状态:",-1)),a("span",{class:ve(["status",o.value?"success":"error"])},G(o.value?"已登录(不可用)":"未登录(不可用)"),3)]),a("div",Af,[x[2]||(x[2]=a("span",{class:"label"},"用户信息:",-1)),a("span",Vf,G(l.value),1)]),a("div",Mf,[x[3]||(x[3]=a("span",{class:"label"},"Token (内存):",-1)),a("span",Lf,G(r.value||"无"),1)]),a("div",$f,[x[4]||(x[4]=a("span",{class:"label"},"Token (localStorage):",-1)),a("span",Uf,G(s.value||"无"),1)]),a("div",Pf,[x[5]||(x[5]=a("span",{class:"label"},"Token匹配:",-1)),a("span",{class:ve(["status",i.value?"success":"error"])},G(i.value?"匹配":"不匹配"),3)])]),a("div",If,[x[8]||(x[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:C,class:"debug-btn danger"},"清除所有Token")]),n.value?(V(),M("div",Df,[x[7]||(x[7]=a("h5",null,"API测试结果:",-1)),a("pre",null,G(n.value),1)])):B("",!0)]),a("div",Of,[x[9]||(x[9]=a("h4",null,"请求头预览",-1)),a("div",Ff,[a("code",null,G(u.value),1)])])])])):B("",!0)}},[["__scopeId","data-v-dba5723e"]]),Vs="1.1.7",Kr="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",qt={LAST_CHECK_TIME:"doubanflix_last_version_check",SKIP_VERSION:"doubanflix_skip_version",SKIP_UNTIL:"doubanflix_skip_until"};function Jr(e,t){const s=e.split(".").map(Number),n=t.split(".").map(Number),o=Math.max(s.length,n.length);for(let r=0;r<o;r++){const l=s[r]||0,i=n[r]||0;if(l>i)return 1;if(l<i)return-1}return 0}async function Bf(){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:Kr,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,n=s.match(/@version\s+([^\r\n]+)/),o=s.match(/@name\s+([^\r\n]+)/),r=s.match(/@description\s+([^\r\n]+)/);let l="";const i=s.split(`
`);let u=!1;for(const p of i){if(p.trim()==="// ==/UserScript==")break;if(p.includes("@updatenote")){u=!0;const d=p.match(/@updatenote\s+(.+)/);d&&(l=d[1].trim())}else if(u){const d=p.match(/^\/\/\s+(.+)/);if(d&&!p.includes("@"))l+=`
`+d[1].trim();else if(p.trim().startsWith("//")&&p.includes("@"))break}}if(!n)throw new Error("无法解析脚本版本信息");e({version:n[1].trim(),name:o?o[1].trim():"DoubanFlix",description:r?r[1].trim():"",updateNote:l||"",downloadUrl:Kr,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 Qr(){const e=localStorage.getItem(qt.SKIP_UNTIL);if(e){const t=parseInt(e);if(Date.now()<t)return!0;localStorage.removeItem(qt.SKIP_UNTIL),localStorage.removeItem(qt.SKIP_VERSION)}return!1}function Zr(e,t=7){const s=Date.now()+t*24*60*60*1e3;localStorage.setItem(qt.SKIP_VERSION,e),localStorage.setItem(qt.SKIP_UNTIL,s.toString())}async function Yr(e=!1){try{if(!e&&Qr())return{hasUpdate:!1,skipped:!0,message:"用户选择暂时跳过版本检查"};const t=await Bf();if(!t.success)return{hasUpdate:!1,error:!0,message:`检查更新失败: ${t.error}`};const s=t.version,n=Jr(s,Vs);return localStorage.setItem(qt.LAST_CHECK_TIME,Date.now().toString()),n>0?{hasUpdate:!0,currentVersion:Vs,latestVersion:s,scriptInfo:t,message:`发现新版本 ${s},当前版本 ${Vs}`}:{hasUpdate:!1,currentVersion:Vs,latestVersion:s,message:"当前已是最新版本"}}catch(t){return console.error("版本检查失败:",t),{hasUpdate:!1,error:!0,message:`版本检查失败: ${t.message}`}}}function Xr(){const e=localStorage.getItem(qt.LAST_CHECK_TIME);return e?parseInt(e):null}function jf(e=24){const t=Xr();if(!t)return!0;const s=Date.now(),n=e*60*60*1e3;return s-t>=n}const el={checkForUpdates:Yr,setSkipVersionCheck:Zr,shouldSkipVersionCheck:Qr,getLastCheckTime:Xr,shouldCheckForUpdates:jf,compareVersions:Jr,CURRENT_VERSION:Vs},Nf={name:"UpdateNotification",props:{updateInfo:{type:Object,required:!0},visible:{type:Boolean,default:!1}},emits:["close","update","later"],setup(e,{emit:t}){const s=F(!1),n=F(!1),o=()=>{t("close")};return{skipForWeek:s,isUpdating:n,handleClose:o,handleOverlayClick:()=>{o()},handleSkipChange:()=>{},handleLater:()=>{s.value&&el.setSkipVersionCheck(e.updateInfo.latestVersion,7),t("later"),o()},handleUpdate:async()=>{try{n.value=!0,s.value&&el.setSkipVersionCheck(e.updateInfo.latestVersion,7),t("update",e.updateInfo),setTimeout(()=>{window.open(e.updateInfo.scriptInfo.downloadUrl,"_blank"),o()},500)}catch(d){console.error("处理更新失败:",d)}finally{setTimeout(()=>{n.value=!1},1e3)}},formatUpdateLog:d=>{if(!d)return"";if(d.includes(`
`))return d.split(`
`).map(x=>x.trim()).filter(x=>x.length>0).map(x=>x.match(/^\d+\.\s/)?x:x.startsWith("*")?x.replace(/^\*\s*/,"• "):x.startsWith("-")?x.replace(/^-\s*/,"• "):"• "+x).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 C=d;for(const x of v){const I=C.toLowerCase().indexOf(x.toLowerCase());if(I!==-1){C=C.substring(I+x.length).replace(/^[:\s\-=]+/,"").trim();break}}const b=C.split(`
`).filter(x=>x.trim());return b.length>5&&(C=b.slice(0,5).join(`
`)+`
...`),C.replace(/\n/g,"<br>").replace(/\*\s*(.+)/g,"• $1").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>")}}}},zf={class:"notification-header"},qf={class:"version-info"},Hf={class:"version-row"},Gf={class:"version-current"},Wf={class:"version-row"},Kf={class:"version-latest"},Jf={key:0,class:"update-description"},Qf=["innerHTML"],Zf={class:"notification-actions"},Yf={class:"skip-option"},Xf={class:"skip-checkbox"},e1={class:"action-buttons"},t1=["disabled"],s1=["disabled"],n1={key:0,class:"loading-spinner"};function o1(e,t,s,n,o,r){var l,i,u,p;return s.visible?(V(),M("div",{key:0,class:"update-notification-overlay",onClick:t[6]||(t[6]=(...d)=>n.handleOverlayClick&&n.handleOverlayClick(...d))},[a("div",{class:"update-notification",onClick:t[5]||(t[5]=We(()=>{},["stop"]))},[a("div",zf,[t[8]||(t[8]=yr('<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)=>n.handleClose&&n.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",qf,[a("div",Hf,[t[9]||(t[9]=a("span",{class:"version-label"},"当前版本:",-1)),a("span",Gf,G(s.updateInfo.currentVersion),1)]),a("div",Wf,[t[10]||(t[10]=a("span",{class:"version-label"},"最新版本:",-1)),a("span",Kf,G(s.updateInfo.latestVersion),1)])]),(l=s.updateInfo.scriptInfo)!=null&&l.updateNote||(i=s.updateInfo.scriptInfo)!=null&&i.description?(V(),M("div",Jf,[t[11]||(t[11]=a("h4",{class:"description-title"},"更新日志",-1)),a("div",{class:"description-content",innerHTML:n.formatUpdateLog(((u=s.updateInfo.scriptInfo)==null?void 0:u.updateNote)||((p=s.updateInfo.scriptInfo)==null?void 0:p.description))},null,8,Qf)])):B("",!0),a("div",Zf,[a("div",Yf,[a("label",Xf,[le(a("input",{type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=d=>n.skipForWeek=d),onChange:t[2]||(t[2]=(...d)=>n.handleSkipChange&&n.handleSkipChange(...d))},null,544),[[xa,n.skipForWeek]]),t[12]||(t[12]=a("span",{class:"checkmark"},null,-1)),t[13]||(t[13]=a("span",{class:"skip-text"},"一周内不再提醒",-1))])]),a("div",e1,[a("button",{class:"btn btn-secondary",onClick:t[3]||(t[3]=(...d)=>n.handleLater&&n.handleLater(...d)),disabled:n.isUpdating}," 稍后提醒 ",8,t1),a("button",{class:"btn btn-primary",onClick:t[4]||(t[4]=(...d)=>n.handleUpdate&&n.handleUpdate(...d)),disabled:n.isUpdating},[n.isUpdating?(V(),M("span",n1)):B("",!0),rs(" "+G(n.isUpdating?"正在跳转...":"立即更新"),1)],8,s1)])])])])):B("",!0)}const r1=Je(Nf,[["render",o1],["__scopeId","data-v-8ddffaa9"]]),l1={key:0,class:"custom-window"},i1={class:"window-content"},a1={class:"window-header"},u1={class:"window-title"},c1=Je({__name:"App",setup(e){const t=F(!0),s=F(!1),n=F("DoubanFlix 1.1.7"),o=F(null),r=F(!1),l=()=>new Promise(U=>{const w=()=>{const Q=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 Q?(console.log("找到aside元素:",Q.className||Q.tagName),U(Q),!0):!1};if(w())return;const y=new MutationObserver(Q=>{for(const R of Q)if(R.type==="childList"){for(const ie of R.addedNodes)if(ie.nodeType===Node.ELEMENT_NODE&&w()){y.disconnect();return}}});y.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{y.disconnect(),console.log("超时未找到aside元素,强制显示窗口"),U(null)},1e4)}),i=()=>{t.value=!t.value,t.value&&s.value&&u()},u=()=>{const U=document.querySelector("#bilibili-custom-window");if(!U){console.log("未找到Vue应用容器");return}const w=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"]');w?U.parentNode!==w&&(w.firstChild?w.insertBefore(U,w.firstChild):w.appendChild(U),console.log("Vue应用容器已移动到aside元素的第一个位置:",w.className||w.tagName)):console.log("未找到aside元素,Vue应用容器保持在当前位置")},p=()=>{t.value=!1},d=async()=>{try{const U=await Yr();U.hasUpdate&&(o.value=U,r.value=!0)}catch(U){console.error("版本检查失败:",U)}},v=()=>{r.value=!1,o.value=null},C=()=>{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()},b=(U=0)=>{U>0&&Zr(U),v()},x=()=>{i()},I=U=>{U.ctrlKey&&U.key==="q"&&(U.preventDefault(),i())};return ss(async()=>{X.initAuth().catch(U=>{console.error("用户认证初始化失败:",U)}),window.addEventListener("toggle-window",x),document.addEventListener("keydown",I),await l(),s.value=!0,u(),setTimeout(()=>{d()},2e3)}),_s(()=>{window.removeEventListener("toggle-window",x),document.removeEventListener("keydown",I)}),(U,w)=>(V(),M(_e,null,[t.value&&s.value?(V(),M("div",l1,[a("div",i1,[Z(kf)]),a("div",a1,[a("span",u1,G(n.value),1),a("button",{class:"close-btn",onClick:p},"×")])])):B("",!0),Z(Rf),o.value&&r.value?(V(),ks(r1,{key:1,"update-info":o.value,visible:r.value,onClose:v,onUpdate:C,onLater:b},null,8,["update-info","visible"])):B("",!0)],64))}},[["__scopeId","data-v-1502c348"]]);async function d1(){const e=document.querySelectorAll("h1"),t=document.querySelector(".article");t&&e.length>0&&e.forEach(o=>{t.insertBefore(o,t.firstChild)});const s=document.createElement("div");s.id="bilibili-custom-window",document.body.appendChild(s),Aa(c1).mount("#bilibili-custom-window"),console.log("DoubanFlix应用已初始化")}d1()})()})();