DoubanFlix - 在豆瓣电影页面获取添加资源链接(网盘,磁力,在线)

在豆瓣电影页面获取添加资源链接

// ==UserScript==
// @name         DoubanFlix - 在豆瓣电影页面获取添加资源链接(网盘,磁力,在线)
// @namespace    http://tampermonkey.net/
// @version      1.0.5
// @description  在豆瓣电影页面获取添加资源链接
// @author       Moz
// @match        https://movie.douban.com/subject/*
// @grant        none
// @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-18ab98ae]{display:flex;justify-content:center;margin-bottom:16px}.switch-container[data-v-18ab98ae]{position:relative;display:flex;background:#f8f9fa;border-radius:8px;padding:4px;width:200px;height:40px}.switch-input[data-v-18ab98ae]{position:absolute;opacity:0;pointer-events:none}.switch-label[data-v-18ab98ae]{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-18ab98ae]{color:#007bff}.slider[data-v-18ab98ae]{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-18ab98ae]:hover{color:#007bff}.switch-input:checked+.switch-label[data-v-18ab98ae]{color:#007bff;font-weight:600}@media (max-width: 480px){.switch-container[data-v-18ab98ae]{width:180px;height:36px}.switch-label[data-v-18ab98ae]{font-size:13px}}.auth-container[data-v-d1c57c9f]{padding:16px}.user-info[data-v-d1c57c9f]{text-align:center}.user-header[data-v-d1c57c9f]{display:flex;align-items:center;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;position:relative}.user-avatar[data-v-d1c57c9f]{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-d1c57c9f]{flex:1;text-align:left}.user-display-name[data-v-d1c57c9f]{font-size:14px;font-weight:500;color:#333;margin-bottom:2px}.user-email[data-v-d1c57c9f]{font-size:12px;color:#666;margin-bottom:2px}.user-status[data-v-d1c57c9f]{font-size:12px;color:#28a745}.edit-nickname-btn[data-v-d1c57c9f]{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-d1c57c9f]:hover{background:#e8f5ff}.nickname-edit-form[data-v-d1c57c9f]{margin-bottom:16px;padding:12px;background:#fff;border:1px solid #dee2e6;border-radius:8px}.nickname-hint[data-v-d1c57c9f]{font-size:11px;color:#666;margin-top:4px}.nickname-actions[data-v-d1c57c9f]{display:flex;gap:8px;margin-top:12px}.save-nickname-btn[data-v-d1c57c9f]{padding:6px 12px;background:#beecc8;color:#2e8339;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.save-nickname-btn[data-v-d1c57c9f]:hover:not(:disabled){background:#cef3d6}.save-nickname-btn[data-v-d1c57c9f]:disabled{background:#6c757d;cursor:not-allowed}.cancel-nickname-btn[data-v-d1c57c9f]{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-d1c57c9f]:hover{background:#e4e4e4}.sign-out-btn[data-v-d1c57c9f]{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-d1c57c9f]:hover{background:#ffedef}.auth-forms[data-v-d1c57c9f]{width:100%}.auth-form[data-v-d1c57c9f]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-d1c57c9f]{display:flex;flex-direction:column}.form-group label[data-v-d1c57c9f]{font-size:12px;color:#333;margin-bottom:4px;font-weight:500}.form-input[data-v-d1c57c9f]{padding:8px 12px;border:1px solid #ddd;border-radius:8px;font-size:13px;transition:border-color .2s}.form-input[data-v-d1c57c9f]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.auth-submit-btn[data-v-d1c57c9f]{padding:10px 16px;background:#007bff;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;transition:background-color .2s;margin-top:8px}.auth-submit-btn[data-v-d1c57c9f]:hover:not(:disabled){background:#0056b3}.auth-submit-btn[data-v-d1c57c9f]:disabled{background:#6c757d;cursor:not-allowed}.forgot-password-link[data-v-d1c57c9f]{text-align:center;margin-top:15px}.link-btn[data-v-d1c57c9f]{background:none;border:none;color:#007bff;cursor:pointer;text-decoration:underline;font-size:14px;padding:0}.link-btn[data-v-d1c57c9f]:hover{color:#0056b3}.link-btn[data-v-d1c57c9f]:disabled{color:#6c757d;cursor:not-allowed;text-decoration:none}.back-button[data-v-d1c57c9f]{margin-bottom:20px}.back-btn[data-v-d1c57c9f]{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-d1c57c9f]:hover{color:#495057}.form-title[data-v-d1c57c9f]{font-size:24px;font-weight:700;text-align:center;margin-bottom:10px;color:#333}.form-description[data-v-d1c57c9f]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:25px;line-height:1.5}.proof-progress[data-v-d1c57c9f]{margin:20px 0}.progress-text[data-v-d1c57c9f]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:10px}.progress-bar[data-v-d1c57c9f]{width:100%;height:8px;background-color:#e9ecef;border-radius:4px;overflow:hidden}.progress-fill[data-v-d1c57c9f]{height:100%;background:linear-gradient(90deg,#007bff,#0056b3);transition:width .3s ease;border-radius:4px}.resend-code[data-v-d1c57c9f]{text-align:center;margin-top:15px}.error-message[data-v-d1c57c9f]{padding:8px 12px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;font-size:12px;margin-top:12px}.success-message[data-v-d1c57c9f]{padding:8px 12px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:4px;font-size:12px;margin-top:12px}.initializing-container[data-v-d1c57c9f]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.initializing-container .loading-spinner[data-v-d1c57c9f]{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #007bff;border-radius:50%;animation:spin-d1c57c9f 1s linear infinite;margin-bottom:16px}.initializing-container p[data-v-d1c57c9f]{color:#6c757d;font-size:14px;margin:0}@keyframes spin-d1c57c9f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.custom-select[data-v-8bcc774e]{position:relative;width:100%;font-size:14px}.select-trigger[data-v-8bcc774e]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border:1px solid #ddd;border-radius:6px;background-color:#fff;cursor:pointer;transition:all .2s ease;color:#333}.select-trigger[data-v-8bcc774e]:hover{border-color:#007bff;box-shadow:0 0 0 2px #007bff1a}.select-trigger[data-v-8bcc774e]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.selected-text[data-v-8bcc774e]{flex:1;text-align:left;color:#333}.arrow[data-v-8bcc774e]{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-8bcc774e]{transform:rotate(180deg);padding-left:0}.select-dropdown[data-v-8bcc774e]{position:absolute;top:110%;left:0;right:0;background:#fff;border:1px solid #ddd;border-top:none;border-radius:4px;box-shadow:0 4px 6px #0000001a;z-index:1000;max-height:400px;overflow-y:auto}.select-option[data-v-8bcc774e]{padding:4px 12px;cursor:pointer;transition:all .2s ease;color:#666;background-color:#fff;border-radius:6px;margin:2px}.select-option[data-v-8bcc774e]:hover{background-color:#f5f5f5!important;color:#333!important}.select-option.selected[data-v-8bcc774e]{background-color:#e3f2fd;color:#1976d2;font-weight:500}.select-option.selected[data-v-8bcc774e]:hover{background-color:#bbdefb!important;color:#1565c0!important}@media (prefers-color-scheme: dark){.select-trigger[data-v-8bcc774e]{background-color:#2d3748;border-color:#4a5568;color:#e2e8f0}.select-trigger[data-v-8bcc774e]:hover{border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed1a}.selected-text[data-v-8bcc774e]{color:#e2e8f0}.arrow[data-v-8bcc774e]{color:#a0aec0}.select-dropdown[data-v-8bcc774e]{border-radius:4px;background-color:#2d3748;border-color:#4a5568}.select-option[data-v-8bcc774e]{color:#a0a0a0;background-color:#2d3748}.select-option[data-v-8bcc774e]:hover{background-color:#718096!important;color:#f7fafc!important}.select-option.selected[data-v-8bcc774e]{background-color:#2b6cb0;color:#90cdf4}.select-option.selected[data-v-8bcc774e]: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-77ac6b2a]{--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-77ac6b2a]{display:none}.checkbox-wrapper[data-v-77ac6b2a]{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-77ac6b2a]{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:2px solid var(--checkbox-border);background:#fff;transition:all .2s ease}.checkbox-icon[data-v-77ac6b2a]{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-77ac6b2a]{stroke-dasharray:40;stroke-dashoffset:40;transition:stroke-dashoffset .3s ease .1s}.checkbox-label[data-v-77ac6b2a]{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-77ac6b2a]{background:var(--checkbox-color);border-color:var(--checkbox-color)}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-icon[data-v-77ac6b2a]{transform:translate(-50%,-50%) scale(1)}.ios-checkbox input:checked+.checkbox-wrapper .check-path[data-v-77ac6b2a]{stroke-dashoffset:0}.ios-checkbox:hover .checkbox-wrapper[data-v-77ac6b2a]{transform:scale(1.05)}.ios-checkbox:active .checkbox-wrapper[data-v-77ac6b2a]{transform:scale(.95)}.ios-checkbox input:focus+.checkbox-wrapper .checkbox-bg[data-v-77ac6b2a]{box-shadow:0 0 0 4px var(--checkbox-bg)}.ios-checkbox.blue[data-v-77ac6b2a]{--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd}.ios-checkbox.green[data-v-77ac6b2a]{--checkbox-color: #10b981;--checkbox-bg: #d1fae5;--checkbox-border: #6ee7b7}.ios-checkbox.purple[data-v-77ac6b2a]{--checkbox-color: #8b5cf6;--checkbox-bg: #ede9fe;--checkbox-border: #c4b5fd}.ios-checkbox.red[data-v-77ac6b2a]{--checkbox-color: #ef4444;--checkbox-bg: #fee2e2;--checkbox-border: #fca5a5}@keyframes bounce-77ac6b2a{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.ios-checkbox input:checked+.checkbox-wrapper[data-v-77ac6b2a]{animation:bounce-77ac6b2a .3s cubic-bezier(.4,0,.2,1)}.copy-item[data-v-aaaa00e5]{position:relative;display:inline-block;cursor:pointer;color:#007bff;text-decoration:none;transition:all .4s cubic-bezier(.23,1,.32,1);word-break:break-all}.copy-item[data-v-aaaa00e5]:hover{text-decoration:underline;background-color:transparent}.tooltip[data-v-aaaa00e5]{position:absolute;top:-35px;left:50%;transform:translate(-50%);padding:6px 12px;background:#333333d1;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:all .3s ease;z-index:1000}.tooltip[data-v-aaaa00e5]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333333d1}.copy-item:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.extract-code[data-v-aaaa00e5]{position:relative;display:inline-block;background:#f8f9fa;padding:2px 6px;border-radius:3px;font-family:monospace;color:#e83e8c;cursor:pointer;transition:all .3s ease}.extract-code[data-v-aaaa00e5]:hover{background:#e9ecef}.extract-code:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.link-manager[data-v-04cd6d17]{max-width:1000px;margin:0 auto}.link-stats[data-v-04cd6d17]{display:flex;gap:20px;margin-bottom:20px;padding:15px;background:#f5f5f5;border-radius:8px}.stat-item[data-v-04cd6d17]{display:flex;flex-direction:column;align-items:center}.stat-label[data-v-04cd6d17]{font-size:12px;color:#666;margin-bottom:4px}.stat-value[data-v-04cd6d17]{font-size:18px;font-weight:700;color:#333}.add-link-section[data-v-04cd6d17]{margin-bottom:20px;display:flex;align-items:center;gap:10px}.add-link-btn[data-v-04cd6d17]{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.add-link-btn[data-v-04cd6d17]:hover:not(:disabled){background:#0056b3}.add-link-btn[data-v-04cd6d17]:disabled{background:#ccc;cursor:not-allowed}.auth-hint[data-v-04cd6d17]{color:#666;font-size:12px}.add-form[data-v-04cd6d17]{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:20px}.add-form h4[data-v-04cd6d17]{margin:0 0 15px;color:#333}.form-row[data-v-04cd6d17]{display:flex;gap:15px;margin-bottom:15px}.form-group[data-v-04cd6d17]{flex:1}.form-group label[data-v-04cd6d17]{margin-bottom:5px;font-weight:700;color:#333;font-size:13px}.checkbox-group[data-v-04cd6d17]{display:flex;flex-wrap:wrap;gap:15px}.form-group input[data-v-04cd6d17],.form-group select[data-v-04cd6d17]{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group select[data-v-04cd6d17]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper[data-v-04cd6d17]{border:1px solid #ddd;border-radius:6px}.input-wrapper input[data-v-04cd6d17]{width:100%;border:none;outline:none;font-size:14px;background:transparent}.input-wrapper[data-v-04cd6d17]:focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.form-actions[data-v-04cd6d17]{display:flex;gap:10px;margin-top:20px}.form-actions button[data-v-04cd6d17]{font-weight:300;padding:10px 20px;border:none;border-radius:8px;cursor:pointer;font-size:14px}.form-actions button[type=submit][data-v-04cd6d17]{background:#beecc8;color:#2e8339}.form-actions button[type=submit][data-v-04cd6d17]:hover:not(:disabled){background:#b1efbf}.form-actions button[type=button][data-v-04cd6d17]{background:#f1f1f1;color:#828282}.form-actions button[type=button][data-v-04cd6d17]:hover{background:#ececec}.filter-bar[data-v-04cd6d17]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;border-radius:6px}.filter-controls[data-v-04cd6d17]{display:flex;gap:10px}.filter-bar .custom-select[data-v-04cd6d17]{width:auto;min-width:100px}.add-link-btn-compact[data-v-04cd6d17]{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-04cd6d17]:hover:not(:disabled){background:#b1cfef;transform:scale(1)}.add-link-btn-compact[data-v-04cd6d17]:disabled{background:#ccc;cursor:not-allowed;transform:none}.filter-bar select[data-v-04cd6d17]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.links-list[data-v-04cd6d17]{display:flex;flex-direction:column;gap:15px}.link-item[data-v-04cd6d17]{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-04cd6d17]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.link-type-badge[data-v-04cd6d17]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700;color:#fff}.link-type-badge.netdisk[data-v-04cd6d17]{background:#28a745}.link-type-badge.bt[data-v-04cd6d17]{background:#dc3545}.link-type-badge.online[data-v-04cd6d17]{background:#007bff}.platform-badge[data-v-04cd6d17]{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-04cd6d17]{width:16px;height:16px;object-fit:contain}.link-meta[data-v-04cd6d17]{display:flex;gap:3px;margin-left:auto;align-items:center}.file-size[data-v-04cd6d17]{padding:2px 5px;border-radius:3px;font-size:10px;background:#e3f2fd!important;color:#1976d2!important;font-weight:500}.feature-tags[data-v-04cd6d17]{display:flex;gap:3px;flex-wrap:wrap}.feature-tag[data-v-04cd6d17]{padding:2px 5px;background:#007bff;color:#fff;border-radius:3px;font-size:10px;font-weight:700}.feature-tag.feature-4k[data-v-04cd6d17]{background:#edf25c;color:#232323}.feature-tag.feature-hdr[data-v-04cd6d17]{background:gold;color:#232323}.feature-tag.feature-dolby[data-v-04cd6d17]{background:#eaeaea;color:#121212;font-weight:300}.feature-tag.feature-subtitle[data-v-04cd6d17]{background:#cee2e8;color:#036;font-weight:300}.link-content[data-v-04cd6d17]{margin-bottom:15px}.link-title-row[data-v-04cd6d17]{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-04cd6d17]{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}.link-title.expanded[data-v-04cd6d17]{display:block;-webkit-line-clamp:unset;max-height:none;white-space:normal;padding-right:10px;word-wrap:break-word;word-break:break-word}.link-title[data-v-04cd6d17]: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-04cd6d17]:after{opacity:0}.expand-arrow[data-v-04cd6d17]{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-04cd6d17]:hover{color:#333}.expand-arrow.expanded[data-v-04cd6d17]{transform:rotate(180deg)}.link-details[data-v-04cd6d17]{margin-top:10px;animation:slideDown-04cd6d17 .3s ease forwards}@keyframes slideDown-04cd6d17{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.link-url[data-v-04cd6d17]{display:flex;align-items:center;gap:8px;margin-bottom:5px}.link-url a[data-v-04cd6d17]{color:#007bff;text-decoration:none;flex:1;word-break:break-all}.link-url span[data-v-04cd6d17]:hover{text-decoration:none;background-color:transparent}.extract-code-container[data-v-04cd6d17]{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-04cd6d17]{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-04cd6d17]:hover{background:#e6e6e6}.copy-btn[data-v-04cd6d17]{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px}.copy-btn[data-v-04cd6d17]:hover{background:#f8f9fa}.link-actions[data-v-04cd6d17]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;margin-bottom:10px}.vote-section[data-v-04cd6d17]{display:flex;align-items:center;gap:10px}.vote-btn[data-v-04cd6d17]{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-04cd6d17]{width:12px;height:12px}.vote-icon.down-icon[data-v-04cd6d17]{transform:rotate(180deg)}.vote-btn[data-v-04cd6d17]:hover:not(:disabled){background:#e9ecef}.vote-btn[data-v-04cd6d17]:disabled{opacity:.6;cursor:not-allowed}.vote-btn.active.up[data-v-04cd6d17]{color:#155724}.vote-btn.active.down[data-v-04cd6d17]{color:#721c24}.vote-btn.pending[data-v-04cd6d17]{opacity:.7;position:relative}.pending-indicator[data-v-04cd6d17]{font-size:10px;margin-left:2px;animation:pulse-04cd6d17 1.5s ease-in-out infinite}@keyframes pulse-04cd6d17{0%,to{opacity:1}50%{opacity:.5}}.action-buttons[data-v-04cd6d17]{display:flex;gap:8px}.action-buttons button[data-v-04cd6d17]{padding:4px 8px;border:none;border-radius:6px;cursor:pointer;font-size:12px}.edit-btn[data-v-04cd6d17]{background:#ffc107;color:#212529}.edit-btn[data-v-04cd6d17]:hover{background:#e0a800}.modify-btn[data-v-04cd6d17]{width:48px;height:28px;background:#d4ecef;color:#22899b}.modify-btn[data-v-04cd6d17]:hover{background:#bfeff5}.delete-btn[data-v-04cd6d17]{width:48px;height:28px;background:#ffccd0;color:#e62e2e}.delete-btn[data-v-04cd6d17]:hover{background:#ffd6db}.delete-confirmation[data-v-04cd6d17]{text-align:center;padding:20px 0}.warning-icon[data-v-04cd6d17]{font-size:48px;margin-bottom:16px}.delete-confirmation p[data-v-04cd6d17]{margin:8px 0;font-size:16px}.warning-text[data-v-04cd6d17]{color:#dc3545;font-size:14px;font-weight:500}.delete-confirm-btn[data-v-04cd6d17]{background:#dc3545;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;margin-right:8px}.delete-confirm-btn[data-v-04cd6d17]:hover:not(:disabled){background:#c82333}.delete-confirm-btn[data-v-04cd6d17]:disabled{background:#6c757d;cursor:not-allowed}.report-btn[data-v-04cd6d17]{width:48px;height:28px;background:#eee;color:#495057}.report-btn[data-v-04cd6d17]:hover{color:#495057;background:#e3e3e3}.link-footer[data-v-04cd6d17]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#666;border-top:1px solid #f0f0f0;padding-top:10px}.report-count[data-v-04cd6d17]{color:#dc3545;font-weight:700}.empty-state[data-v-04cd6d17]{text-align:center;padding:40px;color:#666}.loading[data-v-04cd6d17]{text-align:center;padding:20px;color:#666}.toast-container[data-v-04cd6d17]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:10000;pointer-events:none}.toast[data-v-04cd6d17]{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-04cd6d17 .3s ease-out;transition:all .3s ease}.toast[data-v-04cd6d17]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0003}.error-toast[data-v-04cd6d17]{background:#fff5f5}.error-toast span[data-v-04cd6d17]{color:#721c24}.success-toast[data-v-04cd6d17]{background:#f0fff4}.success-toast span[data-v-04cd6d17]{color:#155724}.toast-close[data-v-04cd6d17]{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-04cd6d17]:hover{color:#666}@keyframes slideDown-04cd6d17{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.error-message[data-v-04cd6d17]{background:#f8d7da;color:#721c24;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #f5c6cb}.success-message[data-v-04cd6d17]{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-04cd6d17]{padding:10px}.form-row[data-v-04cd6d17]{flex-direction:column;gap:10px}.filter-bar[data-v-04cd6d17]{flex-direction:column;gap:8px}.link-header[data-v-04cd6d17]{flex-wrap:wrap}.link-meta[data-v-04cd6d17]{margin-left:0;margin-top:5px}.link-actions[data-v-04cd6d17]{flex-direction:column;gap:10px;align-items:flex-start}}.modal-overlay[data-v-04cd6d17]{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-04cd6d17]{background:#fff;border-radius:16px;width:90%;max-width:600px;max-height:90vh;box-shadow:0 4px 20px #00000026}.modal-header[data-v-04cd6d17]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee}.modal-header h4[data-v-04cd6d17]{margin-left:10px;margin-bottom:0;color:#333;font-size:18px}.close-btn[data-v-04cd6d17]{background:none;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-04cd6d17]:hover{background:#f5f5f5;color:#333}.modal-body[data-v-04cd6d17]{padding:0 20px 20px}.vote-section[data-v-04cd6d17]{width:100%}.input-wrapper textarea[data-v-04cd6d17]{width:100%;border:none;outline:none;font-size:14px;font-family:inherit;resize:vertical;min-height:80px;background:transparent}.input-wrapper[data-v-04cd6d17]:has(textarea):focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper textarea[data-v-04cd6d17]::placeholder{color:#999}.form-actions button[data-v-04cd6d17]:disabled{background:#ccc;cursor:not-allowed}.form-actions button[data-v-04cd6d17]:disabled:hover{background:#ccc}.pagination[data-v-04cd6d17]{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:10px;padding:10px;background:#fff;border-radius:8px}.pagination-btn[data-v-04cd6d17]{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-04cd6d17]:hover:not(:disabled){background:#b3d8ff;color:#007bff;border-color:#b3d8ff}.pagination-btn[data-v-04cd6d17]:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;border-color:#ddd}.pagination-info[data-v-04cd6d17]{font-size:14px;color:#666;font-weight:500}.login-prompt[data-v-04cd6d17]{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-04cd6d17]{text-align:center;max-width:400px}.login-icon[data-v-04cd6d17]{margin-bottom:20px;color:#6c757d;opacity:.8}.login-prompt h3[data-v-04cd6d17]{font-size:24px;font-weight:600;color:#495057;margin-bottom:12px;line-height:1.3}.login-prompt p[data-v-04cd6d17]{font-size:16px;color:#6c757d;margin-bottom:24px;line-height:1.5}.login-btn[data-v-04cd6d17]{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-04cd6d17]:hover{transform:translateY(-2px);box-shadow:#0000000f 4px 4px 20px}.login-btn[data-v-04cd6d17]:active{transform:translateY(0);box-shadow:0 2px 10px #007bff4d}.content-wrapper[data-v-a01b44d5]{padding:16px}.movie-info[data-v-a01b44d5]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:4px solid #00a1d6}.movie-title[data-v-a01b44d5]{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.3}.movie-meta[data-v-a01b44d5]{display:flex;gap:12px;align-items:center}.movie-meta .year[data-v-a01b44d5]{background:#6c757d;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:500}.movie-meta .rating[data-v-a01b44d5]{color:#ff6b35;font-weight:600;font-size:13px}.navigation-bar[data-v-a01b44d5]{display:flex;border-bottom:1px solid #e0e0e0;margin-bottom:16px}.nav-btn[data-v-a01b44d5]{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-a01b44d5]{color:#00a1d6;border-bottom-color:#00a1d6}.tab-content[data-v-a01b44d5]{min-height:200px}.tab-panel[data-v-a01b44d5]{padding-top:16px 0}.tab-panel h4[data-v-a01b44d5]{margin:0 0 12px;color:#333;font-size:16px;font-weight:600}.tab-panel p[data-v-a01b44d5]{margin:0;color:#666;line-height:1.5}.sub-nav[data-v-a01b44d5]{display:flex;gap:4px;margin-bottom:12px;padding:4px;background:#e9ecef;border-radius:6px}.sub-tab[data-v-a01b44d5]{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-a01b44d5]:hover{background:#dee2e6;color:#495057}.sub-tab.active[data-v-a01b44d5]{background:#007bff;color:#fff;font-weight:500}.sub-content[data-v-a01b44d5]{margin-top:8px}.sub-tab-content[data-v-a01b44d5]{padding:8px 0}.sub-tab-content p[data-v-a01b44d5]{margin:4px 0;color:#666;font-size:12px}.no-subject[data-v-a01b44d5]{text-align:center;padding:40px 20px;color:#666}.no-subject p[data-v-a01b44d5]{margin:8px 0;line-height:1.5}.no-subject .hint[data-v-a01b44d5]{font-size:12px;color:#999;font-style:italic}.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}.custom-window[data-v-be9a6b79]{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-be9a6b79]{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-be9a6b79]{font-weight:300;font-size:12px}.close-btn[data-v-be9a6b79]{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-be9a6b79]:hover{background-color:#fff3}.window-content[data-v-be9a6b79]{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 Zs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ne={},Ot=[],Je=()=>{},kn=()=>!1,ws=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Xs=e=>e.startsWith("onUpdate:"),Ae=Object.assign,eo=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Cn=Object.prototype.hasOwnProperty,te=(e,t)=>Cn.call(e,t),H=Array.isArray,Lt=e=>xs(e)==="[object Map]",Fo=e=>xs(e)==="[object Set]",z=e=>typeof e=="function",me=e=>typeof e=="string",pt=e=>typeof e=="symbol",de=e=>e!==null&&typeof e=="object",No=e=>(de(e)||z(e))&&z(e.then)&&z(e.catch),Bo=Object.prototype.toString,xs=e=>Bo.call(e),Sn=e=>xs(e).slice(8,-1),qo=e=>xs(e)==="[object Object]",to=e=>me(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Zt=Zs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ks=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Tn=/-(\w)/g,ht=ks(e=>e.replace(Tn,(t,s)=>s?s.toUpperCase():"")),En=/\B([A-Z])/g,Tt=ks(e=>e.replace(En,"-$1").toLowerCase()),Ho=ks(e=>e.charAt(0).toUpperCase()+e.slice(1)),so=ks(e=>e?`on${Ho(e)}`:""),vt=(e,t)=>!Object.is(e,t),Cs=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},oo=(e,t,s,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:s})},lo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let jo;const Ss=()=>jo||(jo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rt(e){if(H(e)){const t={};for(let s=0;s<e.length;s++){const o=e[s],l=me(o)?Vn(o):Rt(o);if(l)for(const n in l)t[n]=l[n]}return t}else if(me(e)||de(e))return e}const $n=/;(?![^(]*\))/g,An=/:([^]+)/,Pn=/\/\*[^]*?\*\//g;function Vn(e){const t={};return e.replace(Pn,"").split($n).forEach(s=>{if(s){const o=s.split(An);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function ge(e){let t="";if(me(e))t=e;else if(H(e))for(let s=0;s<e.length;s++){const o=ge(e[s]);o&&(t+=o+" ")}else if(de(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const In=Zs("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function zo(e){return!!e||e===""}const Wo=e=>!!(e&&e.__v_isRef===!0),j=e=>me(e)?e:e==null?"":H(e)||de(e)&&(e.toString===Bo||!z(e.toString))?Wo(e)?j(e.value):JSON.stringify(e,Ko,2):String(e),Ko=(e,t)=>Wo(t)?Ko(e,t.value):Lt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[o,l],n)=>(s[no(o,n)+" =>"]=l,s),{})}:Fo(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>no(s))}:pt(t)?no(t):de(t)&&!H(t)&&!qo(t)?String(t):t,no=(e,t="")=>{var s;return pt(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 Le;class Mn{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Le,!t&&Le&&(this.index=(Le.scopes||(Le.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=Le;try{return Le=this,t()}finally{Le=s}}}on(){++this._on===1&&(this.prevScope=Le,Le=this)}off(){this._on>0&&--this._on===0&&(Le=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,o;for(s=0,o=this.effects.length;s<o;s++)this.effects[s].stop();for(this.effects.length=0,s=0,o=this.cleanups.length;s<o;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,o=this.scopes.length;s<o;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function Un(){return Le}let ae;const ro=new WeakSet;class Go{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,Le&&Le.active&&Le.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ro.has(this)&&(ro.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Jo(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,tl(this),Qo(this);const t=ae,s=Ge;ae=this,Ge=!0;try{return this.fn()}finally{Zo(this),ae=t,Ge=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)co(t);this.deps=this.depsTail=void 0,tl(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ro.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){uo(this)&&this.run()}get dirty(){return uo(this)}}let Yo=0,Xt,es;function Jo(e,t=!1){if(e.flags|=8,t){e.next=es,es=e;return}e.next=Xt,Xt=e}function io(){Yo++}function ao(){if(--Yo>0)return;if(es){let t=es;for(es=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Xt;){let t=Xt;for(Xt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=s}}if(e)throw e}function Qo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Zo(e){let t,s=e.depsTail,o=s;for(;o;){const l=o.prevDep;o.version===-1?(o===s&&(s=l),co(o),Dn(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=l}e.deps=t,e.depsTail=s}function uo(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Xo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Xo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===ts)||(e.globalVersion=ts,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!uo(e))))return;e.flags|=2;const t=e.dep,s=ae,o=Ge;ae=e,Ge=!0;try{Qo(e);const l=e.fn(e._value);(t.version===0||vt(l,e._value))&&(e.flags|=128,e._value=l,t.version++)}catch(l){throw t.version++,l}finally{ae=s,Ge=o,Zo(e),e.flags&=-3}}function co(e,t=!1){const{dep:s,prevSub:o,nextSub:l}=e;if(o&&(o.nextSub=l,e.prevSub=void 0),l&&(l.prevSub=o,e.nextSub=void 0),s.subs===e&&(s.subs=o,!o&&s.computed)){s.computed.flags&=-5;for(let n=s.computed.deps;n;n=n.nextDep)co(n,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Dn(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ge=!0;const el=[];function Qe(){el.push(Ge),Ge=!1}function Ze(){const e=el.pop();Ge=e===void 0?!0:e}function tl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ae;ae=void 0;try{t()}finally{ae=s}}}let ts=0;class On{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 fo{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(!ae||!Ge||ae===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ae)s=this.activeLink=new On(ae,this),ae.deps?(s.prevDep=ae.depsTail,ae.depsTail.nextDep=s,ae.depsTail=s):ae.deps=ae.depsTail=s,sl(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const o=s.nextDep;o.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=o),s.prevDep=ae.depsTail,s.nextDep=void 0,ae.depsTail.nextDep=s,ae.depsTail=s,ae.deps===s&&(ae.deps=o)}return s}trigger(t){this.version++,ts++,this.notify(t)}notify(t){io();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{ao()}}}function sl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)sl(o)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const po=new WeakMap,Et=Symbol(""),ho=Symbol(""),ss=Symbol("");function Te(e,t,s){if(Ge&&ae){let o=po.get(e);o||po.set(e,o=new Map);let l=o.get(s);l||(o.set(s,l=new fo),l.map=o,l.key=s),l.track()}}function nt(e,t,s,o,l,n){const r=po.get(e);if(!r){ts++;return}const i=u=>{u&&u.trigger()};if(io(),t==="clear")r.forEach(i);else{const u=H(e),v=u&&to(s);if(u&&s==="length"){const p=Number(o);r.forEach((g,E)=>{(E==="length"||E===ss||!pt(E)&&E>=p)&&i(g)})}else switch((s!==void 0||r.has(void 0))&&i(r.get(s)),v&&i(r.get(ss)),t){case"add":u?v&&i(r.get("length")):(i(r.get(Et)),Lt(e)&&i(r.get(ho)));break;case"delete":u||(i(r.get(Et)),Lt(e)&&i(r.get(ho)));break;case"set":Lt(e)&&i(r.get(Et));break}}ao()}function Ft(e){const t=Q(e);return t===e?t:(Te(t,"iterate",ss),qe(e)?t:t.map(ye))}function Ts(e){return Te(e=Q(e),"iterate",ss),e}const Ln={__proto__:null,[Symbol.iterator](){return vo(this,Symbol.iterator,ye)},concat(...e){return Ft(this).concat(...e.map(t=>H(t)?Ft(t):t))},entries(){return vo(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return rt(this,"every",e,t,void 0,arguments)},filter(e,t){return rt(this,"filter",e,t,s=>s.map(ye),arguments)},find(e,t){return rt(this,"find",e,t,ye,arguments)},findIndex(e,t){return rt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return rt(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return rt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return rt(this,"forEach",e,t,void 0,arguments)},includes(...e){return mo(this,"includes",e)},indexOf(...e){return mo(this,"indexOf",e)},join(e){return Ft(this).join(e)},lastIndexOf(...e){return mo(this,"lastIndexOf",e)},map(e,t){return rt(this,"map",e,t,void 0,arguments)},pop(){return os(this,"pop")},push(...e){return os(this,"push",e)},reduce(e,...t){return ol(this,"reduce",e,t)},reduceRight(e,...t){return ol(this,"reduceRight",e,t)},shift(){return os(this,"shift")},some(e,t){return rt(this,"some",e,t,void 0,arguments)},splice(...e){return os(this,"splice",e)},toReversed(){return Ft(this).toReversed()},toSorted(e){return Ft(this).toSorted(e)},toSpliced(...e){return Ft(this).toSpliced(...e)},unshift(...e){return os(this,"unshift",e)},values(){return vo(this,"values",ye)}};function vo(e,t,s){const o=Ts(e),l=o[t]();return o!==e&&!qe(e)&&(l._next=l.next,l.next=()=>{const n=l._next();return n.value&&(n.value=s(n.value)),n}),l}const Rn=Array.prototype;function rt(e,t,s,o,l,n){const r=Ts(e),i=r!==e&&!qe(e),u=r[t];if(u!==Rn[t]){const g=u.apply(e,n);return i?ye(g):g}let v=s;r!==e&&(i?v=function(g,E){return s.call(this,ye(g),E,e)}:s.length>2&&(v=function(g,E){return s.call(this,g,E,e)}));const p=u.call(r,v,o);return i&&l?l(p):p}function ol(e,t,s,o){const l=Ts(e);let n=s;return l!==e&&(qe(e)?s.length>3&&(n=function(r,i,u){return s.call(this,r,i,u,e)}):n=function(r,i,u){return s.call(this,r,ye(i),u,e)}),l[t](n,...o)}function mo(e,t,s){const o=Q(e);Te(o,"iterate",ss);const l=o[t](...s);return(l===-1||l===!1)&&_o(s[0])?(s[0]=Q(s[0]),o[t](...s)):l}function os(e,t,s=[]){Qe(),io();const o=Q(e)[t].apply(e,s);return ao(),Ze(),o}const Fn=Zs("__proto__,__v_isRef,__isVue"),ll=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(pt));function Nn(e){pt(e)||(e=String(e));const t=Q(this);return Te(t,"has",e),t.hasOwnProperty(e)}class nl{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,o){if(s==="__v_skip")return t.__v_skip;const l=this._isReadonly,n=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return n;if(s==="__v_raw")return o===(l?n?dl:cl:n?ul:al).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const r=H(t);if(!l){let u;if(r&&(u=Ln[s]))return u;if(s==="hasOwnProperty")return Nn}const i=Reflect.get(t,s,we(t)?t:o);return(pt(s)?ll.has(s):Fn(s))||(l||Te(t,"get",s),n)?i:we(i)?r&&to(s)?i:i.value:de(i)?l?fl(i):$t(i):i}}class rl extends nl{constructor(t=!1){super(!1,t)}set(t,s,o,l){let n=t[s];if(!this._isShallow){const u=mt(n);if(!qe(o)&&!mt(o)&&(n=Q(n),o=Q(o)),!H(t)&&we(n)&&!we(o))return u?!1:(n.value=o,!0)}const r=H(t)&&to(s)?Number(s)<t.length:te(t,s),i=Reflect.set(t,s,o,we(t)?t:l);return t===Q(l)&&(r?vt(o,n)&&nt(t,"set",s,o):nt(t,"add",s,o)),i}deleteProperty(t,s){const o=te(t,s);t[s];const l=Reflect.deleteProperty(t,s);return l&&o&&nt(t,"delete",s,void 0),l}has(t,s){const o=Reflect.has(t,s);return(!pt(s)||!ll.has(s))&&Te(t,"has",s),o}ownKeys(t){return Te(t,"iterate",H(t)?"length":Et),Reflect.ownKeys(t)}}class il extends nl{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Bn=new rl,qn=new il,Hn=new rl(!0),jn=new il(!0),go=e=>e,Es=e=>Reflect.getPrototypeOf(e);function zn(e,t,s){return function(...o){const l=this.__v_raw,n=Q(l),r=Lt(n),i=e==="entries"||e===Symbol.iterator&&r,u=e==="keys"&&r,v=l[e](...o),p=s?go:t?Vs:ye;return!t&&Te(n,"iterate",u?ho:Et),{next(){const{value:g,done:E}=v.next();return E?{value:g,done:E}:{value:i?[p(g[0]),p(g[1])]:p(g),done:E}},[Symbol.iterator](){return this}}}}function $s(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Wn(e,t){const s={get(l){const n=this.__v_raw,r=Q(n),i=Q(l);e||(vt(l,i)&&Te(r,"get",l),Te(r,"get",i));const{has:u}=Es(r),v=t?go:e?Vs:ye;if(u.call(r,l))return v(n.get(l));if(u.call(r,i))return v(n.get(i));n!==r&&n.get(l)},get size(){const l=this.__v_raw;return!e&&Te(Q(l),"iterate",Et),Reflect.get(l,"size",l)},has(l){const n=this.__v_raw,r=Q(n),i=Q(l);return e||(vt(l,i)&&Te(r,"has",l),Te(r,"has",i)),l===i?n.has(l):n.has(l)||n.has(i)},forEach(l,n){const r=this,i=r.__v_raw,u=Q(i),v=t?go:e?Vs:ye;return!e&&Te(u,"iterate",Et),i.forEach((p,g)=>l.call(n,v(p),v(g),r))}};return Ae(s,e?{add:$s("add"),set:$s("set"),delete:$s("delete"),clear:$s("clear")}:{add(l){!t&&!qe(l)&&!mt(l)&&(l=Q(l));const n=Q(this);return Es(n).has.call(n,l)||(n.add(l),nt(n,"add",l,l)),this},set(l,n){!t&&!qe(n)&&!mt(n)&&(n=Q(n));const r=Q(this),{has:i,get:u}=Es(r);let v=i.call(r,l);v||(l=Q(l),v=i.call(r,l));const p=u.call(r,l);return r.set(l,n),v?vt(n,p)&&nt(r,"set",l,n):nt(r,"add",l,n),this},delete(l){const n=Q(this),{has:r,get:i}=Es(n);let u=r.call(n,l);u||(l=Q(l),u=r.call(n,l)),i&&i.call(n,l);const v=n.delete(l);return u&&nt(n,"delete",l,void 0),v},clear(){const l=Q(this),n=l.size!==0,r=l.clear();return n&&nt(l,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=zn(l,e,t)}),s}function As(e,t){const s=Wn(e,t);return(o,l,n)=>l==="__v_isReactive"?!e:l==="__v_isReadonly"?e:l==="__v_raw"?o:Reflect.get(te(s,l)&&l in o?s:o,l,n)}const Kn={get:As(!1,!1)},Gn={get:As(!1,!0)},Yn={get:As(!0,!1)},Jn={get:As(!0,!0)},al=new WeakMap,ul=new WeakMap,cl=new WeakMap,dl=new WeakMap;function Qn(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Zn(e){return e.__v_skip||!Object.isExtensible(e)?0:Qn(Sn(e))}function $t(e){return mt(e)?e:Ps(e,!1,Bn,Kn,al)}function Xn(e){return Ps(e,!1,Hn,Gn,ul)}function fl(e){return Ps(e,!0,qn,Yn,cl)}function Ld(e){return Ps(e,!0,jn,Jn,dl)}function Ps(e,t,s,o,l){if(!de(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=Zn(e);if(n===0)return e;const r=l.get(e);if(r)return r;const i=new Proxy(e,n===2?o:s);return l.set(e,i),i}function Nt(e){return mt(e)?Nt(e.__v_raw):!!(e&&e.__v_isReactive)}function mt(e){return!!(e&&e.__v_isReadonly)}function qe(e){return!!(e&&e.__v_isShallow)}function _o(e){return e?!!e.__v_raw:!1}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function er(e){return!te(e,"__v_skip")&&Object.isExtensible(e)&&oo(e,"__v_skip",!0),e}const ye=e=>de(e)?$t(e):e,Vs=e=>de(e)?fl(e):e;function we(e){return e?e.__v_isRef===!0:!1}function L(e){return tr(e,!1)}function tr(e,t){return we(e)?e:new sr(e,t)}class sr{constructor(t,s){this.dep=new fo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:Q(t),this._value=s?t:ye(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,o=this.__v_isShallow||qe(t)||mt(t);t=o?t:Q(t),vt(t,s)&&(this._rawValue=t,this._value=o?t:ye(t),this.dep.trigger())}}function or(e){return we(e)?e.value:e}const lr={get:(e,t,s)=>t==="__v_raw"?e:or(Reflect.get(e,t,s)),set:(e,t,s,o)=>{const l=e[t];return we(l)&&!we(s)?(l.value=s,!0):Reflect.set(e,t,s,o)}};function pl(e){return Nt(e)?e:new Proxy(e,lr)}class nr{constructor(t,s,o){this.fn=t,this.setter=s,this._value=void 0,this.dep=new fo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ts-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&ae!==this)return Jo(this,!0),!0}get value(){const t=this.dep.track();return Xo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function rr(e,t,s=!1){let o,l;return z(e)?o=e:(o=e.get,l=e.set),new nr(o,l,s)}const Is={},Ms=new WeakMap;let At;function ir(e,t=!1,s=At){if(s){let o=Ms.get(s);o||Ms.set(s,o=[]),o.push(e)}}function ar(e,t,s=ne){const{immediate:o,deep:l,once:n,scheduler:r,augmentJob:i,call:u}=s,v=R=>l?R:qe(R)||l===!1||l===0?it(R,1):it(R);let p,g,E,y,b=!1,w=!1;if(we(e)?(g=()=>e.value,b=qe(e)):Nt(e)?(g=()=>v(e),b=!0):H(e)?(w=!0,b=e.some(R=>Nt(R)||qe(R)),g=()=>e.map(R=>{if(we(R))return R.value;if(Nt(R))return v(R);if(z(R))return u?u(R,2):R()})):z(e)?t?g=u?()=>u(e,2):e:g=()=>{if(E){Qe();try{E()}finally{Ze()}}const R=At;At=p;try{return u?u(e,3,[y]):e(y)}finally{At=R}}:g=Je,t&&l){const R=g,pe=l===!0?1/0:l;g=()=>it(R(),pe)}const Z=Un(),W=()=>{p.stop(),Z&&Z.active&&eo(Z.effects,p)};if(n&&t){const R=t;t=(...pe)=>{R(...pe),W()}}let K=w?new Array(e.length).fill(Is):Is;const J=R=>{if(!(!(p.flags&1)||!p.dirty&&!R))if(t){const pe=p.run();if(l||b||(w?pe.some((he,ve)=>vt(he,K[ve])):vt(pe,K))){E&&E();const he=At;At=p;try{const ve=[pe,K===Is?void 0:w&&K[0]===Is?[]:K,y];K=pe,u?u(t,3,ve):t(...ve)}finally{At=he}}}else p.run()};return i&&i(J),p=new Go(g),p.scheduler=r?()=>r(J,!1):J,y=R=>ir(R,!1,p),E=p.onStop=()=>{const R=Ms.get(p);if(R){if(u)u(R,4);else for(const pe of R)pe();Ms.delete(p)}},t?o?J(!0):K=p.run():r?r(J.bind(null,!0),!0):p.run(),W.pause=p.pause.bind(p),W.resume=p.resume.bind(p),W.stop=W,W}function it(e,t=1/0,s){if(t<=0||!de(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,we(e))it(e.value,t,s);else if(H(e))for(let o=0;o<e.length;o++)it(e[o],t,s);else if(Fo(e)||Lt(e))e.forEach(o=>{it(o,t,s)});else if(qo(e)){for(const o in e)it(e[o],t,s);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&it(e[o],t,s)}return e}/**
* @vue/runtime-core v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const ls=[];let bo=!1;function Rd(e,...t){if(bo)return;bo=!0,Qe();const s=ls.length?ls[ls.length-1].component:null,o=s&&s.appContext.config.warnHandler,l=ur();if(o)Bt(o,s,11,[e+t.map(n=>{var r,i;return(i=(r=n.toString)==null?void 0:r.call(n))!=null?i:JSON.stringify(n)}).join(""),s&&s.proxy,l.map(({vnode:n})=>`at <${on(s,n.type)}>`).join(`
`),l]);else{const n=[`[Vue warn]: ${e}`,...t];l.length&&n.push(`
`,...cr(l)),console.warn(...n)}Ze(),bo=!1}function ur(){let e=ls[ls.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function cr(e){const t=[];return e.forEach((s,o)=>{t.push(...o===0?[]:[`
`],...dr(s))}),t}function dr({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,l=` at <${on(e.component,e.type,o)}`,n=">"+s;return e.props?[l,...fr(e.props),n]:[l+n]}function fr(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(o=>{t.push(...hl(o,e[o]))}),s.length>3&&t.push(" ..."),t}function hl(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}`]:we(t)?(t=hl(e,Q(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):z(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Q(t),s?t:[`${e}=`,t])}function Bt(e,t,s,o){try{return o?e(...o):e()}catch(l){Us(l,t,s)}}function Xe(e,t,s,o){if(z(e)){const l=Bt(e,t,s,o);return l&&No(l)&&l.catch(n=>{Us(n,t,s)}),l}if(H(e)){const l=[];for(let n=0;n<e.length;n++)l.push(Xe(e[n],t,s,o));return l}}function Us(e,t,s,o=!0){const l=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:r}=t&&t.appContext.config||ne;if(t){let i=t.parent;const u=t.proxy,v=`https://vuejs.org/error-reference/#runtime-${s}`;for(;i;){const p=i.ec;if(p){for(let g=0;g<p.length;g++)if(p[g](e,u,v)===!1)return}i=i.parent}if(n){Qe(),Bt(n,null,10,[e,u,v]),Ze();return}}pr(e,s,l,o,r)}function pr(e,t,s,o=!0,l=!1){if(l)throw e;console.error(e)}const Pe=[];let et=-1;const qt=[];let gt=null,Ht=0;const vl=Promise.resolve();let Ds=null;function yo(e){const t=Ds||vl;return e?t.then(this?e.bind(this):e):t}function hr(e){let t=et+1,s=Pe.length;for(;t<s;){const o=t+s>>>1,l=Pe[o],n=ns(l);n<e||n===e&&l.flags&2?t=o+1:s=o}return t}function wo(e){if(!(e.flags&1)){const t=ns(e),s=Pe[Pe.length-1];!s||!(e.flags&2)&&t>=ns(s)?Pe.push(e):Pe.splice(hr(t),0,e),e.flags|=1,ml()}}function ml(){Ds||(Ds=vl.then(bl))}function vr(e){H(e)?qt.push(...e):gt&&e.id===-1?gt.splice(Ht+1,0,e):e.flags&1||(qt.push(e),e.flags|=1),ml()}function gl(e,t,s=et+1){for(;s<Pe.length;s++){const o=Pe[s];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Pe.splice(s,1),s--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function _l(e){if(qt.length){const t=[...new Set(qt)].sort((s,o)=>ns(s)-ns(o));if(qt.length=0,gt){gt.push(...t);return}for(gt=t,Ht=0;Ht<gt.length;Ht++){const s=gt[Ht];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}gt=null,Ht=0}}const ns=e=>e.id==null?e.flags&2?-1:1/0:e.id;function bl(e){try{for(et=0;et<Pe.length;et++){const t=Pe[et];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Bt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;et<Pe.length;et++){const t=Pe[et];t&&(t.flags&=-2)}et=-1,Pe.length=0,_l(),Ds=null,(Pe.length||qt.length)&&bl()}}let He=null,yl=null;function Os(e){const t=He;return He=e,yl=e&&e.type.__scopeId||null,t}function mr(e,t=He,s){if(!t||e._n)return e;const o=(...l)=>{o._d&&Yl(-1);const n=Os(t);let r;try{r=e(...l)}finally{Os(n),o._d&&Yl(1)}return r};return o._n=!0,o._c=!0,o._d=!0,o}function re(e,t){if(He===null)return e;const s=Ks(He),o=e.dirs||(e.dirs=[]);for(let l=0;l<t.length;l++){let[n,r,i,u=ne]=t[l];n&&(z(n)&&(n={mounted:n,updated:n}),n.deep&&it(r),o.push({dir:n,instance:s,value:r,oldValue:void 0,arg:i,modifiers:u}))}return e}function Pt(e,t,s,o){const l=e.dirs,n=t&&t.dirs;for(let r=0;r<l.length;r++){const i=l[r];n&&(i.oldValue=n[r].value);let u=i.dir[o];u&&(Qe(),Xe(u,s,8,[e.el,i,e,t]),Ze())}}const gr=Symbol("_vte"),_r=e=>e.__isTeleport;function xo(e,t){e.shapeFlag&6&&e.component?(e.transition=t,xo(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 wl(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function rs(e,t,s,o,l=!1){if(H(e)){e.forEach((b,w)=>rs(b,t&&(H(t)?t[w]:t),s,o,l));return}if(is(o)&&!l){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&rs(e,t,s,o.component.subTree);return}const n=o.shapeFlag&4?Ks(o.component):o.el,r=l?null:n,{i,r:u}=e,v=t&&t.r,p=i.refs===ne?i.refs={}:i.refs,g=i.setupState,E=Q(g),y=g===ne?()=>!1:b=>te(E,b);if(v!=null&&v!==u&&(me(v)?(p[v]=null,y(v)&&(g[v]=null)):we(v)&&(v.value=null)),z(u))Bt(u,i,12,[r,p]);else{const b=me(u),w=we(u);if(b||w){const Z=()=>{if(e.f){const W=b?y(u)?g[u]:p[u]:u.value;l?H(W)&&eo(W,n):H(W)?W.includes(n)||W.push(n):b?(p[u]=[n],y(u)&&(g[u]=p[u])):(u.value=[n],e.k&&(p[e.k]=u.value))}else b?(p[u]=r,y(u)&&(g[u]=r)):w&&(u.value=r,e.k&&(p[e.k]=r))};r?(Z.id=-1,Ne(Z,s)):Z()}}}Ss().requestIdleCallback,Ss().cancelIdleCallback;const is=e=>!!e.type.__asyncLoader,xl=e=>e.type.__isKeepAlive;function br(e,t){kl(e,"a",t)}function yr(e,t){kl(e,"da",t)}function kl(e,t,s=Ie){const o=e.__wdc||(e.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return e()});if(Ls(t,o,s),s){let l=s.parent;for(;l&&l.parent;)xl(l.parent.vnode)&&wr(o,t,s,l),l=l.parent}}function wr(e,t,s,o){const l=Ls(t,e,o,!0);Rs(()=>{eo(o[t],l)},s)}function Ls(e,t,s=Ie,o=!1){if(s){const l=s[e]||(s[e]=[]),n=t.__weh||(t.__weh=(...r)=>{Qe();const i=hs(s),u=Xe(t,s,e,r);return i(),Ze(),u});return o?l.unshift(n):l.push(n),n}}const at=e=>(t,s=Ie)=>{(!vs||e==="sp")&&Ls(e,(...o)=>t(...o),s)},xr=at("bm"),jt=at("m"),kr=at("bu"),Cr=at("u"),Sr=at("bum"),Rs=at("um"),Tr=at("sp"),Er=at("rtg"),$r=at("rtc");function Ar(e,t=Ie){Ls("ec",e,t)}const Pr=Symbol.for("v-ndc");function ko(e,t,s,o){let l;const n=s,r=H(e);if(r||me(e)){const i=r&&Nt(e);let u=!1,v=!1;i&&(u=!qe(e),v=mt(e),e=Ts(e)),l=new Array(e.length);for(let p=0,g=e.length;p<g;p++)l[p]=t(u?v?Vs(ye(e[p])):ye(e[p]):e[p],p,void 0,n)}else if(typeof e=="number"){l=new Array(e);for(let i=0;i<e;i++)l[i]=t(i+1,i,void 0,n)}else if(de(e))if(e[Symbol.iterator])l=Array.from(e,(i,u)=>t(i,u,void 0,n));else{const i=Object.keys(e);l=new Array(i.length);for(let u=0,v=i.length;u<v;u++){const p=i[u];l[u]=t(e[p],p,u,n)}}else l=[];return l}const Co=e=>e?en(e)?Ks(e):Co(e.parent):null,as=Ae(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=>Co(e.parent),$root:e=>Co(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>El(e),$forceUpdate:e=>e.f||(e.f=()=>{wo(e.update)}),$nextTick:e=>e.n||(e.n=yo.bind(e.proxy)),$watch:e=>Zr.bind(e)}),So=(e,t)=>e!==ne&&!e.__isScriptSetup&&te(e,t),Vr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:o,data:l,props:n,accessCache:r,type:i,appContext:u}=e;let v;if(t[0]!=="$"){const y=r[t];if(y!==void 0)switch(y){case 1:return o[t];case 2:return l[t];case 4:return s[t];case 3:return n[t]}else{if(So(o,t))return r[t]=1,o[t];if(l!==ne&&te(l,t))return r[t]=2,l[t];if((v=e.propsOptions[0])&&te(v,t))return r[t]=3,n[t];if(s!==ne&&te(s,t))return r[t]=4,s[t];To&&(r[t]=0)}}const p=as[t];let g,E;if(p)return t==="$attrs"&&Te(e.attrs,"get",""),p(e);if((g=i.__cssModules)&&(g=g[t]))return g;if(s!==ne&&te(s,t))return r[t]=4,s[t];if(E=u.config.globalProperties,te(E,t))return E[t]},set({_:e},t,s){const{data:o,setupState:l,ctx:n}=e;return So(l,t)?(l[t]=s,!0):o!==ne&&te(o,t)?(o[t]=s,!0):te(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(n[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:l,propsOptions:n}},r){let i;return!!s[r]||e!==ne&&te(e,r)||So(t,r)||(i=n[0])&&te(i,r)||te(o,r)||te(as,r)||te(l.config.globalProperties,r)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:te(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Cl(e){return H(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let To=!0;function Ir(e){const t=El(e),s=e.proxy,o=e.ctx;To=!1,t.beforeCreate&&Sl(t.beforeCreate,e,"bc");const{data:l,computed:n,methods:r,watch:i,provide:u,inject:v,created:p,beforeMount:g,mounted:E,beforeUpdate:y,updated:b,activated:w,deactivated:Z,beforeDestroy:W,beforeUnmount:K,destroyed:J,unmounted:R,render:pe,renderTracked:he,renderTriggered:ve,errorCaptured:De,serverPrefetch:Ct,expose:Fe,inheritAttrs:Oe,components:ct,directives:St,filters:F}=t;if(v&&Mr(v,o,null),r)for(const oe in r){const X=r[oe];z(X)&&(o[oe]=X.bind(s))}if(l){const oe=l.call(s,s);de(oe)&&(e.data=$t(oe))}if(To=!0,n)for(const oe in n){const X=n[oe],Ye=z(X)?X.bind(s,s):z(X.get)?X.get.bind(s,s):Je,dt=!z(X)&&z(X.set)?X.set.bind(s):Je,ze=Me({get:Ye,set:dt});Object.defineProperty(o,oe,{enumerable:!0,configurable:!0,get:()=>ze.value,set:Ee=>ze.value=Ee})}if(i)for(const oe in i)Tl(i[oe],o,s,oe);if(u){const oe=z(u)?u.call(s):u;Reflect.ownKeys(oe).forEach(X=>{Fr(X,oe[X])})}p&&Sl(p,e,"c");function U(oe,X){H(X)?X.forEach(Ye=>oe(Ye.bind(s))):X&&oe(X.bind(s))}if(U(xr,g),U(jt,E),U(kr,y),U(Cr,b),U(br,w),U(yr,Z),U(Ar,De),U($r,he),U(Er,ve),U(Sr,K),U(Rs,R),U(Tr,Ct),H(Fe))if(Fe.length){const oe=e.exposed||(e.exposed={});Fe.forEach(X=>{Object.defineProperty(oe,X,{get:()=>s[X],set:Ye=>s[X]=Ye,enumerable:!0})})}else e.exposed||(e.exposed={});pe&&e.render===Je&&(e.render=pe),Oe!=null&&(e.inheritAttrs=Oe),ct&&(e.components=ct),St&&(e.directives=St),Ct&&wl(e)}function Mr(e,t,s=Je){H(e)&&(e=Eo(e));for(const o in e){const l=e[o];let n;de(l)?"default"in l?n=Ns(l.from||o,l.default,!0):n=Ns(l.from||o):n=Ns(l),we(n)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>n.value,set:r=>n.value=r}):t[o]=n}}function Sl(e,t,s){Xe(H(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,s)}function Tl(e,t,s,o){let l=o.includes(".")?jl(s,o):()=>s[o];if(me(e)){const n=t[e];z(n)&&Wt(l,n)}else if(z(e))Wt(l,e.bind(s));else if(de(e))if(H(e))e.forEach(n=>Tl(n,t,s,o));else{const n=z(e.handler)?e.handler.bind(s):t[e.handler];z(n)&&Wt(l,n,e)}}function El(e){const t=e.type,{mixins:s,extends:o}=t,{mixins:l,optionsCache:n,config:{optionMergeStrategies:r}}=e.appContext,i=n.get(t);let u;return i?u=i:!l.length&&!s&&!o?u=t:(u={},l.length&&l.forEach(v=>Fs(u,v,r,!0)),Fs(u,t,r)),de(t)&&n.set(t,u),u}function Fs(e,t,s,o=!1){const{mixins:l,extends:n}=t;n&&Fs(e,n,s,!0),l&&l.forEach(r=>Fs(e,r,s,!0));for(const r in t)if(!(o&&r==="expose")){const i=Ur[r]||s&&s[r];e[r]=i?i(e[r],t[r]):t[r]}return e}const Ur={data:$l,props:Al,emits:Al,methods:us,computed:us,beforeCreate:Ve,created:Ve,beforeMount:Ve,mounted:Ve,beforeUpdate:Ve,updated:Ve,beforeDestroy:Ve,beforeUnmount:Ve,destroyed:Ve,unmounted:Ve,activated:Ve,deactivated:Ve,errorCaptured:Ve,serverPrefetch:Ve,components:us,directives:us,watch:Or,provide:$l,inject:Dr};function $l(e,t){return t?e?function(){return Ae(z(e)?e.call(this,this):e,z(t)?t.call(this,this):t)}:t:e}function Dr(e,t){return us(Eo(e),Eo(t))}function Eo(e){if(H(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Ve(e,t){return e?[...new Set([].concat(e,t))]:t}function us(e,t){return e?Ae(Object.create(null),e,t):t}function Al(e,t){return e?H(e)&&H(t)?[...new Set([...e,...t])]:Ae(Object.create(null),Cl(e),Cl(t??{})):t}function Or(e,t){if(!e)return t;if(!t)return e;const s=Ae(Object.create(null),e);for(const o in t)s[o]=Ve(e[o],t[o]);return s}function Pl(){return{app:null,config:{isNativeTag:kn,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 Lr=0;function Rr(e,t){return function(o,l=null){z(o)||(o=Ae({},o)),l!=null&&!de(l)&&(l=null);const n=Pl(),r=new WeakSet,i=[];let u=!1;const v=n.app={_uid:Lr++,_component:o,_props:l,_container:null,_context:n,_instance:null,version:ki,get config(){return n.config},set config(p){},use(p,...g){return r.has(p)||(p&&z(p.install)?(r.add(p),p.install(v,...g)):z(p)&&(r.add(p),p(v,...g))),v},mixin(p){return n.mixins.includes(p)||n.mixins.push(p),v},component(p,g){return g?(n.components[p]=g,v):n.components[p]},directive(p,g){return g?(n.directives[p]=g,v):n.directives[p]},mount(p,g,E){if(!u){const y=v._ceVNode||se(o,l);return y.appContext=n,E===!0?E="svg":E===!1&&(E=void 0),e(y,p,E),u=!0,v._container=p,p.__vue_app__=v,Ks(y.component)}},onUnmount(p){i.push(p)},unmount(){u&&(Xe(i,v._instance,16),e(null,v._container),delete v._container.__vue_app__)},provide(p,g){return n.provides[p]=g,v},runWithContext(p){const g=zt;zt=v;try{return p()}finally{zt=g}}};return v}}let zt=null;function Fr(e,t){if(Ie){let s=Ie.provides;const o=Ie.parent&&Ie.parent.provides;o===s&&(s=Ie.provides=Object.create(o)),s[e]=t}}function Ns(e,t,s=!1){const o=hi();if(o||zt){let l=zt?zt._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(l&&e in l)return l[e];if(arguments.length>1)return s&&z(t)?t.call(o&&o.proxy):t}}const Vl={},Il=()=>Object.create(Vl),Ml=e=>Object.getPrototypeOf(e)===Vl;function Nr(e,t,s,o=!1){const l={},n=Il();e.propsDefaults=Object.create(null),Ul(e,t,l,n);for(const r in e.propsOptions[0])r in l||(l[r]=void 0);s?e.props=o?l:Xn(l):e.type.props?e.props=l:e.props=n,e.attrs=n}function Br(e,t,s,o){const{props:l,attrs:n,vnode:{patchFlag:r}}=e,i=Q(l),[u]=e.propsOptions;let v=!1;if((o||r>0)&&!(r&16)){if(r&8){const p=e.vnode.dynamicProps;for(let g=0;g<p.length;g++){let E=p[g];if(Bs(e.emitsOptions,E))continue;const y=t[E];if(u)if(te(n,E))y!==n[E]&&(n[E]=y,v=!0);else{const b=ht(E);l[b]=$o(u,i,b,y,e,!1)}else y!==n[E]&&(n[E]=y,v=!0)}}}else{Ul(e,t,l,n)&&(v=!0);let p;for(const g in i)(!t||!te(t,g)&&((p=Tt(g))===g||!te(t,p)))&&(u?s&&(s[g]!==void 0||s[p]!==void 0)&&(l[g]=$o(u,i,g,void 0,e,!0)):delete l[g]);if(n!==i)for(const g in n)(!t||!te(t,g))&&(delete n[g],v=!0)}v&&nt(e.attrs,"set","")}function Ul(e,t,s,o){const[l,n]=e.propsOptions;let r=!1,i;if(t)for(let u in t){if(Zt(u))continue;const v=t[u];let p;l&&te(l,p=ht(u))?!n||!n.includes(p)?s[p]=v:(i||(i={}))[p]=v:Bs(e.emitsOptions,u)||(!(u in o)||v!==o[u])&&(o[u]=v,r=!0)}if(n){const u=Q(s),v=i||ne;for(let p=0;p<n.length;p++){const g=n[p];s[g]=$o(l,u,g,v[g],e,!te(v,g))}}return r}function $o(e,t,s,o,l,n){const r=e[s];if(r!=null){const i=te(r,"default");if(i&&o===void 0){const u=r.default;if(r.type!==Function&&!r.skipFactory&&z(u)){const{propsDefaults:v}=l;if(s in v)o=v[s];else{const p=hs(l);o=v[s]=u.call(null,t),p()}}else o=u;l.ce&&l.ce._setProp(s,o)}r[0]&&(n&&!i?o=!1:r[1]&&(o===""||o===Tt(s))&&(o=!0))}return o}const qr=new WeakMap;function Dl(e,t,s=!1){const o=s?qr:t.propsCache,l=o.get(e);if(l)return l;const n=e.props,r={},i=[];let u=!1;if(!z(e)){const p=g=>{u=!0;const[E,y]=Dl(g,t,!0);Ae(r,E),y&&i.push(...y)};!s&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!n&&!u)return de(e)&&o.set(e,Ot),Ot;if(H(n))for(let p=0;p<n.length;p++){const g=ht(n[p]);Ol(g)&&(r[g]=ne)}else if(n)for(const p in n){const g=ht(p);if(Ol(g)){const E=n[p],y=r[g]=H(E)||z(E)?{type:E}:Ae({},E),b=y.type;let w=!1,Z=!0;if(H(b))for(let W=0;W<b.length;++W){const K=b[W],J=z(K)&&K.name;if(J==="Boolean"){w=!0;break}else J==="String"&&(Z=!1)}else w=z(b)&&b.name==="Boolean";y[0]=w,y[1]=Z,(w||te(y,"default"))&&i.push(g)}}const v=[r,i];return de(e)&&o.set(e,v),v}function Ol(e){return e[0]!=="$"&&!Zt(e)}const Ao=e=>e==="_"||e==="__"||e==="_ctx"||e==="$stable",Po=e=>H(e)?e.map(tt):[tt(e)],Hr=(e,t,s)=>{if(t._n)return t;const o=mr((...l)=>Po(t(...l)),s);return o._c=!1,o},Ll=(e,t,s)=>{const o=e._ctx;for(const l in e){if(Ao(l))continue;const n=e[l];if(z(n))t[l]=Hr(l,n,o);else if(n!=null){const r=Po(n);t[l]=()=>r}}},Rl=(e,t)=>{const s=Po(t);e.slots.default=()=>s},Fl=(e,t,s)=>{for(const o in t)(s||!Ao(o))&&(e[o]=t[o])},jr=(e,t,s)=>{const o=e.slots=Il();if(e.vnode.shapeFlag&32){const l=t.__;l&&oo(o,"__",l,!0);const n=t._;n?(Fl(o,t,s),s&&oo(o,"_",n,!0)):Ll(t,o)}else t&&Rl(e,t)},zr=(e,t,s)=>{const{vnode:o,slots:l}=e;let n=!0,r=ne;if(o.shapeFlag&32){const i=t._;i?s&&i===1?n=!1:Fl(l,t,s):(n=!t.$stable,Ll(t,l)),r=t}else t&&(Rl(e,t),r={default:1});if(n)for(const i in l)!Ao(i)&&r[i]==null&&delete l[i]},Ne=ni;function Wr(e){return Kr(e)}function Kr(e,t){const s=Ss();s.__VUE__=!0;const{insert:o,remove:l,patchProp:n,createElement:r,createText:i,createComment:u,setText:v,setElementText:p,parentNode:g,nextSibling:E,setScopeId:y=Je,insertStaticContent:b}=e,w=(c,f,_,S=null,x=null,k=null,P=void 0,A=null,$=!!f.dynamicChildren)=>{if(c===f)return;c&&!fs(c,f)&&(S=Jt(c),Ee(c,x,k,!0),c=null),f.patchFlag===-2&&($=!1,f.dynamicChildren=null);const{type:T,ref:O,shapeFlag:V}=f;switch(T){case qs:Z(c,f,_,S);break;case _t:W(c,f,_,S);break;case Hs:c==null&&K(f,_,S,P);break;case Re:ct(c,f,_,S,x,k,P,A,$);break;default:V&1?pe(c,f,_,S,x,k,P,A,$):V&6?St(c,f,_,S,x,k,P,A,$):(V&64||V&128)&&T.process(c,f,_,S,x,k,P,A,$,Dt)}O!=null&&x?rs(O,c&&c.ref,k,f||c,!f):O==null&&c&&c.ref!=null&&rs(c.ref,null,k,c,!0)},Z=(c,f,_,S)=>{if(c==null)o(f.el=i(f.children),_,S);else{const x=f.el=c.el;f.children!==c.children&&v(x,f.children)}},W=(c,f,_,S)=>{c==null?o(f.el=u(f.children||""),_,S):f.el=c.el},K=(c,f,_,S)=>{[c.el,c.anchor]=b(c.children,f,_,S,c.el,c.anchor)},J=({el:c,anchor:f},_,S)=>{let x;for(;c&&c!==f;)x=E(c),o(c,_,S),c=x;o(f,_,S)},R=({el:c,anchor:f})=>{let _;for(;c&&c!==f;)_=E(c),l(c),c=_;l(f)},pe=(c,f,_,S,x,k,P,A,$)=>{f.type==="svg"?P="svg":f.type==="math"&&(P="mathml"),c==null?he(f,_,S,x,k,P,A,$):Ct(c,f,x,k,P,A,$)},he=(c,f,_,S,x,k,P,A)=>{let $,T;const{props:O,shapeFlag:V,transition:D,dirs:B}=c;if($=c.el=r(c.type,k,O&&O.is,O),V&8?p($,c.children):V&16&&De(c.children,$,null,S,x,Vo(c,k),P,A),B&&Pt(c,null,S,"created"),ve($,c,c.scopeId,P,S),O){for(const ee in O)ee!=="value"&&!Zt(ee)&&n($,ee,null,O[ee],k,S);"value"in O&&n($,"value",null,O.value,k),(T=O.onVnodeBeforeMount)&&st(T,S,c)}B&&Pt(c,null,S,"beforeMount");const G=Gr(x,D);G&&D.beforeEnter($),o($,f,_),((T=O&&O.onVnodeMounted)||G||B)&&Ne(()=>{T&&st(T,S,c),G&&D.enter($),B&&Pt(c,null,S,"mounted")},x)},ve=(c,f,_,S,x)=>{if(_&&y(c,_),S)for(let k=0;k<S.length;k++)y(c,S[k]);if(x){let k=x.subTree;if(f===k||Gl(k.type)&&(k.ssContent===f||k.ssFallback===f)){const P=x.vnode;ve(c,P,P.scopeId,P.slotScopeIds,x.parent)}}},De=(c,f,_,S,x,k,P,A,$=0)=>{for(let T=$;T<c.length;T++){const O=c[T]=A?bt(c[T]):tt(c[T]);w(null,O,f,_,S,x,k,P,A)}},Ct=(c,f,_,S,x,k,P)=>{const A=f.el=c.el;let{patchFlag:$,dynamicChildren:T,dirs:O}=f;$|=c.patchFlag&16;const V=c.props||ne,D=f.props||ne;let B;if(_&&Vt(_,!1),(B=D.onVnodeBeforeUpdate)&&st(B,_,f,c),O&&Pt(f,c,_,"beforeUpdate"),_&&Vt(_,!0),(V.innerHTML&&D.innerHTML==null||V.textContent&&D.textContent==null)&&p(A,""),T?Fe(c.dynamicChildren,T,A,_,S,Vo(f,x),k):P||X(c,f,A,null,_,S,Vo(f,x),k,!1),$>0){if($&16)Oe(A,V,D,_,x);else if($&2&&V.class!==D.class&&n(A,"class",null,D.class,x),$&4&&n(A,"style",V.style,D.style,x),$&8){const G=f.dynamicProps;for(let ee=0;ee<G.length;ee++){const Y=G[ee],Ce=V[Y],$e=D[Y];($e!==Ce||Y==="value")&&n(A,Y,Ce,$e,x,_)}}$&1&&c.children!==f.children&&p(A,f.children)}else!P&&T==null&&Oe(A,V,D,_,x);((B=D.onVnodeUpdated)||O)&&Ne(()=>{B&&st(B,_,f,c),O&&Pt(f,c,_,"updated")},S)},Fe=(c,f,_,S,x,k,P)=>{for(let A=0;A<f.length;A++){const $=c[A],T=f[A],O=$.el&&($.type===Re||!fs($,T)||$.shapeFlag&198)?g($.el):_;w($,T,O,null,S,x,k,P,!0)}},Oe=(c,f,_,S,x)=>{if(f!==_){if(f!==ne)for(const k in f)!Zt(k)&&!(k in _)&&n(c,k,f[k],null,x,S);for(const k in _){if(Zt(k))continue;const P=_[k],A=f[k];P!==A&&k!=="value"&&n(c,k,A,P,x,S)}"value"in _&&n(c,"value",f.value,_.value,x)}},ct=(c,f,_,S,x,k,P,A,$)=>{const T=f.el=c?c.el:i(""),O=f.anchor=c?c.anchor:i("");let{patchFlag:V,dynamicChildren:D,slotScopeIds:B}=f;B&&(A=A?A.concat(B):B),c==null?(o(T,_,S),o(O,_,S),De(f.children||[],_,O,x,k,P,A,$)):V>0&&V&64&&D&&c.dynamicChildren?(Fe(c.dynamicChildren,D,_,x,k,P,A),(f.key!=null||x&&f===x.subTree)&&Nl(c,f,!0)):X(c,f,_,O,x,k,P,A,$)},St=(c,f,_,S,x,k,P,A,$)=>{f.slotScopeIds=A,c==null?f.shapeFlag&512?x.ctx.activate(f,_,S,P,$):F(f,_,S,x,k,P,$):C(c,f,$)},F=(c,f,_,S,x,k,P)=>{const A=c.component=pi(c,S,x);if(xl(c)&&(A.ctx.renderer=Dt),vi(A,!1,P),A.asyncDep){if(x&&x.registerDep(A,U,P),!c.el){const $=A.subTree=se(_t);W(null,$,f,_),c.placeholder=$.el}}else U(A,c,f,_,x,k,P)},C=(c,f,_)=>{const S=f.component=c.component;if(oi(c,f,_))if(S.asyncDep&&!S.asyncResolved){oe(S,f,_);return}else S.next=f,S.update();else f.el=c.el,S.vnode=f},U=(c,f,_,S,x,k,P)=>{const A=()=>{if(c.isMounted){let{next:V,bu:D,u:B,parent:G,vnode:ee}=c;{const Ke=Bl(c);if(Ke){V&&(V.el=ee.el,oe(c,V,P)),Ke.asyncDep.then(()=>{c.isUnmounted||A()});return}}let Y=V,Ce;Vt(c,!1),V?(V.el=ee.el,oe(c,V,P)):V=ee,D&&Cs(D),(Ce=V.props&&V.props.onVnodeBeforeUpdate)&&st(Ce,G,V,ee),Vt(c,!0);const $e=Wl(c),We=c.subTree;c.subTree=$e,w(We,$e,g(We.el),Jt(We),c,x,k),V.el=$e.el,Y===null&&li(c,$e.el),B&&Ne(B,x),(Ce=V.props&&V.props.onVnodeUpdated)&&Ne(()=>st(Ce,G,V,ee),x)}else{let V;const{el:D,props:B}=f,{bm:G,m:ee,parent:Y,root:Ce,type:$e}=c,We=is(f);Vt(c,!1),G&&Cs(G),!We&&(V=B&&B.onVnodeBeforeMount)&&st(V,Y,f),Vt(c,!0);{Ce.ce&&Ce.ce._def.shadowRoot!==!1&&Ce.ce._injectChildStyle($e);const Ke=c.subTree=Wl(c);w(null,Ke,_,S,c,x,k),f.el=Ke.el}if(ee&&Ne(ee,x),!We&&(V=B&&B.onVnodeMounted)){const Ke=f;Ne(()=>st(V,Y,Ke),x)}(f.shapeFlag&256||Y&&is(Y.vnode)&&Y.vnode.shapeFlag&256)&&c.a&&Ne(c.a,x),c.isMounted=!0,f=_=S=null}};c.scope.on();const $=c.effect=new Go(A);c.scope.off();const T=c.update=$.run.bind($),O=c.job=$.runIfDirty.bind($);O.i=c,O.id=c.uid,$.scheduler=()=>wo(O),Vt(c,!0),T()},oe=(c,f,_)=>{f.component=c;const S=c.vnode.props;c.vnode=f,c.next=null,Br(c,f.props,S,_),zr(c,f.children,_),Qe(),gl(c),Ze()},X=(c,f,_,S,x,k,P,A,$=!1)=>{const T=c&&c.children,O=c?c.shapeFlag:0,V=f.children,{patchFlag:D,shapeFlag:B}=f;if(D>0){if(D&128){dt(T,V,_,S,x,k,P,A,$);return}else if(D&256){Ye(T,V,_,S,x,k,P,A,$);return}}B&8?(O&16&&Ut(T,x,k),V!==T&&p(_,V)):O&16?B&16?dt(T,V,_,S,x,k,P,A,$):Ut(T,x,k,!0):(O&8&&p(_,""),B&16&&De(V,_,S,x,k,P,A,$))},Ye=(c,f,_,S,x,k,P,A,$)=>{c=c||Ot,f=f||Ot;const T=c.length,O=f.length,V=Math.min(T,O);let D;for(D=0;D<V;D++){const B=f[D]=$?bt(f[D]):tt(f[D]);w(c[D],B,_,null,x,k,P,A,$)}T>O?Ut(c,x,k,!0,!1,V):De(f,_,S,x,k,P,A,$,V)},dt=(c,f,_,S,x,k,P,A,$)=>{let T=0;const O=f.length;let V=c.length-1,D=O-1;for(;T<=V&&T<=D;){const B=c[T],G=f[T]=$?bt(f[T]):tt(f[T]);if(fs(B,G))w(B,G,_,null,x,k,P,A,$);else break;T++}for(;T<=V&&T<=D;){const B=c[V],G=f[D]=$?bt(f[D]):tt(f[D]);if(fs(B,G))w(B,G,_,null,x,k,P,A,$);else break;V--,D--}if(T>V){if(T<=D){const B=D+1,G=B<O?f[B].el:S;for(;T<=D;)w(null,f[T]=$?bt(f[T]):tt(f[T]),_,G,x,k,P,A,$),T++}}else if(T>D)for(;T<=V;)Ee(c[T],x,k,!0),T++;else{const B=T,G=T,ee=new Map;for(T=G;T<=D;T++){const d=f[T]=$?bt(f[T]):tt(f[T]);d.key!=null&&ee.set(d.key,T)}let Y,Ce=0;const $e=D-G+1;let We=!1,Ke=0;const ft=new Array($e);for(T=0;T<$e;T++)ft[T]=0;for(T=B;T<=V;T++){const d=c[T];if(Ce>=$e){Ee(d,x,k,!0);continue}let h;if(d.key!=null)h=ee.get(d.key);else for(Y=G;Y<=D;Y++)if(ft[Y-G]===0&&fs(d,f[Y])){h=Y;break}h===void 0?Ee(d,x,k,!0):(ft[h-G]=T+1,h>=Ke?Ke=h:We=!0,w(d,f[h],_,null,x,k,P,A,$),Ce++)}const m=We?Yr(ft):Ot;for(Y=m.length-1,T=$e-1;T>=0;T--){const d=G+T,h=f[d],q=f[d+1],Se=d+1<O?q.el||q.placeholder:S;ft[T]===0?w(null,h,_,Se,x,k,P,A,$):We&&(Y<0||T!==m[Y]?ze(h,_,Se,2):Y--)}}},ze=(c,f,_,S,x=null)=>{const{el:k,type:P,transition:A,children:$,shapeFlag:T}=c;if(T&6){ze(c.component.subTree,f,_,S);return}if(T&128){c.suspense.move(f,_,S);return}if(T&64){P.move(c,f,_,Dt);return}if(P===Re){o(k,f,_);for(let V=0;V<$.length;V++)ze($[V],f,_,S);o(c.anchor,f,_);return}if(P===Hs){J(c,f,_);return}if(S!==2&&T&1&&A)if(S===0)A.beforeEnter(k),o(k,f,_),Ne(()=>A.enter(k),x);else{const{leave:V,delayLeave:D,afterLeave:B}=A,G=()=>{c.ctx.isUnmounted?l(k):o(k,f,_)},ee=()=>{V(k,()=>{G(),B&&B()})};D?D(k,G,ee):ee()}else o(k,f,_)},Ee=(c,f,_,S=!1,x=!1)=>{const{type:k,props:P,ref:A,children:$,dynamicChildren:T,shapeFlag:O,patchFlag:V,dirs:D,cacheIndex:B}=c;if(V===-2&&(x=!1),A!=null&&(Qe(),rs(A,null,_,c,!0),Ze()),B!=null&&(f.renderCache[B]=void 0),O&256){f.ctx.deactivate(c);return}const G=O&1&&D,ee=!is(c);let Y;if(ee&&(Y=P&&P.onVnodeBeforeUnmount)&&st(Y,f,c),O&6)Yt(c.component,_,S);else{if(O&128){c.suspense.unmount(_,S);return}G&&Pt(c,null,f,"beforeUnmount"),O&64?c.type.remove(c,f,_,Dt,S):T&&!T.hasOnce&&(k!==Re||V>0&&V&64)?Ut(T,f,_,!1,!0):(k===Re&&V&384||!x&&O&16)&&Ut($,f,_),S&&Mt(c)}(ee&&(Y=P&&P.onVnodeUnmounted)||G)&&Ne(()=>{Y&&st(Y,f,c),G&&Pt(c,null,f,"unmounted")},_)},Mt=c=>{const{type:f,el:_,anchor:S,transition:x}=c;if(f===Re){ke(_,S);return}if(f===Hs){R(c);return}const k=()=>{l(_),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(c.shapeFlag&1&&x&&!x.persisted){const{leave:P,delayLeave:A}=x,$=()=>P(_,k);A?A(c.el,k,$):$()}else k()},ke=(c,f)=>{let _;for(;c!==f;)_=E(c),l(c),c=_;l(f)},Yt=(c,f,_)=>{const{bum:S,scope:x,job:k,subTree:P,um:A,m:$,a:T,parent:O,slots:{__:V}}=c;ql($),ql(T),S&&Cs(S),O&&H(V)&&V.forEach(D=>{O.renderCache[D]=void 0}),x.stop(),k&&(k.flags|=8,Ee(P,c,f,_)),A&&Ne(A,f),Ne(()=>{c.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},Ut=(c,f,_,S=!1,x=!1,k=0)=>{for(let P=k;P<c.length;P++)Ee(c[P],f,_,S,x)},Jt=c=>{if(c.shapeFlag&6)return Jt(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const f=E(c.anchor||c.el),_=f&&f[gr];return _?E(_):f};let bs=!1;const ys=(c,f,_)=>{c==null?f._vnode&&Ee(f._vnode,null,null,!0):w(f._vnode||null,c,f,null,null,null,_),f._vnode=c,bs||(bs=!0,gl(),_l(),bs=!1)},Dt={p:w,um:Ee,m:ze,r:Mt,mt:F,mc:De,pc:X,pbc:Fe,n:Jt,o:e};return{render:ys,hydrate:void 0,createApp:Rr(ys)}}function Vo({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 Vt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Gr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Nl(e,t,s=!1){const o=e.children,l=t.children;if(H(o)&&H(l))for(let n=0;n<o.length;n++){const r=o[n];let i=l[n];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=l[n]=bt(l[n]),i.el=r.el),!s&&i.patchFlag!==-2&&Nl(r,i)),i.type===qs&&(i.el=r.el),i.type===_t&&!i.el&&(i.el=r.el)}}function Yr(e){const t=e.slice(),s=[0];let o,l,n,r,i;const u=e.length;for(o=0;o<u;o++){const v=e[o];if(v!==0){if(l=s[s.length-1],e[l]<v){t[o]=l,s.push(o);continue}for(n=0,r=s.length-1;n<r;)i=n+r>>1,e[s[i]]<v?n=i+1:r=i;v<e[s[n]]&&(n>0&&(t[o]=s[n-1]),s[n]=o)}}for(n=s.length,r=s[n-1];n-- >0;)s[n]=r,r=t[r];return s}function Bl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bl(t)}function ql(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Jr=Symbol.for("v-scx"),Qr=()=>Ns(Jr);function Wt(e,t,s){return Hl(e,t,s)}function Hl(e,t,s=ne){const{immediate:o,deep:l,flush:n,once:r}=s,i=Ae({},s),u=t&&o||!t&&n!=="post";let v;if(vs){if(n==="sync"){const y=Qr();v=y.__watcherHandles||(y.__watcherHandles=[])}else if(!u){const y=()=>{};return y.stop=Je,y.resume=Je,y.pause=Je,y}}const p=Ie;i.call=(y,b,w)=>Xe(y,p,b,w);let g=!1;n==="post"?i.scheduler=y=>{Ne(y,p&&p.suspense)}:n!=="sync"&&(g=!0,i.scheduler=(y,b)=>{b?y():wo(y)}),i.augmentJob=y=>{t&&(y.flags|=4),g&&(y.flags|=2,p&&(y.id=p.uid,y.i=p))};const E=ar(e,t,i);return vs&&(v?v.push(E):u&&E()),E}function Zr(e,t,s){const o=this.proxy,l=me(e)?e.includes(".")?jl(o,e):()=>o[e]:e.bind(o,o);let n;z(t)?n=t:(n=t.handler,s=t);const r=hs(this),i=Hl(l,n.bind(o),s);return r(),i}function jl(e,t){const s=t.split(".");return()=>{let o=e;for(let l=0;l<s.length&&o;l++)o=o[s[l]];return o}}const Xr=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ht(t)}Modifiers`]||e[`${Tt(t)}Modifiers`];function ei(e,t,...s){if(e.isUnmounted)return;const o=e.vnode.props||ne;let l=s;const n=t.startsWith("update:"),r=n&&Xr(o,t.slice(7));r&&(r.trim&&(l=s.map(p=>me(p)?p.trim():p)),r.number&&(l=s.map(lo)));let i,u=o[i=so(t)]||o[i=so(ht(t))];!u&&n&&(u=o[i=so(Tt(t))]),u&&Xe(u,e,6,l);const v=o[i+"Once"];if(v){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Xe(v,e,6,l)}}function zl(e,t,s=!1){const o=t.emitsCache,l=o.get(e);if(l!==void 0)return l;const n=e.emits;let r={},i=!1;if(!z(e)){const u=v=>{const p=zl(v,t,!0);p&&(i=!0,Ae(r,p))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!n&&!i?(de(e)&&o.set(e,null),null):(H(n)?n.forEach(u=>r[u]=null):Ae(r,n),de(e)&&o.set(e,r),r)}function Bs(e,t){return!e||!ws(t)?!1:(t=t.slice(2).replace(/Once$/,""),te(e,t[0].toLowerCase()+t.slice(1))||te(e,Tt(t))||te(e,t))}function Fd(){}function Wl(e){const{type:t,vnode:s,proxy:o,withProxy:l,propsOptions:[n],slots:r,attrs:i,emit:u,render:v,renderCache:p,props:g,data:E,setupState:y,ctx:b,inheritAttrs:w}=e,Z=Os(e);let W,K;try{if(s.shapeFlag&4){const R=l||o,pe=R;W=tt(v.call(pe,R,p,g,y,E,b)),K=i}else{const R=t;W=tt(R.length>1?R(g,{attrs:i,slots:r,emit:u}):R(g,null)),K=t.props?i:ti(i)}}catch(R){cs.length=0,Us(R,e,1),W=se(_t)}let J=W;if(K&&w!==!1){const R=Object.keys(K),{shapeFlag:pe}=J;R.length&&pe&7&&(n&&R.some(Xs)&&(K=si(K,n)),J=Kt(J,K,!1,!0))}return s.dirs&&(J=Kt(J,null,!1,!0),J.dirs=J.dirs?J.dirs.concat(s.dirs):s.dirs),s.transition&&xo(J,s.transition),W=J,Os(Z),W}const ti=e=>{let t;for(const s in e)(s==="class"||s==="style"||ws(s))&&((t||(t={}))[s]=e[s]);return t},si=(e,t)=>{const s={};for(const o in e)(!Xs(o)||!(o.slice(9)in t))&&(s[o]=e[o]);return s};function oi(e,t,s){const{props:o,children:l,component:n}=e,{props:r,children:i,patchFlag:u}=t,v=n.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return o?Kl(o,r,v):!!r;if(u&8){const p=t.dynamicProps;for(let g=0;g<p.length;g++){const E=p[g];if(r[E]!==o[E]&&!Bs(v,E))return!0}}}else return(l||i)&&(!i||!i.$stable)?!0:o===r?!1:o?r?Kl(o,r,v):!0:!!r;return!1}function Kl(e,t,s){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l<o.length;l++){const n=o[l];if(t[n]!==e[n]&&!Bs(s,n))return!0}return!1}function li({vnode:e,parent:t},s){for(;t;){const o=t.subTree;if(o.suspense&&o.suspense.activeBranch===e&&(o.el=e.el),o===e)(e=t.vnode).el=s,t=t.parent;else break}}const Gl=e=>e.__isSuspense;function ni(e,t){t&&t.pendingBranch?H(e)?t.effects.push(...e):t.effects.push(e):vr(e)}const Re=Symbol.for("v-fgt"),qs=Symbol.for("v-txt"),_t=Symbol.for("v-cmt"),Hs=Symbol.for("v-stc"),cs=[];let Be=null;function I(e=!1){cs.push(Be=e?null:[])}function ri(){cs.pop(),Be=cs[cs.length-1]||null}let ds=1;function Yl(e,t=!1){ds+=e,e<0&&Be&&t&&(Be.hasOnce=!0)}function Jl(e){return e.dynamicChildren=ds>0?Be||Ot:null,ri(),ds>0&&Be&&Be.push(e),e}function M(e,t,s,o,l,n){return Jl(a(e,t,s,o,l,n,!0))}function js(e,t,s,o,l){return Jl(se(e,t,s,o,l,!0))}function Ql(e){return e?e.__v_isVNode===!0:!1}function fs(e,t){return e.type===t.type&&e.key===t.key}const Zl=({key:e})=>e??null,zs=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?me(e)||we(e)||z(e)?{i:He,r:e,k:t,f:!!s}:e:null);function a(e,t=null,s=null,o=0,l=null,n=e===Re?0:1,r=!1,i=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zl(t),ref:t&&zs(t),scopeId:yl,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:o,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:He};return i?(Io(u,s),n&128&&e.normalize(u)):s&&(u.shapeFlag|=me(s)?8:16),ds>0&&!r&&Be&&(u.patchFlag>0||n&6)&&u.patchFlag!==32&&Be.push(u),u}const se=ii;function ii(e,t=null,s=null,o=0,l=null,n=!1){if((!e||e===Pr)&&(e=_t),Ql(e)){const i=Kt(e,t,!0);return s&&Io(i,s),ds>0&&!n&&Be&&(i.shapeFlag&6?Be[Be.indexOf(e)]=i:Be.push(i)),i.patchFlag=-2,i}if(xi(e)&&(e=e.__vccOpts),t){t=ai(t);let{class:i,style:u}=t;i&&!me(i)&&(t.class=ge(i)),de(u)&&(_o(u)&&!H(u)&&(u=Ae({},u)),t.style=Rt(u))}const r=me(e)?1:Gl(e)?128:_r(e)?64:de(e)?4:z(e)?2:0;return a(e,t,s,o,l,r,n,!0)}function ai(e){return e?_o(e)||Ml(e)?Ae({},e):e:null}function Kt(e,t,s=!1,o=!1){const{props:l,ref:n,patchFlag:r,children:i,transition:u}=e,v=t?ci(l||{},t):l,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:v,key:v&&Zl(v),ref:t&&t.ref?s&&n?H(n)?n.concat(zs(t)):[n,zs(t)]:zs(t):n,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Re?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Kt(e.ssContent),ssFallback:e.ssFallback&&Kt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&o&&xo(p,u.clone(p)),p}function ps(e=" ",t=0){return se(qs,null,e,t)}function ui(e,t){const s=se(Hs,null,e);return s.staticCount=t,s}function N(e="",t=!1){return t?(I(),js(_t,null,e)):se(_t,null,e)}function tt(e){return e==null||typeof e=="boolean"?se(_t):H(e)?se(Re,null,e.slice()):Ql(e)?bt(e):se(qs,null,String(e))}function bt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Kt(e)}function Io(e,t){let s=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(H(t))s=16;else if(typeof t=="object")if(o&65){const l=t.default;l&&(l._c&&(l._d=!1),Io(e,l()),l._c&&(l._d=!0));return}else{s=32;const l=t._;!l&&!Ml(t)?t._ctx=He:l===3&&He&&(He.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else z(t)?(t={default:t,_ctx:He},s=32):(t=String(t),o&64?(s=16,t=[ps(t)]):s=8);e.children=t,e.shapeFlag|=s}function ci(...e){const t={};for(let s=0;s<e.length;s++){const o=e[s];for(const l in o)if(l==="class")t.class!==o.class&&(t.class=ge([t.class,o.class]));else if(l==="style")t.style=Rt([t.style,o.style]);else if(ws(l)){const n=t[l],r=o[l];r&&n!==r&&!(H(n)&&n.includes(r))&&(t[l]=n?[].concat(n,r):r)}else l!==""&&(t[l]=o[l])}return t}function st(e,t,s,o=null){Xe(e,t,7,[s,o])}const di=Pl();let fi=0;function pi(e,t,s){const o=e.type,l=(t?t.appContext:e.appContext)||di,n={uid:fi++,vnode:e,type:o,parent:t,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Mn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(l.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Dl(o,l),emitsOptions:zl(o,l),emit:null,emitted:null,propsDefaults:ne,inheritAttrs:o.inheritAttrs,ctx:ne,data:ne,props:ne,attrs:ne,slots:ne,refs:ne,setupState:ne,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return n.ctx={_:n},n.root=t?t.root:n,n.emit=ei.bind(null,n),e.ce&&e.ce(n),n}let Ie=null;const hi=()=>Ie||He;let Ws,Mo;{const e=Ss(),t=(s,o)=>{let l;return(l=e[s])||(l=e[s]=[]),l.push(o),n=>{l.length>1?l.forEach(r=>r(n)):l[0](n)}};Ws=t("__VUE_INSTANCE_SETTERS__",s=>Ie=s),Mo=t("__VUE_SSR_SETTERS__",s=>vs=s)}const hs=e=>{const t=Ie;return Ws(e),e.scope.on(),()=>{e.scope.off(),Ws(t)}},Xl=()=>{Ie&&Ie.scope.off(),Ws(null)};function en(e){return e.vnode.shapeFlag&4}let vs=!1;function vi(e,t=!1,s=!1){t&&Mo(t);const{props:o,children:l}=e.vnode,n=en(e);Nr(e,o,n,t),jr(e,l,s||t);const r=n?mi(e,t):void 0;return t&&Mo(!1),r}function mi(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Vr);const{setup:o}=s;if(o){Qe();const l=e.setupContext=o.length>1?_i(e):null,n=hs(e),r=Bt(o,e,0,[e.props,l]),i=No(r);if(Ze(),n(),(i||e.sp)&&!is(e)&&wl(e),i){if(r.then(Xl,Xl),t)return r.then(u=>{tn(e,u)}).catch(u=>{Us(u,e,0)});e.asyncDep=r}else tn(e,r)}else sn(e)}function tn(e,t,s){z(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:de(t)&&(e.setupState=pl(t)),sn(e)}function sn(e,t,s){const o=e.type;e.render||(e.render=o.render||Je);{const l=hs(e);Qe();try{Ir(e)}finally{Ze(),l()}}}const gi={get(e,t){return Te(e,"get",""),e[t]}};function _i(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,gi),slots:e.slots,emit:e.emit,expose:t}}function Ks(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(pl(er(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in as)return as[s](e)},has(t,s){return s in t||s in as}})):e.proxy}const bi=/(?:^|[-_])(\w)/g,yi=e=>e.replace(bi,t=>t.toUpperCase()).replace(/[-_]/g,"");function wi(e,t=!0){return z(e)?e.displayName||e.name:e.name||t&&e.__name}function on(e,t,s=!1){let o=wi(t);if(!o&&t.__file){const l=t.__file.match(/([^/\\]+)\.\w+$/);l&&(o=l[1])}if(!o&&e&&e.parent){const l=n=>{for(const r in n)if(n[r]===t)return r};o=l(e.components||e.parent.type.components)||l(e.appContext.components)}return o?yi(o):s?"App":"Anonymous"}function xi(e){return z(e)&&"__vccOpts"in e}const Me=(e,t)=>rr(e,t,vs),ki="3.5.18";/**
* @vue/runtime-dom v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Uo;const ln=typeof window<"u"&&window.trustedTypes;if(ln)try{Uo=ln.createPolicy("vue",{createHTML:e=>e})}catch{}const nn=Uo?e=>Uo.createHTML(e):e=>e,Ci="http://www.w3.org/2000/svg",Si="http://www.w3.org/1998/Math/MathML",ut=typeof document<"u"?document:null,rn=ut&&ut.createElement("template"),Ti={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,o)=>{const l=t==="svg"?ut.createElementNS(Ci,e):t==="mathml"?ut.createElementNS(Si,e):s?ut.createElement(e,{is:s}):ut.createElement(e);return e==="select"&&o&&o.multiple!=null&&l.setAttribute("multiple",o.multiple),l},createText:e=>ut.createTextNode(e),createComment:e=>ut.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ut.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,o,l,n){const r=s?s.previousSibling:t.lastChild;if(l&&(l===n||l.nextSibling))for(;t.insertBefore(l.cloneNode(!0),s),!(l===n||!(l=l.nextSibling)););else{rn.innerHTML=nn(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const i=rn.content;if(o==="svg"||o==="mathml"){const u=i.firstChild;for(;u.firstChild;)i.appendChild(u.firstChild);i.removeChild(u)}t.insertBefore(i,s)}return[r?r.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Ei=Symbol("_vtc");function $i(e,t,s){const o=e[Ei];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Gs=Symbol("_vod"),an=Symbol("_vsh"),Ys={beforeMount(e,{value:t},{transition:s}){e[Gs]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):ms(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:o}){!t!=!s&&(o?t?(o.beforeEnter(e),ms(e,!0),o.enter(e)):o.leave(e,()=>{ms(e,!1)}):ms(e,t))},beforeUnmount(e,{value:t}){ms(e,t)}};function ms(e,t){e.style.display=t?e[Gs]:"none",e[an]=!t}const Ai=Symbol(""),Pi=/(^|;)\s*display\s*:/;function Vi(e,t,s){const o=e.style,l=me(s);let n=!1;if(s&&!l){if(t)if(me(t))for(const r of t.split(";")){const i=r.slice(0,r.indexOf(":")).trim();s[i]==null&&Js(o,i,"")}else for(const r in t)s[r]==null&&Js(o,r,"");for(const r in s)r==="display"&&(n=!0),Js(o,r,s[r])}else if(l){if(t!==s){const r=o[Ai];r&&(s+=";"+r),o.cssText=s,n=Pi.test(s)}}else t&&e.removeAttribute("style");Gs in e&&(e[Gs]=n?o.display:"",e[an]&&(o.display="none"))}const un=/\s*!important$/;function Js(e,t,s){if(H(s))s.forEach(o=>Js(e,t,o));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const o=Ii(e,t);un.test(s)?e.setProperty(Tt(o),s.replace(un,""),"important"):e[o]=s}}const cn=["Webkit","Moz","ms"],Do={};function Ii(e,t){const s=Do[t];if(s)return s;let o=ht(t);if(o!=="filter"&&o in e)return Do[t]=o;o=Ho(o);for(let l=0;l<cn.length;l++){const n=cn[l]+o;if(n in e)return Do[t]=n}return t}const dn="http://www.w3.org/1999/xlink";function fn(e,t,s,o,l,n=In(t)){o&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(dn,t.slice(6,t.length)):e.setAttributeNS(dn,t,s):s==null||n&&!zo(s)?e.removeAttribute(t):e.setAttribute(t,n?"":pt(s)?String(s):s)}function pn(e,t,s,o,l){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?nn(s):s);return}const n=e.tagName;if(t==="value"&&n!=="PROGRESS"&&!n.includes("-")){const i=n==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(i!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let r=!1;if(s===""||s==null){const i=typeof e[t];i==="boolean"?s=zo(s):s==null&&i==="string"?(s="",r=!0):i==="number"&&(s=0,r=!0)}try{e[t]=s}catch{}r&&e.removeAttribute(l||t)}function Gt(e,t,s,o){e.addEventListener(t,s,o)}function Mi(e,t,s,o){e.removeEventListener(t,s,o)}const hn=Symbol("_vei");function Ui(e,t,s,o,l=null){const n=e[hn]||(e[hn]={}),r=n[t];if(o&&r)r.value=o;else{const[i,u]=Di(t);if(o){const v=n[t]=Ri(o,l);Gt(e,i,v,u)}else r&&(Mi(e,i,r,u),n[t]=void 0)}}const vn=/(?:Once|Passive|Capture)$/;function Di(e){let t;if(vn.test(e)){t={};let o;for(;o=e.match(vn);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Tt(e.slice(2)),t]}let Oo=0;const Oi=Promise.resolve(),Li=()=>Oo||(Oi.then(()=>Oo=0),Oo=Date.now());function Ri(e,t){const s=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=s.attached)return;Xe(Fi(o,s.value),t,5,[o])};return s.value=e,s.attached=Li(),s}function Fi(e,t){if(H(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(o=>l=>!l._stopped&&o&&o(l))}else return t}const mn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ni=(e,t,s,o,l,n)=>{const r=l==="svg";t==="class"?$i(e,o,r):t==="style"?Vi(e,s,o):ws(t)?Xs(t)||Ui(e,t,s,o,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Bi(e,t,o,r))?(pn(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fn(e,t,o,r,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!me(o))?pn(e,ht(t),o,n,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),fn(e,t,o,r))};function Bi(e,t,s,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&mn(t)&&z(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const l=e.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return mn(t)&&me(s)?!1:t in e}const gn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return H(t)?s=>Cs(t,s):t};function qi(e){e.target.composing=!0}function _n(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Lo=Symbol("_assign"),fe={created(e,{modifiers:{lazy:t,trim:s,number:o}},l){e[Lo]=gn(l);const n=o||l.props&&l.props.type==="number";Gt(e,t?"change":"input",r=>{if(r.target.composing)return;let i=e.value;s&&(i=i.trim()),n&&(i=lo(i)),e[Lo](i)}),s&&Gt(e,"change",()=>{e.value=e.value.trim()}),t||(Gt(e,"compositionstart",qi),Gt(e,"compositionend",_n),Gt(e,"change",_n))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:o,trim:l,number:n}},r){if(e[Lo]=gn(r),e.composing)return;const i=(n||e.type==="number")&&!/^0\d/.test(e.value)?lo(e.value):e.value,u=t??"";i!==u&&(document.activeElement===e&&e.type!=="range"&&(o&&t===s||l&&e.value.trim()===u)||(e.value=u))}},Hi=["ctrl","shift","alt","meta"],ji={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)=>Hi.some(s=>e[`${s}Key`]&&!t.includes(s))},je=(e,t)=>{const s=e._withMods||(e._withMods={}),o=t.join(".");return s[o]||(s[o]=(l,...n)=>{for(let r=0;r<t.length;r++){const i=ji[t[r]];if(i&&i(l,t))return}return e(l,...n)})},zi=Ae({patchProp:Ni},Ti);let bn;function Wi(){return bn||(bn=Wr(zi))}const Ki=(...e)=>{const t=Wi().createApp(...e),{mount:s}=t;return t.mount=o=>{const l=Yi(o);if(!l)return;const n=t._component;!z(n)&&!n.render&&!n.template&&(n.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const r=s(l,!1,Gi(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),r},t};function Gi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Yi(e){return me(e)?document.querySelector(e):e}const Ji="https://das.doubanflix.com/api",Qi="https://api.doubanflix.com/api",Zi=1e4,Xi=1e3;class ea{constructor(){this.primaryURL=Ji,this.fallbackURL=Qi,this.currentURL=this.primaryURL,this.timeout=Zi,this.isUsingFallback=!1}switchToFallback(){this.isUsingFallback||(console.warn("主要API接口无法访问,切换到备用接口:",this.fallbackURL),this.currentURL=this.fallbackURL,this.isUsingFallback=!0)}resetToPrimary(){this.isUsingFallback&&(console.log("重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1)}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=localStorage.getItem("auth_token");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 localStorage.getItem("auth_token")?(localStorage.removeItem("auth_token"),{success:!1,error:"登录已过期,请重新登录",status:401,isAuthError:!0}):{success:!1,error:"请先登录",status:401,isAuthError:!0};case 403:throw new Error("没有权限访问该资源");case 404:return{success:!1,error:"NOT_FOUND",status:404,message:"请求的资源不存在"};case 500:throw new Error("服务器内部错误");default:throw new Error(s.message||"请求失败")}}return t.json()}async request(t,s={}){const o=async l=>{const n=`${l}${t}`,r={headers:this.addAuthHeaders(s.headers),...s},i=new AbortController,u=setTimeout(()=>i.abort(),this.timeout);try{const v=await fetch(n,{...r,signal:i.signal});return clearTimeout(u),await this.handleResponse(v)}catch(v){throw clearTimeout(u),v.name==="AbortError"?new Error("请求超时,请检查网络连接"):v}};try{return await o(this.currentURL)}catch(l){if(this.isNetworkError(l)&&!this.isUsingFallback){console.warn("主要接口请求失败,尝试备用接口:",l.message),await new Promise(n=>setTimeout(n,Xi));try{return this.switchToFallback(),await o(this.currentURL)}catch(n){throw console.error("备用接口也无法访问:",n.message),l}}throw l}}async get(t,s={}){const o=new URLSearchParams(s).toString(),l=o?`${t}?${o}`:t;return this.request(l,{method:"GET"})}async post(t,s={}){return this.request(t,{method:"POST",body:JSON.stringify(s)})}async put(t,s={}){return this.request(t,{method:"PUT",body:JSON.stringify(s)})}async delete(t){return this.request(t,{method:"DELETE"})}}const ue=new ea,Ue={getChallenge(){return ue.get("/auth/challenge")},register(e){return ue.post("/auth/register",e)},login(e){return ue.post("/auth/login",e)},verifyEmail(e){return ue.post("/auth/verify-email",e)},resendVerificationCode(e){return ue.post("/auth/resend-code",e)},getUserInfo(){return ue.get("/user/profile")},getCurrentUser(){return ue.get("/user/profile")},logout(){return ue.post("/auth/logout")},forgotPassword(e){return ue.post("/auth/forgot-password",e)},resetPassword(e){return ue.post("/auth/reset-password",e)}},yt={getMovieLinks(e,t={}){return ue.get(`/movie/${e}/links`,t)},addMovieLink(e,t){return ue.post(`/movies/${e}/links`,t)},updateMovieLink(e,t){return ue.put(`/movies/links/${e}`,t)},deleteMovieLink(e,t){return ue.delete(`/movies/${e}/links/${t}`)},voteLink(e,t){return ue.post(`/links/${e}/vote`,{vote_type:t})},removeVote(e,t){return ue.post(`/links/${e}/vote`,{vote_type:t})},getLinkVoteStatus(e){return ue.get(`/links/${e}/vote-status`)},getUserVote(e){return ue.get(`/links/${e}/vote-status`)},reportLink(e){return ue.post("/reports",e)}},gs={getUserLinks(e={}){return ue.get("/user/links",e)},getUserLinksByCategory(){return ue.get("/user/links/category")},updateUserName(e){return ue.put("/user/name",e)},getAllUsers(){return ue.get("/admin/users")},banUser(e,t){return ue.put(`/admin/users/${e}/ban`,{reason:t})},unbanUser(e){return ue.put(`/admin/users/${e}/unban`)}};async function ta(e){const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}function sa(e,t){return e.startsWith("0".repeat(t))}async function Qs(e,t,s=null){let o=0;const l=Date.now();for(;;){const n=e+o.toString(),r=await ta(n);if(sa(r,t)){const u=Date.now()-l;return console.log(`工作量证明完成: nonce=${o}, 耗时=${u}ms, hash=${r}`),{challenge:e,nonce:o.toString(),hash:r}}o++,o%1e3===0&&(s&&s(o),await new Promise(i=>setTimeout(i,1)))}}const xe=L(null),wt=L(null),_e=L(!1),ie=L(""),Ro=L(!1),oa=Me(()=>!!xe.value&&!!wt.value),la=Me(()=>{var e;return((e=xe.value)==null?void 0:e.email)||""}),na=Me(()=>{var e;return((e=xe.value)==null?void 0:e.id)||""}),le={user:xe,token:wt,loading:_e,error:ie,initialized:Ro,isAuthenticated:oa,userEmail:la,userId:na,async initAuth(){if(!Ro.value)try{_e.value=!0;const e=localStorage.getItem("auth_token");if(e){wt.value=e;try{const t=await Ue.getCurrentUser();t&&t.data?xe.value=t.data:xe.value=t,ie.value=""}catch(t){console.error("获取用户信息失败:",t),t.status===401||t.status===403?(localStorage.removeItem("auth_token"),wt.value=null,xe.value=null):console.warn("网络或其他错误,保留token:",t.message)}}}catch(e){console.error("初始化认证失败:",e)}finally{_e.value=!1,Ro.value=!0}},async signIn(e,t){try{_e.value=!0,ie.value="";const s=await Ue.login({email:e,password:t});return wt.value=s.data.token,xe.value=s.data.user,localStorage.setItem("auth_token",s.data.token),{success:!0,user:s.data.user}}catch(s){return console.error("登录错误:",s),ie.value=s.message||"登录过程中发生错误",{success:!1,error:ie.value}}finally{_e.value=!1}},async signUp(e,t,s={}){try{_e.value=!0,ie.value="";const o=await Ue.register({email:e,password:t,...s});return wt.value=o.token,xe.value=o.user,localStorage.setItem("auth_token",o.token),{success:!0,data:o}}catch(o){return console.error("注册错误:",o),ie.value=o.message||"注册过程中发生错误",{success:!1,error:ie.value}}finally{_e.value=!1}},async signUpWithProof(e,t){try{_e.value=!0,ie.value="";const s=await Ue.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await Qs(o,l,t),r={username:e.username,email:e.email,password:e.password,proof_of_work:{challenge:o,nonce:n.nonce,hash:n.hash}},i=await Ue.register(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("注册失败:",s),ie.value=s.message||"注册失败",{success:!1,error:ie.value}}finally{_e.value=!1}},async verifyEmail(e,t){try{_e.value=!0,ie.value="";const s={email:e,code:t},o=await Ue.verifyEmail(s);return o.success?{success:!0,data:o.data}:{success:!1,error:o.error}}catch(s){return console.error("邮箱验证失败:",s),ie.value=s.message||"验证失败",{success:!1,error:ie.value}}finally{_e.value=!1}},async resendVerificationCode(e){try{_e.value=!0,ie.value="";const t=await Ue.getChallenge();if(!t.success)throw new Error(t.error||"获取挑战失败");const{challenge:s,difficulty:o}=t.data,l=await Qs(s,o,onProgress),n={email:e,challenge:s,solution:l.nonce},r=await Ue.resendVerificationCode(n);return r.success?{success:!0,data:r.data}:{success:!1,error:r.error}}catch(t){return console.error("重发验证码失败:",t),ie.value=t.message||"发送失败",{success:!1,error:ie.value}}finally{_e.value=!1}},async forgotPassword(e,t){try{_e.value=!0,ie.value="";const s=await Ue.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await Qs(o,l,t),r={email:e,proof_of_work:{challenge:o,nonce:n.nonce,hash:n.hash}},i=await Ue.forgotPassword(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.message||i.error}}catch(s){return console.error("忘记密码失败:",s),ie.value=s.message||"发送失败",{success:!1,error:ie.value}}finally{_e.value=!1}},async resetPassword(e,t,s){try{_e.value=!0,ie.value="";const o=await Ue.resetPassword({email:e,code:t,password:s});return o.success?{success:!0,data:o.data}:{success:!1,error:o.message||o.error}}catch(o){return console.error("重置密码失败:",o),ie.value=o.message||"重置失败",{success:!1,error:ie.value}}finally{_e.value=!1}},async signOut(){try{return _e.value=!0,ie.value="",localStorage.removeItem("auth_token"),wt.value=null,xe.value=null,{success:!0}}catch(e){return console.error("登出错误:",e),ie.value="登出过程中发生错误",localStorage.removeItem("auth_token"),wt.value=null,xe.value=null,{success:!1,error:ie.value}}finally{_e.value=!1}},clearError(){ie.value=""},hasPermission(e){return!!xe.value},getDisplayName(){var e;return xe.value?((e=xe.value.user_metadata)==null?void 0:e.full_name)||xe.value.email||"用户":"未登录"},getAvatarUrl(){var e;return xe.value&&((e=xe.value.user_metadata)==null?void 0:e.avatar_url)||null}};class ra{async getUserProfile(t=null){try{let s=t;if(!s){const l=await Ue.getCurrentUser();if(!l)return{success:!1,error:"用户未登录"};s=l.id}const o=await gs.getUserProfile(s);return o?{success:!0,data:o}:{success:!0,data:{user_id:s,nickname:null,avatar_url:null,bio:null}}}catch(s){return console.error("获取用户配置异常:",s),{success:!1,error:"获取用户配置失败"}}}async updateUserProfile(t){try{return await Ue.getCurrentUser()?t.nickname&&t.nickname.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:t.nickname&&!(await gs.checkNicknameAvailability(t.nickname)).available?{success:!1,error:"该昵称已被使用,请选择其他昵称"}:{success:!0,data:await gs.updateUserProfile(t),message:"用户配置更新成功"}:{success:!1,error:"用户未登录"}}catch(s){return console.error("更新用户配置异常:",s),{success:!1,error:"更新用户配置失败"}}}async getUserDisplayName(t,s="匿名用户"){var o;try{const l=await this.getUserProfile(t);return l.success&&((o=l.data)!=null&&o.nickname)?l.data.nickname:s||"匿名用户"}catch(l){return console.error("获取用户显示名称失败:",l),s||"匿名用户"}}async checkNicknameAvailability(t){try{return!t||t.trim().length===0?{success:!1,error:"昵称不能为空"}:t.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:await Ue.getCurrentUser()?{success:!0,available:(await gs.checkNicknameAvailability(t.trim())).available}:{success:!1,error:"用户未登录"}}catch(s){return console.error("检查昵称可用性失败:",s),{success:!1,error:"检查昵称可用性失败"}}}}const ia=new ra,ot=(e,t)=>{const s=e.__vccOpts||e;for(const[o,l]of t)s[o]=l;return s},aa={class:"auth-switch"},ua={class:"switch-container"},ca=["checked"],da=["checked"],fa=ot({__name:"AuthSwitch",props:{modelValue:{type:String,default:"login"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=Me(()=>s.modelValue==="login"?"2%":"52%");return(l,n)=>(I(),M("div",aa,[a("div",ua,[a("input",{id:"login",type:"radio",name:"authMode",value:"login",checked:e.modelValue==="login",onChange:n[0]||(n[0]=r=>l.$emit("update:modelValue","login")),class:"switch-input"},null,40,ca),n[2]||(n[2]=a("label",{for:"login",class:"switch-label"},"登录",-1)),a("input",{id:"register",type:"radio",name:"authMode",value:"register",checked:e.modelValue==="register",onChange:n[1]||(n[1]=r=>l.$emit("update:modelValue","register")),class:"switch-input"},null,40,da),n[3]||(n[3]=a("label",{for:"register",class:"switch-label"},"注册",-1)),a("div",{class:"slider",style:Rt({left:o.value})},null,4)])]))}},[["__scopeId","data-v-18ab98ae"]]),pa={class:"auth-container"},ha={key:0,class:"initializing-container"},va={key:1,class:"user-info"},ma={class:"user-header"},ga={class:"user-details"},_a={class:"user-display-name"},ba={key:0,class:"user-email"},ya={key:0,class:"nickname-edit-form"},wa={class:"form-group"},xa={class:"nickname-actions"},ka=["disabled"],Ca={key:2,class:"auth-forms"},Sa={key:1,class:"back-button"},Ta={class:"form-group"},Ea={class:"form-group"},$a=["disabled"],Aa={class:"forgot-password-link"},Pa={class:"form-group"},Va={class:"form-group"},Ia={class:"form-group"},Ma={class:"form-group"},Ua={key:0,class:"proof-progress"},Da={class:"progress-bar"},Oa=["disabled"],La={class:"form-description"},Ra={class:"form-group"},Fa=["readonly"],Na={class:"form-group"},Ba=["disabled"],qa={class:"resend-code"},Ha=["disabled"],ja={class:"form-group"},za={key:0,class:"proof-progress"},Wa={class:"progress-bar"},Ka=["disabled"],Ga={class:"form-group"},Ya={class:"form-group"},Ja={class:"form-group"},Qa={class:"form-group"},Za=["disabled"],Xa={key:7,class:"error-message"},eu={key:8,class:"success-message"},tu=ot({__name:"AuthComponent",setup(e){const t=L(null),s=L(null),o=L("login"),l=L(!1),n=L(""),r=L(""),i=L(!1),u=L(!0),v=L({email:"",password:""});Rs(()=>{stopWatching&&stopWatching()});const p=L({email:"",password:"",confirmPassword:"",username:""}),g=L({email:"",code:""}),E=L({email:""}),y=L({email:"",code:"",password:"",confirmPassword:""}),b=L(!1),w=L(0),Z=L(""),W=L({username:""});jt(async()=>{try{await le.initAuth(),t.value=le.user.value,t.value&&await J();const F=Wt(()=>le.user.value,C=>{t.value=C,C?J():s.value=null},{immediate:!1})}finally{u.value=!1}});const K=()=>{n.value="",r.value=""},J=async()=>{if(t.value)try{const F=await ia.getUserProfile(t.value.id);F.success?s.value=F.data:console.error("加载用户资料失败:",F.error)}catch(F){console.error("加载用户资料失败:",F)}},R=()=>{var F;i.value=!i.value,i.value&&(W.value.username=((F=t.value)==null?void 0:F.username)||""),K()},pe=async()=>{var F,C;if(t.value){K(),l.value=!0;try{const U=W.value.username.trim();if(!U){n.value="用户名不能为空";return}if(U.length<2||U.length>10){n.value="用户名长度必须在2-10个字符之间";return}const oe=await gs.updateUserName({username:U});if(oe.data.success){const X={...t.value,...oe.data.data};t.value=X,le.user.value=X,r.value=oe.data.message||"用户名更新成功!",i.value=!1,await J()}else n.value=oe.data.message||"更新用户名失败"}catch(U){console.error("更新用户名错误:",U),(C=(F=U.response)==null?void 0:F.data)!=null&&C.message?n.value=U.response.data.message:n.value="更新用户名失败,请稍后重试"}finally{l.value=!1}}},he=async()=>{K(),l.value=!0;try{const F=await le.signIn(v.value.email,v.value.password);F.success?(t.value=F.user,r.value="登录成功!",v.value={email:"",password:""},await J()):n.value=F.error||"登录失败,请检查邮箱和密码"}catch(F){n.value="登录过程中发生错误",console.error("登录错误:",F)}finally{l.value=!1}},ve=async()=>{if(K(),p.value.password!==p.value.confirmPassword){n.value="两次输入的密码不一致";return}l.value=!0;try{const F=await le.signUpWithProof(p.value,C=>{b.value=!0,w.value=C});b.value=!1,w.value=0,F.success?(Z.value=p.value.email,g.value.email=p.value.email,o.value="verify-email",r.value="注册成功!请查收邮件并验证邮箱",p.value={email:"",password:"",confirmPassword:"",username:""}):n.value=F.error||"注册失败,请稍后重试"}catch(F){b.value=!1,w.value=0,n.value="注册过程中发生错误",console.error("注册错误:",F)}finally{l.value=!1}},De=async()=>{K(),l.value=!0;try{const F=await le.verifyEmail(g.value.email,g.value.code);F.success?(r.value="邮箱验证成功!请登录",o.value="login",g.value={email:"",code:""},Z.value=""):n.value=F.error||"验证失败,请重试"}catch(F){n.value="验证过程中发生错误",console.error("验证错误:",F)}finally{l.value=!1}},Ct=async()=>{K(),l.value=!0;try{const F=g.value.email||Z.value,C=await le.resendVerificationCode(F);C.success?r.value="验证码已重新发送,请查收邮件":n.value=C.error||"发送失败,请重试"}catch(F){n.value="发送过程中发生错误",console.error("重发验证码错误:",F)}finally{l.value=!1}},Fe=async()=>{K(),l.value=!0;try{const F=await le.forgotPassword(E.value.email,C=>{b.value=!0,w.value=C});b.value=!1,w.value=0,F.success?(y.value.email=E.value.email,o.value="reset-password",r.value="重置码已发送,请查收邮件",E.value={email:""}):n.value=F.error||"发送失败,请重试"}catch(F){b.value=!1,w.value=0,n.value="发送过程中发生错误",console.error("忘记密码错误:",F)}finally{l.value=!1}},Oe=async()=>{if(K(),y.value.password!==y.value.confirmPassword){n.value="两次输入的密码不一致";return}l.value=!0;try{const F=await le.resetPassword(y.value.email,y.value.code,y.value.password);F.success?(r.value="密码重置成功!请使用新密码登录",o.value="login",y.value={email:"",code:"",password:"",confirmPassword:""}):n.value=F.error||"重置失败,请重试"}catch(F){n.value="重置过程中发生错误",console.error("重置密码错误:",F)}finally{l.value=!1}},ct=()=>{o.value="login",K()},St=()=>{le.signOut(),r.value="已成功登出",t.value=null,s.value=null};return(F,C)=>(I(),M("div",pa,[u.value?(I(),M("div",ha,C[16]||(C[16]=[a("div",{class:"loading-spinner"},null,-1),a("p",null,"加载中...",-1)]))):t.value?(I(),M("div",va,[a("div",ma,[a("div",ga,[a("div",_a,j(t.value.username||t.value.email),1),t.value.username?(I(),M("div",ba,j(t.value.email),1)):N("",!0)]),a("button",{onClick:R,class:"edit-nickname-btn"},j(i.value?"取消":"编辑用户名"),1)]),i.value?(I(),M("div",ya,[a("div",wa,[C[17]||(C[17]=a("label",null,"用户名",-1)),re(a("input",{"onUpdate:modelValue":C[0]||(C[0]=U=>W.value.username=U),type:"text",placeholder:"请输入用户名",class:"form-input",maxlength:"10"},null,512),[[fe,W.value.username]]),C[18]||(C[18]=a("div",{class:"nickname-hint"},"用户名长度为2-10个字符",-1))]),a("div",xa,[a("button",{onClick:pe,disabled:l.value,class:"save-nickname-btn"},j(l.value?"保存中...":"保存"),9,ka),a("button",{onClick:R,class:"cancel-nickname-btn"}," 取消 ")])])):N("",!0),a("button",{onClick:St,class:"sign-out-btn"}," 退出登录 ")])):(I(),M("div",Ca,[["verify-email","forgot-password","reset-password"].includes(o.value)?N("",!0):(I(),js(fa,{key:0,modelValue:o.value,"onUpdate:modelValue":C[1]||(C[1]=U=>o.value=U)},null,8,["modelValue"])),["verify-email","forgot-password","reset-password"].includes(o.value)?(I(),M("div",Sa,[a("button",{onClick:ct,class:"back-btn"}," ← 返回登录 ")])):N("",!0),o.value==="login"?(I(),M("form",{key:2,onSubmit:je(he,["prevent"]),class:"auth-form"},[a("div",Ta,[C[19]||(C[19]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":C[2]||(C[2]=U=>v.value.email=U),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[fe,v.value.email]])]),a("div",Ea,[C[20]||(C[20]=a("label",null,"密码",-1)),re(a("input",{"onUpdate:modelValue":C[3]||(C[3]=U=>v.value.password=U),type:"password",required:"",placeholder:"请输入密码",class:"form-input"},null,512),[[fe,v.value.password]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},j(l.value?"登录中...":"登录"),9,$a),a("div",Aa,[a("button",{type:"button",onClick:C[4]||(C[4]=U=>o.value="forgot-password"),class:"link-btn"}," 忘记密码? ")])],32)):N("",!0),o.value==="register"?(I(),M("form",{key:3,onSubmit:je(ve,["prevent"]),class:"auth-form"},[a("div",Pa,[C[21]||(C[21]=a("label",null,"用户名",-1)),re(a("input",{"onUpdate:modelValue":C[5]||(C[5]=U=>p.value.username=U),type:"text",required:"",placeholder:"请输入用户名(3-10个字符)",class:"form-input",minlength:"3",maxlength:"10"},null,512),[[fe,p.value.username]])]),a("div",Va,[C[22]||(C[22]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":C[6]||(C[6]=U=>p.value.email=U),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[fe,p.value.email]])]),a("div",Ia,[C[23]||(C[23]=a("label",null,"密码",-1)),re(a("input",{"onUpdate:modelValue":C[7]||(C[7]=U=>p.value.password=U),type:"password",required:"",placeholder:"请输入密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[fe,p.value.password]])]),a("div",Ma,[C[24]||(C[24]=a("label",null,"确认密码",-1)),re(a("input",{"onUpdate:modelValue":C[8]||(C[8]=U=>p.value.confirmPassword=U),type:"password",required:"",placeholder:"请再次输入密码",class:"form-input"},null,512),[[fe,p.value.confirmPassword]])]),b.value?(I(),M("div",Ua,[C[25]||(C[25]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",Da,[a("div",{class:"progress-fill",style:Rt({width:Math.min(w.value/1e3,100)+"%"})},null,4)])])):N("",!0),a("button",{type:"submit",disabled:l.value||b.value,class:"auth-submit-btn"},j(b.value?"计算中...":l.value?"注册中...":"注册"),9,Oa)],32)):N("",!0),o.value==="verify-email"?(I(),M("form",{key:4,onSubmit:je(De,["prevent"]),class:"auth-form"},[C[28]||(C[28]=a("div",{class:"form-title"},"邮箱验证",-1)),a("div",La," 我们已向 "+j(Z.value||g.value.email)+" 发送了验证码,请查收邮件并输入验证码。 ",1),a("div",Ra,[C[26]||(C[26]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":C[9]||(C[9]=U=>g.value.email=U),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:!!Z.value},null,8,Fa),[[fe,g.value.email]])]),a("div",Na,[C[27]||(C[27]=a("label",null,"验证码",-1)),re(a("input",{"onUpdate:modelValue":C[10]||(C[10]=U=>g.value.code=U),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[fe,g.value.code]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},j(l.value?"验证中...":"验证邮箱"),9,Ba),a("div",qa,[a("button",{type:"button",onClick:Ct,disabled:l.value,class:"link-btn"}," 重新发送验证码 ",8,Ha)])],32)):N("",!0),o.value==="forgot-password"?(I(),M("form",{key:5,onSubmit:je(Fe,["prevent"]),class:"auth-form"},[C[31]||(C[31]=a("div",{class:"form-title"},"忘记密码",-1)),C[32]||(C[32]=a("div",{class:"form-description"}," 请输入您的邮箱地址,我们将向您发送重置密码的验证码。 ",-1)),a("div",ja,[C[29]||(C[29]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":C[11]||(C[11]=U=>E.value.email=U),type:"email",required:"",placeholder:"请输入注册时使用的邮箱",class:"form-input"},null,512),[[fe,E.value.email]])]),b.value?(I(),M("div",za,[C[30]||(C[30]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",Wa,[a("div",{class:"progress-fill",style:Rt({width:Math.min(w.value/1e3,100)+"%"})},null,4)])])):N("",!0),a("button",{type:"submit",disabled:l.value||b.value,class:"auth-submit-btn"},j(b.value?"计算中...":l.value?"发送中...":"发送重置码"),9,Ka)],32)):N("",!0),o.value==="reset-password"?(I(),M("form",{key:6,onSubmit:je(Oe,["prevent"]),class:"auth-form"},[C[37]||(C[37]=a("div",{class:"form-title"},"重置密码",-1)),C[38]||(C[38]=a("div",{class:"form-description"}," 请输入您收到的验证码和新密码。 ",-1)),a("div",Ga,[C[33]||(C[33]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":C[12]||(C[12]=U=>y.value.email=U),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:""},null,512),[[fe,y.value.email]])]),a("div",Ya,[C[34]||(C[34]=a("label",null,"验证码",-1)),re(a("input",{"onUpdate:modelValue":C[13]||(C[13]=U=>y.value.code=U),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[fe,y.value.code]])]),a("div",Ja,[C[35]||(C[35]=a("label",null,"新密码",-1)),re(a("input",{"onUpdate:modelValue":C[14]||(C[14]=U=>y.value.password=U),type:"password",required:"",placeholder:"请输入新密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[fe,y.value.password]])]),a("div",Qa,[C[36]||(C[36]=a("label",null,"确认新密码",-1)),re(a("input",{"onUpdate:modelValue":C[15]||(C[15]=U=>y.value.confirmPassword=U),type:"password",required:"",placeholder:"请再次输入新密码",class:"form-input"},null,512),[[fe,y.value.confirmPassword]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},j(l.value?"重置中...":"重置密码"),9,Za)],32)):N("",!0),n.value?(I(),M("div",Xa,j(n.value),1)):N("",!0),r.value?(I(),M("div",eu,j(r.value),1)):N("",!0)]))]))}},[["__scopeId","data-v-d1c57c9f"]]);class xt{static async getLinks(t,s={}){try{const o={},{linkType:l,platform:n,page:r=1,limit:i=5,sortBy:u="created_at",sortOrder:v="desc"}=s;r&&(o.page=r),i&&(o.limit=i),u&&(o.sort_by=u),v&&(o.sort_order=v),l&&(o.type=l==="bt"?"magnet":l),n&&(o.platform=n);const p=await yt.getMovieLinks(t,o);if(!p.success)throw p.error==="NOT_FOUND"||p.status===404?(console.log("电影不存在,返回空结果"),new Error("电影不存在")):(console.error("获取链接失败:",p.error),new Error(`获取链接失败: ${p.error}`));const g=p.data||{};let E=g.links||[];const y=g.pagination||{};Array.isArray(E)||(console.warn("API返回的links不是数组格式:",E),E=[]);const b=E.map(w=>({...w,up_votes:w.likes_count||0,down_votes:w.dislikes_count||0,score:(w.likes_count||0)-(w.dislikes_count||0),user_vote_type:w.user_vote_type==="like"?"up":w.user_vote_type==="dislike"?"down":w.user_vote_type||"",user_display_name:w.username||"匿名用户"}));return{success:!0,data:b,pagination:y,count:b.length,total:y.total||0}}catch(o){return console.error("获取链接服务错误:",o),{success:!1,error:o.message||"获取链接失败",data:[],pagination:{page:1,limit:5,total:0,pages:0},count:0,total:0}}}static async addLink(t){try{const{movieId:s,linkType:o,platform:l,url:n,extractCode:r,title:i,quality:u,size:v,has_4k:p,has_hdr:g,has_dolby_atmos:E,has_subtitles:y}=t;if(!s||!o||!n)throw new Error("缺少必填字段:movieId, linkType, url");if(!["netdisk","bt","online"].includes(o))throw new Error("无效的链接类型");if(r&&r.length>10)throw new Error("提取码长度不能超过10个字符");const b=await Ue.getChallenge();if(!b.success)throw new Error("获取工作量证明挑战失败");const{challenge:w,difficulty:Z}=b.data,W=await Qs(w,Z),K={title:i||"",url:n.trim(),type:o==="bt"?"magnet":o,password:r||"",quality:u||"",size:v||"",has_4k:!!p,has_hdr:!!g,has_dolby_atmos:!!E,has_subtitles:!!y,proof_of_work:W};o==="netdisk"&&l&&l.trim()&&(K.platform=l.trim());const J=await yt.addMovieLink(s,K);if(!J.success)throw console.error("添加链接失败:",J.error),new Error(`添加链接失败: ${J.error}`);return{success:!0,data:J.data,message:"链接添加成功"}}catch(s){return console.error("添加链接服务错误:",s),{success:!1,error:s.message||"添加链接失败"}}}static async deleteLink(t,s){try{if(!s)throw new Error("链接ID不能为空");if(!t)throw new Error("电影ID不能为空");if(!le.isAuthenticated.value)throw new Error("用户未登录");const o=await yt.deleteMovieLink(t,s);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){try{if(!t)throw new Error("链接ID不能为空");if(!le.isAuthenticated.value)throw new Error("用户未登录");if(!s.url||!s.linkType)throw new Error("链接地址和类型不能为空");const o={title:s.title||"",url:s.url,type:s.linkType,platform:s.platform||"",password:s.extractCode||"",size:s.size||"",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},l=await yt.updateMovieLink(t,o);if(!l.success)throw console.error("修改链接失败:",l.error),new Error(`修改链接失败: ${l.error}`);return{success:!0,message:l.message||"链接修改成功",data:l.data}}catch(o){return console.error("修改链接服务错误:",o),{success:!1,error:o.message||"修改链接失败"}}}static async voteLink(t,s){try{if(!t||!s)throw new Error("链接ID和投票类型不能为空");if(!["up","down"].includes(s))throw new Error("无效的投票类型");if(!le.isAuthenticated.value)throw new Error("用户未登录");const o=s==="up"?"like":"dislike",l=await yt.voteLink(t,o);if(!l.success)throw console.error("投票失败:",l.error),new Error(`投票失败: ${l.error}`);const n=l.data||{};return{success:!0,message:`${s==="up"?"点赞":"点踩"}成功`,data:{up_votes:n.likes_count||0,down_votes:n.dislikes_count||0,user_vote_type:n.user_vote_type==="like"?"up":n.user_vote_type==="dislike"?"down":null}}}catch(o){return console.error("投票服务错误:",o),{success:!1,error:o.message||"投票失败"}}}static async removeVote(t,s=0,o=0,l="up"){try{if(!t)throw new Error("链接ID不能为空");if(!le.isAuthenticated.value)throw new Error("用户未登录");const n=l==="up"?"like":"dislike",r=await yt.removeVote(t,n);if(!r.success)throw console.error("取消投票失败:",r.error),new Error(`取消投票失败: ${r.error}`);const i=r.data||{};console.log("removeVote API原始响应:",i);let u,v;if(i.likes_count!==void 0&&i.dislikes_count!==void 0){const p=Math.max(0,i.likes_count||0),g=Math.max(0,i.dislikes_count||0);i.likes_count<0||i.dislikes_count<0?(console.warn("API返回负数,使用本地计算:",i),l==="up"?(u=Math.max(0,s-1),v=o):(u=s,v=Math.max(0,o-1))):(u=p,v=g),console.log("使用API返回数据:",{finalUpVotes:u,finalDownVotes:v,apiUpVotes:p,apiDownVotes:g})}else l==="up"?(u=Math.max(0,s-1),v=o):(u=s,v=Math.max(0,o-1)),console.log("使用本地计算数据:",{finalUpVotes:u,finalDownVotes:v,currentUpVotes:s,currentDownVotes:o,voteType:l});return{success:!0,message:"取消投票成功",data:{up_votes:u,down_votes:v,user_vote_type:null}}}catch(n){return console.error("取消投票服务错误:",n),{success:!1,error:n.message||"取消投票失败"}}}static async reportLink(t,s,o=""){try{if(!t||!s)throw new Error("链接ID和反馈类型不能为空");if(!le.isAuthenticated.value)throw new Error("用户未登录");const l={link_id:t,type:s.trim(),reason:o.trim()||null},n=await yt.reportLink(l);if(!n.success)throw console.error("反馈失败:",n.error),new Error(`反馈失败: ${n.error}`);return{success:!0,data:n.data,message:"反馈提交成功"}}catch(l){return console.error("反馈服务错误:",l),{success:!1,error:l.message||"反馈失败"}}}}const su="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",ou={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}}},lu={class:"selected-text"},nu={class:"select-dropdown"},ru=["onClick"];function iu(e,t,s,o,l,n){return I(),M("div",{class:ge(["custom-select",{"is-open":l.isOpen}]),onClick:t[1]||(t[1]=je(()=>{},["stop"]))},[a("div",{class:"select-trigger",onClick:t[0]||(t[0]=(...r)=>n.toggleDropdown&&n.toggleDropdown(...r))},[a("span",lu,j(n.selectedLabel||s.placeholder),1),a("img",{src:su,class:ge(["arrow",{"arrow-up":l.isOpen}]),alt:"箭头"},null,2)]),re(a("div",nu,[(I(!0),M(Re,null,ko(s.options,r=>(I(),M("div",{class:ge(["select-option",{selected:r.value===s.modelValue}]),key:r.value,onClick:i=>n.selectOption(r)},j(r.label),11,ru))),128))],512),[[Ys,l.isOpen]])],2)}const It=ot(ou,[["render",iu],["__scopeId","data-v-8bcc774e"]]),au={name:"LinkItemSkeleton"},uu={class:"link-item skeleton"};function cu(e,t,s,o,l,n){return I(),M("div",uu,t[0]||(t[0]=[ui('<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 du=ot(au,[["render",cu],["__scopeId","data-v-115afd35"]]),fu=["checked"],pu={key:0,class:"checkbox-label"},kt=ot({__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)=>(I(),M("label",{class:ge(["ios-checkbox",e.color])},[a("input",{type:"checkbox",checked:e.modelValue,onChange:s[0]||(s[0]=o=>t.$emit("update:modelValue",o.target.checked))},null,40,fu),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?(I(),M("span",pu,j(e.label),1)):N("",!0)],2))}},[["__scopeId","data-v-77ac6b2a"]]),hu={class:"tooltip"},vu={class:"tooltip"},yn=ot({__name:"CopyTooltip",props:{text:{type:String,required:!0},type:{type:String,default:"url",validator:e=>["url","code"].includes(e)}},emits:["copy-success","copy-error"],setup(e,{emit:t}){const s=e,o=t,l=L(!1),n=Me(()=>l.value?"已复制":s.type==="url"?"点击复制链接(右键打开)":"点击复制提取码"),r=u=>u,i=async()=>{try{await navigator.clipboard.writeText(s.text),l.value=!0,o("copy-success",s.text),setTimeout(()=>{l.value=!1},2e3)}catch(u){console.error("复制失败:",u),o("copy-error",u)}};return(u,v)=>e.type==="url"?(I(),M("span",{key:0,class:ge(["copy-item",{copied:l.value}]),onClick:i},[ps(j(r(e.text))+" ",1),a("span",hu,j(n.value),1)],2)):e.type==="code"?(I(),M("code",{key:1,class:ge(["extract-code",{copied:l.value}]),onClick:i},[ps(j(e.text)+" ",1),a("span",vu,j(n.value),1)],2)):N("",!0)}},[["__scopeId","data-v-aaaa00e5"]]),mu={class:"link-manager"},gu={key:0,class:"modal-overlay"},_u={class:"modal-content"},bu={class:"modal-body"},yu={class:"form-row"},wu={class:"form-group"},xu={key:0,class:"form-group"},ku={class:"form-group"},Cu={class:"input-wrapper"},Su={class:"form-row"},Tu={key:0,class:"form-group"},Eu={class:"input-wrapper"},$u={class:"form-group"},Au={class:"input-wrapper"},Pu={class:"form-row"},Vu={class:"form-group"},Iu={class:"input-wrapper"},Mu={class:"form-group"},Uu={class:"checkbox-group"},Du={class:"form-actions"},Ou=["disabled"],Lu={key:1,class:"modal-overlay"},Ru={class:"modal-content"},Fu={class:"modal-body"},Nu={class:"form-row"},Bu={class:"form-group"},qu={key:0,class:"form-group"},Hu={class:"form-group"},ju={class:"input-wrapper"},zu={class:"form-row"},Wu={key:0,class:"form-group"},Ku={class:"input-wrapper"},Gu={class:"form-group"},Yu={class:"input-wrapper"},Ju={class:"form-row"},Qu={class:"form-group"},Zu={class:"input-wrapper"},Xu={class:"form-group"},ec={class:"checkbox-group"},tc={class:"form-actions"},sc=["disabled"],oc={class:"links-section"},lc={class:"filter-bar"},nc={class:"filter-controls"},rc=["disabled"],ic={key:0,class:"links-list"},ac={key:1,class:"links-list"},uc=["onClick"],cc={class:"link-header"},dc={key:0,class:"platform-badge"},fc=["src","alt"],pc={class:"link-meta"},hc={key:0,class:"language"},vc={key:1,class:"file-size"},mc={key:2,class:"feature-tags"},gc={key:0,class:"feature-tag feature-4k"},_c={key:1,class:"feature-tag feature-hdr"},bc={key:2,class:"feature-tag feature-dolby"},yc={key:3,class:"feature-tag feature-subtitle"},wc={class:"link-content"},xc={class:"link-title-row"},kc={class:"link-details"},Cc=["onContextmenu"],Sc={class:"vote-section"},Tc=["onClick","disabled"],Ec={viewBox:"0 0 100 100",class:"vote-icon",xmlns:"http://www.w3.org/2000/svg"},$c=["fill"],Ac=["onClick","disabled"],Pc={viewBox:"0 0 100 100",class:"vote-icon down-icon",xmlns:"http://www.w3.org/2000/svg"},Vc=["fill"],Ic={class:"action-buttons"},Mc=["onClick"],Uc=["onClick"],Dc=["onClick"],Oc={class:"link-footer"},Lc={class:"author"},Rc={class:"date"},Fc={key:0,class:"report-count"},Nc={key:2,class:"login-prompt"},Bc={key:3,class:"empty-state"},qc={key:2,class:"pagination"},Hc=["disabled"],jc={class:"pagination-info"},zc=["disabled"],Wc={class:"toast-container"},Kc={key:0,class:"modal-overlay"},Gc={class:"modal-content"},Yc={class:"modal-body"},Jc={class:"form-actions"},Qc=["disabled"],Zc={key:1,class:"modal-overlay"},Xc={class:"modal-content"},ed={class:"modal-body"},td={class:"form-group"},sd={class:"form-group"},od={class:"input-wrapper"},ld={class:"form-actions"},nd=["disabled"],rd=800,_s="doubanflix_link_draft",id=ot({__name:"LinkManager",props:{movieId:{type:String,required:!0},linkType:{type:String,default:"all"}},setup(e){const t=e,s=Me(()=>t.linkType),o=L([]),l=L({total:0,netdisk:0,bt:0,online:0,platforms:{}}),n=L(!1),r=L(""),i=L(""),u=L(!1),v=L(!1),p=L(null),g=L(!1),E=L(new Set),y=L({page:1,limit:5,total:0,pages:0}),b=$t({linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),w=$t({id:"",linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),Z=$t({platform:"",sortBy:"created_at"}),W=[{value:"",label:"请选择类型"},{value:"netdisk",label:"网盘"},{value:"bt",label:"BT"},{value:"online",label:"在线"}],K=[{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网盘"}],J=[{value:"created_at",label:"按时间"},{value:"likes_count",label:"按点赞数"},{value:"like_rate",label:"按点赞率"}],R=Me(()=>{switch(v.value?w.linkType:b.linkType){case"netdisk":return K;default:return[{value:"",label:"请选择平台"}]}}),pe=Me(()=>{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"}]);default:return m}}),he=Me(()=>le.isAuthenticated.value),ve=async(m=1)=>{if(t.movieId){if(!he.value){o.value=[],y.value={page:1,limit:5,total:0,pages:0};return}n.value=!0,r.value="";try{const d=t.linkType==="all"?void 0:t.linkType,h=await xt.getLinks(t.movieId,{linkType:d,platform:Z.platform||void 0,sortBy:Z.sortBy,sortOrder:"desc",page:m,limit:y.value.limit});h.success?(o.value=h.data,h.pagination&&(y.value={page:h.pagination.page||1,limit:h.pagination.limit||5,total:h.pagination.total||0,pages:h.pagination.pages||0})):h.error&&h.error.includes("电影不存在")?(console.log("电影不存在,静默处理"),o.value=[],y.value={page:1,limit:5,total:0,pages:0}):h.error&&(h.error.includes("请先登录")||h.error.includes("登录已过期"))?console.log("认证错误,静默处理:",h.error):r.value=h.error}catch(d){d.message&&d.message.includes("电影不存在")?(console.log("电影不存在,静默处理"),o.value=[],y.value={page:1,limit:5,total:0,pages:0}):d.message&&(d.message.includes("请先登录")||d.message.includes("登录已过期"))?console.log("认证错误,静默处理:",d.message):(r.value="加载链接失败",console.error("加载链接错误:",d))}finally{n.value=!1}}},De=async()=>{if(t.movieId)try{const m=await xt.getLinkStats(t.movieId);m.success&&(l.value=m.data)}catch(m){console.error("加载统计失败:",m)}},Ct=async()=>{if(he.value){g.value=!0,r.value="";try{const m=await xt.addLink({movieId:t.movieId,linkType:b.linkType,platform:b.platform,url:b.url,extractCode:b.extractCode,title:b.title,size:b.size,has_4k:b.has_4k,has_hdr:b.has_hdr,has_dolby_atmos:b.has_dolby_atmos,has_subtitles:b.has_subtitles});m.success?(i.value=m.message,X(),c(),u.value=!1,await ve(),await De(),setTimeout(()=>{i.value=""},3e3)):m.error&&(m.error.includes("请先登录")||m.error.includes("登录已过期"))?console.log("认证错误,静默处理:",m.error):r.value=m.error}catch(m){m.message&&(m.message.includes("请先登录")||m.message.includes("登录已过期"))?console.log("认证错误,静默处理:",m.message):(r.value="添加链接失败",console.error("添加链接错误:",m))}finally{g.value=!1}}},Fe=L(new Map),Oe=L(new Map),ct=async(m,d)=>{if(!he.value)return;const h=o.value.find(ce=>ce.id===m);if(!h)return;Fe.value.has(m)&&clearTimeout(Fe.value.get(m)),Oe.value.has(m)||Oe.value.set(m,{originalUserVote:h.user_vote_type,originalUpVotes:h.up_votes||0,originalDownVotes:h.down_votes||0,clickSequence:[],link:h});const q=Oe.value.get(m);q.clickSequence.push({voteType:d,timestamp:Date.now()});const Se=F(q.originalUserVote,q.clickSequence);let be=q.originalUpVotes,lt=q.originalDownVotes;q.originalUserVote==="up"?Se===null?be=Math.max(0,q.originalUpVotes-1):Se==="down"?(be=Math.max(0,q.originalUpVotes-1),lt=q.originalDownVotes+1):be=q.originalUpVotes:q.originalUserVote==="down"?Se===null?lt=Math.max(0,q.originalDownVotes-1):Se==="up"?(lt=Math.max(0,q.originalDownVotes-1),be=q.originalUpVotes+1):lt=q.originalDownVotes:Se==="up"?be=q.originalUpVotes+1:Se==="down"&&(lt=q.originalDownVotes+1),h.user_vote_type=Se,h.up_votes=be,h.down_votes=lt;const Qt=setTimeout(async()=>{const ce=Oe.value.get(m);ce&&(Fe.value.delete(m),Oe.value.delete(m),await St(ce))},rd);Fe.value.set(m,Qt)},St=async m=>{const{originalUserVote:d,originalUpVotes:h,originalDownVotes:q,clickSequence:Se,link:be}=m,lt=be.id,Qt=F(d,Se);if(console.log("分析用户投票意图:",{linkId:lt,originalUserVote:d,clickSequence:Se.map(ce=>ce.voteType),finalIntention:Qt,currentUIState:be.user_vote_type}),Qt===d){console.log("用户最终意图与原始状态相同,跳过API请求");return}try{let ce;Qt===null?ce=await xt.removeVote(lt,h,q,d):ce=await xt.voteLink(lt,Qt),ce.success?ce.data&&(be.user_vote_type=ce.data.user_vote_type,be.up_votes=ce.data.up_votes||0,be.down_votes=ce.data.down_votes||0):(be.user_vote_type=d,be.up_votes=h,be.down_votes=q,ce.error&&(ce.error.includes("请先登录")||ce.error.includes("登录已过期"))?console.log("认证错误,静默处理:",ce.error):r.value=ce.error)}catch(ce){be.user_vote_type=d,be.up_votes=h,be.down_votes=q,ce.message&&(ce.message.includes("请先登录")||ce.message.includes("登录已过期"))?console.log("认证错误,静默处理:",ce.message):(r.value="投票操作失败",console.error("投票请求错误:",ce))}},F=(m,d)=>{if(d.length===0)return m;let h=m;for(const q of d){const{voteType:Se}=q;h===Se?h=null:h=Se}return h},C=async m=>{dt.value=m.id,ze.value=m.movie_id,Ye.value=!0},U=()=>{Ye.value=!1,dt.value="",ze.value="",Ee.value=!1},oe=async()=>{if(!(!dt.value||!ze.value))try{Ee.value=!0;const m=await xt.deleteLink(ze.value,dt.value);m.success?(i.value=m.message,U(),await ve(),await De(),setTimeout(()=>{i.value=""},3e3)):m.error&&(m.error.includes("请先登录")||m.error.includes("登录已过期"))?console.log("认证错误,静默处理:",m.error):r.value=m.error}catch(m){m.message&&(m.message.includes("请先登录")||m.message.includes("登录已过期"))?console.log("认证错误,静默处理:",m.message):(r.value="删除链接失败",console.error("删除链接错误:",m))}finally{Ee.value=!1}},X=()=>{Object.assign(b,{linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1})},Ye=L(!1),dt=L(""),ze=L(""),Ee=L(!1),Mt=L(!1),ke=$t({linkId:"",type:"",reason:""}),Yt=L(!1),Ut=[{value:"invalid_link",label:"无效链接"},{value:"copyright_issue",label:"版权问题"},{value:"malicious_link",label:"恶意链接"},{value:"spam",label:"垃圾信息"},{value:"fake_content",label:"虚假内容"},{value:"other",label:"其他"}],Jt=m=>{he.value&&(ke.linkId=m,ke.type="invalid_link",ke.reason="",Mt.value=!0)},bs=async()=>{if(!ke.type){he.value&&(r.value="请选择反馈类型");return}Yt.value=!0,r.value="";try{const m=await xt.reportLink(ke.linkId,ke.type,ke.reason);m.success?(i.value=m.message,Mt.value=!1,await ve(),setTimeout(()=>{i.value=""},3e3)):m.error&&(m.error.includes("请先登录")||m.error.includes("登录已过期"))?console.log("认证错误,静默处理:",m.error):r.value=m.error}catch(m){m.message&&(m.message.includes("请先登录")||m.message.includes("登录已过期"))?console.log("认证错误,静默处理:",m.message):(r.value="反馈提交失败",console.error("反馈错误:",m))}finally{Yt.value=!1}},ys=()=>{Mt.value=!1,ke.linkId="",ke.reason="",ke.description=""},Dt=()=>{const m={linkType:b.linkType,platform:b.platform,url:b.url,extractCode:b.extractCode,title:b.title,language:b.language,has_4k:b.has_4k,has_hdr:b.has_hdr,has_dolby_atmos:b.has_dolby_atmos,has_subtitles:b.has_subtitles,timestamp:Date.now()};Object.values(m).some(h=>h&&h!==""&&typeof h!="number")&&localStorage.setItem(_s,JSON.stringify(m))},xn=()=>{try{const m=localStorage.getItem(_s);if(m){const d=JSON.parse(m);if(Date.now()-d.timestamp>24*60*60*1e3)localStorage.removeItem(_s);else return Object.assign(b,{linkType:d.linkType||"",platform:d.platform||"",url:d.url||"",extractCode:d.extractCode||"",title:d.title||"",language:d.language||"",has_4k:d.has_4k||!1,has_hdr:d.has_hdr||!1,has_dolby_atmos:d.has_dolby_atmos||!1,has_subtitles:d.has_subtitles||!1}),!0}}catch(m){console.error("恢复草稿失败:",m),localStorage.removeItem(_s)}return!1},c=()=>{localStorage.removeItem(_s)},f=()=>{u.value=!0,xn()&&console.log("已恢复草稿内容")},_=()=>{Dt(),u.value=!1,X()},S=()=>{v.value=!1,p.value=null,k()},x=m=>{p.value=m,w.id=m.id,w.linkType=m.type,w.platform=m.platform||"",w.url=m.url,w.extractCode=m.password||"",w.title=m.title||"",w.size=m.size||"",w.has_4k=m.has_4k||!1,w.has_hdr=m.has_hdr||!1,w.has_dolby_atmos=m.has_dolby_atmos||!1,w.has_subtitles=m.has_subtitles||!1,v.value=!0},k=()=>{w.id="",w.linkType="",w.platform="",w.url="",w.extractCode="",w.title="",w.size="",w.has_4k=!1,w.has_hdr=!1,w.has_dolby_atmos=!1,w.has_subtitles=!1},P=async()=>{if(!g.value)try{g.value=!0,r.value="";const m=await xt.updateLink(w.id,w);m.success?(i.value=m.message,S(),await ve(y.value.page),setTimeout(()=>{i.value=""},3e3)):m.error&&(m.error.includes("请先登录")||m.error.includes("登录已过期"))?console.log("认证错误,静默处理:",m.error):r.value=m.error}catch(m){console.error("修改链接失败:",m),m.message&&(m.message.includes("请先登录")||m.message.includes("登录已过期"))?console.log("认证错误,静默处理:",m.message):r.value=m.message||"修改链接失败"}finally{g.value=!1}},A=m=>m.hasOwnProperty("is_owner")?he.value&&m.is_owner:he.value&&le.userId.value===m.user_id,$=m=>({quark:"夸克",ali:"阿里",baidu:"百度",tianyi:"天翼",mobile:"移动",115:"115",xunlei:"迅雷",uc:"UC",123:"123",bilibili:"B站",iqiyi:"爱奇艺",youku:"优酷",tencent:"腾讯",bt:"磁力"})[m]||m,T=m=>{const d={quark:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540462038" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4774" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M469.134884 976.133953c-110.258605-9.763721-215.516279-59.534884-290.768372-137.168372-75.490233-78.109767-113.830698-154.552558-132.167442-263.858604-4.762791-28.338605-5.477209-95.970233-1.190698-123.832558 10.24-68.822326 33.101395-134.072558 64.297675-184.32 88.349767-142.407442 236.710698-226.470698 399.598139-226.470698 69.536744 0 132.167442 12.621395 192.416744 39.054884 52.628837 23.099535 110.496744 64.297674 149.313489 106.448372 60.725581 65.964651 91.92186 122.165581 114.783255 206.943256 18.098605 66.917209 18.574884 160.982326 1.428838 227.423255-19.289302 73.585116-45.484651 126.213953-92.636279 184.55814-40.96 50.96186-84.063256 86.92093-140.740466 117.402791-59.534884 32.148837-114.545116 48.104186-184.08186 53.819534-34.053953 2.857674-47.151628 2.857674-80.253023 0z m84.063256-238.615813c11.668837-5.00093 20.71814-19.051163 20.718139-32.625117 0-23.337674 4.524651-49.771163 10.47814-61.44 12.145116-23.813953 28.338605-32.148837 77.395348-39.769302 19.051163-2.857674 38.578605-6.906047 43.341396-8.811163 13.573953-5.953488 24.766512-17.384186 32.148837-33.339535 6.667907-14.526512 6.906047-15.955349 6.906047-53.105116-0.23814-41.19814-1.666977-50.247442-15.955349-87.15907-21.194419-55.486512-76.91907-110.734884-132.167442-130.738604-11.430698-4.048372-33.577674-9.525581-49.294884-12.383256-26.195349-4.286512-31.196279-4.524651-53.819535-1.905117-44.770233 5.23907-72.394419 14.050233-103.352558 32.625117-19.527442 11.906977-20.956279 13.097674-44.532093 36.435349-34.530233 34.053953-52.390698 67.155349-63.345116 116.688372-19.051163 86.92093 15.47907 178.604651 87.873488 233.853023 30.243721 23.099535 74.537674 41.674419 106.686512 44.770232 27.624186 2.857674 66.67907 1.190698 76.91907-3.095813z" fill="#3A25DD" p-id="4775"></path></svg>'),ali:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540539411" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5761" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M841.984 576.554667a18.816 18.816 0 0 1-13.184-21.973334c41.941333-200.448-75.605333-402.346667-269.226667-456.021333-199.509333-55.125333-405.333333 67.285333-459.52 273.109333v0.981334a460.586667 460.586667 0 0 0 62.464 371.2 439.893333 439.893333 0 0 0 208.768 167.765333c236.544 89.301333 491.178667-44.373333 566.272-283.349333a23.04 23.04 0 0 0-15.573333-29.269334l-80-22.442666z m-393.130667 194.133333c-72.704-20.010667-133.162667-68.266667-170.752-135.125333a298.112 298.112 0 0 1-28.288-219.989334C282.026667 293.12 404.48 220.501333 523.52 253.141333c112.64 31.232 182.4 146.346667 161.92 262.912a21.205333 21.205333 0 0 0 15.104 24.405334l75.605333 20.949333a17.493333 17.493333 0 0 1 11.733334 22.954667c-47.36 142.933333-195.114667 225.834667-338.986667 186.325333z" fill="#6666FF" p-id="5762"></path></svg>'),baidu:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540564286" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6851" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M292.571429 435.931429c-1.462857-11.702857-2.925714-24.868571-2.925715-38.034286C289.645714 275.017143 389.12 175.542857 512 175.542857c122.88 0 222.354286 99.474286 222.354286 223.817143 0 13.165714-1.462857 24.868571-2.925715 38.034286 112.64 0 204.8 92.16 204.8 206.262857 0 112.64-92.16 204.8-206.262857 204.8-57.051429 0-109.714286-23.405714-146.285714-61.44-19.017143-20.48-19.017143-52.662857 0-71.68 20.48-20.48 52.662857-20.48 71.68 0l1.462857 1.462857c19.017143 17.554286 43.885714 29.257143 71.68 29.257143 57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-26.331429 0-49.737143 10.24-68.754286 26.331428l-1.462857 1.462857-5.851428 5.851429-4.388572 4.388571-207.725714 210.651429c-38.034286 38.034286-89.234286 61.44-146.285714 61.44C179.931429 848.457143 87.771429 756.297143 87.771429 642.194286c0-112.64 90.697143-204.8 204.8-206.262857m1.462857 310.125714c57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-57.051429 0-103.862857 46.811429-103.862857 103.862857 0 57.051429 46.811429 103.862857 103.862857 103.862857M512 520.777143c67.291429 0 121.417143-54.125714 121.417143-121.417143 0-67.291429-54.125714-121.417143-121.417143-121.417143-67.291429 0-121.417143 54.125714-121.417143 121.417143 0 65.828571 54.125714 121.417143 121.417143 121.417143" fill="#06A7FF" p-id="6852"></path><path d="M631.954286 412.525714v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c-7.314286 117.028571-103.862857 209.188571-222.354286 209.188572s-215.04-92.16-222.354286-209.188572v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c5.851429 61.44 58.514286 108.251429 119.954286 108.251429 62.902857 0 114.102857-46.811429 119.954286-108.251429" fill="#FF436A" p-id="6853"></path></svg>'),tianyi:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540718396" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8675" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M833.39946667 423.28746667a185.00266667 185.00266667 0 0 0-205.55093334-134.07573333A226.304 226.304 0 0 0 463.0528 217.6c-93.52533333 0-176.5376 58.29973333-209.92 143.01866667A210.80746667 210.80746667 0 0 0 34.13333333 571.01653334c0 116.05333333 94.48106667 210.5344 210.5344 210.5344h281.87306667a41.09653333 41.09653333 0 0 0 0-82.1248H244.66773333a128.54613333 128.54613333 0 0 1-128.34133333-128.4096 128.54613333 128.54613333 0 0 1 157.01333333-125.20106667l40.82346667 9.35253333 8.46506667-41.09653333a143.7696 143.7696 0 0 1 140.42453333-114.34666667c45.73866667 0 89.15626667 22.18666667 116.05333333 59.32373334l17.47626667 24.02986666 28.2624-9.0112a101.5808 101.5808 0 0 1 132.36906667 88.95146667l2.79893333 35.97653333 36.0448 1.8432a117.62346667 117.62346667 0 0 1 111.68426667 117.62346667 117.89653333 117.89653333 0 0 1-128.88746667 117.21386667l-4.36906667-0.54613334a115.3024 115.3024 0 0 1-6.48533333-1.024l-5.12-1.09226666a128.88746667 128.88746667 0 0 1-15.83786667-4.98346667 133.46133333 133.46133333 0 0 1-10.4448-4.7104l-3.75466666-1.91146667a119.73973333 119.73973333 0 0 1-6.82666667-4.16426666l-2.2528-1.36533334a118.23786667 118.23786667 0 0 1-47.78666667-67.65226666h69.4272l-113.73226666-162.47466667-113.73226667 162.47466667h74.41066667c7.23626667 48.46933333 31.88053333 91.27253333 67.44746666 121.78773333l2.18453334 2.048 2.18453333 1.6384a182.39466667 182.39466667 0 0 0 9.216 7.03146667l4.02773333 2.8672c3.75466667 2.52586667 7.5776 4.98346667 11.53706667 7.30453333l3.072 1.77493333c4.36906667 2.4576 8.73813333 4.77866667 13.24373333 6.82666667l1.57013334 0.68266667c15.01866667 6.9632 31.06133333 12.01493333 47.78666666 15.01866666l1.36533334 0.2048c5.12 0.95573333 10.4448 1.6384 15.7696 2.11626667l2.048 0.13653333a203.22986667 203.22986667 0 0 0 46.55786666-1.57013333A200.22613333 200.22613333 0 0 0 989.86666667 618.46186667a199.81653333 199.81653333 0 0 0-156.4672-195.24266667" p-id="8676"></path></svg>'),mobile:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540741796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9705" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1020.16 266.88c-44.16 11.52-88.32 21.12-133.12 30.08-28.8 5.76-57.6 11.52-87.04 14.08-35.84 3.84-71.04 5.12-106.88 7.04-81.92 3.84-163.84 2.56-245.76 1.92-64.64-0.64-129.92 0-193.28 13.44-56.96 12.16-111.36 30.08-159.36 64-30.08 21.12-59.52 43.52-94.72 55.68 1.92 5.76 7.04 4.48 10.88 4.48 37.76 1.28 75.52-1.92 112.64-6.4 24.96-3.2 50.56-6.4 75.52-10.24 32-5.12 64-6.4 96-8.32 17.92-1.28 35.84-1.92 53.76 1.28 12.8 1.92 16.64 9.6 10.88 21.12-3.2 7.04-8.96 12.8-14.08 18.56-14.72 15.36-32 28.16-48 42.24-40.96 36.48-80.64 75.52-119.04 115.2-21.12 21.76-41.6 44.16-53.76 72.32-29.44 68.48-26.88 134.4 17.28 195.2 33.92 46.72 85.76 65.28 140.16 75.52 28.16 5.12 56.96 3.2 85.76 3.2 87.04 0 174.08-0.64 261.12 1.28 51.84 1.28 103.04 1.28 154.24-7.04 52.48-8.32 95.36-34.56 125.44-77.44 42.88-60.8 54.4-128.64 37.12-200.96-12.16-51.2-37.12-94.72-80.64-126.08-69.76-49.28-147.84-64-231.68-48.64-32.64 5.76-61.44 20.48-83.2 45.44-43.52 49.92-47.36 107.52-27.52 167.04 17.28 52.48 81.92 81.28 136.96 65.28 24.96-7.04 44.8-21.76 55.04-46.08 8.32-18.56 1.92-35.2-15.36-42.24-2.56 26.88-14.72 38.4-42.88 39.04H640a54.912 54.912 0 0 1-53.12-56.32c0-31.36 26.88-67.84 59.52-78.72 51.84-17.28 98.56-8.32 140.16 27.52 40.96 36.48 55.04 97.92 30.72 140.8-24.32 43.52-64 67.84-111.36 78.08-40.96 8.32-82.56 8.96-124.16 10.88-44.16 1.92-88.32 1.28-132.48-1.28-33.28-1.92-67.2-4.48-99.84-11.52-28.8-6.4-56.96-14.72-79.36-35.2a61.696 61.696 0 0 1-21.76-51.84c2.56-34.56 17.28-64.64 39.68-90.88a3790.08 3790.08 0 0 1 190.72-202.24c25.6-25.6 56.96-40.32 92.8-43.52 32-2.56 63.36-3.84 95.36-5.76 58.88-3.84 117.12-11.52 174.72-27.52 64-17.28 120.96-46.72 161.92-101.12 7.68-9.6 15.36-19.2 18.56-32h-3.84zM869.12 44.8c0 7.68-3.84 13.44-7.04 19.2-19.2 35.84-49.92 58.88-84.48 77.44-48 26.24-99.84 41.6-153.6 49.28-65.92 9.6-132.48 8.32-199.04 7.04-78.08-1.92-156.16 1.92-232.96 16.64-23.04 4.48-46.08 6.4-69.12 9.6-3.84 0-8.32 1.28-14.08 1.92 1.92-1.92 3.2-2.56 4.48-3.84 13.44-7.04 24.32-17.28 33.92-28.8 40.32-48.64 91.52-75.52 153.6-85.12 44.8-7.04 90.24-7.68 135.68-9.6 65.92-1.92 131.2-1.28 197.12-6.4 78.08-5.76 154.24-22.4 228.48-46.08 1.92 0 3.84-0.64 6.4-1.28z" fill="#0090FE" p-id="9706"></path></svg>'),115:"data:image/svg+xml;base64,"+btoa('<svg t="1758974307798" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13186" width="200" height="200"><path d="M701.004655 35.208896c29.184693-0.150426 57.568137-7.509021 84.900645-17.220197 20.924565 9.561773-3.704368 30.886451-7.559163 44.903699-9.81146 18.4717-18.371416 37.594223-29.084409 55.516408-10.562567 15.618723-29.785374 24.128537-48.4075 23.228027-75.139328-0.100284-150.228513 0-225.367841-0.050142-21.425985-0.851391-42.250266 12.565177-50.960649 32.03767-11.763928 24.329105-25.080212 47.957245-36.193317 72.586179 67.680449 13.216 137.012514 25.430182 198.886723 57.31845 58.670238 29.9358 109.880573 76.740802 139.615804 136.01172 37.294394 72.836889 39.797401 162.54298 5.106298 236.882082C696.149067 753.612827 625.013937 810.830993 545.56956 838.764182c-95.764064 32.989345-205.795063 33.939997-297.453622-12.214183-0.550539-0.751107-1.701758-2.252297-2.302439-3.053546 89.155553 11.914354 183.668113-3.604084 260.560364-51.611471 49.659003-30.836309 89.305979-80.195483 101.069907-138.214898 11.062963-44.803415 2.753717-93.411483-22.577205-131.957381-38.845727-60.021002-102.421694-100.519368-169.70203-121.895211-63.825654-21.926382-131.005706-30.036084-197.685361-37.594223 47.306422-93.110631 93.66117-186.721659 140.567479-280.032858 8.760524-17.020652 28.234041-27.432793 47.206138-26.78197C503.81969 35.208896 602.437755 35.609009 701.004655 35.208896z" fill="#224888" p-id="13187"></path></svg>'),xunlei:"data:image/svg+xml;base64,"+btoa('<svg t="1758974328647" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14190" width="200" height="200"><path d="M432.64 407.04s199.68-217.6 468.48-322.56c0 0 12.8-5.12 2.56 7.68s-56.32 84.48-66.56 97.28l-35.84 33.28 17.92-5.12-35.84 79.36-46.08 46.08 33.28-10.24-38.4 92.16-40.96 40.96 35.84-20.48s-17.92 38.4-35.84 66.56c0 0 163.84 17.92 302.08 81.92 0 0-76.8 20.48-107.52 28.16l-33.28-7.68 15.36 10.24-35.84 15.36c-2.56 0-28.16-7.68-40.96-2.56 0 0 15.36 5.12 17.92 10.24l-38.4 15.36s-7.68 5.12-15.36 5.12c-5.12 0-38.4-7.68-48.64-2.56 0 0 20.48 10.24 28.16 10.24 0 0-12.8 17.92-122.88 23.04 0 0 81.92 227.84 79.36 258.56-2.56 30.72-48.64-35.84-48.64-35.84s-69.12-76.8-89.6-92.16c-20.48-15.36-79.36-25.6-204.8-104.96s-125.44-181.76-117.76-230.4c7.68-48.64 7.68-84.48-23.04-94.72s-81.92-23.04-189.44-25.6c0 0-17.92-12.8 12.8-12.8 30.72 2.56 112.64 2.56 156.16-5.12 48.64-10.24 66.56-25.6 104.96-20.48 38.4 5.12 87.04 17.92 140.8 71.68z" fill="#1390F2" p-id="14191"></path></svg>'),uc:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1758974377018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17084" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M240.32 674.282667c11.093333-57.856 42.837333-102.656 89.450667-136.896 28.458667-20.885333 58.709333-39.338667 88.362666-58.538667 47.36-30.634667 87.018667-67.989333 107.221334-122.304 22.592-60.650667 20.970667-119.701333-20.117334-171.818667-52.053333-66.005333-122.389333-86.208-203.648-71.658666-59.093333 10.581333-107.52 41.173333-149.397333 82.88-17.429333 17.344-32.256 36.778667-43.648 61.354666 3.925333-2.645333 6.037333-4.053333 8.106667-5.482666 22.549333-15.722667 47.36-23.253333 74.986666-22.186667 46.144 1.813333 84.352 41.088 85.397334 87.189333 0.682667 30.336-8.725333 57.386667-26.88 80.704-23.104 29.76-48 58.112-72.298667 86.933334-52.266667 62.08-79.338667 132.672-68.416 214.336 10.965333 82.090667 53.802667 144.064 126.528 183.808 45.845333 25.024 96.149333 33.344 150.378667 32.832-2.922667-1.237333-4.096-1.856-5.333334-2.197334-104.170667-28.672-159.253333-142.016-140.693333-238.933333zM653.184 473.6c42.176 13.888 80.213333 36.138667 118.826667 57.344 40.576 22.293333 83.285333 23.210667 127.018666 10.304 8.533333-2.517333 12.010667-7.168 11.178667-16.042667-1.066667-11.690667-0.448-23.594667-2.197333-35.157333-11.584-76.970667-53.141333-130.026667-126.997334-156.288-9.258667-3.285333-12.224-8.405333-14.976-17.194667-5.290667-16.853333-12.416-33.237333-19.925333-49.28-3.093333-6.613333-9.088-11.84-14.869333-19.050666-5.504 8.234667-10.176 14.357333-13.930667 21.013333-14.122667 24.917333-18.666667 52.373333-19.690667 80.426667-0.298667 8.618667-2.56 14.997333-9.408 19.754666-15.189333 10.538667-29.632 22.549333-45.888 31.082667-34.794667 18.218667-70.549333 34.624-104.96 51.285333 39.018667-0.213333 77.653333 9.237333 115.84 21.802667z m43.456 380.224c-14.826667-3.456-30.058667-5.162667-45.738667-7.765333 0.789333-2.986667 1.365333-5.546667 2.154667-8.064 11.52-36.458667 13.568-73.386667 8.789333-111.36-15.893333-126.421333-143.893333-202.218667-246.506666-180.288-54.613333 11.648-93.269333 42.154667-115.690667 93.226666 82.154667-81.365333 205.12-56.512 255.872 13.781334 33.493333 46.378667 42.602667 97.408 25.472 152-17.173333 54.762667-56.661333 88.533333-111.573333 109.653333 70.634667 1.984 266.624-4.16 290.432-11.733333-2.666667-5.12-4.672-10.453333-7.914667-14.869334-13.845333-18.730667-33.088-29.44-55.296-34.581333z m-158.72-97.877333c-0.490667-64.533333-49.024-117.546667-117.056-117.909334-73.429333-0.362667-118.229333 59.946667-118.229333 117.717334 0 61.76 51.136 118.186667 117.546666 117.12 65.194667-0.042667 118.250667-52.266667 117.76-116.928z m-118.336 53.397333a53.461333 53.461333 0 0 1-53.333333-54.144c0.128-29.312 25.386667-54.464 54.186666-53.973333 29.248 0.490667 54.08 25.344 54.293334 54.314666 0.213333 29.632-24.704 53.930667-55.146667 53.802667z m493.653333-168.576c-5.866667-23.061333-22.058667-35.882667-43.904-41.322667-15.210667-3.818667-31.04-5.290667-46.656-7.296-42.645333-5.504-80.149333-23.210667-116.096-45.994666-72.213333-45.76-150.976-65.92-236.373333-55.978667-14.784 1.728-29.098667 7.402667-43.626667 11.242667l0.768 3.072c9.386667 0 18.88-0.917333 28.16 0.170666 22.570667 2.666667 45.717333 3.861333 67.456 9.898667 77.056 21.44 132.288 71.104 171.669334 139.306667 5.610667 9.749333 11.968 16.277333 22.826666 16.853333 15.616 0.853333 31.488 2.432 46.826667 0.426667a125.013333 125.013333 0 0 0 39.125333-12.458667c35.072-17.6 70.677333-25.450667 109.077334-10.752 0.853333-2.026667 1.344-2.645333 1.322666-3.221333a19.626667 19.626667 0 0 0-0.597333-3.946667z" fill="#FC7A28" p-id="17085"></path></svg>'),123:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1759299472449" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9534" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M296.48 1018.44c-157.16 0-285-129.24-285-288.12V293.72C11.48 134.84 139.32 5.6 296.48 5.6h431.04c157.16 0 285 129.24 285 288.12v436.56c0 158.88-127.84 288.12-285 288.12H296.48z" fill="#FFFFFF" p-id="9535"></path><path d="M306.08 68.08h411.88c128.4 0 232.32 105.24 232.32 235.32v417.16c0 130.08-103.92 235.32-232.32 235.32H306.08c-128.4 0-232.32-105.24-232.32-235.32V303.4c-0.04-130.04 103.88-235.32 232.32-235.32z" fill="#597DFC" p-id="9536"></path><path d="M234.88 304.48H147.24v415.04h87.64V304.48z m129.28 304.84c0.44-21.6 3.8-35.72 10.36-42.36 4.84-6.64 12.48-11.12 22.4-13.68 9.72-2.56 10.12-2.36 30.64-2.56h23.24c42.68 0 52.6-6.4 73.92-19.24 14.36-8.76 23.24-23.32 31.48-41.92 8.24-18.4 12.24-39.8 12.24-63.76 0-19.48-3.4-37.64-9.92-54.32-6.56-16.92-16.04-30.16-28.32-40.2-20.48-17.76-37.6-26.76-109.4-26.76H283.48v74h118.92c23.04 0 39.48 3.2 49.84 9.4 13.52 8.76 20.28 22.48 20.28 41.08 0 17.12-7.4 29.96-22.16 38.52-9.52 5.36-17.96 8.12-40.56 8.12h-14.16c-27.88 0-34.64 1.92-47.72 5.56-13.08 3.64-25.12 10.92-36.32 21.84-23.64 24.4-35.28 59.88-34.44 106.32v110.16h280.48v-73.36H363.72v-36.8h0.44z m353.56 110.2c30.64 0 53.64-1.48 69.08-4.72 15.44-3.2 29.56-9 42.68-17.76 29.56-19.04 44.16-48.36 44.16-87.72 0-42.8-18.16-76.16-54.72-100.12 36.56-21.6 54.72-51.56 54.72-90.28 0-22.48-4.24-44.28-16.48-63.96-12.24-21.16-31.04-34.64-52.4-42.56-9.08-3.44-17.32-5.36-24.92-6.2-7.6-0.84-24.92-1.48-51.96-1.92h-117v74h101.8c14.36 0 24.52 0.44 30.4 1.48 5.92 1.08 11.2 3.2 15.64 6.64 12.24 8.36 18.36 21.6 18.36 39.8 0 16.68-4.64 28.88-14.16 36.8-7.8 6.64-24.52 10.04-50.28 10.04h-62.96v73.36h62.96c21.32 0 36.32 2.56 44.76 7.48 13.52 7.92 20.28 22.24 20.28 43 0 17.12-5.28 29.96-16.04 38.52-8.64 7.08-24.92 10.48-49.2 10.48h-101.8v73.36h107.08v0.28z" fill="#FFFFFF" p-id="9537"></path></svg>')};return d[m]||d.quark},O=m=>{const d=new Date(m);return d.toLocaleDateString("zh-CN")+" "+d.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},V=m=>{i.value="已复制到剪贴板",setTimeout(()=>{i.value=""},2e3)},D=async(m,d)=>{try{if(window.open(m,"_blank"),d)try{await navigator.clipboard.writeText(d),i.value=`链接已打开,提取码 "${d}" 已复制到剪贴板`}catch{const q=document.createElement("textarea");q.value=d,q.style.position="fixed",q.style.left="-999999px",q.style.top="-999999px",document.body.appendChild(q),q.focus(),q.select();try{document.execCommand("copy"),i.value=`链接已打开,提取码 "${d}" 已复制到剪贴板`}catch{i.value=`链接已打开,提取码: ${d} (请手动复制)`}finally{document.body.removeChild(q)}}else i.value="链接已打开";setTimeout(()=>{i.value=""},3e3)}catch(h){console.error("操作失败:",h),r.value="操作失败"}},B=(m,d)=>{m.preventDefault(),D(d.url,d.password)},G=m=>{E.value.has(m)?E.value.delete(m):E.value.add(m)},ee=m=>E.value.has(m),Y=()=>{E.value.clear()};Wt(()=>t.movieId,async m=>{m&&(Y(),await ft(),ve(),De())},{immediate:!0}),Wt(()=>t.linkType,async()=>{Y(),Z.platform="",y.value.page=1,t.movieId&&(await ft(),ve())});const Ce=m=>{m>=1&&m<=y.value.pages&&(Y(),ve(m))},$e=()=>{y.value.page>1&&Ce(y.value.page-1)},We=()=>{y.value.page<y.value.pages&&Ce(y.value.page+1)},Ke=()=>{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 d=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(d)d.click();else{const h=new CustomEvent("switchToUserTab",{bubbles:!0,detail:{tab:"user"}});document.dispatchEvent(h)}}};jt(async()=>{t.movieId&&(await ft(),ve(),De())});const ft=async()=>{if(!le.initialized.value)return new Promise(m=>{let d=0;const h=50,q=()=>{if(d++,le.initialized.value||d>=h){m();return}setTimeout(q,100)};q()})};return(m,d)=>(I(),M(Re,null,[a("div",mu,[v.value?(I(),M("div",gu,[a("div",_u,[a("div",{class:"modal-header"},[d[33]||(d[33]=a("h4",null,"修改链接",-1)),a("button",{class:"close-btn",onClick:S},"×")]),a("div",bu,[a("form",{onSubmit:je(P,["prevent"])},[a("div",yu,[a("div",wu,[d[34]||(d[34]=a("label",null,"链接类型 *",-1)),se(It,{modelValue:w.linkType,"onUpdate:modelValue":d[0]||(d[0]=h=>w.linkType=h),options:W,placeholder:"请选择类型",onChange:d[1]||(d[1]=h=>w.platform="")},null,8,["modelValue"])]),w.linkType==="netdisk"?(I(),M("div",xu,[d[35]||(d[35]=a("label",null,"平台",-1)),se(It,{modelValue:w.platform,"onUpdate:modelValue":d[2]||(d[2]=h=>w.platform=h),options:R.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):N("",!0)]),a("div",ku,[d[36]||(d[36]=a("label",null,"链接地址 *",-1)),a("div",Cu,[re(a("input",{type:"url","onUpdate:modelValue":d[3]||(d[3]=h=>w.url=h),placeholder:"请输入完整的链接地址",required:""},null,512),[[fe,w.url]])])]),a("div",Su,[w.linkType==="netdisk"?(I(),M("div",Tu,[d[37]||(d[37]=a("label",null,"提取码",-1)),a("div",Eu,[re(a("input",{type:"text","onUpdate:modelValue":d[4]||(d[4]=h=>w.extractCode=h),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[fe,w.extractCode]])])])):N("",!0),a("div",$u,[d[38]||(d[38]=a("label",null,"标题描述",-1)),a("div",Au,[re(a("input",{type:"text","onUpdate:modelValue":d[5]||(d[5]=h=>w.title=h),placeholder:"简短描述这个链接"},null,512),[[fe,w.title]])])])]),a("div",Pu,[a("div",Vu,[d[39]||(d[39]=a("label",null,"文件大小",-1)),a("div",Iu,[re(a("input",{type:"text","onUpdate:modelValue":d[6]||(d[6]=h=>w.size=h),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[fe,w.size]])])]),a("div",Mu,[d[40]||(d[40]=a("label",null,"特性标签",-1)),a("div",Uu,[se(kt,{modelValue:w.has_4k,"onUpdate:modelValue":d[7]||(d[7]=h=>w.has_4k=h),label:"4K画质",color:"blue"},null,8,["modelValue"]),se(kt,{modelValue:w.has_hdr,"onUpdate:modelValue":d[8]||(d[8]=h=>w.has_hdr=h),label:"HDR",color:"green"},null,8,["modelValue"]),se(kt,{modelValue:w.has_dolby_atmos,"onUpdate:modelValue":d[9]||(d[9]=h=>w.has_dolby_atmos=h),label:"杜比全景声",color:"purple"},null,8,["modelValue"]),se(kt,{modelValue:w.has_subtitles,"onUpdate:modelValue":d[10]||(d[10]=h=>w.has_subtitles=h),label:"外挂字幕",color:"red"},null,8,["modelValue"])])])]),a("div",Du,[a("button",{type:"submit",disabled:g.value},j(g.value?"修改中...":"保存修改"),9,Ou),a("button",{type:"button",onClick:S},"取消")])],32)])])])):N("",!0),u.value?(I(),M("div",Lu,[a("div",Ru,[a("div",{class:"modal-header"},[d[42]||(d[42]=a("h4",null,"添加新链接",-1)),a("button",{class:"close-btn",onClick:_},d[41]||(d[41]=[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",Fu,[a("form",{onSubmit:je(Ct,["prevent"])},[a("div",Nu,[a("div",Bu,[d[43]||(d[43]=a("label",null,"链接类型 *",-1)),se(It,{modelValue:b.linkType,"onUpdate:modelValue":d[11]||(d[11]=h=>b.linkType=h),options:W,placeholder:"请选择类型",onChange:d[12]||(d[12]=h=>b.platform="")},null,8,["modelValue"])]),b.linkType==="netdisk"?(I(),M("div",qu,[d[44]||(d[44]=a("label",null,"平台",-1)),se(It,{modelValue:b.platform,"onUpdate:modelValue":d[13]||(d[13]=h=>b.platform=h),options:R.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):N("",!0)]),a("div",Hu,[d[45]||(d[45]=a("label",null,"链接地址 *",-1)),a("div",ju,[re(a("input",{type:"url","onUpdate:modelValue":d[14]||(d[14]=h=>b.url=h),placeholder:"请输入完整的链接地址",required:""},null,512),[[fe,b.url]])])]),a("div",zu,[b.linkType==="netdisk"?(I(),M("div",Wu,[d[46]||(d[46]=a("label",null,"提取码",-1)),a("div",Ku,[re(a("input",{type:"text","onUpdate:modelValue":d[15]||(d[15]=h=>b.extractCode=h),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[fe,b.extractCode]])])])):N("",!0),a("div",Gu,[d[47]||(d[47]=a("label",null,"标题描述",-1)),a("div",Yu,[re(a("input",{type:"text","onUpdate:modelValue":d[16]||(d[16]=h=>b.title=h),placeholder:"简短描述这个链接"},null,512),[[fe,b.title]])])])]),a("div",Ju,[a("div",Qu,[d[48]||(d[48]=a("label",null,"文件大小",-1)),a("div",Zu,[re(a("input",{type:"text","onUpdate:modelValue":d[17]||(d[17]=h=>b.size=h),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[fe,b.size]])])]),a("div",Xu,[d[49]||(d[49]=a("label",null,"特性标签",-1)),a("div",ec,[se(kt,{modelValue:b.has_4k,"onUpdate:modelValue":d[18]||(d[18]=h=>b.has_4k=h),label:"4K画质",color:"blue"},null,8,["modelValue"]),se(kt,{modelValue:b.has_hdr,"onUpdate:modelValue":d[19]||(d[19]=h=>b.has_hdr=h),label:"HDR",color:"green"},null,8,["modelValue"]),se(kt,{modelValue:b.has_dolby_atmos,"onUpdate:modelValue":d[20]||(d[20]=h=>b.has_dolby_atmos=h),label:"杜比全景声",color:"purple"},null,8,["modelValue"]),se(kt,{modelValue:b.has_subtitles,"onUpdate:modelValue":d[21]||(d[21]=h=>b.has_subtitles=h),label:"外挂字幕",color:"red"},null,8,["modelValue"])])])]),a("div",tc,[a("button",{type:"submit",disabled:g.value},j(g.value?"添加中...":"添加链接"),9,sc),a("button",{type:"button",onClick:_},"取消")])],32)])])])):N("",!0),a("div",oc,[a("div",lc,[a("div",nc,[s.value==="netdisk"?(I(),js(It,{key:0,modelValue:Z.platform,"onUpdate:modelValue":d[22]||(d[22]=h=>Z.platform=h),options:pe.value,placeholder:"所有平台",onChange:d[23]||(d[23]=()=>{Y(),ve()})},null,8,["modelValue","options"])):N("",!0),se(It,{modelValue:Z.sortBy,"onUpdate:modelValue":d[24]||(d[24]=h=>Z.sortBy=h),options:J,placeholder:"按时间",onChange:d[25]||(d[25]=()=>{Y(),ve()})},null,8,["modelValue"])]),a("button",{class:"add-link-btn-compact",onClick:f,disabled:!he.value,title:"添加链接"},d[50]||(d[50]=[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,rc)]),n.value?(I(),M("div",ic,[(I(),M(Re,null,ko(3,h=>se(du,{key:"skeleton-"+h})),64))])):o.value.length>0?(I(),M("div",ac,[(I(!0),M(Re,null,ko(o.value,h=>(I(),M("div",{class:"link-item",key:h.id,onClick:q=>G(h.id)},[a("div",cc,[h.platform&&t.linkType!=="bt"&&t.linkType!=="online"?(I(),M("div",dc,[a("img",{src:T(h.platform),alt:$(h.platform),class:"platform-icon"},null,8,fc)])):N("",!0),a("div",pc,[h.language?(I(),M("span",hc,j(h.language),1)):N("",!0),h.size?(I(),M("span",vc,j(h.size),1)):N("",!0),h.has_4k||h.has_hdr||h.has_dolby_atmos||h.has_subtitles?(I(),M("div",mc,[h.has_4k?(I(),M("span",gc,"4K")):N("",!0),h.has_hdr?(I(),M("span",_c,"HDR")):N("",!0),h.has_dolby_atmos?(I(),M("span",bc,"杜比")):N("",!0),h.has_subtitles?(I(),M("span",yc,"外挂字幕")):N("",!0)])):N("",!0)])]),a("div",wc,[a("div",xc,[h.title?(I(),M("div",{key:0,class:ge(["link-title",{expanded:ee(h.id)}])},j(h.title),3)):N("",!0),a("div",{class:ge(["expand-arrow",{expanded:ee(h.id)}])},d[51]||(d[51]=[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)]),re(a("div",kc,[a("div",{class:"link-url",onClick:d[26]||(d[26]=je(()=>{},["stop"])),onContextmenu:q=>B(q,h)},[se(yn,{text:h.url,type:"url",onCopySuccess:V},null,8,["text"])],40,Cc),h.password?(I(),M("div",{key:0,class:"extract-code-container",onClick:d[27]||(d[27]=je(()=>{},["stop"]))},[d[52]||(d[52]=a("span",null,"提取码: ",-1)),se(yn,{text:h.password,type:"code",onCopySuccess:V},null,8,["text"])])):N("",!0)],512),[[Ys,ee(h.id)]])]),re(a("div",{class:"link-actions",onClick:d[28]||(d[28]=je(()=>{},["stop"]))},[a("div",Sc,[a("button",{class:ge(["vote-btn up",{active:h.user_vote_type==="up",pending:Oe.value.has(h.id)}]),onClick:q=>ct(h.id,"up"),disabled:!he.value},[(I(),M("svg",Ec,[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,$c)])),ps(" "+j(h.up_votes||0),1)],10,Tc),a("button",{class:ge(["vote-btn down",{active:h.user_vote_type==="down",pending:Oe.value.has(h.id)}]),onClick:q=>ct(h.id,"down"),disabled:!he.value},[(I(),M("svg",Pc,[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,Vc)])),ps(" "+j(h.down_votes||0),1)],10,Ac)]),a("div",Ic,[A(h)?(I(),M("button",{key:0,class:"modify-btn",onClick:q=>x(h)}," 修改 ",8,Mc)):N("",!0),A(h)?(I(),M("button",{key:1,class:"delete-btn",onClick:q=>C(h)}," 删除 ",8,Uc)):N("",!0),!A(h)&&he.value?(I(),M("button",{key:2,class:"report-btn",onClick:q=>Jt(h.id)}," 反馈 ",8,Dc)):N("",!0)])],512),[[Ys,ee(h.id)]]),re(a("div",Oc,[a("span",Lc,"by "+j(h.user_display_name||"匿名用户"),1),a("span",Rc,j(O(h.created_at)),1),h.report_count>0?(I(),M("span",Fc," 被反馈 "+j(h.report_count)+" 次 ",1)):N("",!0)],512),[[Ys,ee(h.id)]])],8,uc))),128))])):!n.value&&!he.value?(I(),M("div",Nc,[a("div",{class:"login-prompt-content"},[d[53]||(d[53]=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)),d[54]||(d[54]=a("h3",null,"登录后浏览链接",-1)),d[55]||(d[55]=a("p",null,"登录后即可查看和添加资源链接",-1)),a("button",{class:"login-btn",onClick:Ke}," 立即登录 ")])])):!n.value&&o.value.length===0?(I(),M("div",Bc,d[56]||(d[56]=[a("p",null,"暂无链接,成为第一个添加链接的人吧!",-1)]))):N("",!0)]),y.value.pages>1&&!n.value?(I(),M("div",qc,[a("button",{class:"pagination-btn",disabled:y.value.page<=1,onClick:$e}," 上一页 ",8,Hc),a("span",jc,j(y.value.page)+" / "+j(y.value.pages),1),a("button",{class:"pagination-btn",disabled:y.value.page>=y.value.pages,onClick:We}," 下一页 ",8,zc)])):N("",!0),a("div",Wc,[r.value?(I(),M("div",{key:0,class:"toast error-toast",onClick:d[29]||(d[29]=h=>r.value="")},[a("span",null,j(r.value),1),d[57]||(d[57]=a("button",{class:"toast-close"},"×",-1))])):N("",!0),i.value?(I(),M("div",{key:1,class:"toast success-toast",onClick:d[30]||(d[30]=h=>i.value="")},[a("span",null,j(i.value),1),d[58]||(d[58]=a("button",{class:"toast-close"},"×",-1))])):N("",!0)])]),Ye.value?(I(),M("div",Kc,[a("div",Gc,[a("div",{class:"modal-header"},[d[60]||(d[60]=a("h4",null,"删除链接",-1)),a("button",{class:"close-btn",onClick:U},d[59]||(d[59]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",Yc,[d[61]||(d[61]=a("div",{class:"delete-confirmation"},[a("div",{class:"warning-icon"},"⚠️"),a("p",null,"确定要删除这个链接吗?"),a("p",{class:"warning-text"},"此操作不可撤销")],-1)),a("div",Jc,[a("button",{type:"button",class:"delete-confirm-btn",disabled:Ee.value,onClick:oe},j(Ee.value?"删除中...":"确认删除"),9,Qc),a("button",{type:"button",onClick:U}," 取消 ")])])])])):N("",!0),Mt.value?(I(),M("div",Zc,[a("div",Xc,[a("div",{class:"modal-header"},[d[63]||(d[63]=a("h4",null,"反馈链接",-1)),a("button",{class:"close-btn",onClick:ys},d[62]||(d[62]=[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",ed,[a("form",{onSubmit:je(bs,["prevent"])},[a("div",td,[d[64]||(d[64]=a("label",{for:"report-type"},"反馈类型 *",-1)),se(It,{id:"report-type",modelValue:ke.type,"onUpdate:modelValue":d[31]||(d[31]=h=>ke.type=h),options:Ut,placeholder:"请选择反馈类型",required:""},null,8,["modelValue"])]),a("div",sd,[d[65]||(d[65]=a("label",{for:"report-reason"},"详细原因",-1)),a("div",od,[re(a("input",{id:"report-reason","onUpdate:modelValue":d[32]||(d[32]=h=>ke.reason=h),placeholder:"请详细描述反馈原因(可选)",rows:"4"},null,512),[[fe,ke.reason]])])]),a("div",ld,[a("button",{type:"submit",disabled:Yt.value||!ke.type},j(Yt.value?"提交中...":"提交反馈"),9,nd),a("button",{type:"button",onClick:ys}," 取消 ")])],32)])])])):N("",!0)],64))}},[["__scopeId","data-v-04cd6d17"]]),ad={class:"content-wrapper"},ud={class:"navigation-bar"},cd={class:"tab-content"},dd={key:0,class:"tab-panel"},fd={key:1,class:"no-subject"},pd={key:1,class:"tab-panel"},hd=ot({__name:"WindowContent",setup(e){const t=L("links"),s=L("netdisk"),o=L(""),l=L({title:"",year:"",rating:""}),n=(i,u=null)=>{t.value=i,i==="links"&&u&&(s.value=u)},r=()=>{try{const u=window.location.href.match(/\/subject\/(\d+)\/?/);u&&(o.value=u[1],console.log("检测到豆瓣电影ID:",o.value));const v=document.querySelector('h1 span[property="v:itemreviewed"]')||document.querySelector("h1 span")||document.querySelector("h1");v&&(l.value.title=v.textContent.trim());const p=document.querySelector(".year")||document.querySelector("span.year");if(p){const E=p.textContent.match(/(\d{4})/);E&&(l.value.year=E[1])}const g=document.querySelector(".rating_num")||document.querySelector('[property="v:average"]');g&&(l.value.rating=g.textContent.trim()),console.log("获取到的电影信息:",l.value)}catch(i){console.error("获取豆瓣电影信息失败:",i)}};return jt(()=>{r(),new MutationObserver(()=>{window.location.href.includes("/subject/")&&setTimeout(r,500)}).observe(document.body,{childList:!0,subtree:!0});const u=v=>{v.detail&&v.detail.tab==="user"&&n("user")};return document.addEventListener("switchToUserTab",u),()=>{document.removeEventListener("switchToUserTab",u)}}),(i,u)=>(I(),M("div",ad,[a("div",ud,[a("button",{class:ge(["nav-btn",{active:t.value==="links"&&s.value==="netdisk"}]),onClick:u[0]||(u[0]=v=>n("links","netdisk"))}," 💾 网盘 ",2),a("button",{class:ge(["nav-btn",{active:t.value==="links"&&s.value==="bt"}]),onClick:u[1]||(u[1]=v=>n("links","bt"))}," 🧲 BT ",2),a("button",{class:ge(["nav-btn",{active:t.value==="links"&&s.value==="online"}]),onClick:u[2]||(u[2]=v=>n("links","online"))}," 📺 在线 ",2),a("button",{class:ge(["nav-btn",{active:t.value==="user"}]),onClick:u[3]||(u[3]=v=>n("user"))}," 👤 用户 ",2)]),a("div",cd,[t.value==="links"?(I(),M("div",dd,[o.value?(I(),js(id,{key:0,"movie-id":o.value,"link-type":s.value},null,8,["movie-id","link-type"])):(I(),M("div",fd,u[4]||(u[4]=[a("p",null,"未检测到豆瓣电影页面,请在豆瓣电影详情页使用此功能。",-1),a("p",{class:"hint"},"支持的页面格式:https://movie.douban.com/subject/[ID]/",-1)])))])):N("",!0),t.value==="user"?(I(),M("div",pd,[se(tu)])):N("",!0)])]))}},[["__scopeId","data-v-a01b44d5"]]),vd={key:0,class:"debug-panel"},md={class:"debug-content"},gd={class:"debug-section"},_d={class:"status-item"},bd={class:"status-item"},yd={class:"value"},wd={class:"status-item"},xd={class:"value token"},kd={class:"status-item"},Cd={class:"value token"},Sd={class:"status-item"},Td={class:"debug-section"},Ed={key:0,class:"test-result"},$d={class:"debug-section"},Ad={class:"headers-preview"},Pd=ot({__name:"DebugPanel",setup(e){const t=L(!1),s=L(""),o=L(""),l=Me(()=>le.isAuthenticated.value),n=Me(()=>le.token.value),r=Me(()=>le.user.value?`${le.user.value.email} (ID: ${le.user.value.id})`:"无用户信息"),i=Me(()=>{const y=n.value,b=s.value;return y&&b&&y===b}),u=Me(()=>{const y=s.value;return JSON.stringify(y?{Authorization:`Bearer ${y.substring(0,20)}...`,"Content-Type":"application/json"}:{"Content-Type":"application/json"},null,2)}),v=()=>{t.value=!t.value,t.value&&p()},p=()=>{s.value=localStorage.getItem("auth_token")||"",console.log("Token状态刷新:",{memory:n.value,localStorage:s.value,match:i.value})},g=async()=>{try{o.value="测试中...";const y=await yt.getLinks();o.value=JSON.stringify({success:!0,dataLength:(y==null?void 0:y.length)||0,message:"请求成功"},null,2)}catch(y){o.value=JSON.stringify({success:!1,error:y.message,status:y.status||"unknown"},null,2)}},E=()=>{localStorage.removeItem("auth_token"),le.token.value=null,le.user.value=null,p(),o.value="",console.log("所有Token已清除")};return jt(()=>{p(),window.addEventListener("storage",y=>{y.key==="auth_token"&&p()})}),(y,b)=>t.value?(I(),M("div",vd,[a("div",{class:"debug-header"},[b[0]||(b[0]=a("h3",null,"🔧 调试面板",-1)),a("button",{onClick:v,class:"close-btn"},"×")]),a("div",md,[a("div",gd,[b[6]||(b[6]=a("h4",null,"认证状态",-1)),a("div",_d,[b[1]||(b[1]=a("span",{class:"label"},"登录状态:",-1)),a("span",{class:ge(["status",l.value?"success":"error"])},j(l.value?"已登录":"未登录"),3)]),a("div",bd,[b[2]||(b[2]=a("span",{class:"label"},"用户信息:",-1)),a("span",yd,j(r.value),1)]),a("div",wd,[b[3]||(b[3]=a("span",{class:"label"},"Token (内存):",-1)),a("span",xd,j(n.value||"无"),1)]),a("div",kd,[b[4]||(b[4]=a("span",{class:"label"},"Token (localStorage):",-1)),a("span",Cd,j(s.value||"无"),1)]),a("div",Sd,[b[5]||(b[5]=a("span",{class:"label"},"Token匹配:",-1)),a("span",{class:ge(["status",i.value?"success":"error"])},j(i.value?"匹配":"不匹配"),3)])]),a("div",Td,[b[8]||(b[8]=a("h4",null,"测试操作",-1)),a("div",{class:"button-group"},[a("button",{onClick:p,class:"debug-btn"},"刷新Token状态"),a("button",{onClick:g,class:"debug-btn"},"测试API请求"),a("button",{onClick:E,class:"debug-btn danger"},"清除所有Token")]),o.value?(I(),M("div",Ed,[b[7]||(b[7]=a("h5",null,"API测试结果:",-1)),a("pre",null,j(o.value),1)])):N("",!0)]),a("div",$d,[b[9]||(b[9]=a("h4",null,"请求头预览",-1)),a("div",Ad,[a("code",null,j(u.value),1)])])])])):N("",!0)}},[["__scopeId","data-v-dba5723e"]]),Vd={key:0,class:"custom-window"},Id={class:"window-content"},Md={class:"window-header"},Ud={class:"window-title"},Dd=ot({__name:"App",setup(e){const t=L(!0),s=L("DoubanFlix 1.0.5"),o=()=>{t.value=!t.value,t.value&&yo(()=>{l()})},l=()=>{let i=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel");i||(i=document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]')),i||(i=document.createElement("div"),i.className="douban-movie-aside",i.style.cssText=`
      position: fixed;
      top: 100px;
      right: 20px;
      width: 400px;
      z-index: 9999;
    `,document.body.appendChild(i));const u=document.querySelector(".custom-window");u&&i&&u.parentNode!==i&&(i.firstChild?i.insertBefore(u,i.firstChild):i.appendChild(u),console.log("窗口已插入到第一个位置:",i.className||i.tagName))},n=()=>{t.value=!1},r=()=>{o()};return jt(async()=>{await le.initAuth(),window.addEventListener("toggle-window",r),yo(()=>{l()})}),Rs(()=>{window.removeEventListener("toggle-window",r)}),(i,u)=>(I(),M(Re,null,[t.value?(I(),M("div",Vd,[a("div",Id,[se(hd)]),a("div",Md,[a("span",Ud,j(s.value),1),a("button",{class:"close-btn",onClick:n},"×")])])):N("",!0),se(Pd)],64))}},[["__scopeId","data-v-be9a6b79"]]);function wn(){const e=document.querySelectorAll("h1"),t=document.querySelector(".article");t&&e.length>0&&e.forEach(l=>{t.insertBefore(l,t.firstChild)});const s=document.createElement("div");s.id="bilibili-custom-window",document.body.appendChild(s),Ki(Dd).mount("#bilibili-custom-window")}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",wn):wn()})()})();