正在生成您的专属代码...


import { connect } from "cloudflare:sockets";

const _BMKAoMvJ = "3b4d4cd8-cb92-4421-bf86-fb51570fc038";
const _ycBlafQc = ["UpstreamAddress.SG.CMLiussss.net"];

const _KwwoSIvN = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _omAVxQlY = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _clSZCYjI = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90';
const _wrEVWNGV = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9C%B0%E5%8C%BA%E5%90%8D%E7%A7%B0';

function _eEduCHNh(_qYdVEgAp) {
    if (Array.isArray(_qYdVEgAp)) {
        try {
            return String.fromCharCode.apply(null, _qYdVEgAp);
        } catch (_vTnOJGWl) {
            return '';
        }
    }
    return _qYdVEgAp;
}

function _sUpaBSeY(_tXrbSgzT) {
    return /^[0-9a-_qlEUZcMe]{8}-[0-9a-_qlEUZcMe]{4}-[4][0-9a-_qlEUZcMe]{3}-[89ab][0-9a-_qlEUZcMe]{3}-[0-9a-_qlEUZcMe]{12}$/_WttTsMvn.test(_tXrbSgzT);
}

const _quLUqfWI = "optimized_ips_v4";
const _zRYBXnnc = "global_config_v4";
const _jTdguxXR = "admin_password_v4";
const _bmlhyrRN = "live_results_temp_v1";
const _nysQGodR = "latest_sub_id_v1";

export default {
  async fetch(_pPRKjNxr, _nSQmseYZ, _feivJufg) {
    try {
      if (!_nSQmseYZ.DB) {
          const _mVpFyiNF = _laaknjVj("D1 数据库 'DB' 未绑定。");
          return new Response(_mVpFyiNF, { status: 503, _pbidZCeg: { 'Content-Type': '_sOwVmliX/html;_cUklIUbo=UTF-8' }});
      }

      _feivJufg.waitUntil(
          _nSQmseYZ.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_liMgYOjx TEXT PRIMARY KEY, _qYdVEgAp TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_tXrbSgzT TEXT PRIMARY KEY, _StOIzJMY TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_vTnOJGWl => console.error("DB Init Error:", _vTnOJGWl._ilbVNPWJ))
      );

      const _RxoGPLAw = new URL(_pPRKjNxr._RxoGPLAw);
      const _vuuvPYsv = _RxoGPLAw.pathname;
      const _ZcoZocxM = _pPRKjNxr._pbidZCeg.get("Upgrade");
      const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
      
      if (_rkwfWFxm.websocketStreamer && _rkwfWFxm.websocketStreamer._ZDOLLRZZ && _ZcoZocxM && _ZcoZocxM.toLowerCase() === "websocket") {
          const _BlOHgvPT = _rkwfWFxm.websocketStreamer._RxoGPLAw;
          if (_BlOHgvPT && _BlOHgvPT.trim().startsWith('https://')) {
              try {
                  const _CLuNTcfV = new Request(_BlOHgvPT.trim() + _RxoGPLAw.pathname + _RxoGPLAw.search, _pPRKjNxr);
                  return await fetch(_CLuNTcfV);
              } catch (_vTnOJGWl) {
                  return new Response(`Upstream WebSocket gateway failed: ${_vTnOJGWl._ilbVNPWJ}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_ZcoZocxM && _ZcoZocxM.toLowerCase() === "websocket") {
          return await _GHkNfptf(_pPRKjNxr, _nSQmseYZ, _rkwfWFxm);
      }
      
      const _EdfYWnzZ = _vuuvPYsv._dDxxQwsN(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_EdfYWnzZ) {
          const [, _oBeeWIXl, typeSuffix] = _EdfYWnzZ;
          const _ZVqAwjgJ = _rkwfWFxm._ZVqAwjgJ;
          if (!_ZVqAwjgJ || _ZVqAwjgJ.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' } });
          }
          const _fHEJTwzg = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _fjjKmSzk = _fHEJTwzg[typeSuffix];
          const _hdlfIgBZ = _ZVqAwjgJ.replace(/\/$/, '');
          const _xbvrKcyG = `${_RxoGPLAw.origin}/${_oBeeWIXl}`;
          const _xmnVJqsp = `${_hdlfIgBZ}/${_fjjKmSzk}?_rkwfWFxm=${encodeURIComponent(_xbvrKcyG)}`;
          try {
              const _oZRMEGeb = await fetch(_xmnVJqsp, { _pbidZCeg: { 'User-Agent': _pPRKjNxr._pbidZCeg.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _iOGpBPDQ = new Headers(_oZRMEGeb._pbidZCeg);
              _iOGpBPDQ._xfgJQVuL('Access-Control-Allow-Origin', '*');
              return new Response(_oZRMEGeb._jhBOaFbC, { status: _oZRMEGeb.status, statusText: _oZRMEGeb.statusText, _pbidZCeg: _iOGpBPDQ });
          } catch (_vTnOJGWl) {
              return new Response(`获取上游订阅失败: ${_vTnOJGWl._ilbVNPWJ}`, { status: 502, _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' } });
          }
      }

      if (_vuuvPYsv.startsWith('/https:/') || _vuuvPYsv.startsWith('/http:/')) {
          return _ZqrDfJjm(_pPRKjNxr, _rkwfWFxm);
      }
      
      if (_rkwfWFxm.customSubPath && _rkwfWFxm.customSubPath._ZDOLLRZZ && _rkwfWFxm.customSubPath._vuuvPYsv && _vuuvPYsv === '/' + _rkwfWFxm.customSubPath._vuuvPYsv.trim()) {
          const _NJGCgaOF = _nSQmseYZ.DB.prepare("SELECT _qYdVEgAp FROM kv_data WHERE _liMgYOjx = ?").bind(_nysQGodR);
          const { _NzqybVhr } = await _NJGCgaOF.all();
          const _pljBKjrc = _NzqybVhr._fOIlNPKa > 0 ? _NzqybVhr[0]._qYdVEgAp : null;
          if (_pljBKjrc) {
              return _WYLKNQEo({ _QpcWlPac: { _tXrbSgzT: _pljBKjrc }, _RxoGPLAw: _pPRKjNxr._RxoGPLAw }, _nSQmseYZ);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' } });
          }
      }
      
      const _pwWfsisa = _vuuvPYsv.split('/').filter(Boolean);
      if (_pwWfsisa._fOIlNPKa === 1 && !_vuuvPYsv.startsWith('/api/')) {
          const _oBeeWIXl = _pwWfsisa[0];
          return _WYLKNQEo({ _QpcWlPac: { _tXrbSgzT: _oBeeWIXl }, _RxoGPLAw: _pPRKjNxr._RxoGPLAw }, _nSQmseYZ);
      }

      if (_vuuvPYsv.startsWith('/api/')) {
          if (_vuuvPYsv === '/api/_rkwfWFxm' && _pPRKjNxr.method === 'POST') return _XSjnIdSe(_pPRKjNxr, _nSQmseYZ, _feivJufg);
          if (_vuuvPYsv === '/api/_xfgJQVuL-_knaGgUOU') return _UWQpCoUu(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/change-_knaGgUOU') return _MMbAZyZE(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/verify-_knaGgUOU') return _TbDujIEO(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/verify-visitor-_knaGgUOU' && _pPRKjNxr.method === 'POST') return _IJnDMYSN(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/cache-live-_NzqybVhr' && _pPRKjNxr.method === 'POST') return _kcfMvTbu(_pPRKjNxr, _nSQmseYZ, _feivJufg);
          if (_vuuvPYsv === '/api/get-_CrTxPtih' && _pPRKjNxr.method === 'POST') return _IGcSkrYr(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/get-cached-_HXiPXlgC') return _mNjbmxIM(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/save-_HXiPXlgC') return _TNIzwGun(_pPRKjNxr, _nSQmseYZ, _feivJufg);
          if (_vuuvPYsv === '/api/save-and-get-sub-_tXrbSgzT' && _pPRKjNxr.method === 'POST') return _TFydssUS(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv.startsWith('/api/get-_bOYOffRu/')) {
              const _oBeeWIXl = _vuuvPYsv.split('/').pop();
              return _WYLKNQEo({ _QpcWlPac: { _tXrbSgzT: _oBeeWIXl }, _RxoGPLAw: _pPRKjNxr._RxoGPLAw }, _nSQmseYZ);
          }
          if (_vuuvPYsv === '/api/_rkwfWFxm' && _pPRKjNxr.method === 'GET') return _qtjPJODR(_nSQmseYZ);
          if (_vuuvPYsv === '/api/get-resolved-_HXiPXlgC') return _VIvQlgnL(_pPRKjNxr);
          if (_vuuvPYsv === '/api/parse-_HXiPXlgC-from-_irTFgash' && _pPRKjNxr.method === 'POST') return _pQnFgZeI(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/endpoints') return _tSSpZPfR(_pPRKjNxr, _nSQmseYZ);
          if (_vuuvPYsv === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_vuuvPYsv === '/_poAVSnAK') return _GFlONHre(_pPRKjNxr, _nSQmseYZ);
      if (_vuuvPYsv === '/bing-wallpaper') return _kRLKRIWV();

      return _UJpJjBcG(_pPRKjNxr, _nSQmseYZ, _feivJufg);
    } catch (err) {
      let _vTnOJGWl = err;
      return new Response(_vTnOJGWl.toString(), { status: 500 });
    }
  }
};

const _YPlTaiLj = { 'Accept': '_sOwVmliX/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' };

async function _WbmKTbBV(_RxoGPLAw, _tHmHWPXZ) {
    const _AjJnZtxk = await fetch(_RxoGPLAw, { _pbidZCeg: { ..._YPlTaiLj, 'Referer': _tHmHWPXZ.referer } });
    if (_AjJnZtxk.ok) return _AjJnZtxk._sOwVmliX();
    return null;
}

async function _rjNBHHAh(_RxoGPLAw, _tHmHWPXZ) {
    const _wMguZCSb = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_RxoGPLAw)}`;
    const _AjJnZtxk = await fetch(_wMguZCSb, { _pbidZCeg: { ..._YPlTaiLj, 'Referer': _tHmHWPXZ.referer } });
    if (!_AjJnZtxk.ok) return null;
    const _jhBOaFbC = await _AjJnZtxk._sOwVmliX();
    const _dDxxQwsN = _jhBOaFbC._dDxxQwsN(/<pre[^>]*>([\s\S]*?)<\/pre>/_WttTsMvn);
    return _dDxxQwsN && _dDxxQwsN[1] ? _dDxxQwsN[1].replace(/&amp;/g, '&') : null;
}

function _IobCrYCd(_rRyaxNRG) {
    let _LEKZKXtp;
    try {
        _LEKZKXtp = atob(_rRyaxNRG.replace(/\s/g, ''));
    } catch (_vTnOJGWl) {
        _LEKZKXtp = _rRyaxNRG;
    }

    const _bOYOffRu = _LEKZKXtp.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _YcrdQbvU = new Set();
    const _xowNEpNY = /@([^?#]+?):(\d+)/;

    for (const _NOGBNKmE of _bOYOffRu) {
        let _fJMnfumW = '';
        let _nJZkrPYM = '';

        try {
            if (_NOGBNKmE.startsWith('vmess://')) {
                const _SJxISNpK = atob(_NOGBNKmE.substring(8));
                const _rkwfWFxm = JSON.parse(_SJxISNpK);
                _fJMnfumW = _rkwfWFxm.add;
                _nJZkrPYM = _rkwfWFxm._nJZkrPYM;
            } else {
                const _dDxxQwsN = _NOGBNKmE._dDxxQwsN(_xowNEpNY);
                if (_dDxxQwsN && _dDxxQwsN[1] && _dDxxQwsN[2]) {
                    _fJMnfumW = _dDxxQwsN[1].replace(/[\[\]]/g, '');
                    _nJZkrPYM = _dDxxQwsN[2];
                }
            }
        } catch (_vTnOJGWl) {
            console.warn(`Could not parse _NOGBNKmE: ${_NOGBNKmE}`);
        }

        if (_fJMnfumW && _nJZkrPYM) {
            _YcrdQbvU.add(`${_fJMnfumW}:${_nJZkrPYM}`);
        }
    }
    return Array.from(_YcrdQbvU);
}

async function _ZsRLsjaN(_fgEBBFnw) {
    try {
        const _AjJnZtxk = await fetch(_fgEBBFnw, { _pbidZCeg: _YPlTaiLj });
        if (!_AjJnZtxk.ok) {
            console.error(`Failed to fetch subscription: ${_AjJnZtxk.status}`);
            return [];
        }
        const _rRyaxNRG = await _AjJnZtxk._sOwVmliX();
        return _IobCrYCd(_rRyaxNRG);
    } catch (error) {
        console.error(`Error processing subscription ${_fgEBBFnw}:`, error);
        return [];
    }
}

async function _YeMKlVto(_rUSloFcX) {
    const _wXPvnEUG = _rUSloFcX.trim();
    const _MMZFAJkM = /^(vless|vmess|trojan|ss):\/\//.test(_wXPvnEUG);
    const _tPXoedlz = (() => {
        if (_wXPvnEUG._fOIlNPKa < 20 || _wXPvnEUG.startsWith('http')) return false;
        const _vwkFOiEJ = _wXPvnEUG.replace(/\s/g, '');
        if (_vwkFOiEJ._fOIlNPKa % 4 !== 0 && !_vwkFOiEJ.includes('=')) return false;
        try {
            atob(_vwkFOiEJ);
            return true;
        } catch (_vTnOJGWl) {
            return false;
        }
    })();

    if (_MMZFAJkM || _tPXoedlz) {
        return _IobCrYCd(_wXPvnEUG).join('\n');
    }

    const _TnPNbmMt = [
        'https://ipdb.api.030101.xyz/?_YkXXsZDo=bestcf&_xWBJapql=true',
        'https://ipdb.api.030101.xyz/?_YkXXsZDo=bestproxy&_xWBJapql=true'
    ];
    const _uZsJFYvh = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_WttTsMvn.test(_rUSloFcX) || _rUSloFcX.includes('?_LkLDuScG=');

    if (_uZsJFYvh) {
        const _HXiPXlgC = await _ZsRLsjaN(_rUSloFcX);
        return _HXiPXlgC.join('\n');
    }

    let _rRyaxNRG = '';
    if (_TnPNbmMt.includes(_rUSloFcX)) {
        _rRyaxNRG = await _WbmKTbBV(_rUSloFcX, { referer: _rUSloFcX });
        if (!_rRyaxNRG || _rRyaxNRG._fOIlNPKa < 8) {
            _rRyaxNRG = await _rjNBHHAh(_rUSloFcX, { referer: _rUSloFcX });
        }
    } else {
        try {
            const _XGBzfUjE = await fetch(_rUSloFcX, { _pbidZCeg: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_XGBzfUjE.ok) {
                _rRyaxNRG = await _XGBzfUjE._sOwVmliX();
            } else {
                console.warn(`Failed to fetch URL ${_rUSloFcX}: ${_XGBzfUjE.status}`);
            }
        } catch (_vTnOJGWl) {
            console.error(`Error fetching URL ${_rUSloFcX}:`, _vTnOJGWl);
        }
    }

    const _bBkURqGl = _IobCrYCd(_rRyaxNRG);
    if (_bBkURqGl._fOIlNPKa > 0) {
        return _bBkURqGl.join('\n');
    }

    return _rRyaxNRG || '';
}

async function _ZqrDfJjm(_pPRKjNxr, _rkwfWFxm) {
    if (!_rkwfWFxm.streamer._ZDOLLRZZ) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _RxoGPLAw = new URL(_pPRKjNxr._RxoGPLAw);
    const _qZqTmncz = _RxoGPLAw.pathname.substring(1).replace(':/', '://');
    try {
        const _xmnVJqsp = new URL(_qZqTmncz);
        const _gtBNtLGw = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_gtBNtLGw.some(domain => _xmnVJqsp._fJMnfumW.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _fRbhoYKT = new Headers(_pPRKjNxr._pbidZCeg);
        _fRbhoYKT._xfgJQVuL('Host', _xmnVJqsp._fJMnfumW);
        _fRbhoYKT._xfgJQVuL('User-Agent', 'CF-Worker-Streamer/1.0');
        const _sOjHZrRj = await fetch(_xmnVJqsp.toString(), {
            method: _pPRKjNxr.method,
            _pbidZCeg: _fRbhoYKT,
            _jhBOaFbC: _pPRKjNxr._jhBOaFbC,
        });
        const _iOGpBPDQ = new Headers(_sOjHZrRj._pbidZCeg);
        _iOGpBPDQ._xfgJQVuL('Access-Control-Allow-Origin', '*');
        _iOGpBPDQ._xfgJQVuL('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _iOGpBPDQ._xfgJQVuL('Access-Control-Allow-Headers', '*');
        _iOGpBPDQ._xfgJQVuL('Cache-Control', 'public, max-age=86400');
        _iOGpBPDQ._xfgJQVuL('X-Streamer-Source', 'CF-Worker');
        _iOGpBPDQ.delete('_rRyaxNRG-security-policy');
        _iOGpBPDQ.delete('x-_rRyaxNRG-security-policy');
        _iOGpBPDQ.delete('x-webkit-csp');
        return new Response(_sOjHZrRj._jhBOaFbC, {
            status: _sOjHZrRj.status,
            statusText: _sOjHZrRj.statusText,
            _pbidZCeg: _iOGpBPDQ,
        });
    } catch (_vTnOJGWl) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _GHkNfptf(_pPRKjNxr, _nSQmseYZ, _rkwfWFxm) {
    try {
        const _XgcAegtV = _rkwfWFxm || await _WRkjvQPK(_nSQmseYZ);
        const _GswAOWBV = (_XgcAegtV.itemLink._MKWuFHzh && _XgcAegtV.itemLink._MKWuFHzh[0]) || {};
        const _DKsyjMHu = _GswAOWBV['_LkLDuScG'] || _eEduCHNh(_BMKAoMvJ);

        if (!_sUpaBSeY(_DKsyjMHu)) {
            throw new Error("Configured user _eVPeWugl is not valid.");
        }

        const _aDfnWPkr = _XgcAegtV.dataFeeds.universalFallbackAddress;
        let _ByyQeKyq = {};
        
        const _vVrZzimF = _eEduCHNh(_ycBlafQc[0] || "");

        if (_aDfnWPkr) {
            const [_rguAXScB, _nJZkrPYM = '443'] = _aDfnWPkr.split(':');
            _ByyQeKyq = { _rguAXScB, _nJZkrPYM };
        } else {
            const [_rguAXScB, _nJZkrPYM = '443'] = _vVrZzimF.split(':');
            _ByyQeKyq = { _rguAXScB, _nJZkrPYM };
        }

        const _RxoGPLAw = new URL(_pPRKjNxr._RxoGPLAw);
        const _vuuvPYsv = _RxoGPLAw.pathname;
        let _EbuDQkwr = '';

        const _pFwZspAa = _RxoGPLAw.searchParams.get('remote');
        if (_pFwZspAa) {
           _EbuDQkwr = atob(_pFwZspAa);
        } else if (_vuuvPYsv.startsWith('/endpoint=')) {
           _EbuDQkwr = _vuuvPYsv.substring(10);
        } else if (_vuuvPYsv._fOIlNPKa > 1 && _vuuvPYsv.substring(1).includes('.')) {
           _EbuDQkwr = _vuuvPYsv.substring(1);
        }

        if (_EbuDQkwr) {
            const [_rguAXScB, _nJZkrPYM = '443'] = _EbuDQkwr.split(':');
            _ByyQeKyq = { _rguAXScB, _nJZkrPYM };
        }
        
        return await _ewQdzlZw(_pPRKjNxr, _DKsyjMHu, _ByyQeKyq);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _ewQdzlZw(_pPRKjNxr, _eVPeWugl, _ByyQeKyq) {
    const _TllNbsFc = new WebSocketPair();
    const [clientEnd, _ujBUDVqX] = Object.values(_TllNbsFc);
    _ujBUDVqX.accept();

    let _xbEwNXpn = { _VdmknWcl: null };
    const _AgjIAEuw = _pPRKjNxr._pbidZCeg.get("sec-websocket-protocol") || "";
    const _HLFgzBNn = _bHUHzBBc(_ujBUDVqX, _AgjIAEuw);

    _HLFgzBNn.pipeTo(new WritableStream({
        async write(chunk) {
            if (_xbEwNXpn._VdmknWcl) {
                const _yBYvdylg = _xbEwNXpn._VdmknWcl.writable.getWriter();
                await _yBYvdylg.write(chunk);
                _yBYvdylg.releaseLock();
                return;
            }

            const { error, details } = await _pAsifdqI(chunk, _eVPeWugl);
            if (error) {
                throw new Error(details);
            }

            const _rtjIkADm = new Uint8Array([details._ztcqkpJP[0], 0]);
            const _HwAOZPpC = chunk.slice(details.payloadIndex);

            await _ASKfPRLF(_xbEwNXpn, details._EiypHkrt, details._AOWTVFJZ, _HwAOZPpC, _ujBUDVqX, _rtjIkADm, _ByyQeKyq);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _yeIGSNFG(_ujBUDVqX);
    });

    return new Response(null, { status: 101, webSocket: clientEnd });
}

async function _ASKfPRLF(_xbEwNXpn, _EiypHkrt, _AOWTVFJZ, _vqIWYazm, _ydianQAX, _rtjIkADm, _clMNBZbW) {
    const _YJkMclcq = async (_rguAXScB, _nJZkrPYM) => {
        let _olgdIAaM = _rguAXScB;
        if (/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(_rguAXScB)) {
            _olgdIAaM = `${atob('d3d3Lg==')}${_rguAXScB}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _VdmknWcl = connect({ _fJMnfumW: _olgdIAaM, _nJZkrPYM });
        _xbEwNXpn._VdmknWcl = _VdmknWcl;
        const _yBYvdylg = _VdmknWcl.writable.getWriter();
        await _yBYvdylg.write(_vqIWYazm);
        _yBYvdylg.releaseLock();
        return _VdmknWcl;
    };

    const _HXBcekRk = async () => {
        if (!_clMNBZbW._rguAXScB) return;
        console.log(`Direct connection failed, falling back to gateway: ${_clMNBZbW._rguAXScB}`);
        const _GWhwaCon = await _YJkMclcq(_clMNBZbW._rguAXScB, parseInt(_clMNBZbW._nJZkrPYM, 10));
        _GWhwaCon.closed.catch(() => {}).finally(() => _yeIGSNFG(_ydianQAX));
        _HiiPcTjA(_GWhwaCon, _ydianQAX, _rtjIkADm, null);
    };

    try {
        const _ISDRwRyX = await _YJkMclcq(_EiypHkrt, _AOWTVFJZ);
        _HiiPcTjA(_ISDRwRyX, _ydianQAX, _rtjIkADm, _HXBcekRk);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _HXBcekRk();
    }
}

function _bHUHzBBc(_ujBUDVqX, _AgjIAEuw) {
    let _hKnKqCdH = false;
    return new ReadableStream({
        start(_MVaeyaxC) {
            _ujBUDVqX.addEventListener("_ilbVNPWJ", (event) => { if (_hKnKqCdH) return; _MVaeyaxC.enqueue(event._StOIzJMY); });
            _ujBUDVqX.addEventListener("close", () => { _yeIGSNFG(_ujBUDVqX); if (_hKnKqCdH) return; _MVaeyaxC.close(); });
            _ujBUDVqX.addEventListener("error", (err) => _MVaeyaxC.error(err));
            if (_AgjIAEuw) {
                try {
                    const _iFJhAOJF = atob(_AgjIAEuw.replace(/-/g, "+").replace(/_/g, "/"));
                    _MVaeyaxC.enqueue(Uint8Array.from(_iFJhAOJF, c => c.charCodeAt(0))._Rydxtgtc);
                } catch (_vTnOJGWl) { console.error("Failed to decode early _StOIzJMY:", _vTnOJGWl); }
            }
        },
        cancel() { _hKnKqCdH = true; _yeIGSNFG(_ujBUDVqX); },
    });
}

async function _pAsifdqI(_Rydxtgtc, _eVPeWugl) {
    if (_Rydxtgtc.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _ztcqkpJP = new Uint8Array(_Rydxtgtc.slice(0, 1));
    const _qdNAQvjK = _XGORItYl(new Uint8Array(_Rydxtgtc.slice(1, 17)));
    if (_qdNAQvjK !== _eVPeWugl) return { error: true, details: "Invalid _eVPeWugl" };
    const _ERmNUzDq = new Uint8Array(_Rydxtgtc.slice(17, 18))[0];
    const _zfsdrFsK = new Uint8Array(_Rydxtgtc.slice(18 + _ERmNUzDq, 19 + _ERmNUzDq))[0];
    if (_zfsdrFsK !== 1) return { error: true, details: `Unsupported _zfsdrFsK: ${_zfsdrFsK}` };
    const _rfExtMKV = 19 + _ERmNUzDq;
    const _AOWTVFJZ = new DataView(_Rydxtgtc.slice(_rfExtMKV, _rfExtMKV + 2)).getUint16(0);
    let _niDielGD = _rfExtMKV + 2;
    const _KqaqbdYd = new Uint8Array(_Rydxtgtc.slice(_niDielGD, _niDielGD + 1))[0];
    let _GRTTqHeh = 0;
    let _CKucBeSW = _niDielGD + 1;
    let _EiypHkrt = "";
    switch (_KqaqbdYd) {
        case 1: _GRTTqHeh = 4; _EiypHkrt = new Uint8Array(_Rydxtgtc.slice(_CKucBeSW, _CKucBeSW + _GRTTqHeh)).join("."); break;
        case 2: _GRTTqHeh = new Uint8Array(_Rydxtgtc.slice(_CKucBeSW, _CKucBeSW + 1))[0]; _CKucBeSW++; _EiypHkrt = new TextDecoder().decode(_Rydxtgtc.slice(_CKucBeSW, _CKucBeSW + _GRTTqHeh)); break;
        case 3: _GRTTqHeh = 16; const _oCgJZeXy = new DataView(_Rydxtgtc.slice(_CKucBeSW, _CKucBeSW + _GRTTqHeh)); const _FsejDZJy = []; for (let _WttTsMvn = 0; _WttTsMvn < 8; _WttTsMvn++) _FsejDZJy.push(_oCgJZeXy.getUint16(_WttTsMvn * 2).toString(16)); _EiypHkrt = _FsejDZJy.join(":"); break;
        default: return { error: true, details: `Invalid _CFeneMIG _YkXXsZDo: ${_KqaqbdYd}` };
    }
    if (!_EiypHkrt) return { error: true, details: "Target _rguAXScB is empty" };
    return { error: false, details: { _EiypHkrt, _AOWTVFJZ, _ztcqkpJP, payloadIndex: _CKucBeSW + _GRTTqHeh } };
}

async function _HiiPcTjA(_VdmknWcl, _ydianQAX, _kLGOFDvE, _kHZvkPpo) {
    let _bFhHgBtV = _kLGOFDvE;
    let _DhZLhBfG = false;
    let _spWKejzV = _VdmknWcl._HLFgzBNn.pipeTo(new WritableStream({
        write(chunk) {
            _DhZLhBfG = true;
            if (_ydianQAX.readyState !== 1) throw new Error("Channel is not open");
            if (_bFhHgBtV) {
                const _KzIdFBrz = new Uint8Array(_bFhHgBtV.byteLength + chunk.byteLength);
                _KzIdFBrz._xfgJQVuL(new Uint8Array(_bFhHgBtV));
                _KzIdFBrz._xfgJQVuL(new Uint8Array(chunk), _bFhHgBtV.byteLength);
                _ydianQAX.send(_KzIdFBrz._Rydxtgtc);
                _bFhHgBtV = null;
            } else {
                _ydianQAX.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _ydianQAX error:", err._ilbVNPWJ);
    });

    await _spWKejzV;
    if (!_DhZLhBfG && _kHZvkPpo) {
        _kHZvkPpo();
    }
}

function _yeIGSNFG(_ydianQAX) {
    try { if (_ydianQAX.readyState === 1 || _ydianQAX.readyState === 2) _ydianQAX.close(); } catch (_vTnOJGWl) {}
}

const _njHzAjZK = Array.from({ _fOIlNPKa: 256 }, (_, _WttTsMvn) => (_WttTsMvn + 256).toString(16).slice(1));
function _XGORItYl(_sivzZGTz, offset = 0) {
    return (
        _njHzAjZK[_sivzZGTz[offset]] + _njHzAjZK[_sivzZGTz[offset + 1]] + _njHzAjZK[_sivzZGTz[offset + 2]] + _njHzAjZK[_sivzZGTz[offset + 3]] + "-" +
        _njHzAjZK[_sivzZGTz[offset + 4]] + _njHzAjZK[_sivzZGTz[offset + 5]] + "-" +
        _njHzAjZK[_sivzZGTz[offset + 6]] + _njHzAjZK[_sivzZGTz[offset + 7]] + "-" +
        _njHzAjZK[_sivzZGTz[offset + 8]] + _njHzAjZK[_sivzZGTz[offset + 9]] + "-" +
        _njHzAjZK[_sivzZGTz[offset + 10]] + _njHzAjZK[_sivzZGTz[offset + 11]] +
        _njHzAjZK[_sivzZGTz[offset + 12]] + _njHzAjZK[_sivzZGTz[offset + 13]] +
        _njHzAjZK[_sivzZGTz[offset + 14]] + _njHzAjZK[_sivzZGTz[offset + 15]]
    ).toLowerCase();
}

let _JQSJmZHn = { "N/A":"未知" };

async function _dAokgOzw(_RxoGPLAw, _neSJARWz, _kHZvkPpo) {
    try {
        const _AjJnZtxk = await fetch(_RxoGPLAw, {
            _pbidZCeg: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_AjJnZtxk.ok) {
            console.error(`获取 ${_RxoGPLAw} 失败: HTTP ${_AjJnZtxk.status}`);
            return _kHZvkPpo;
        }
        const _sOwVmliX = await _AjJnZtxk._sOwVmliX();
        return _neSJARWz(_sOwVmliX);
    } catch (error) {
        console.error(`获取或解析 ${_RxoGPLAw} 时发生网络错误: ${error._ilbVNPWJ}`);
        return _kHZvkPpo;
    }
}

function _zCYyOPKY(_sOwVmliX) {
    if (!_sOwVmliX) return [];
    const _IBqvwLKy = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _lmHBtGLk = _sOwVmliX.split(/[\s,;#|]+/);
    const _JTbBNyWM = [];
    for (const _bkmhQhYi of _lmHBtGLk) {
        const _elJwhvLY = _bkmhQhYi.trim();
        if (!_elJwhvLY) continue;
        const _noeHRrbx = _elJwhvLY.lastIndexOf(':');
        let _xOnYQxeD = _elJwhvLY;
        if(_noeHRrbx > _elJwhvLY.lastIndexOf(']')) {
             const _UxIVmBoi = _elJwhvLY.substring(_noeHRrbx + 1);
             if(!isNaN(_UxIVmBoi) && _UxIVmBoi._fOIlNPKa > 0) {
                _xOnYQxeD = _elJwhvLY.substring(0, _noeHRrbx);
             }
        }
        if (_RALxcoXj.isValid(_xOnYQxeD.replace(/[\[\]]/g, '')) || _IBqvwLKy.test(_elJwhvLY)) {
            _JTbBNyWM.push(_elJwhvLY);
        }
    }
    return _JTbBNyWM;
}

function _HbptszBB(_sOwVmliX) {
    if (!_sOwVmliX) return [];
    return _sOwVmliX.split(/\s+/).filter(d => d.trim() !== '');
}

function _GWsZmIsg(_sOwVmliX) {
    if (!_sOwVmliX) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_sOwVmliX}}`);
    } catch (_vTnOJGWl) {
        console.error("解析 _JQSJmZHn 失败:", _vTnOJGWl);
        return { "N/A": "未知" };
    }
}

const _RALxcoXj = {
    isValid: (_poAVSnAK) => _RALxcoXj.isIPv4(_poAVSnAK) || _RALxcoXj.isIPv6(_poAVSnAK),
    isIPv4: (_poAVSnAK) => {
        if (typeof _poAVSnAK !== 'string') return false;
        const _FsejDZJy = _poAVSnAK.split('.');
        if (_FsejDZJy._fOIlNPKa !== 4) return false;
        return _FsejDZJy.every(_lQDNQBBg => {
            const _rZZlRSNI = parseInt(_lQDNQBBg, 10);
            return !isNaN(_rZZlRSNI) && _rZZlRSNI >= 0 && _rZZlRSNI <= 255 && String(_rZZlRSNI) === _lQDNQBBg;
        });
    },
    isIPv6: (_poAVSnAK) => {
        if (typeof _poAVSnAK !== 'string') return false;
        return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_WttTsMvn.test(_poAVSnAK);
    },
    toLong4: (_poAVSnAK) => _poAVSnAK.split('.').reduce((acc, octet, _WttTsMvn) => acc + (parseInt(octet) << (8*(3-_WttTsMvn))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_poAVSnAK) => {
        try {
            const _ikRleSvV = _poAVSnAK.split('/')[0];
            const _FsejDZJy = _ikRleSvV.split('::');
            if (_FsejDZJy._fOIlNPKa > 2) return 0n;
            let _glvnXgIL = [];
            if (_FsejDZJy[0]) {
                _glvnXgIL = _FsejDZJy[0].split(':');
            }
            let _ESXUrPsi = [];
            if (_FsejDZJy._fOIlNPKa > 1 && _FsejDZJy[1]) {
                _ESXUrPsi = _FsejDZJy[1].split(':');
            }
            if (_glvnXgIL._fOIlNPKa + _ESXUrPsi._fOIlNPKa > 8) return 0n;
            const _wUgyROfP = 8 - (_glvnXgIL._fOIlNPKa + _ESXUrPsi._fOIlNPKa);
            const _FcdwrEdA = [
                ..._glvnXgIL,
                ...Array(_wUgyROfP).fill('0'),
                ..._ESXUrPsi
            ].map(_lQDNQBBg => _lQDNQBBg || '0');
            while(_FcdwrEdA._fOIlNPKa < 8) {
                _FcdwrEdA.push('0');
            }
            let _bCgbzvue = 0n;
            for (const _lQDNQBBg of _FcdwrEdA) {
                if (_lQDNQBBg._fOIlNPKa > 4) return 0n;
                const _qYdVEgAp = BigInt('0x' + _lQDNQBBg);
                _bCgbzvue = (_bCgbzvue << 16n) | _qYdVEgAp;
            }
            return _bCgbzvue;
        } catch(_vTnOJGWl) {
            return 0n;
        }
    },
    fromBigInt6: (_bCgbzvue) => {
        if (typeof _bCgbzvue !== '_bCgbzvue' || _bCgbzvue < 0n) return null;
        const _FsejDZJy = [];
        for (let _WttTsMvn = 0; _WttTsMvn < 8; _WttTsMvn++) {
            _FsejDZJy.unshift((_bCgbzvue & 0xFFFFn).toString(16));
            _bCgbzvue >>= 16n;
        }
        let _MICeYxiq = { start: -1, _kZKaHkgA: 0 };
        let _IdcBAIAh = { start: -1, _kZKaHkgA: 0 };
        for (let _WttTsMvn = 0; _WttTsMvn < 8; _WttTsMvn++) {
            if (_FsejDZJy[_WttTsMvn] === '0') {
                if (_IdcBAIAh.start === -1) _IdcBAIAh.start = _WttTsMvn;
                _IdcBAIAh._kZKaHkgA++;
            } else {
                if (_IdcBAIAh._kZKaHkgA > _MICeYxiq._kZKaHkgA) _MICeYxiq = { ..._IdcBAIAh };
                _IdcBAIAh = { start: -1, _kZKaHkgA: 0 };
            }
        }
        if (_IdcBAIAh._kZKaHkgA > _MICeYxiq._kZKaHkgA) _MICeYxiq = { ..._IdcBAIAh };
        if (_MICeYxiq._kZKaHkgA > 1) {
            _FsejDZJy.splice(_MICeYxiq.start, _MICeYxiq._kZKaHkgA, '');
            if (_MICeYxiq.start === 0) _FsejDZJy.unshift('');
            if (_MICeYxiq.start + _MICeYxiq._kZKaHkgA === 8) _FsejDZJy.push('');
        }
        return _FsejDZJy.join(':');
    },
    cidrToRange: (cidr, _SQjLImba = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _WtbuSQUI = parseInt(bitsStr, 10);
            const _HXiPXlgC = new Set();
            if (_RALxcoXj.isIPv4(range)) {
                if (isNaN(_WtbuSQUI) || _WtbuSQUI < 8 || _WtbuSQUI > 32) return [];
                if (_WtbuSQUI === 32) return [range];
                const _yRKglXvc = _RALxcoXj.toLong4(range);
                const _OKsTfdsX = (0xFFFFFFFF << (32 - _WtbuSQUI)) >>> 0;
                const _sERmNaea = _yRKglXvc & _OKsTfdsX;
                const _GDKtAhgL = 1 << (32 - _WtbuSQUI);
                if (_GDKtAhgL <= 2) return [];
                const _iaVZfICf = Math.min(_SQjLImba, _GDKtAhgL - 2);
                let _YuJbuOUA = 0;
                while (_HXiPXlgC.size < _iaVZfICf && _YuJbuOUA < _iaVZfICf * 5) {
                    const _XSLycbbb = Math.floor(Math.random() * (_GDKtAhgL - 2)) + 1;
                    _HXiPXlgC.add(_RALxcoXj.fromLong4((_sERmNaea + _XSLycbbb) >>> 0));
                    _YuJbuOUA++;
                }
                return Array.from(_HXiPXlgC);
            } else if (_RALxcoXj.isIPv6(range)) {
                if (isNaN(_WtbuSQUI) || _WtbuSQUI < 16 || _WtbuSQUI > 128) return [];
                 if (_WtbuSQUI === 128) return [range];
                const _BMdpQBBy = _RALxcoXj.toBigInt6(range);
                const _OKsTfdsX = (2n ** BigInt(128 - _WtbuSQUI) - 1n);
                const _sERmNaea = _BMdpQBBy & ~_OKsTfdsX;
                const _oIBXJugd = 2n ** BigInt(128 - _WtbuSQUI);
                if (_oIBXJugd <= 2n) return [];
                let _YuJbuOUA = 0;
                while (_HXiPXlgC.size < _SQjLImba && _YuJbuOUA < _SQjLImba * 5) {
                     const _RNxnOkMZ = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_RNxnOkMZ);
                     let _wyCEYVZT = 0n;
                     for (const _eMQyhgRU of _RNxnOkMZ) {
                         _wyCEYVZT = (_wyCEYVZT << 8n) | BigInt(_eMQyhgRU);
                     }
                     const _XSLycbbb = _wyCEYVZT % (_oIBXJugd - 2n) + 1n;
                     _HXiPXlgC.add(_RALxcoXj.fromBigInt6(_sERmNaea + _XSLycbbb));
                     _YuJbuOUA++;
                }
                return Array.from(_HXiPXlgC);
            }
            return [];
        } catch(_vTnOJGWl) {
            console.error(`CIDR to range failed for ${cidr}:`, _vTnOJGWl);
            return [];
        }
    }
};

function _bWOWJSPc(_yuXrDIqy, _HpmAvQJV) {
    const _RrwYwAtN = {};
    const _bkLDTKLh = Object._bkLDTKLh(_HpmAvQJV);
    const _FsejDZJy = _bkLDTKLh.map(_liMgYOjx => {
        const _xNvsKbVN = _yuXrDIqy * (_HpmAvQJV[_liMgYOjx] / 100);
        return { _liMgYOjx, _SQjLImba: Math.floor(_xNvsKbVN), remainder: _xNvsKbVN - Math.floor(_xNvsKbVN) };
    });
    let _sGhMNmpE = _FsejDZJy.reduce((acc, _lQDNQBBg) => acc + _lQDNQBBg._SQjLImba, 0);
    _FsejDZJy.sort((a, b) => b.remainder - a.remainder);
    let _dXtuuOrF = _yuXrDIqy - _sGhMNmpE;
    for (let _WttTsMvn = 0; _WttTsMvn < _dXtuuOrF; _WttTsMvn++) {
        _FsejDZJy[_WttTsMvn % _FsejDZJy._fOIlNPKa]._SQjLImba++;
    }
    for (const _lQDNQBBg of _FsejDZJy) {
        _RrwYwAtN[_lQDNQBBg._liMgYOjx] = _lQDNQBBg._SQjLImba;
    }
    return _RrwYwAtN;
}

async function _UBFxVwiS(_nSQmseYZ) {
    const _NJGCgaOF = _nSQmseYZ.DB.prepare("SELECT _qYdVEgAp FROM kv_data WHERE _liMgYOjx = ?").bind(_jTdguxXR);
    const { _NzqybVhr } = await _NJGCgaOF.all();
    return _NzqybVhr._fOIlNPKa > 0 ? _NzqybVhr[0]._qYdVEgAp : null;
}

async function _rfOxSrXa(_nSQmseYZ, _knaGgUOU) {
    const _NJGCgaOF = _nSQmseYZ.DB.prepare(
        "INSERT INTO kv_data (_liMgYOjx, _qYdVEgAp) VALUES (?, ?) ON CONFLICT(_liMgYOjx) DO UPDATE SET _qYdVEgAp = excluded._qYdVEgAp"
    );
    await _NJGCgaOF.bind(_jTdguxXR, _knaGgUOU).run();
}

async function _TbDujIEO(_pPRKjNxr, _nSQmseYZ) {
    const { _knaGgUOU } = await _pPRKjNxr.json();
    const _rBCHyLRz = await _UBFxVwiS(_nSQmseYZ);
    if (_rBCHyLRz === _knaGgUOU) {
        return _hqUuzqAI({ success: true });
    }
    return _hqUuzqAI({ success: false, _ilbVNPWJ: '密码错误' }, 401);
}

async function _IJnDMYSN(_pPRKjNxr, _nSQmseYZ) {
    const _eveaXWsK = await _WRkjvQPK(_nSQmseYZ);
    if (!_eveaXWsK.visitorPassword || !_eveaXWsK.visitorPassword._ZDOLLRZZ) {
        return _hqUuzqAI({ success: true });
    }
    try {
        const { _knaGgUOU } = await _pPRKjNxr.json();
        const _OlljTtzg = _eveaXWsK.visitorPassword._knaGgUOU;
        if (_OlljTtzg && _knaGgUOU === _OlljTtzg) {
            return _hqUuzqAI({ success: true });
        }
        return _hqUuzqAI({ success: false, _ilbVNPWJ: '访客密码错误' }, 401);
    } catch (_vTnOJGWl) {
        return _hqUuzqAI({ success: false, _ilbVNPWJ: '无效请求' }, 400);
    }
}

async function _UWQpCoUu(_pPRKjNxr, _nSQmseYZ) {
    const _YJxKQMVt = await _UBFxVwiS(_nSQmseYZ);
    if (_YJxKQMVt) {
        return _hqUuzqAI({ success: false, _ilbVNPWJ: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _knaGgUOU } = await _pPRKjNxr.json();
    if (!_knaGgUOU || _knaGgUOU._fOIlNPKa < 6) {
        return _hqUuzqAI({ success: false, _ilbVNPWJ: "密码长度不能少于6位。" }, 400);
    }
    await _rfOxSrXa(_nSQmseYZ, _knaGgUOU);
    return _hqUuzqAI({ success: true, _ilbVNPWJ: "初始密码设置成功!请刷新页面并登录。" });
}

async function _MMbAZyZE(_pPRKjNxr, _nSQmseYZ) {
    const { _IMybqLXx, _QimZHIXi } = await _pPRKjNxr.json();
    const _rBCHyLRz = await _UBFxVwiS(_nSQmseYZ);
    if (_rBCHyLRz !== _IMybqLXx) {
        return _hqUuzqAI({ success: false, _ilbVNPWJ: "旧密码错误。" }, 403);
    }
    if (!_QimZHIXi || _QimZHIXi._fOIlNPKa < 6) {
        return _hqUuzqAI({ success: false, _ilbVNPWJ: "新密码长度不能少于6位。" }, 400);
    }
    await _rfOxSrXa(_nSQmseYZ, _QimZHIXi);
    return _hqUuzqAI({ success: true, _ilbVNPWJ: "密码修改成功!" });
}

function _EkSjYjYq() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _ZVqAwjgJ: '',
        api: {
            _ZDOLLRZZ: true,
            _ilbVNPWJ: '维护中...',
        },
        ispFilter: { _ZDOLLRZZ: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _ZDOLLRZZ: true
        },
        websocketStreamer: {
            _ZDOLLRZZ: true,
            _RxoGPLAw: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _ZDOLLRZZ: true
        },
        visitorPassword: {
            _ZDOLLRZZ: false,
            _knaGgUOU: '',
        },
        customSubPath: {
            _ZDOLLRZZ: false,
            _vuuvPYsv: 'latest',
        },
        subscriptionId: {
            _fOIlNPKa: 8,
            _cUklIUbo: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _ZDOLLRZZ: true,
            template: 'vless://{_LkLDuScG}@{_poAVSnAK}:{_nJZkrPYM}?encryption=none&security=tls&sni={_rguAXScB}&fp=random&_YkXXsZDo=ws&_rguAXScB={_rguAXScB}&_vuuvPYsv={_vuuvPYsv}#{_ZliHvEEq}',
            selectionMode: 'first',
            _MKWuFHzh: [
                { _ZliHvEEq: '默认配置', _rguAXScB: '', '_LkLDuScG': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _vuuvPYsv: '/?ed=2560' }
            ],
            _UMwcMSVc: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _ZDOLLRZZ: false,
                _sOwVmliX: '',
                _EtyIXCqn: 5
            },
            marquee: {
                _ZDOLLRZZ: false,
                _sOwVmliX: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _ZDOLLRZZ: true,
            sources: [
                { _hpjxdxPu: 'CF官方IPV4', _HXiPXlgC: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 20 },
                { _hpjxdxPu: 'CF官方IPV6', _HXiPXlgC: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 20 },
                { _hpjxdxPu: '反代优选0', _HXiPXlgC: 'https://wvs.sosorg.nyc.mn/sub?_LkLDuScG=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_YkXXsZDo=ws&_rguAXScB=ss.nzvrn.com&_vuuvPYsv=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 30 },
                { _hpjxdxPu: '官方优选1', _HXiPXlgC: 'https://ipdb.api.030101.xyz/?_YkXXsZDo=bestcf&_xWBJapql=true', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 10 },
                { _hpjxdxPu: '反代优选2', _HXiPXlgC: 'https://ipdb.api.030101.xyz/?_YkXXsZDo=bestproxy&_xWBJapql=true', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 5 },
                { _hpjxdxPu: '官方优选2', _HXiPXlgC: 'https://addressesapi.090227.xyz/_poAVSnAK.164746.xyz', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 10 },
				{ _hpjxdxPu: '官方优选3', _HXiPXlgC: 'https://cfxr.eu.org/getSub?_rguAXScB=snipaste.huggy.qzz.io', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 5 },
                { _hpjxdxPu: '官方优选4', _HXiPXlgC: 'https://addressesapi.090227.xyz/CloudFlareYes', _ipIYEMhA: false, _ZDOLLRZZ: true, _cLbDbxlW: 10 }
            ]
        },
        customNodes: {
            _ZDOLLRZZ: false,
            list: ''
        },
        texts: {
            title: 'Cloudflare IP',
            loginButton: '登录',
            loginButtonSuccess: '修改参数',
            appDownloadTitle: 'APP 下载',
            liveTitle: '本次优选结果',
            cachedTitle: '上次优选结果',
            tableHeader1: '排名',
            tableHeader2: 'IP地址',
            tableHeader3: '端口',
            tableHeader4: '延迟(ms)',
            tableHeader5: '归属地',
            tableHeader6: '运营商',
            tableHeader7: '操作',
            pingInProgress: '测试中',
        },
        colors: {
            title: '#FFFFFF',
            loginButton: '#E0E0E0',
            liveTitle: '#E0E0E0',
            cachedTitle: '#E0E0E0',
            tableHeader: '#B0B0B0',
        },
        telegram: {
            bot_token: '',
            chat_id: '',
        },
    };
}

function _FRLJYdrH(_NsEyseyz, _uYdfxnXr) {
    if (!_NsEyseyz) return _uYdfxnXr;
    const _ebQIftai = { ..._uYdfxnXr };
    for (const _liMgYOjx in _uYdfxnXr) {
        if (_NsEyseyz.hasOwnProperty(_liMgYOjx)) {
             if (typeof _NsEyseyz[_liMgYOjx] === 'object' && _NsEyseyz[_liMgYOjx] !== null && !Array.isArray(_NsEyseyz[_liMgYOjx]) && typeof _uYdfxnXr[_liMgYOjx] === 'object' && _uYdfxnXr[_liMgYOjx] !== null && !Array.isArray(_uYdfxnXr[_liMgYOjx])) {
                _ebQIftai[_liMgYOjx] = _FRLJYdrH(_NsEyseyz[_liMgYOjx], _uYdfxnXr[_liMgYOjx]);
            } else {
                _ebQIftai[_liMgYOjx] = _NsEyseyz[_liMgYOjx];
            }
        }
    }
    return _ebQIftai;
}

async function _WRkjvQPK(_nSQmseYZ) {
    try {
        const _NJGCgaOF = _nSQmseYZ.DB.prepare("SELECT _qYdVEgAp FROM kv_data WHERE _liMgYOjx = ?").bind(_zRYBXnnc);
        const { _NzqybVhr } = await _NJGCgaOF.all();
        const _fJWoqnMH = _NzqybVhr._fOIlNPKa > 0 ? _NzqybVhr[0]._qYdVEgAp : null;
        const _kTlOBHSm = _fJWoqnMH ? JSON.parse(_fJWoqnMH) : {};
        return _FRLJYdrH(_kTlOBHSm, _EkSjYjYq());
    } catch (_vTnOJGWl) {
        console.error("无法从D1获取或解析全局配置:", _vTnOJGWl);
        return _EkSjYjYq();
    }
}

async function _qtjPJODR(_nSQmseYZ) {
    const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
    return _hqUuzqAI(_rkwfWFxm);
}

async function _XSjnIdSe(_pPRKjNxr, _nSQmseYZ, _feivJufg) {
    try {
        const { _rkwfWFxm, adminPassword } = await _pPRKjNxr.json();
        const _rBCHyLRz = await _UBFxVwiS(_nSQmseYZ);
        if (_rBCHyLRz !== adminPassword) {
            return _hqUuzqAI({ success: false, _ilbVNPWJ: "管理员密码错误" }, 403);
        }
        const _NJGCgaOF = _nSQmseYZ.DB.prepare(
          "INSERT INTO kv_data (_liMgYOjx, _qYdVEgAp) VALUES (?, ?) ON CONFLICT(_liMgYOjx) DO UPDATE SET _qYdVEgAp = excluded._qYdVEgAp"
        );
        const _SdWryYWD = _NJGCgaOF.bind(_zRYBXnnc, JSON.stringify(_rkwfWFxm)).run();
        _feivJufg.waitUntil(_SdWryYWD);
        return _hqUuzqAI({ success: true, _ilbVNPWJ: "配置已成功保存!" });
    } catch (_vTnOJGWl) {
        return _hqUuzqAI({ success: false, _ilbVNPWJ: `保存失败: ${_vTnOJGWl._ilbVNPWJ}` }, 500);
    }
}

async function _kRLKRIWV() {
    const _yGRjxKaT = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _qfVEhrPk = await fetch(_yGRjxKaT);
        const _aTxwnVOZ = await _qfVEhrPk.json();
        const _bhvuIOzB = 'https://www.bing.com' + _aTxwnVOZ.images[0]._RxoGPLAw;
        return fetch(_bhvuIOzB);
    } catch (_vTnOJGWl) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _thhvuEis(_poAVSnAK) {
    try {
        const _AjJnZtxk = await fetch(`http://_poAVSnAK-api.com/json/${_poAVSnAK}?fields=status,_xWBJapql,countryCode,_gBPWRlQA&lang=zh-CN`);
        if (_AjJnZtxk.ok) {
            const _StOIzJMY = await _AjJnZtxk.json();
            if (_StOIzJMY.status === 'success' && (_StOIzJMY.countryCode || _StOIzJMY._xWBJapql)) {
                let _gBPWRlQA = _StOIzJMY._gBPWRlQA || '未知';
                if (_gBPWRlQA.toLowerCase().includes('cloudflare')) {
                    _gBPWRlQA = 'CloudFlare';
                }
                return {
                    _hpjxdxPu: _JQSJmZHn[_StOIzJMY.countryCode] || _StOIzJMY._xWBJapql || _StOIzJMY.countryCode,
                    _gBPWRlQA: _gBPWRlQA
                };
            }
        }
    } catch (_vTnOJGWl) {}

    try {
        const _AjJnZtxk = await fetch(`https://api._poAVSnAK.sb/geoip/${_poAVSnAK}`);
        if (_AjJnZtxk.ok) {
            const _StOIzJMY = await _AjJnZtxk.json();
            if (_StOIzJMY.country_code || _StOIzJMY._xWBJapql) {
                let _gBPWRlQA = _StOIzJMY._gBPWRlQA || '未知';
                if (_gBPWRlQA.toLowerCase().includes('cloudflare')) {
                    _gBPWRlQA = 'CloudFlare';
                }
                return {
                    _hpjxdxPu: _JQSJmZHn[_StOIzJMY.country_code] || _StOIzJMY._xWBJapql || _StOIzJMY.country_code,
                    _gBPWRlQA: _gBPWRlQA
                };
            }
        }
    } catch (_vTnOJGWl) {}
    
    return { _hpjxdxPu: '未知', _gBPWRlQA: '未知' };
}

async function _IGcSkrYr(_pPRKjNxr, _nSQmseYZ) {
    try {
        const { _HXiPXlgC } = await _pPRKjNxr.json();
        if (!Array.isArray(_HXiPXlgC)) {
            return _hqUuzqAI({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _bsTifzSe = _HXiPXlgC.map(_poAVSnAK => _thhvuEis(_poAVSnAK).then(_CrTxPtih => ({ _poAVSnAK, ..._CrTxPtih })));
        const _NzqybVhr = await Promise.all(_bsTifzSe);
        return _hqUuzqAI(_NzqybVhr);
    } catch (_vTnOJGWl) {
        return _hqUuzqAI({ error: `获取地理位置失败: ${_vTnOJGWl._ilbVNPWJ}` }, 500);
    }
}

async function _mNjbmxIM(_pPRKjNxr, _nSQmseYZ) {
    const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
    if (!_rkwfWFxm.cloudStorage._ZDOLLRZZ) {
        return _hqUuzqAI({ _NzqybVhr: [], generatedBy: null });
    }
    try {
        const _NJGCgaOF = _nSQmseYZ.DB.prepare("SELECT _qYdVEgAp FROM kv_data WHERE _liMgYOjx = ?").bind(_quLUqfWI);
        const { _NzqybVhr } = await _NJGCgaOF.all();
        const _OlXkvqtl = _NzqybVhr._fOIlNPKa > 0 ? _NzqybVhr[0]._qYdVEgAp : null;
        const _qCTapzxE = _OlXkvqtl ? JSON.parse(_OlXkvqtl) : null;
        return _hqUuzqAI(_qCTapzxE || { _NzqybVhr: [], generatedBy: null });
    } catch (_vTnOJGWl) {
        console.error("从D1读取缓存IP失败:", _vTnOJGWl);
        return _hqUuzqAI({ _NzqybVhr: [], generatedBy: null });
    }
}

async function _TNIzwGun(_pPRKjNxr, _nSQmseYZ, _feivJufg) {
    const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
    if (!_rkwfWFxm.cloudStorage._ZDOLLRZZ) {
        return _hqUuzqAI({ success: true, _ilbVNPWJ: "云端存储已禁用,不保存结果。" });
    }
    const _DFcAYNJT = _pPRKjNxr._pbidZCeg.get('CF-Connecting-IP') || "未知IP";
    const _xWBJapql = _pPRKjNxr.cf?._xWBJapql || "未知";
    const _kvtlUYvc = _pPRKjNxr.cf?._kvtlUYvc || "";
    let _UJHfGzSa = _JQSJmZHn[_xWBJapql] || _xWBJapql;
    if (_kvtlUYvc && _kvtlUYvc !== "未知城市" && _kvtlUYvc !== _xWBJapql) _UJHfGzSa = `${_UJHfGzSa} ${_JQSJmZHn[_kvtlUYvc] || _kvtlUYvc}`;
    const _qRvZUCQO = {
        _poAVSnAK: _vmWHQLnH(_DFcAYNJT),
        _hpjxdxPu: _UJHfGzSa.trim(),
        time: _focUaKJO()
    };
    try {
        const _CIGUfDhC = await _pPRKjNxr.json();
        if (!Array.isArray(_CIGUfDhC)) return _hqUuzqAI({ error: "无效数据格式" }, 400);
        const _NopHmalk = _CIGUfDhC.map(_VEtEXgBx => ({
            _poAVSnAK: String(_VEtEXgBx._poAVSnAK || ''),
            _nJZkrPYM: _VEtEXgBx._nJZkrPYM ? parseInt(_VEtEXgBx._nJZkrPYM, 10) : undefined,
            _afxoiLbN: parseInt(_VEtEXgBx._afxoiLbN, 10),
            _hpjxdxPu: typeof _VEtEXgBx._hpjxdxPu === 'string' ? _VEtEXgBx._hpjxdxPu.substring(0, 50) : 'N/A',
            _gBPWRlQA: typeof _VEtEXgBx._gBPWRlQA === 'string' ? _VEtEXgBx._gBPWRlQA.substring(0, 100) : 'N/A'
        }));
        const _jgtffEHu = {
            generatedBy: _qRvZUCQO,
            _NzqybVhr: _NopHmalk
        };
        const _wtMXUbFY = _nSQmseYZ.DB.prepare(
          "INSERT INTO kv_data (_liMgYOjx, _qYdVEgAp) VALUES (?, ?) ON CONFLICT(_liMgYOjx) DO UPDATE SET _qYdVEgAp = excluded._qYdVEgAp"
        ).bind(_quLUqfWI, JSON.stringify(_jgtffEHu)).run();
        if (_rkwfWFxm.telegram.bot_token && _rkwfWFxm.telegram.chat_id) {
            const _ndAeycSp = _NopHmalk.map(r => `${r._poAVSnAK} ~ ${r._hpjxdxPu}`).join('\n');
            const _XoOogAXT = `优选完成!\n来源: ${_qRvZUCQO._poAVSnAK} (${_qRvZUCQO._hpjxdxPu})\n时间: ${_qRvZUCQO.time}\n\n结果:\n${_ndAeycSp}`;
            const _vBMqTqWp = `https://api.telegram.org/bot${_rkwfWFxm.telegram.bot_token}/sendMessage?chat_id=${_rkwfWFxm.telegram.chat_id}&_sOwVmliX=${encodeURIComponent(_XoOogAXT)}`;
            const _LgkrtzEa = fetch(_vBMqTqWp).catch(_vTnOJGWl => console.error("Telegram结果通知失败:", _vTnOJGWl));
            _feivJufg.waitUntil(Promise.all([_wtMXUbFY, _LgkrtzEa]));
        } else {
             _feivJufg.waitUntil(_wtMXUbFY);
        }
        return _hqUuzqAI({ success: true, _ilbVNPWJ: "结果已保存" });
    } catch (_vTnOJGWl) {
        return _hqUuzqAI({ error: "D1写入失败", _ilbVNPWJ: _vTnOJGWl._ilbVNPWJ }, 500);
    }
}

async function _kcfMvTbu(_pPRKjNxr, _nSQmseYZ, _feivJufg) {
    try {
        const _nUVdmujr = await _pPRKjNxr.json();
        if (!Array.isArray(_nUVdmujr)) return _hqUuzqAI({ error: "无效数据格式" }, 400);
        const _jgtffEHu = {
            _NzqybVhr: _nUVdmujr
        };
        const _NJGCgaOF = _nSQmseYZ.DB.prepare(
          "INSERT INTO kv_data (_liMgYOjx, _qYdVEgAp) VALUES (?, ?) ON CONFLICT(_liMgYOjx) DO UPDATE SET _qYdVEgAp = excluded._qYdVEgAp"
        );
        const _SdWryYWD = _NJGCgaOF.bind(_bmlhyrRN, JSON.stringify(_jgtffEHu)).run();
        _feivJufg.waitUntil(_SdWryYWD);
        return _hqUuzqAI({ success: true });
    } catch (_vTnOJGWl) {
        return _hqUuzqAI({ error: "D1写入临时缓存失败", _ilbVNPWJ: _vTnOJGWl._ilbVNPWJ }, 500);
    }
}

function _izNjbCCT(_fOIlNPKa, _cUklIUbo) {
    let _cFDBCnpB = '';
    const _ZCKsrOOl = _cUklIUbo._fOIlNPKa;
    for (let _WttTsMvn = 0; _WttTsMvn < _fOIlNPKa; _WttTsMvn++) {
        _cFDBCnpB += _cUklIUbo.charAt(Math.floor(Math.random() * _ZCKsrOOl));
    }
    return _cFDBCnpB;
}

async function _TFydssUS(_pPRKjNxr, _nSQmseYZ) {
    try {
        const _CIGUfDhC = await _pPRKjNxr.json();
        if (!Array.isArray(_CIGUfDhC) || _CIGUfDhC._fOIlNPKa === 0) {
            return _hqUuzqAI({ error: "无效或空的IP列表" }, 400);
        }

        const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
        const _tyADouhL = _rkwfWFxm.subscriptionId || { _fOIlNPKa: 8, _cUklIUbo: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _oBeeWIXl;
        let _wWmNppwA = false;
        let _YuJbuOUA = 0;
        const _LNVDDFYg = 10;

        while (!_wWmNppwA && _YuJbuOUA < _LNVDDFYg) {
            _oBeeWIXl = _izNjbCCT(_tyADouhL._fOIlNPKa, _tyADouhL._cUklIUbo);
            const { _NzqybVhr } = await _nSQmseYZ.DB.prepare("SELECT _tXrbSgzT FROM optimized_results WHERE _tXrbSgzT = ?").bind(_oBeeWIXl).all();
            if (_NzqybVhr._fOIlNPKa === 0) {
                _wWmNppwA = true;
            }
            _YuJbuOUA++;
        }

        if (!_wWmNppwA) {
            return _hqUuzqAI({ error: "无法生成唯一的订阅ID,请稍后重试或调整ID设置。" }, 500);
        }

        const _pGbHpydZ = JSON.stringify({ _HXiPXlgC: _CIGUfDhC });
        await _nSQmseYZ.DB.prepare(
            "INSERT INTO optimized_results (_tXrbSgzT, _StOIzJMY) VALUES (?, ?)"
        ).bind(_oBeeWIXl, _pGbHpydZ).run();
        await _nSQmseYZ.DB.prepare(
            "INSERT INTO kv_data (_liMgYOjx, _qYdVEgAp) VALUES (?, ?) ON CONFLICT(_liMgYOjx) DO UPDATE SET _qYdVEgAp = excluded._qYdVEgAp"
        ).bind(_nysQGodR, _oBeeWIXl).run();
            
        return _hqUuzqAI({ success: true, _tXrbSgzT: _oBeeWIXl });
    } catch (_vTnOJGWl) {
        return _hqUuzqAI({ error: "保存优选结果失败", _ilbVNPWJ: _vTnOJGWl._ilbVNPWJ }, 500);
    }
}

async function _WYLKNQEo(_pPRKjNxr, _nSQmseYZ) {
    try {
        const _oBeeWIXl = _pPRKjNxr._QpcWlPac._tXrbSgzT;
        if (!_oBeeWIXl) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _cFDBCnpB = await _nSQmseYZ.DB.prepare("SELECT _StOIzJMY FROM optimized_results WHERE _tXrbSgzT = ?").bind(_oBeeWIXl).first();
        if (!_cFDBCnpB) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _StOIzJMY = JSON.parse(_cFDBCnpB._StOIzJMY);
        let _ndAeycSp = _StOIzJMY._HXiPXlgC;

        const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);

        if (_rkwfWFxm.customNodes && _rkwfWFxm.customNodes._ZDOLLRZZ && _rkwfWFxm.customNodes.list) {
            const _VnxmfmeV = _rkwfWFxm.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _VRuFurJB = _VnxmfmeV.map(_NOGBNKmE => {
                let _CFeneMIG = _NOGBNKmE;
                let _nJZkrPYM = undefined;
                let _ZliHvEEq = null;

                if (_CFeneMIG.includes('@')) {
                    const _FsejDZJy = _CFeneMIG.split('@');
                    _ZliHvEEq = _FsejDZJy.pop();
                    _CFeneMIG = _FsejDZJy.join('@');
                }

                if (_CFeneMIG.includes('#')) {
                    const _FsejDZJy = _CFeneMIG.split('#');
                    const _UxIVmBoi = _FsejDZJy.pop();
                    if (!isNaN(_UxIVmBoi) && _UxIVmBoi.trim() !== '') {
                        _nJZkrPYM = parseInt(_UxIVmBoi, 10);
                    }
                    _CFeneMIG = _FsejDZJy.join('#');
                }
                
                return {
                    _poAVSnAK: _CFeneMIG,
                    _nJZkrPYM: _nJZkrPYM,
                    _hpjxdxPu: _ZliHvEEq || _CFeneMIG,
                    _gBPWRlQA: '自定义'
                };
            });
            _ndAeycSp.unshift(..._VRuFurJB);
        }
        
        const { itemLink } = _rkwfWFxm;
        const _zGbxSBpG = new URL(_pPRKjNxr._RxoGPLAw)._fJMnfumW;
        let _pWgNdpjA;

        if (_rkwfWFxm.websocketStreamer && _rkwfWFxm.websocketStreamer._ZDOLLRZZ) {
            if (!itemLink || !itemLink._ZDOLLRZZ || !itemLink._MKWuFHzh || itemLink._MKWuFHzh._fOIlNPKa === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _pWgNdpjA = _ndAeycSp.map((_VEtEXgBx, _USzKPGvD) => {
                let _ZliHvEEq;
                if (_VEtEXgBx._gBPWRlQA === '自定义') {
                     _ZliHvEEq = `${_USzKPGvD + 1} - ${_VEtEXgBx._hpjxdxPu}`;
                } else {
                    _ZliHvEEq = `${_USzKPGvD + 1} - ${_VEtEXgBx._hpjxdxPu || '未知'}`;
                    if (!_VEtEXgBx._gBPWRlQA || !_VEtEXgBx._gBPWRlQA.toLowerCase().includes('cloudflare')) {
                        _ZliHvEEq += '(反代)';
                    }
                }
                const _JkVIlWOf = _RALxcoXj.isIPv6(_VEtEXgBx._poAVSnAK) ? `[${_VEtEXgBx._poAVSnAK}]` : _VEtEXgBx._poAVSnAK;
                const _nJZkrPYM = _VEtEXgBx._nJZkrPYM || 443;
                const _CWGyEsbC = itemLink._MKWuFHzh[0];
                const _xgKalzMl = _CWGyEsbC._LkLDuScG || '';
                const _LkLDuScG = (_xgKalzMl && _sUpaBSeY(_xgKalzMl)) ? _xgKalzMl : crypto.randomUUID();
                const _vuuvPYsv = '/snippets?_poAVSnAK=endpointAddress:_nJZkrPYM(443)&nat64=6to4';
                const _rguAXScB = _CWGyEsbC._rguAXScB || _zGbxSBpG;

                const _QpcWlPac = new URLSearchParams({
                    security: 'tls',
                    _YkXXsZDo: 'ws',
                    _rguAXScB: _rguAXScB,
                    sni: _rguAXScB,
                    fp: 'random'
                });
                return `vless://${_LkLDuScG}@${_JkVIlWOf}:${_nJZkrPYM}?${_QpcWlPac.toString()}&_vuuvPYsv=${encodeURIComponent(encodeURIComponent(_vuuvPYsv))}#${encodeURIComponent(_ZliHvEEq)}`;
            });

        } else {
            if (!itemLink || !itemLink._ZDOLLRZZ || !itemLink._MKWuFHzh || itemLink._MKWuFHzh._fOIlNPKa === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _CWGyEsbC = itemLink._MKWuFHzh[0];
            const { _rguAXScB, _LkLDuScG, _vuuvPYsv } = _CWGyEsbC;
            _pWgNdpjA = _ndAeycSp.map((_VEtEXgBx, _USzKPGvD) => {
                let _ZliHvEEq;
                if (_VEtEXgBx._gBPWRlQA === '自定义') {
                     _ZliHvEEq = `${_USzKPGvD + 1} - ${_VEtEXgBx._hpjxdxPu}`;
                } else {
                    _ZliHvEEq = `${_USzKPGvD + 1} - ${_VEtEXgBx._hpjxdxPu || '未知'}`;
                    if (!_VEtEXgBx._gBPWRlQA || !_VEtEXgBx._gBPWRlQA.toLowerCase().includes('cloudflare')) {
                        _ZliHvEEq += '(反代)';
                    }
                }
                const _JkVIlWOf = _RALxcoXj.isIPv6(_VEtEXgBx._poAVSnAK) ? `[${_VEtEXgBx._poAVSnAK}]` : _VEtEXgBx._poAVSnAK;
                const _nJZkrPYM = _VEtEXgBx._nJZkrPYM || 443;
                const _QpcWlPac = new URLSearchParams({
                    security: 'tls',
                    _YkXXsZDo: 'ws',
                    _rguAXScB: _rguAXScB || _zGbxSBpG,
                    sni: _rguAXScB || _zGbxSBpG,
                    fp: 'random'
                });
                return `vless://${_LkLDuScG}@${_JkVIlWOf}:${_nJZkrPYM}?${_QpcWlPac.toString()}&_vuuvPYsv=${encodeURIComponent(encodeURIComponent(_vuuvPYsv || ''))}#${encodeURIComponent(_ZliHvEEq)}`;
            });
        }
        
        const _HfFlKKgN = _pWgNdpjA.join('\n');
        const _NzGLYKUL = btoa(_HfFlKKgN);
        return new Response(_NzGLYKUL, {
            _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' }
        });

    } catch (_vTnOJGWl) {
        return new Response(`生成节点列表失败: ${_vTnOJGWl._ilbVNPWJ}`, { status: 500 });
    }
}

async function _VIvQlgnL(_pPRKjNxr) {
    try {
        const { _HwCdXIBH, _YkXXsZDo } = await _pPRKjNxr.json();
        if (!Array.isArray(_HwCdXIBH)) {
            return new Response('Invalid _HwCdXIBH list', { status: 400 });
        }
        const _wNEqCyGf = _HwCdXIBH.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _RxoGPLAw = `https://cloudflare-dns.com/dns-query?_ZliHvEEq=${encodeURIComponent(domain.trim())}&_YkXXsZDo=${_YkXXsZDo || 'A'}`;
            return fetch(_RxoGPLAw, { _pbidZCeg: { 'Accept': 'application/dns-json' } })
                .then(_AjJnZtxk => _AjJnZtxk.json())
                .then(_StOIzJMY => (_StOIzJMY.Answer ? _StOIzJMY.Answer.map(a => a._StOIzJMY) : []))
                .catch(() => []);
        });
        const _DaLxDyGP = (await Promise.all(_wNEqCyGf)).flat();
        const _UlzlDsWj = [...new Set(_DaLxDyGP)];
        if (_UlzlDsWj._fOIlNPKa === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_UlzlDsWj.join('\n'), { _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._ilbVNPWJ}`, { status: 500 });
    }
}

async function _pQnFgZeI(_pPRKjNxr, _nSQmseYZ) {
  try {
      const { _irTFgash } = await _pPRKjNxr.json();
      if (!Array.isArray(_irTFgash)) {
          return _hqUuzqAI({ error: "Invalid input, expected an object with a '_irTFgash' array." }, 400);
      }
      
      const _mnkpuWGB = new Set();
      
      const _pXZBeQvh = _irTFgash.map(_RxoGPLAw =>
          _YeMKlVto(_RxoGPLAw)
              .then(_sOwVmliX => {
                  if (!_sOwVmliX) return;
                  const _lmHBtGLk = _sOwVmliX.split(/[\s,;|]+/);
                  for (const _bkmhQhYi of _lmHBtGLk) {
                      const _elJwhvLY = _bkmhQhYi.trim();
                      if (_elJwhvLY) {
                          _mnkpuWGB.add(_elJwhvLY);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_RxoGPLAw}:`, err);
              })
      );
      await Promise.all(_pXZBeQvh);
      return _hqUuzqAI({ _HXiPXlgC: Array.from(_mnkpuWGB) });
  } catch (_vTnOJGWl) {
      return _hqUuzqAI({ error: `Failed to process URLs: ${_vTnOJGWl._ilbVNPWJ}` }, 500);
  }
}

async function _GFlONHre(_pPRKjNxr, _nSQmseYZ) {
    const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
    if (!_rkwfWFxm.api._ZDOLLRZZ) {
        return new Response(_rkwfWFxm.api._ilbVNPWJ || 'API is disabled.', { status: 503 });
    }
    try {
        const _NJGCgaOF = _nSQmseYZ.DB.prepare("SELECT _qYdVEgAp FROM kv_data WHERE _liMgYOjx = ?").bind(_quLUqfWI);
        const { _NzqybVhr: dbResults } = await _NJGCgaOF.all();
        const _OlXkvqtl = dbResults._fOIlNPKa > 0 ? dbResults[0]._qYdVEgAp : null;
        const _qCTapzxE = _OlXkvqtl ? JSON.parse(_OlXkvqtl) : null;
        if (!_qCTapzxE || !_qCTapzxE._NzqybVhr || _qCTapzxE._NzqybVhr._fOIlNPKa === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' },
            });
        }
        const _HXiPXlgC = _qCTapzxE._NzqybVhr.map(r => r._poAVSnAK);
        return new Response(_HXiPXlgC.join('\n'), {
            _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' },
        });
    } catch (_vTnOJGWl) {
        console.error("API /_poAVSnAK 处理错误:", _vTnOJGWl);
        return new Response(`API处理时出错: ${_vTnOJGWl._ilbVNPWJ}`, { status: 500 });
    }
}

function _ynzcngBg(_cFDBCnpB, _USzKPGvD, _rkwfWFxm, _zGbxSBpG) {
    const { itemLink } = _rkwfWFxm;
    if (!itemLink || !itemLink._ZDOLLRZZ) return null;
    const { template, _MKWuFHzh, selectionMode, _UMwcMSVc } = itemLink;
    if (!_MKWuFHzh || _MKWuFHzh._fOIlNPKa === 0) return null;

    let _NarBZxYp;
    if (selectionMode === 'random') {
        _NarBZxYp = _MKWuFHzh[_USzKPGvD % _MKWuFHzh._fOIlNPKa];
    } else if (selectionMode === 'first') {
        _NarBZxYp = _MKWuFHzh[0];
    } else {
        _NarBZxYp = _MKWuFHzh.find(s => s._ZliHvEEq === selectionMode) || _MKWuFHzh[0];
    }
    if (!_NarBZxYp) return null;

    let _eqQEyNvg = template;
    const _HmGuGpfG = _cFDBCnpB._nJZkrPYM || 443;
    const _AmNfMyfF = _RALxcoXj.isIPv6(_cFDBCnpB._poAVSnAK) ? `[${_cFDBCnpB._poAVSnAK}]` : _cFDBCnpB._poAVSnAK;
    let _ZliHvEEq = `${_USzKPGvD + 1} 、 ${_cFDBCnpB._hpjxdxPu || '未知'}`;
    if (!_cFDBCnpB._gBPWRlQA || !_cFDBCnpB._gBPWRlQA.toLowerCase().includes('cloudflare')) {
        _ZliHvEEq += '(反代)';
    }
    let _rguAXScB = _NarBZxYp._rguAXScB || _zGbxSBpG;

    _eqQEyNvg = _eqQEyNvg.replace(/{_poAVSnAK}/g, _AmNfMyfF)
               .replace(/{_nJZkrPYM}/g, _HmGuGpfG)
               .replace(/{_ZliHvEEq}/g, encodeURIComponent(_ZliHvEEq))
               .replace(/{rank}/g, _USzKPGvD + 1)
               .replace(/{_hpjxdxPu}/g, encodeURIComponent(_cFDBCnpB._hpjxdxPu || '未知'))
               .replace(/{_gBPWRlQA}/g, encodeURIComponent(_cFDBCnpB._gBPWRlQA || '未知'))
               .replace(/{_rguAXScB}/g, encodeURIComponent(_rguAXScB))
               .replace(/{_LkLDuScG}/g, encodeURIComponent(_NarBZxYp['_LkLDuScG'] || ''))
               .replace(/{_vuuvPYsv}/g, encodeURIComponent(encodeURIComponent(_NarBZxYp._vuuvPYsv || '')));

    if (_UMwcMSVc) {
        _UMwcMSVc.forEach(field => {
            const _HUINxsHw = new RegExp('{' + field._ZliHvEEq + '}', 'g');
            _eqQEyNvg = _eqQEyNvg.replace(_HUINxsHw, encodeURIComponent(field._qYdVEgAp));
        });
    }
    return _eqQEyNvg;
}

async function _tSSpZPfR(_pPRKjNxr, _nSQmseYZ) {
    const _rkwfWFxm = await _WRkjvQPK(_nSQmseYZ);
    if (!_rkwfWFxm.itemLink._ZDOLLRZZ) {
        return new Response("Item _eqQEyNvg feature is disabled.", { status: 503, _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' } });
    }

    try {
        const _NJGCgaOF = _nSQmseYZ.DB.prepare("SELECT _qYdVEgAp FROM kv_data WHERE _liMgYOjx = ?").bind(_quLUqfWI);
        const { _NzqybVhr: dbResults } = await _NJGCgaOF.all();
        const _OlXkvqtl = dbResults._fOIlNPKa > 0 ? dbResults[0]._qYdVEgAp : null;
        const _qCTapzxE = _OlXkvqtl ? JSON.parse(_OlXkvqtl) : null;
        
        if (!_qCTapzxE || !_qCTapzxE._NzqybVhr || _qCTapzxE._NzqybVhr._fOIlNPKa === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' },
            });
        }
        
        const _zGbxSBpG = new URL(_pPRKjNxr._RxoGPLAw)._fJMnfumW;

        const _ooQnRkIW = _qCTapzxE._NzqybVhr.map((_cFDBCnpB, _USzKPGvD) => {
            return _ynzcngBg(_cFDBCnpB, _USzKPGvD, _rkwfWFxm, _zGbxSBpG);
        }).filter(Boolean);

        if (_ooQnRkIW._fOIlNPKa === 0) {
            return new Response("Could not generate any _VEtEXgBx links from the available IPs.", {
                status: 500,
                _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' },
            });
        }

        return new Response(_ooQnRkIW.join('\n'), {
            _pbidZCeg: { 'Content-Type': '_sOwVmliX/plain; _cUklIUbo=utf-8' },
        });

    } catch (_vTnOJGWl) {
        console.error("API /api/endpoints error:", _vTnOJGWl);
        return new Response(`Error processing API _pPRKjNxr: ${_vTnOJGWl._ilbVNPWJ}`, { status: 500 });
    }
}

async function _UJpJjBcG(_pPRKjNxr, _nSQmseYZ, _feivJufg) {
    const _DFcAYNJT = _pPRKjNxr._pbidZCeg.get('CF-Connecting-IP') || "未知IP";
    const [
        _kLNGcFcj,
        _OoKwhSti,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _dAokgOzw(_KwwoSIvN, _zCYyOPKY, []),
        _dAokgOzw(_omAVxQlY, _zCYyOPKY, []),
        _dAokgOzw(_clSZCYjI, _HbptszBB, []),
        _dAokgOzw(_wrEVWNGV, _GWsZmIsg, { "N/A": "未知" })
    ]);
    _JQSJmZHn = fetchedCountryMap;
    let _dzKjukpi = false;
    let _eveaXWsK;
    try {
        const _knaGgUOU = await _UBFxVwiS(_nSQmseYZ);
        _dzKjukpi = !!_knaGgUOU;
        _eveaXWsK = await _WRkjvQPK(_nSQmseYZ);
    } catch (_vTnOJGWl) {
        if (_vTnOJGWl._ilbVNPWJ && _vTnOJGWl._ilbVNPWJ.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _SwhepTDF = "CREATE TABLE IF NOT EXISTS kv_data (_liMgYOjx TEXT PRIMARY KEY, _qYdVEgAp TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_tXrbSgzT TEXT PRIMARY KEY, _StOIzJMY TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _nSQmseYZ.DB.exec(_SwhepTDF);
                console.log("数据表创建成功。");
                _dzKjukpi = false;
                _eveaXWsK = _EkSjYjYq();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._ilbVNPWJ}`, {
                    status: 500,
                    _pbidZCeg: { 'Content-Type': '_sOwVmliX/html;_cUklIUbo=UTF-8' }
                });
            }
        } else {
             let _mVpFyiNF = _laaknjVj(_vTnOJGWl._ilbVNPWJ);
             return new Response(_mVpFyiNF, { _pbidZCeg: { 'Content-Type': '_sOwVmliX/html;_cUklIUbo=UTF-8' } });
        }
    }
    if (_eveaXWsK.telegram.bot_token && _eveaXWsK.telegram.chat_id) {
        const _xWBJapql = _pPRKjNxr.cf?._xWBJapql || "未知";
        const _kvtlUYvc = _pPRKjNxr.cf?._kvtlUYvc || "";
        let _UJHfGzSa = _JQSJmZHn[_xWBJapql] || _xWBJapql;
        if (_kvtlUYvc && _kvtlUYvc !== "未知城市" && _kvtlUYvc !== _xWBJapql) _UJHfGzSa = `${_UJHfGzSa} ${_JQSJmZHn[_kvtlUYvc] || _kvtlUYvc}`;
        const _wBoCdVyK = _focUaKJO();
        const _XZImZstE = _pPRKjNxr._RxoGPLAw;
        const _XoOogAXT = `访客: ${_DFcAYNJT}\n位置: ${_UJHfGzSa.trim()}\n时间: ${_wBoCdVyK}\n来自:${_XZImZstE}`;
        const _vBMqTqWp = `https://api.telegram.org/bot${_eveaXWsK.telegram.bot_token}/sendMessage?chat_id=${_eveaXWsK.telegram.chat_id}&_sOwVmliX=${encodeURIComponent(_XoOogAXT)}`;
        _feivJufg.waitUntil(fetch(_vBMqTqWp).catch(_vTnOJGWl => console.error("Telegram通知失败:", _vTnOJGWl)));
    }
    let _IxdyJhoC = _KpSjPbws();
    const _wRGiGpnv = {
        _rkwfWFxm: _eveaXWsK,
        status: {
            _dzKjukpi: _dzKjukpi,
        }
    };
    _IxdyJhoC = _IxdyJhoC.replace('__PAGE_DATA_JSON__', JSON.stringify(_wRGiGpnv));
    _IxdyJhoC = _IxdyJhoC.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_kLNGcFcj));
    _IxdyJhoC = _IxdyJhoC.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_OoKwhSti));
    _IxdyJhoC = _IxdyJhoC.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _IxdyJhoC = _IxdyJhoC.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_JQSJmZHn));
    return new Response(_IxdyJhoC, {
        _pbidZCeg: { 'Content-Type': '_sOwVmliX/html;_cUklIUbo=UTF-8' },
    });
}

function _hqUuzqAI(_jhBOaFbC, status = 200, _pbidZCeg = {}) {
    return new Response(JSON.stringify(_jhBOaFbC), {
        status,
        _pbidZCeg: { 'Content-Type': 'application/json;_cUklIUbo=UTF-8', ..._pbidZCeg }
    });
}

function _focUaKJO(date = new Date()) {
    return new Intl.DateTimeFormat('zh-CN', {
        timeZone: 'Asia/Shanghai',
        year: 'numeric', month: '2-digit', day: '2-digit',
        hour: '2-digit', minute: '2-digit', second: '2-digit',
        hour12: false
    }).format(date);
}

function _vmWHQLnH(_poAVSnAK) {
    if (!_poAVSnAK || typeof _poAVSnAK !== 'string') return "无效IP";
    if(_RALxcoXj.isIPv4(_poAVSnAK)){
        const _FsejDZJy = _poAVSnAK.split('.');
        if (_FsejDZJy._fOIlNPKa === 4) return `${_FsejDZJy[0]}.*.*.${_FsejDZJy[3]}`;
    }
    if(_RALxcoXj.isIPv6(_poAVSnAK)){
        const _FsejDZJy = _poAVSnAK.split(':');
        if (_FsejDZJy._fOIlNPKa > 2) return `${_FsejDZJy[0]}:...:${_FsejDZJy[_FsejDZJy._fOIlNPKa - 1]}`;
    }
    return _poAVSnAK;
}

function _laaknjVj(_hXOWXCUs) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _cUklIUbo="UTF-8"><title>需要设置</title>
    <_AehqtvKu>
        _jhBOaFbC { font-family: sans-serif; background: #1a1a1a; _tZJxSUuU: #e0e0e0; display: flex; justify-_rRyaxNRG: center; align-items: center; height: 100vh; margin: 0; }
        ._EQJkxFcL { max-_WgIjjStz: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _tZJxSUuU: #00a0ff; border-bottom: 1px solid #40444c; padding-bottom: 0.5rem; }
        p { line-height: 1.6; }
        code { background: #1a1a1a; padding: 0.2em 0.4em; border-radius: 4px; font-family: monospace; white-space: pre-wrap; word-break: break-all; }
        .error { _tZJxSUuU: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_DvemNPkT: 1rem; }
    </_AehqtvKu>
    </head><_jhBOaFbC>
    <div class="_EQJkxFcL">
        <h1>部署指南</h1>
        <p>系统检测到 D1 数据库绑定存在问题。请确保您已完成以下步骤:</p>
        <ol>
            <li>进入 Cloudflare Dashbord -> Workers & Pages -> D1。</li>
            <li>创建一个新的D1数据库 (如果还没有)。</li>
            <li>将此数据库绑定到您的Worker:
                <ul>
                    <li>进入Worker设置 -> 变量 -> D1数据库绑定。</li>
                    <li>变量名必须填写 <code>DB</code>。</li>
                    <li>选择您刚创建的数据库。</li>
                    <li>点击“保存并部署”。</li>
                </ul>
            </li>
        </ol>
        <p>完成以上步骤后,请刷新本页面。系统会自动为您创建所需的数据表。</p>
        ${_hXOWXCUs ? `<div class="error"><strong>当前错误信息:</strong> ${_hXOWXCUs.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_jhBOaFbC></html>`;
}

function _KpSjPbws() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _cUklIUbo="UTF-8"> <meta _ZliHvEEq="viewport" _rRyaxNRG="_WgIjjStz=device-_WgIjjStz, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_eqQEyNvg href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap" rel="stylesheet"><script src="https://cdn.jsdelivr.net/npm/qrcode-generator/qrcode.js"></script>
  <_AehqtvKu>
  :root { --primary-_tZJxSUuU: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_tZJxSUuU: #8c939d; --light-bg: #1A1C20; --_rRyaxNRG-bg: #25282E; --border-_tZJxSUuU: #40444C; --_sOwVmliX-_tZJxSUuU: #E0E0E0; --_sOwVmliX-light: #B0B0B0; --success-_tZJxSUuU: #30A46C; --danger-_tZJxSUuU: #DA3633; --warning-_tZJxSUuU: #DBAB0A; --border-radius-md: 8px; --border-radius-sm: 6px; --font-family-sans: 'Inter', 'Noto Sans SC', sans-serif; --font-family-mono: 'Roboto Mono', monospace; }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html { font-size: 16px; }
  _jhBOaFbC { font-family: var(--font-family-sans); background-_tZJxSUuU: var(--light-bg); _tZJxSUuU: var(--_sOwVmliX-_tZJxSUuU); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_tZJxSUuU 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_ALKFQlGl { position: fixed; _DvemNPkT: 0; _WFmsrArI: 0; _WgIjjStz: 100%; height: 100%; z-_USzKPGvD: -1; display: none; }
  ._drCvOgms-_EQJkxFcL { max-_WgIjjStz: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_USzKPGvD: 1; }
  #_lwLgzKhU { position: fixed; _DvemNPkT: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_USzKPGvD: 10; }
  #marquee-_EQJkxFcL { overflow: hidden; white-space: nowrap; background-_tZJxSUuU: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _tZJxSUuU: var(--primary-_tZJxSUuU); padding: 0.5rem 0; margin-_DvemNPkT: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_sOwVmliX { display: inline-block; padding-_WFmsrArI: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _kLGOFDvE { _sOwVmliX-align: center; margin-_DvemNPkT: 1rem; margin-bottom: 2rem; }
  _kLGOFDvE h1 { white-space: pre-wrap; font-size: 2.25em; _tZJxSUuU: var(--primary-_tZJxSUuU); font-weight: 700; _sOwVmliX-shadow: 0 0 10px rgba(var(--primary-_tZJxSUuU-rgb), 0.3); }
  .card { background-_tZJxSUuU: rgba(37, 40, 46, 0.85); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); border-radius: var(--border-radius-md); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); padding: 1.5rem; margin-bottom: 1.5rem; border: 1px solid var(--border-_tZJxSUuU); }
  .progress-section #_dHzqCBpB { _WgIjjStz: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_tZJxSUuU: var(--border-_tZJxSUuU); overflow: hidden; }
  .progress-section #_dHzqCBpB::-webkit-progress-_qYdVEgAp { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _sOwVmliX-align: center; margin-_DvemNPkT: 0.75em; font-size: 0.95em; _tZJxSUuU: var(--_sOwVmliX-light); min-height: 1.5em; }
  .section-_kLGOFDvE { display: flex; flex-wrap: wrap; justify-_rRyaxNRG: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_tZJxSUuU); gap: 1rem; }
  .section-_kLGOFDvE h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _tZJxSUuU: var(--secondary-_tZJxSUuU); _sOwVmliX-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _WgIjjStz: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _WgIjjStz: 100%; border-collapse: collapse; margin-_DvemNPkT: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_tZJxSUuU); padding: 0.8em; _sOwVmliX-align: _WFmsrArI; vertical-align: middle; white-space: nowrap; }
  th { background-_tZJxSUuU: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_tZJxSUuU: #30333a; }
  td._poAVSnAK-_CFeneMIG { font-weight: 500; font-family: var(--font-family-mono); _tZJxSUuU: var(--primary-_tZJxSUuU); }
  td.ping-_qYdVEgAp { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _sOwVmliX-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_rRyaxNRG: center; font-weight: 500; _sOwVmliX-align: center; cursor: pointer; user-_fNQnUeCS: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _tZJxSUuU: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_WFmsrArI: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _tZJxSUuU: var(--primary-_tZJxSUuU); border: 1px solid var(--primary-_tZJxSUuU); }
  .btn-outline:hover { background-_tZJxSUuU: var(--primary-_tZJxSUuU); _tZJxSUuU: var(--_rRyaxNRG-bg); }
  ._drCvOgms-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._drCvOgms-download-buttons .btn { _WgIjjStz: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _DvemNPkT: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _tZJxSUuU: #fff; font-size: 0.95em; z-_USzKPGvD: 10002; box-shadow: 0 6px 15px rgba(0, 0, 0, 0.35); opacity: 0; transform: translateY(-20px); transition: all 0.3s ease; pointer-events: none; }
  .tooltip-notification.show { opacity: 1; transform: translateY(0); }
  #_qEQimrNX, #_KBAGYQCm, #_xPxoYmzE, #_WqOhNYLO, #_bPmNzSMx { display: none; position: fixed; z-_USzKPGvD: 10000; _WFmsrArI: 0; _DvemNPkT: 0; _WgIjjStz: 100%; height: 100%; background-_tZJxSUuU: rgba(0,0,0,0.6); justify-_rRyaxNRG: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_rRyaxNRG, ._drCvOgms-modal-_rRyaxNRG { background-_tZJxSUuU: var(--_rRyaxNRG-bg); padding: 2rem; border: 1px solid var(--border-_tZJxSUuU); border-radius: var(--border-radius-md); _WgIjjStz: 95%; max-_WgIjjStz: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_WqOhNYLO .modal-_rRyaxNRG { max-_WgIjjStz: 500px; }
  .modal-_rRyaxNRG h3, ._drCvOgms-modal-_kLGOFDvE h3 { margin-_DvemNPkT: 0; margin-bottom: 1.5rem; _tZJxSUuU: var(--primary-_tZJxSUuU); _sOwVmliX-align: center; }
  .modal-buttons { display: flex; justify-_rRyaxNRG: flex-end; gap: 1rem; margin-_DvemNPkT: 2rem; border-_DvemNPkT: 1px solid var(--border-_tZJxSUuU); padding-_DvemNPkT: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_tZJxSUuU), rgba(0,0,0,0)); margin: 2rem 0; }
  ._drCvOgms-modal-_kLGOFDvE { display: flex; justify-_rRyaxNRG: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_tZJxSUuU); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _tZJxSUuU: var(--_sOwVmliX-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._drCvOgms-list-_VEtEXgBx { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_tZJxSUuU); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._drCvOgms-_ZliHvEEq { font-size: 1.1em; font-weight: 600; }
  ._drCvOgms-links a { display: block; _tZJxSUuU: var(--primary-_tZJxSUuU); _sOwVmliX-decoration: none; margin-_DvemNPkT: 0.5rem; word-break: break-all; }
  ._drCvOgms-links a:hover { _sOwVmliX-decoration: underline; }
  ._drCvOgms-links span { _tZJxSUuU: var(--_sOwVmliX-light); }
  #visitorPasswordPrompt { _sOwVmliX-align: center; }
  #visitorPasswordPrompt h3 { _tZJxSUuU: var(--primary-_tZJxSUuU); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _tZJxSUuU: var(--_sOwVmliX-light); margin-bottom: 1.5rem; }
  ._knaGgUOU-input-group { display: flex; gap: 10px; max-_WgIjjStz: 400px; margin: 0 auto; }
  ._knaGgUOU-input-group input { flex-grow: 1; _sOwVmliX-align: center; }
  ._knaGgUOU-input-group .btn { margin-_WFmsrArI: 0; }
  ._NzqybVhr-actions-_EQJkxFcL { _sOwVmliX-align: center; margin-bottom: 1.5rem; }
  ._NzqybVhr-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._NzqybVhr-api-buttons .btn { margin: 0; _WgIjjStz: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_rRyaxNRG 1fr; gap: 1.2rem 1rem; align-items: center; }
  .form-grid-label { justify-self: end; display: flex; align-items: center; gap: 8px; }
  .form-grid-control { display: flex; align-items: center; gap: 10px; }
  .form-grid-control-full { grid-column: 1 / -1; }
  .form-grid-control input, .form-grid-control _fNQnUeCS, .form-grid-control textarea { _WgIjjStz: 100%; background-_tZJxSUuU: var(--light-bg); border: 1px solid var(--border-_tZJxSUuU); border-radius: var(--border-radius-sm); _tZJxSUuU: var(--_sOwVmliX-_tZJxSUuU); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_tZJxSUuU 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _fNQnUeCS:focus, .form-grid-control textarea:focus { border-_tZJxSUuU: var(--primary-_tZJxSUuU); box-shadow: 0 0 0 2px rgba(var(--primary-_tZJxSUuU-rgb), 0.2); outline: none; }
  .form-grid-control input[_YkXXsZDo="_tZJxSUuU"] { min-_WgIjjStz: auto; padding: 2px; _WgIjjStz: 2.5em; height: 2.5em; }
  .form-grid-control input[_YkXXsZDo="checkbox"] { _WgIjjStz: auto; flex-shrink: 0; height: 1.2em; _WgIjjStz: 1.2em; }
  .form-grid-control ._cLbDbxlW-input { _WgIjjStz: 80px; _sOwVmliX-align: right; }
  .tooltip-_FQpjCqCJ { display: inline-flex; _WgIjjStz: 16px; height: 16px; align-items: center; justify-_rRyaxNRG: center; background-_tZJxSUuU: var(--secondary-_tZJxSUuU); _tZJxSUuU: var(--_rRyaxNRG-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_fNQnUeCS: none; }
  #tooltip-popup { position: fixed; background-_tZJxSUuU: #383c4a; _tZJxSUuU: #fff; padding: 10px 15px; border-radius: 6px; z-_USzKPGvD: 10001; font-size: 0.85em; max-_WgIjjStz: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_tZJxSUuU); pointer-events: none; }
  #custom-fields-_EQJkxFcL .form-grid-control { gap: 5px; } #custom-fields-_EQJkxFcL .form-grid-control input { flex: 1; }
  .parameter-_xfgJQVuL-_hsnwFMKE { border: 1px solid var(--border-_tZJxSUuU); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_xfgJQVuL-_kLGOFDvE { display: flex; justify-_rRyaxNRG: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_xfgJQVuL-_kLGOFDvE input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_DvemNPkT: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._sOwVmliX-_tZJxSUuU-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _WgIjjStz: 100%; }
  ._sOwVmliX-_tZJxSUuU-grid input[_YkXXsZDo="_tZJxSUuU"] { grid-column: 1 / 2; }
  ._sOwVmliX-_tZJxSUuU-grid input[_YkXXsZDo="_sOwVmliX"], ._sOwVmliX-_tZJxSUuU-grid textarea { grid-column: 2 / 3; }
  #_WqOhNYLO .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_WqOhNYLO .btn-group { display: flex; }
  #_WqOhNYLO .sub-btn { flex-grow: 1; margin: 0; }
  #_WqOhNYLO ._nTrODcVn-btn { flex-shrink: 0; margin-_WFmsrArI: -1px; border-_DvemNPkT-_WFmsrArI-radius: 0; border-bottom-_WFmsrArI-radius: 0; }
  #_bPmNzSMx .modal-_rRyaxNRG { max-_WgIjjStz: 300px; background: white; padding: 1rem; _sOwVmliX-align: center; }
  #qrCodeImg { max-_WgIjjStz: 100%; }
  @media (max-_WgIjjStz: 768px) {
    html { font-size: 15px; } ._drCvOgms-_EQJkxFcL { padding: 0 0.8rem; } _kLGOFDvE { margin-_DvemNPkT: 2.5rem; margin-bottom: 1.5rem; } #_lwLgzKhU { _DvemNPkT: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_AehqtvKu>
  <_AehqtvKu _tXrbSgzT="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_rRyaxNRG-bg: #FFFFFF; --border-_tZJxSUuU: #DCDFE6; --_sOwVmliX-_tZJxSUuU: #303133; --_sOwVmliX-light: #606266; }
  .theme-light .card { background-_tZJxSUuU: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_tZJxSUuU: #F5F7FA; }
  .theme-light tbody tr:hover { background-_tZJxSUuU: #ECF5FF; }
  .theme-matrix { --primary-_tZJxSUuU: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_rRyaxNRG-bg: #0D0208; --border-_tZJxSUuU: #00FF41; --_sOwVmliX-_tZJxSUuU: #00FF41; --_sOwVmliX-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_tZJxSUuU: rgba(0, 20, 0, 0.7); _sOwVmliX-shadow: 0 0 5px var(--primary-_tZJxSUuU); backdrop-filter: none; }
  .theme-matrix th { background-_tZJxSUuU: #000; }
  .theme-matrix tbody tr:hover { background-_tZJxSUuU: #010; }
  .theme-matrix .btn { _sOwVmliX-shadow: none; _tZJxSUuU: #000; }
  .theme-matrix .btn-outline { background-_tZJxSUuU: transparent; }
  .theme-modern-glass { --primary-_tZJxSUuU: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_rRyaxNRG-bg: rgba(30, 30, 40, 0.6); --border-_tZJxSUuU: rgba(255, 255, 255, 0.2); --_sOwVmliX-_tZJxSUuU: #F0F0F0; --_sOwVmliX-light: #A0A0B0; --border-radius-md: 12px; }
  _jhBOaFbC.theme-modern-glass { background: linear-gradient(-45deg, #000428, #004e92, #1CB5E0, #23D5AB); background-size: 400% 400%; animation: gradientBG 15s ease infinite; }
  @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
  .theme-particles-glass { --primary-_tZJxSUuU: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_rRyaxNRG-bg: rgba(30, 30, 40, 0.6); --border-_tZJxSUuU: rgba(255, 255, 255, 0.2); --_sOwVmliX-_tZJxSUuU: #F0F0F0; --_sOwVmliX-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_tZJxSUuU: var(--_rRyaxNRG-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_tZJxSUuU); }
  .glassy-components .btn { background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid rgba(255, 255, 255, 0.2); border-bottom-_tZJxSUuU: rgba(0,0,0,0.3); border-right-_tZJxSUuU: rgba(0,0,0,0.3); box-shadow: 0 4px 15px rgba(0,0,0,0.2), inset 0 1px 1px rgba(255,255,255,0.1); _sOwVmliX-shadow: 0 1px 2px rgba(0,0,0,0.2); _tZJxSUuU: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_tZJxSUuU: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _sOwVmliX-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_tZJxSUuU); border-_tZJxSUuU: var(--primary-_tZJxSUuU); _tZJxSUuU: #fff; }
  .glassy-components _kLGOFDvE h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _sOwVmliX; -webkit-_sOwVmliX-fill-_tZJxSUuU: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _tZJxSUuU: transparent; }
  .theme-aurora-glass { --primary-_tZJxSUuU: #38bdf8; --light-bg: #0c0a09; --_rRyaxNRG-bg: rgba(23, 23, 23, 0.5); --border-_tZJxSUuU: rgba(255, 255, 255, 0.15); --_sOwVmliX-_tZJxSUuU: #f2f2f2; --_sOwVmliX-light: #a3a3a3; }
  _jhBOaFbC.theme-aurora-glass::before { _rRyaxNRG: ''; position: fixed; _DvemNPkT: 0; _WFmsrArI: 0; _WgIjjStz: 100%; height: 100%; z-_USzKPGvD: -2; background: radial-gradient(at 27% 37%, hsla(215, 98%, 61%, 0.4) 0px, transparent 50%), radial-gradient(at 97% 21%, hsla(125, 98%, 72%, 0.2) 0px, transparent 50%), radial-gradient(at 52% 99%, hsla(355, 98%, 76%, 0.3) 0px, transparent 50%), radial-gradient(at 10% 29%, hsla(256, 96%, 68%, 0.3) 0px, transparent 50%), radial-gradient(at 97% 96%, hsla(38, 60%, 74%, 0.2) 0px, transparent 50%), radial-gradient(at 33% 50%, hsla(222, 67%, 73%, 0.3) 0px, transparent 50%), radial-gradient(at 79% 53%, hsla(343, 68%, 73%, 0.2) 0px, transparent 50%); animation: auroraBG 20s ease-in-out infinite alternate; }
  @keyframes auroraBG { from { transform: scale(1); } to { transform: scale(1.5); } }
  .theme-cyberpunk-glass { --primary-_tZJxSUuU: #08fdd8; --light-bg: #010409; --_rRyaxNRG-bg: rgba(22, 27, 34, 0.6); --border-_tZJxSUuU: rgba(139, 148, 158, 0.3); --_sOwVmliX-_tZJxSUuU: #e6edf3; --_sOwVmliX-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_tZJxSUuU), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_tZJxSUuU-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_tZJxSUuU-rgb), 0.5); }
  .theme-marble-light { --primary-_tZJxSUuU: #bfa37c; --light-bg: #f7f5f2; --_rRyaxNRG-bg: #ffffff; --border-_tZJxSUuU: #e0dcd5; --_sOwVmliX-_tZJxSUuU: #3d3a36; --_sOwVmliX-light: #6b6661; }
  _jhBOaFbC.theme-marble-light { background-image: _RxoGPLAw('_StOIzJMY:image/svg+xml,%3Csvg _WgIjjStz="60" height="60" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="none" fill-rule="evenodd"%3E%3Cg fill="%23dcd6ca" fill-opacity="0.2"%3E%3Cpath d="M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); }
  .theme-marble-light .card { background-_tZJxSUuU: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_AehqtvKu>
  </head><_jhBOaFbC _tXrbSgzT="pageBody">
  <_ALKFQlGl _tXrbSgzT="background-_ALKFQlGl"></_ALKFQlGl>
  <div _tXrbSgzT="_qEQimrNX">
      <div class="modal-_rRyaxNRG">
          <h3>首次使用 - 请设置管理员密码</h3>
          <p>这是您第一次访问本页面,为了保护您的设置,请创建一个管理员密码。</p>
          <div class="form-grid"><div class="form-grid-label"><label for="initialPassword">新密码 (至少6位)</label></div><div class="form-grid-control"><input _YkXXsZDo="_knaGgUOU" _tXrbSgzT="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _YkXXsZDo="_knaGgUOU" _tXrbSgzT="confirmPassword"></div></div>
          <div class="modal-buttons"><button _tXrbSgzT="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_drCvOgms-_EQJkxFcL">
    <button _tXrbSgzT="_lwLgzKhU" class="btn btn-outline"></button>
    <div _tXrbSgzT="marquee-_EQJkxFcL"><div _tXrbSgzT="marquee-_sOwVmliX"></div></div>
    <_kLGOFDvE><h1 _tXrbSgzT="pageTitle"></h1></_kLGOFDvE>
    <div class="card" _tXrbSgzT="visitorPasswordPrompt" _AehqtvKu="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_knaGgUOU-input-group">
            <input _YkXXsZDo="_knaGgUOU" _tXrbSgzT="visitorPasswordEntry" _HUINxsHw="访客密码">
            <button _tXrbSgzT="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _tXrbSgzT="_GXoSAkfj" _AehqtvKu="display: block;">
        <div class="card progress-section">
            <div _tXrbSgzT="progressDisplay">
                <progress _tXrbSgzT="_dHzqCBpB" _qYdVEgAp="0" max="100"></progress>
                <div _tXrbSgzT="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _drCvOgms-download-section">
          <div class="section-_kLGOFDvE"><h2 _tXrbSgzT="appDownloadTitleEl"></h2></div>
          <div class="_drCvOgms-download-buttons">
            <button class="btn" _StOIzJMY-_VatuKarJ="android">安卓客户端</button>
            <button class="btn" _StOIzJMY-_VatuKarJ="ios">苹果客户端</button>
            <button class="btn" _StOIzJMY-_VatuKarJ="windows">Windows客户端</button>
            <button class="btn" _StOIzJMY-_VatuKarJ="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _NzqybVhr-section" _tXrbSgzT="_ygNTsVbd" _AehqtvKu="display:none;">
          <div class="section-_kLGOFDvE">
            <h2 _tXrbSgzT="liveTitleEl"></h2>
            <div class="generator-info" _tXrbSgzT="liveGeneratorInfo"></div>
          </div>
          <div _tXrbSgzT="_VRvKQHXU" class="_NzqybVhr-actions-_EQJkxFcL" _AehqtvKu="display: none;">
             <div class="_NzqybVhr-api-buttons">
                <button _tXrbSgzT="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _tXrbSgzT="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _tXrbSgzT="resultsTable">
              <thead><tr><th _tXrbSgzT="tableHeader1El"></th><th _tXrbSgzT="tableHeader2El"></th><th _tXrbSgzT="tableHeader3El"></th><th _tXrbSgzT="tableHeader4El"></th><th _tXrbSgzT="tableHeader5El"></th><th _tXrbSgzT="tableHeader6El"></th><th _tXrbSgzT="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _tXrbSgzT="_akuKiLXc" _AehqtvKu="display:none;">
          <div class="section-_kLGOFDvE"><h2 _tXrbSgzT="cachedTitleEl"></h2><div class="generator-info" _tXrbSgzT="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _tXrbSgzT="cachedResultsTable">
              <thead><tr><th _tXrbSgzT="cachedTableHeader1El"></th><th _tXrbSgzT="cachedTableHeader2El"></th><th _tXrbSgzT="cachedTableHeader3El"></th><th _tXrbSgzT="cachedTableHeader4El"></th><th _tXrbSgzT="cachedTableHeader5El"></th><th _tXrbSgzT="cachedTableHeader6El"></th><th _tXrbSgzT="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _tXrbSgzT="notificationTooltip" class="tooltip-notification"></div>
  <div _tXrbSgzT="_KBAGYQCm">
    <div class="modal-_rRyaxNRG">
      <h3>修改参数</h3>
      <div _AehqtvKu="display: flex; border-bottom: 1px solid var(--border-_tZJxSUuU); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_oVAJMjNn(event, 'general-_OrPtNaNm')">通用设置</button>
          <button class="tab-button" onclick="_oVAJMjNn(event, '_eqQEyNvg-_OrPtNaNm')">链接设置</button>
          <button class="tab-button" onclick="_oVAJMjNn(event, 'fine-grained-_OrPtNaNm')">IP源设置</button>
          <button class="tab-button" onclick="_oVAJMjNn(event, 'advanced-_OrPtNaNm')">高级设置</button>
      </div>
      <div _tXrbSgzT="general-_OrPtNaNm" class="tab-_rRyaxNRG" _AehqtvKu="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_fNQnUeCS _tXrbSgzT="themeSelect">
                    <_VQspPDzH _qYdVEgAp="theme-aurora-glass">极光-玻璃质感</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-particles-glass">粒子-玻璃质感</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-modern-glass">现代-玻璃质感</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-cyberpunk-glass">赛博朋克-玻璃质感</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-dark-particles">暗色-粒子背景</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-dark-bing">暗色-必应壁纸</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-light">亮色-简约</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-light-bing">亮色-必应壁纸</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-marble-light">简约大理石-亮色</_VQspPDzH>
                    <_VQspPDzH _qYdVEgAp="theme-matrix">矩阵-代码雨</_VQspPDzH>
                </_fNQnUeCS>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="primaryColorInput">
                <span _AehqtvKu="_WgIjjStz: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _AehqtvKu="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_sOwVmliX-_tZJxSUuU-grid"><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="colorInput_title"><textarea _tXrbSgzT="textInput_title" _byyEadyi="1" _HUINxsHw="页面主标题"></textarea></div>
                <div class="_sOwVmliX-_tZJxSUuU-grid"><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="colorInput_loginButton"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="textInput_loginButton" _HUINxsHw="登录按钮文本"></div>
                <div class="_sOwVmliX-_tZJxSUuU-grid"><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="colorInput_appDownloadTitle"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="textInput_appDownloadTitle" _HUINxsHw="APP下载标题"></div>
                <div class="_sOwVmliX-_tZJxSUuU-grid"><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="colorInput_liveTitle"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="textInput_liveTitle" _HUINxsHw="本次结果标题"></div>
                <div class="_sOwVmliX-_tZJxSUuU-grid"><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="colorInput_cachedTitle"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="textInput_cachedTitle" _HUINxsHw="上次结果标题"></div>
                <div class="_sOwVmliX-_tZJxSUuU-grid"><input _YkXXsZDo="_tZJxSUuU" _tXrbSgzT="colorInput_tableHeader"><input _YkXXsZDo="_sOwVmliX" _qYdVEgAp="表格头部文本颜色" readonly _AehqtvKu="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _AehqtvKu="align-self: start;"><label>公告栏设置</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _tXrbSgzT="announcementText" _HUINxsHw="在此输入公告内容" _byyEadyi="3"></textarea>
                 <div _AehqtvKu="display: flex; justify-_rRyaxNRG: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _AehqtvKu="display: flex; align-items: center; gap: 5px;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableMarquee"> 顶部走马灯</label>
                    <label _AehqtvKu="display: flex; align-items: center; gap: 5px;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enablePopup"> 右上角弹窗</label>
                    <div _tXrbSgzT="popupDurationContainer" _AehqtvKu="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _YkXXsZDo="number" _tXrbSgzT="popupDuration" _AehqtvKu="_WgIjjStz: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _tXrbSgzT="_eqQEyNvg-_OrPtNaNm" class="tab-_rRyaxNRG">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="converterServiceUrlInput" _HUINxsHw="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _YkXXsZDo="number" _tXrbSgzT="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _AehqtvKu="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _tXrbSgzT="subscriptionIdCharset" _byyEadyi="3"></textarea></div>
          <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
          <div class="form-grid-label"><label for="enableItemLinkCheckbox">启用"复制节点链接"按钮</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableItemLinkCheckbox"></div>
        </div>
        <div _tXrbSgzT="itemLinkConfigGroup" _AehqtvKu="display:none; margin-_DvemNPkT: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _AehqtvKu="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="定义分享链接格式。可用占位符: {_poAVSnAK}, {_nJZkrPYM}, {_ZliHvEEq}, {rank}, {_hpjxdxPu}, {_gBPWRlQA}, {_rguAXScB}, {_LkLDuScG}, {_vuuvPYsv}。">?</span></div>
              <div class="form-grid-control"><textarea _tXrbSgzT="itemLinkTemplateInput" _byyEadyi="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_fNQnUeCS _tXrbSgzT="parameterSelectionMode"></_fNQnUeCS></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _tXrbSgzT="parameter-sets-_EQJkxFcL"></div><button _YkXXsZDo="button" _tXrbSgzT="add-parameter-_xfgJQVuL-btn" class="btn btn-outline" _AehqtvKu="margin-_DvemNPkT: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _AehqtvKu="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _tXrbSgzT="custom-fields-_EQJkxFcL" _AehqtvKu="_WgIjjStz: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><button _YkXXsZDo="button" _tXrbSgzT="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _tXrbSgzT="fine-grained-_OrPtNaNm" class="tab-_rRyaxNRG">
          <div class="form-grid-label" _AehqtvKu="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _AehqtvKu="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_rRyaxNRG: flex-start;">
              <label><input _YkXXsZDo="checkbox" _tXrbSgzT="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _YkXXsZDo="checkbox" _tXrbSgzT="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _tXrbSgzT="fine-grained-sources-_EQJkxFcL"></div><button _YkXXsZDo="button" _tXrbSgzT="add-fine-grained-_rUSloFcX-btn" class="btn btn-outline" _AehqtvKu="margin-_DvemNPkT: 10px;">添加地区</button></div>
      </div>
      <div _tXrbSgzT="advanced-_OrPtNaNm" class="tab-_rRyaxNRG">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _YkXXsZDo="checkbox" _tXrbSgzT="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _tXrbSgzT="resolvedDomainsGroup" _AehqtvKu="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _tXrbSgzT="resolvedDomainsInput" _HUINxsHw="留空则使用内置默认域名" _byyEadyi="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomNodesCheckbox">启用自定义节点</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _tXrbSgzT="customNodesGroup" _AehqtvKu="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _tXrbSgzT="customNodesInput" _HUINxsHw="一行一个地址,支持域名、IPv4、IPv6。" _byyEadyi="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="sampleSizeInput">测试IP总数</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _YkXXsZDo="number" _tXrbSgzT="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _YkXXsZDo="number" _tXrbSgzT="topNInput"></div>
            <div class="form-grid-label" _AehqtvKu="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="display: none;"><input _YkXXsZDo="number" _tXrbSgzT="latencyRangeMinInput" _HUINxsHw="最小"><span>-</span><input _YkXXsZDo="number" _tXrbSgzT="latencyRangeMaxInput" _HUINxsHw="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableIspFilterCheckbox"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="geoLocationRetriesInput">归属地查询失败复查</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _YkXXsZDo="number" _tXrbSgzT="geoLocationRetriesInput" _AehqtvKu="_WgIjjStz: 80px;"> <span>次</span>
                <div _AehqtvKu="display: flex; align-items: center; gap: 5px; margin-_WFmsrArI: 20px;">
                    <input _YkXXsZDo="checkbox" _tXrbSgzT="filterUnknownGeoCheckbox">
                    <label for="filterUnknownGeoCheckbox">过滤未知归属地IP</label>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="universalFallbackAddressInput">备用地址 (上游)</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_rguAXScB:_nJZkrPYM' 或 '_rguAXScB'。">?</span></div>
            <div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="universalFallbackAddressInput"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableWebsocketStreamerCheckbox">启用 Websocket 转发</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _tXrbSgzT="websocketStreamerGroup" _AehqtvKu="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="websocketStreamerUrlInput"></div>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableStreamerCheckbox">启用内置内容加速</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="启用 /_poAVSnAK 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _tXrbSgzT="apiConfigGroup" _AehqtvKu="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="apiMessageInput"></div></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomSubPathCheckbox">启用自定义订阅路径</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _tXrbSgzT="customSubPathGroup" _AehqtvKu="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="customSubPathInput" _HUINxsHw="例如: latest"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableVisitorPasswordCheckbox">启用访客密码</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="justify-_rRyaxNRG: flex-start;"><input _YkXXsZDo="checkbox" _tXrbSgzT="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _tXrbSgzT="visitorPasswordGroup" _AehqtvKu="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _AehqtvKu="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_FQpjCqCJ" _StOIzJMY-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _AehqtvKu="flex-direction: column; align-items: stretch; gap: 8px;"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="botTokenInput" _HUINxsHw="Telegram Bot Token"><input _YkXXsZDo="_sOwVmliX" _tXrbSgzT="chatIdInput" _HUINxsHw="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _AehqtvKu="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _AehqtvKu="flex-direction: column; align-items: stretch; gap: 8px;"><input _YkXXsZDo="_knaGgUOU" _tXrbSgzT="oldPasswordInput" _HUINxsHw="旧密码"><input _YkXXsZDo="_knaGgUOU" _tXrbSgzT="newPasswordInput" _HUINxsHw="新密码 (至少6位)"><button _tXrbSgzT="changePasswordBtn" class="btn" _AehqtvKu="align-self: flex-start; margin-_WFmsrArI: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _tXrbSgzT="closeModalBtn" class="btn btn-outline">关闭</button><button _tXrbSgzT="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _tXrbSgzT="_xPxoYmzE">
      <div class="_drCvOgms-modal-_rRyaxNRG">
          <div class="_drCvOgms-modal-_kLGOFDvE"><h3 _tXrbSgzT="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_drCvOgms-modal-_jhBOaFbC" _tXrbSgzT="appModalBody"></div>
      </div>
  </div>
  <div _tXrbSgzT="_WqOhNYLO">
      <div class="modal-_rRyaxNRG">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _StOIzJMY-sub-_YkXXsZDo="coreEngine">Xray</button><button class="btn _nTrODcVn-btn" _StOIzJMY-sub-_YkXXsZDo="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _StOIzJMY-sub-_YkXXsZDo="coreProfile">Sing-Box</button><button class="btn _nTrODcVn-btn" _StOIzJMY-sub-_YkXXsZDo="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _StOIzJMY-sub-_YkXXsZDo="configProfile">Clash</button><button class="btn _nTrODcVn-btn" _StOIzJMY-sub-_YkXXsZDo="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _StOIzJMY-sub-_YkXXsZDo="policyProfile">Surge</button><button class="btn _nTrODcVn-btn" _StOIzJMY-sub-_YkXXsZDo="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _AehqtvKu="justify-_rRyaxNRG: center;"><button class="btn btn-outline" _tXrbSgzT="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _tXrbSgzT="_bPmNzSMx">
      <div class="modal-_rRyaxNRG">
          <img _tXrbSgzT="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _RALxcoXj = {
        isValid: (_poAVSnAK) => _RALxcoXj.isIPv4(_poAVSnAK) || _RALxcoXj.isIPv6(_poAVSnAK),
        isIPv4: (_poAVSnAK) => {
            if (typeof _poAVSnAK !== 'string') return false;
            const _FsejDZJy = _poAVSnAK.split('.');
            if (_FsejDZJy._fOIlNPKa !== 4) return false;
            return _FsejDZJy.every(_lQDNQBBg => {
                const _rZZlRSNI = parseInt(_lQDNQBBg, 10);
                return !isNaN(_rZZlRSNI) && _rZZlRSNI >= 0 && _rZZlRSNI <= 255 && String(_rZZlRSNI) === _lQDNQBBg;
            });
        },
        isIPv6: (_poAVSnAK) => {
            if (typeof _poAVSnAK !== 'string') return false;
            return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_WttTsMvn.test(_poAVSnAK);
        },
        toLong4: (_poAVSnAK) => _poAVSnAK.split('.').reduce((acc, octet, _WttTsMvn) => acc + (parseInt(octet) << (8*(3-_WttTsMvn))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_poAVSnAK) => {
            try {
                const _ikRleSvV = _poAVSnAK.split('/')[0];
                const _FsejDZJy = _ikRleSvV.split('::');
                if (_FsejDZJy._fOIlNPKa > 2) return 0n;
                let _glvnXgIL = [];
                if (_FsejDZJy[0]) {
                    _glvnXgIL = _FsejDZJy[0].split(':');
                }
                let _ESXUrPsi = [];
                if (_FsejDZJy._fOIlNPKa > 1 && _FsejDZJy[1]) {
                    _ESXUrPsi = _FsejDZJy[1].split(':');
                }
                if (_glvnXgIL._fOIlNPKa + _ESXUrPsi._fOIlNPKa > 8) return 0n;
                const _wUgyROfP = 8 - (_glvnXgIL._fOIlNPKa + _ESXUrPsi._fOIlNPKa);
                const _FcdwrEdA = [
                    ..._glvnXgIL,
                    ...Array(_wUgyROfP).fill('0'),
                    ..._ESXUrPsi
                ].map(_lQDNQBBg => _lQDNQBBg || '0');
                while(_FcdwrEdA._fOIlNPKa < 8) {
                    _FcdwrEdA.push('0');
                }
                let _bCgbzvue = 0n;
                for (const _lQDNQBBg of _FcdwrEdA) {
                    if (_lQDNQBBg._fOIlNPKa > 4) return 0n;
                    const _qYdVEgAp = BigInt('0x' + _lQDNQBBg);
                    _bCgbzvue = (_bCgbzvue << 16n) | _qYdVEgAp;
                }
                return _bCgbzvue;
            } catch(_vTnOJGWl) {
                return 0n;
            }
        },
        fromBigInt6: (_bCgbzvue) => {
            if (typeof _bCgbzvue !== '_bCgbzvue' || _bCgbzvue < 0n) return null;
            const _FsejDZJy = [];
            for (let _WttTsMvn = 0; _WttTsMvn < 8; _WttTsMvn++) {
                _FsejDZJy.unshift((_bCgbzvue & 0xFFFFn).toString(16));
                _bCgbzvue >>= 16n;
            }
            let _MICeYxiq = { start: -1, _kZKaHkgA: 0 };
            let _IdcBAIAh = { start: -1, _kZKaHkgA: 0 };
            for (let _WttTsMvn = 0; _WttTsMvn < 8; _WttTsMvn++) {
                if (_FsejDZJy[_WttTsMvn] === '0') {
                    if (_IdcBAIAh.start === -1) _IdcBAIAh.start = _WttTsMvn;
                    _IdcBAIAh._kZKaHkgA++;
                } else {
                    if (_IdcBAIAh._kZKaHkgA > _MICeYxiq._kZKaHkgA) _MICeYxiq = { ..._IdcBAIAh };
                    _IdcBAIAh = { start: -1, _kZKaHkgA: 0 };
                }
            }
            if (_IdcBAIAh._kZKaHkgA > _MICeYxiq._kZKaHkgA) _MICeYxiq = { ..._IdcBAIAh };
            if (_MICeYxiq._kZKaHkgA > 1) {
                _FsejDZJy.splice(_MICeYxiq.start, _MICeYxiq._kZKaHkgA, '');
                if (_MICeYxiq.start === 0) _FsejDZJy.unshift('');
                if (_MICeYxiq.start + _MICeYxiq._kZKaHkgA === 8) _FsejDZJy.push('');
            }
            return _FsejDZJy.join(':');
        },
        cidrToRange: (cidr, _SQjLImba = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _WtbuSQUI = parseInt(bitsStr, 10);
                const _HXiPXlgC = new Set();
                if (_RALxcoXj.isIPv4(range)) {
                    if (isNaN(_WtbuSQUI) || _WtbuSQUI < 8 || _WtbuSQUI > 32) return [];
                    if (_WtbuSQUI === 32) return [range];
                    const _yRKglXvc = _RALxcoXj.toLong4(range);
                    const _OKsTfdsX = (0xFFFFFFFF << (32 - _WtbuSQUI)) >>> 0;
                    const _sERmNaea = _yRKglXvc & _OKsTfdsX;
                    const _GDKtAhgL = 1 << (32 - _WtbuSQUI);
                    if (_GDKtAhgL <= 2) return [];
                    const _iaVZfICf = Math.min(_SQjLImba, _GDKtAhgL - 2);
                    let _YuJbuOUA = 0;
                    while (_HXiPXlgC.size < _iaVZfICf && _YuJbuOUA < _iaVZfICf * 5) {
                        const _XSLycbbb = Math.floor(Math.random() * (_GDKtAhgL - 2)) + 1;
                        _HXiPXlgC.add(_RALxcoXj.fromLong4((_sERmNaea + _XSLycbbb) >>> 0));
                        _YuJbuOUA++;
                    }
                    return Array.from(_HXiPXlgC);
                } else if (_RALxcoXj.isIPv6(range)) {
                    if (isNaN(_WtbuSQUI) || _WtbuSQUI < 16 || _WtbuSQUI > 128) return [];
                    if (_WtbuSQUI === 128) return [range];
                    const _BMdpQBBy = _RALxcoXj.toBigInt6(range);
                    const _OKsTfdsX = (2n ** BigInt(128 - _WtbuSQUI) - 1n);
                    const _sERmNaea = _BMdpQBBy & ~_OKsTfdsX;
                    const _oIBXJugd = 2n ** BigInt(128 - _WtbuSQUI);
                    if (_oIBXJugd <= 2n) return [];
                    let _YuJbuOUA = 0;
                    while (_HXiPXlgC.size < _SQjLImba && _YuJbuOUA < _SQjLImba * 5) {
                        const _RNxnOkMZ = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_RNxnOkMZ);
                        let _wyCEYVZT = 0n;
                        for (const _eMQyhgRU of _RNxnOkMZ) {
                            _wyCEYVZT = (_wyCEYVZT << 8n) | BigInt(_eMQyhgRU);
                        }
                        const _XSLycbbb = _wyCEYVZT % (_oIBXJugd - 2n) + 1n;
                        _HXiPXlgC.add(_RALxcoXj.fromBigInt6(_sERmNaea + _XSLycbbb));
                        _YuJbuOUA++;
                    }
                    return Array.from(_HXiPXlgC);
                }
                return [];
            } catch(_vTnOJGWl) {
                console.error(`CIDR to range failed for ${cidr}:`, _vTnOJGWl);
                return [];
            }
        }
    };
    function _bWOWJSPc(_yuXrDIqy, _HpmAvQJV) {
        const _RrwYwAtN = {};
        const _bkLDTKLh = Object._bkLDTKLh(_HpmAvQJV);
        const _FsejDZJy = _bkLDTKLh.map(_liMgYOjx => {
            const _xNvsKbVN = _yuXrDIqy * (_HpmAvQJV[_liMgYOjx] / 100);
            return { _liMgYOjx, _SQjLImba: Math.floor(_xNvsKbVN), remainder: _xNvsKbVN - Math.floor(_xNvsKbVN) };
        });
        let _sGhMNmpE = _FsejDZJy.reduce((acc, _lQDNQBBg) => acc + _lQDNQBBg._SQjLImba, 0);
        _FsejDZJy.sort((a, b) => b.remainder - a.remainder);
        let _dXtuuOrF = _yuXrDIqy - _sGhMNmpE;
        for (let _WttTsMvn = 0; _WttTsMvn < _dXtuuOrF; _WttTsMvn++) {
            _FsejDZJy[_WttTsMvn % _FsejDZJy._fOIlNPKa]._SQjLImba++;
        }
        for (const _lQDNQBBg of _FsejDZJy) {
            _RrwYwAtN[_lQDNQBBg._liMgYOjx] = _lQDNQBBg._SQjLImba;
        }
        return _RrwYwAtN;
    }
    const _wRGiGpnv = __PAGE_DATA_JSON__;
    const _eveaXWsK = _wRGiGpnv._rkwfWFxm;
    const _eVetAyVt = _wRGiGpnv.status;
    const _kLNGcFcj = __ALL_CF_CIDR_LIST_JSON__;
    const _OoKwhSti = __BALANCED_CF_CIDR_LIST_JSON__;
    const _qeGyofke = __DEFAULT_DOMAINS_LIST_JSON__;
    const _JQSJmZHn = __COUNTRY_MAP_JSON__;
    const _JHwMGClT = _JQSJmZHn;
    const _NPXMAOsb = 2500;
    const _JHrZltny = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _GXoSAkfj = document.getElementById('_GXoSAkfj');
    const _dHzqCBpB = document.getElementById('_dHzqCBpB');
    const _VehmpIrL = document.getElementById('status');
    const _ygNTsVbd = document.getElementById('_ygNTsVbd');
    const _oRawDnwI = document.getElementById('resultsTable').querySelector('tbody');
    const _akuKiLXc = document.getElementById('_akuKiLXc');
    const _KMjEBOrb = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _mrXulzsx = document.getElementById('notificationTooltip');
    const _lwLgzKhU = document.getElementById('_lwLgzKhU');
    const _KBAGYQCm = document.getElementById('_KBAGYQCm');
    const _xPxoYmzE = document.getElementById('_xPxoYmzE');
    const _WqOhNYLO = document.getElementById('_WqOhNYLO');
    const _bPmNzSMx = document.getElementById('_bPmNzSMx');
    const _qEQimrNX = document.getElementById('_qEQimrNX');
    const _VRvKQHXU = document.getElementById('_VRvKQHXU');
    let _FVVORXhl = null;
    let _dwzCrJxz = null;
    let _ekZUWtUR = [];
    let _CcxIdYrk = false;
    let _UwIwmPim = null;
    function _JPotiKXQ(_WGqUoTpQ, _JVHFDgFb) {
        const _qlEUZcMe=parseInt(_WGqUoTpQ.slice(1),16),t=_JVHFDgFb<0?0:255,p=_JVHFDgFb<0?_JVHFDgFb*-1:_JVHFDgFb,R=_qlEUZcMe>>16,G=_qlEUZcMe>>8&0x00FF,B=_qlEUZcMe&0x0000FF;
        const _oIfmfhVv = Math.round((t-R)*p)+R;
        const _scHrrHOL = Math.round((t-G)*p)+G;
        const _iivFqqUo = Math.round((t-B)*p)+B;
        return `rgb(${_oIfmfhVv.toString()}, ${_scHrrHOL.toString()}, ${_iivFqqUo.toString()})`;
    }
    function _CUNhHGNg(_OrPtNaNm) {
        const _vRIGDrpJ = _OsFlgrTa(_OrPtNaNm.primaryColor);
        if(_vRIGDrpJ) {
            document.documentElement._AehqtvKu.setProperty('--primary-_tZJxSUuU-rgb', `${_vRIGDrpJ.r},${_vRIGDrpJ.g},${_vRIGDrpJ.b}`);
        }
        document.documentElement._AehqtvKu.setProperty('--primary-_tZJxSUuU', _OrPtNaNm.primaryColor);
        document.documentElement._AehqtvKu.setProperty('--primary-hover', _JPotiKXQ(_OrPtNaNm.primaryColor, -0.1));
        document.documentElement._AehqtvKu.setProperty('--primary-gradient-start', _JPotiKXQ(_OrPtNaNm.primaryColor, 0.1));
        document.documentElement._AehqtvKu.setProperty('--primary-gradient-end', _JPotiKXQ(_OrPtNaNm.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _OrPtNaNm.texts.title;
        document.title = _OrPtNaNm.texts.title;
        _lwLgzKhU.innerText = _FVVORXhl ? _OrPtNaNm.texts.loginButtonSuccess : _OrPtNaNm.texts.loginButton;
        _lwLgzKhU._AehqtvKu._tZJxSUuU = _OrPtNaNm.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _OrPtNaNm.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _OrPtNaNm.texts.liveTitle;
        document.getElementById('liveTitleEl')._AehqtvKu._tZJxSUuU = _OrPtNaNm.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _OrPtNaNm.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._AehqtvKu._tZJxSUuU = _OrPtNaNm.colors.cachedTitle;
        const _pbidZCeg = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _pbidZCeg.forEach((_tXrbSgzT, _USzKPGvD) => {
            const _UeQvayeD = document.getElementById(_tXrbSgzT);
            if (_UeQvayeD) _UeQvayeD.innerText = _OrPtNaNm.texts[`tableHeader${_USzKPGvD + 1}`] || '';
        });
        const _EcEENiED = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _EcEENiED.forEach((_tXrbSgzT, _USzKPGvD) => {
             const _UeQvayeD = document.getElementById(_tXrbSgzT);
             if (_UeQvayeD) _UeQvayeD.innerText = _eveaXWsK.texts[`tableHeader${_USzKPGvD + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._AehqtvKu._tZJxSUuU = _OrPtNaNm.colors.tableHeader);
        document._jhBOaFbC.className = '';
        document._jhBOaFbC.classList.add(_OrPtNaNm.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_OrPtNaNm.theme)) {
            document._jhBOaFbC.classList.add('glassy-components');
        }
        document._jhBOaFbC._AehqtvKu.backgroundImage = '';
        _uXExmXaS();
        if (_OrPtNaNm.theme.includes('particles') || _OrPtNaNm.theme.includes('glass')) {
            _YWKGERvr(_OrPtNaNm.particleColor);
        } else if (_OrPtNaNm.theme.includes('bing')) {
            document._jhBOaFbC._AehqtvKu.backgroundImage = '_RxoGPLAw(/bing-wallpaper)';
        }
    }
    function _rKphQtQp() {
        _FVVORXhl = null;
        if(_dwzCrJxz) clearTimeout(_dwzCrJxz);
        _CUNhHGNg(_eveaXWsK);
        _STdFGmcl("登录已超时,请重新登录。", "warning");
    }
    async function _UVhKNuEO() {
        if (_FVVORXhl) {
            _CudANQEI();
            return;
        }
        const _tNqwRwLC = prompt('请输入管理员密码:');
        if (!_tNqwRwLC) return;
        try {
            const _AjJnZtxk = await fetch('/api/verify-_knaGgUOU', {
                method: 'POST',
                _pbidZCeg: { 'Content-Type': 'application/json' },
                _jhBOaFbC: JSON.stringify({ _knaGgUOU: _tNqwRwLC })
            });
            const _cFDBCnpB = await _AjJnZtxk.json();
            if (_cFDBCnpB.success) {
                _FVVORXhl = _tNqwRwLC;
                _STdFGmcl("登录成功!有效期5分钟。", "success");
                if (_dwzCrJxz) clearTimeout(_dwzCrJxz);
                _dwzCrJxz = setTimeout(_rKphQtQp, 5 * 60 * 1000);
                _CUNhHGNg(_eveaXWsK);
                _CudANQEI();
            } else {
                throw new Error(_cFDBCnpB._ilbVNPWJ || '密码验证失败');
            }
        } catch (_vTnOJGWl) {
            _STdFGmcl(`登录失败: ${_vTnOJGWl._ilbVNPWJ}`, "error");
        }
    }
    function _qNdoecTg() {
        if (!_eVetAyVt._dzKjukpi) {
            _qEQimrNX._AehqtvKu.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _knaGgUOU = document.getElementById('initialPassword')._qYdVEgAp;
                const _WnLXCnpi = document.getElementById('confirmPassword')._qYdVEgAp;
                if (_knaGgUOU !== _WnLXCnpi) {
                    _STdFGmcl("两次输入的密码不一致!", "error");
                    return;
                }
                if (_knaGgUOU._fOIlNPKa < 6) {
                    _STdFGmcl("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _AjJnZtxk = await fetch('/api/_xfgJQVuL-_knaGgUOU', {
                        method: 'POST',
                        _pbidZCeg: { 'Content-Type': 'application/json' },
                        _jhBOaFbC: JSON.stringify({ _knaGgUOU })
                    });
                    const _cFDBCnpB = await _AjJnZtxk.json();
                    if (_cFDBCnpB.success) {
                        _STdFGmcl(_cFDBCnpB._ilbVNPWJ, "success");
                        setTimeout(() => _hpjxdxPu.reload(), 1500);
                    } else {
                        throw new Error(_cFDBCnpB._ilbVNPWJ);
                    }
                } catch(_vTnOJGWl) {
                    _STdFGmcl(`设置密码失败: ${_vTnOJGWl._ilbVNPWJ}`, "error");
                }
            });
            return;
        }
        _lwLgzKhU.addEventListener('click', _UVhKNuEO);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _KBAGYQCm._AehqtvKu.display = 'none'; });
        _KBAGYQCm.addEventListener('click', (_vTnOJGWl) => { if (_vTnOJGWl.target === _KBAGYQCm) _KBAGYQCm._AehqtvKu.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_EQJkxFcL .fine-grained-_ZDOLLRZZ-cb').forEach(cb => cb.checked = true);
                document.getElementById('disableAllSourcesCheckbox').checked = false;
                this.checked = false; 
            }
        });
        document.getElementById('disableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_EQJkxFcL .fine-grained-_ZDOLLRZZ-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_FVVORXhl) {
                _STdFGmcl("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _UMwcMSVc = [];
            document.querySelectorAll('#custom-fields-_EQJkxFcL .custom-field-_hsnwFMKE').forEach(_hsnwFMKE => {
                const _ZliHvEEq = _hsnwFMKE.querySelector('.custom-field-_ZliHvEEq')._qYdVEgAp.trim();
                const _qYdVEgAp = _hsnwFMKE.querySelector('.custom-field-_qYdVEgAp')._qYdVEgAp.trim();
                if (_ZliHvEEq) _UMwcMSVc.push({ _ZliHvEEq, _qYdVEgAp });
            });
            const _MKWuFHzh = [];
            document.querySelectorAll('#parameter-sets-_EQJkxFcL .parameter-_xfgJQVuL-_hsnwFMKE').forEach(_hsnwFMKE => {
                const _ZliHvEEq = _hsnwFMKE.querySelector('.param-_xfgJQVuL-_ZliHvEEq')._qYdVEgAp.trim();
                const _rguAXScB = _hsnwFMKE.querySelector('.param-_xfgJQVuL-_rguAXScB')._qYdVEgAp.trim();
                const _LkLDuScG = _hsnwFMKE.querySelector('.param-_xfgJQVuL-_LkLDuScG')._qYdVEgAp.trim();
                const _vuuvPYsv = _hsnwFMKE.querySelector('.param-_xfgJQVuL-_vuuvPYsv')._qYdVEgAp.trim();
                if(_ZliHvEEq) _MKWuFHzh.push({ _ZliHvEEq, _rguAXScB, '_LkLDuScG': _LkLDuScG, _vuuvPYsv });
            });
            const _FwqXQPsI = [];
            document.querySelectorAll('#fine-grained-sources-_EQJkxFcL .fine-grained-_rUSloFcX-_hsnwFMKE').forEach(_hsnwFMKE => {
                const _hpjxdxPu = _hsnwFMKE.querySelector('.fine-grained-_hpjxdxPu')._qYdVEgAp.trim();
                const _HXiPXlgC = _hsnwFMKE.querySelector('.fine-grained-_HXiPXlgC')._qYdVEgAp.trim();
                const _ZDOLLRZZ = _hsnwFMKE.querySelector('.fine-grained-_ZDOLLRZZ-cb').checked;
                const _cLbDbxlW = parseInt(_hsnwFMKE.querySelector('.fine-grained-_cLbDbxlW')._qYdVEgAp, 10) || 0;
                const _ipIYEMhA = _hsnwFMKE.querySelector('.use-_ZliHvEEq-as-_hpjxdxPu-cb').checked;
                if (_hpjxdxPu && _HXiPXlgC) {
                    _FwqXQPsI.push({ _hpjxdxPu, _HXiPXlgC, _ZDOLLRZZ, _cLbDbxlW, _ipIYEMhA });
                }
            });
            
            let _lfgflnTy = parseInt(document.getElementById('subscriptionIdLength')._qYdVEgAp, 10);
            if (isNaN(_lfgflnTy) || _lfgflnTy < 2) _lfgflnTy = 2;
            if (_lfgflnTy > 128) _lfgflnTy = 128;

            const _rHqCPkWb = {
                theme: document.getElementById('themeSelect')._qYdVEgAp,
                primaryColor: document.getElementById('primaryColorInput')._qYdVEgAp,
                particleColor: document.getElementById('particleColorInput')._qYdVEgAp,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._qYdVEgAp,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._qYdVEgAp, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._qYdVEgAp, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._qYdVEgAp, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._qYdVEgAp, 10) || 0,
                _ZVqAwjgJ: document.getElementById('converterServiceUrlInput')._qYdVEgAp.trim(),
                subscriptionId: {
                    _fOIlNPKa: _lfgflnTy,
                    _cUklIUbo: document.getElementById('subscriptionIdCharset')._qYdVEgAp.trim()
                },
                api: {
                    _ZDOLLRZZ: document.getElementById('enableApiCheckbox').checked,
                    _ilbVNPWJ: document.getElementById('apiMessageInput')._qYdVEgAp || '维护中...',
                },
                ispFilter: { 
                    _ZDOLLRZZ: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._qYdVEgAp, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _ZDOLLRZZ: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _ZDOLLRZZ: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _RxoGPLAw: document.getElementById('websocketStreamerUrlInput')._qYdVEgAp.trim()
                },
                visitorPassword: {
                    _ZDOLLRZZ: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _knaGgUOU: document.getElementById('visitorPasswordInput')._qYdVEgAp.trim()
                },
                customSubPath: {
                    _ZDOLLRZZ: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _vuuvPYsv: document.getElementById('customSubPathInput')._qYdVEgAp.trim()
                },
                itemLink: {
                    _ZDOLLRZZ: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._qYdVEgAp,
                    selectionMode: document.getElementById('parameterSelectionMode')._qYdVEgAp,
                    _MKWuFHzh: _MKWuFHzh,
                    _UMwcMSVc: _UMwcMSVc,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._qYdVEgAp.trim(),
                },
                announcement: {
                    popup: {
                        _ZDOLLRZZ: document.getElementById('enablePopup').checked,
                        _sOwVmliX: document.getElementById('announcementText')._qYdVEgAp,
                        _EtyIXCqn: parseInt(document.getElementById('popupDuration')._qYdVEgAp, 10) || 5
                    },
                    marquee: {
                        _ZDOLLRZZ: document.getElementById('enableMarquee').checked,
                        _sOwVmliX: document.getElementById('announcementText')._qYdVEgAp
                    }
                },
                fineGrained: {
                    _ZDOLLRZZ: true,
                    sources: _FwqXQPsI
                },
                customNodes: {
                    _ZDOLLRZZ: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._qYdVEgAp
                },
                texts: {
                    title: document.getElementById('textInput_title')._qYdVEgAp,
                    loginButton: document.getElementById('textInput_loginButton')._qYdVEgAp,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._qYdVEgAp,
                    liveTitle: document.getElementById('textInput_liveTitle')._qYdVEgAp,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._qYdVEgAp,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._qYdVEgAp,
                    loginButton: document.getElementById('colorInput_loginButton')._qYdVEgAp,
                    liveTitle: document.getElementById('colorInput_liveTitle')._qYdVEgAp,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._qYdVEgAp,
                    tableHeader: document.getElementById('colorInput_tableHeader')._qYdVEgAp,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._qYdVEgAp.trim(),
                    chat_id: document.getElementById('chatIdInput')._qYdVEgAp.trim(),
                },
            };
            try {
                const _AjJnZtxk = await fetch('/api/_rkwfWFxm', {
                    method: 'POST',
                    _pbidZCeg: { 'Content-Type': 'application/json' },
                    _jhBOaFbC: JSON.stringify({ _rkwfWFxm: _rHqCPkWb, adminPassword: _FVVORXhl })
                });
                const _cFDBCnpB = await _AjJnZtxk.json();
                if (_AjJnZtxk.ok && _cFDBCnpB.success) {
                    _STdFGmcl("配置已保存,正在刷新...", "success");
                    setTimeout(() => _hpjxdxPu.reload(), 1500);
                } else {
                    throw new Error(_cFDBCnpB._ilbVNPWJ || '未知错误');
                }
            } catch (_vTnOJGWl) {
                _STdFGmcl(`操作失败: ${_vTnOJGWl._ilbVNPWJ}`, "error");
                if (String(_vTnOJGWl._ilbVNPWJ).includes("密码错误")) {
                    _rKphQtQp();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _IMybqLXx = document.getElementById('oldPasswordInput')._qYdVEgAp;
            const _QimZHIXi = document.getElementById('newPasswordInput')._qYdVEgAp;
            if (!_IMybqLXx || !_QimZHIXi) {
                _STdFGmcl("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _AjJnZtxk = await fetch('/api/change-_knaGgUOU', {
                    method: 'POST',
                    _pbidZCeg: { 'Content-Type': 'application/json' },
                    _jhBOaFbC: JSON.stringify({ _IMybqLXx, _QimZHIXi })
                });
                const _cFDBCnpB = await _AjJnZtxk.json();
                if (_cFDBCnpB.success) {
                    _STdFGmcl(_cFDBCnpB._ilbVNPWJ, "success");
                    document.getElementById('oldPasswordInput')._qYdVEgAp = '';
                    document.getElementById('newPasswordInput')._qYdVEgAp = '';
                    _FVVORXhl = _QimZHIXi;
                } else {
                    throw new Error(_cFDBCnpB._ilbVNPWJ);
                }
            } catch(_vTnOJGWl) {
                _STdFGmcl(`修改密码失败: ${_vTnOJGWl._ilbVNPWJ}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('resolvedDomainsGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('customNodesGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('apiConfigGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('itemLinkConfigGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('websocketStreamerGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
            const _WrqHEJhe = document.querySelector('#parameter-sets-_EQJkxFcL .param-_xfgJQVuL-_vuuvPYsv');
            if (_WrqHEJhe) {
                if (_vTnOJGWl.target.checked) {
                    _WrqHEJhe._qYdVEgAp = '/snippets?_poAVSnAK=endpointAddress:_nJZkrPYM(443)&nat64=6to4';
                } else {
                    _WrqHEJhe._qYdVEgAp = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _WslbJtyv('', '');
        });
        document.getElementById('add-parameter-_xfgJQVuL-btn').addEventListener('click', () => {
            const _SQjLImba = document.querySelectorAll('.parameter-_xfgJQVuL-_hsnwFMKE')._fOIlNPKa + 1;
            _gxtdARxk({_ZliHvEEq: `配置${_SQjLImba}`, _rguAXScB: '', _LkLDuScG: '', _vuuvPYsv: ''});
            _ufyDpPzc();
        });
         document.getElementById('add-fine-grained-_rUSloFcX-btn').addEventListener('click', () => {
             _tYPrSEgy({ _hpjxdxPu: '', _HXiPXlgC: '', _ZDOLLRZZ: true, _cLbDbxlW: 50, _ipIYEMhA: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('visitorPasswordGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('customSubPathGroup')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_vTnOJGWl) => {
            document.getElementById('popupDurationContainer')._AehqtvKu.display = _vTnOJGWl.target.checked ? 'flex' : 'none';
        });
    }
    function _WslbJtyv(_ZliHvEEq, _qYdVEgAp) {
        const _EQJkxFcL = document.getElementById('custom-fields-_EQJkxFcL');
        const _ZKyWLhet = document.createElement('div');
        _ZKyWLhet.className = 'form-grid custom-field-_hsnwFMKE';
        _ZKyWLhet._AehqtvKu = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _ZKyWLhet.innerHTML = `
            <input _YkXXsZDo="_sOwVmliX" class="custom-field-_ZliHvEEq" _HUINxsHw="占位符名称" _qYdVEgAp="${_ZliHvEEq}">
            <input _YkXXsZDo="_sOwVmliX" class="custom-field-_qYdVEgAp" _HUINxsHw="值" _qYdVEgAp="${_qYdVEgAp}">
            <button _YkXXsZDo="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _EQJkxFcL.appendChild(_ZKyWLhet);
    }
    function _gxtdARxk(_xfgJQVuL) {
        const _EQJkxFcL = document.getElementById('parameter-sets-_EQJkxFcL');
        const _ZKyWLhet = document.createElement('div');
        _ZKyWLhet.className = 'parameter-_xfgJQVuL-_hsnwFMKE';
        _ZKyWLhet.innerHTML = `
            <div class="parameter-_xfgJQVuL-_kLGOFDvE">
                <input _YkXXsZDo="_sOwVmliX" class="param-_xfgJQVuL-_ZliHvEEq" _HUINxsHw="配置名称" _qYdVEgAp="${_xfgJQVuL._ZliHvEEq}" oninput="_ufyDpPzc()">
                <button _YkXXsZDo="button" class="btn btn-outline" onclick="this.closest('.parameter-_xfgJQVuL-_hsnwFMKE').remove(); _ufyDpPzc();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" class="param-_xfgJQVuL-_rguAXScB" _qYdVEgAp="${_xfgJQVuL._rguAXScB || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" class="param-_xfgJQVuL-_LkLDuScG" _qYdVEgAp="${_xfgJQVuL['_LkLDuScG'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _YkXXsZDo="_sOwVmliX" class="param-_xfgJQVuL-_vuuvPYsv" _qYdVEgAp="${_xfgJQVuL._vuuvPYsv || ''}"></div>
            </div>
        `;
        _EQJkxFcL.appendChild(_ZKyWLhet);
    }
    function _ufyDpPzc() {
        const _fNQnUeCS = document.getElementById('parameterSelectionMode');
        const _dCRgVLLz = _fNQnUeCS._qYdVEgAp;
        _fNQnUeCS.innerHTML = '';
        const _rADbybOY = document.createElement('_VQspPDzH');
        _rADbybOY._qYdVEgAp = 'random';
        _rADbybOY.textContent = '随机轮询';
        _fNQnUeCS.appendChild(_rADbybOY);
        const _eYmRmehP = document.createElement('_VQspPDzH');
        _eYmRmehP._qYdVEgAp = 'first';
        _eYmRmehP.textContent = '使用第一组';
        _fNQnUeCS.appendChild(_eYmRmehP);
        document.querySelectorAll('.param-_xfgJQVuL-_ZliHvEEq').forEach(input => {
            const _ZliHvEEq = input._qYdVEgAp.trim();
            if (_ZliHvEEq) {
                const _VQspPDzH = document.createElement('_VQspPDzH');
                _VQspPDzH._qYdVEgAp = _ZliHvEEq;
                _VQspPDzH.textContent = `指定: ${_ZliHvEEq}`;
                _fNQnUeCS.appendChild(_VQspPDzH);
            }
        });
        if (Array.from(_fNQnUeCS.options).some(opt => opt._qYdVEgAp === _dCRgVLLz)) {
            _fNQnUeCS._qYdVEgAp = _dCRgVLLz;
        } else {
            _fNQnUeCS._qYdVEgAp = 'random';
        }
    }
    function _tYPrSEgy(_rUSloFcX) {
        const _EQJkxFcL = document.getElementById('fine-grained-sources-_EQJkxFcL');
        const _ZKyWLhet = document.createElement('div');
        _ZKyWLhet.className = 'fine-grained-_rUSloFcX-_hsnwFMKE parameter-_xfgJQVuL-_hsnwFMKE';
        _ZKyWLhet._AehqtvKu.padding = '1rem';
        const _nnxPGUkF = _rUSloFcX._ipIYEMhA ? 'checked' : '';
        const _vZcRgZLs = !_rUSloFcX._ipIYEMhA ? 'checked' : '';
        const _iETwmNuo = _rUSloFcX._ZDOLLRZZ ? 'checked' : '';
        _ZKyWLhet.innerHTML = `
            <div _AehqtvKu="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _YkXXsZDo="_sOwVmliX" class="fine-grained-_hpjxdxPu" _HUINxsHw="地区名称 (如: 香港)" _qYdVEgAp="${_rUSloFcX._hpjxdxPu || ''}">
                <div _AehqtvKu="display: flex; align-items: center; gap: 5px;"><input _YkXXsZDo="checkbox" class="fine-grained-_ZDOLLRZZ-cb" ${_iETwmNuo}><label>启用</label></div>
                <button _YkXXsZDo="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_rUSloFcX-_hsnwFMKE').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_HXiPXlgC" _HUINxsHw="IP源 (每行一个IP、CIDR或URL)" _byyEadyi="3" _AehqtvKu="_WgIjjStz:100%;">${_rUSloFcX._HXiPXlgC || ''}</textarea>
            <div class="fine-grained-options" _AehqtvKu="justify-_rRyaxNRG: space-between;">
                <div _AehqtvKu="display: flex; gap: 1rem;">
                    <label><input _YkXXsZDo="checkbox" class="query-_CrTxPtih-cb" ${_vZcRgZLs}>查询真实归属地</label>
                    <label><input _YkXXsZDo="checkbox" class="use-_ZliHvEEq-as-_hpjxdxPu-cb" ${_nnxPGUkF}>使用地区名称作为归属地</label>
                </div>
                <div _AehqtvKu="display: flex; align-items: center; gap: 5px;"><input _YkXXsZDo="number" class="fine-grained-_cLbDbxlW _cLbDbxlW-input" _qYdVEgAp="${_rUSloFcX._cLbDbxlW || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _SFBkLpin = _ZKyWLhet.querySelector('.query-_CrTxPtih-cb');
        const _SQlLETWs = _ZKyWLhet.querySelector('.use-_ZliHvEEq-as-_hpjxdxPu-cb');
        _SFBkLpin.addEventListener('change', () => {
            if (_SFBkLpin.checked) {
                _SQlLETWs.checked = false;
            } else if (!_SQlLETWs.checked) {
                _SFBkLpin.checked = true;
            }
        });
        _SQlLETWs.addEventListener('change', () => {
            if (_SQlLETWs.checked) {
                _SFBkLpin.checked = false;
            } else if (!_SQlLETWs.checked) {
                _SQlLETWs.checked = true;
            }
        });
        _EQJkxFcL.appendChild(_ZKyWLhet);
    }
    function _CudANQEI() {
        const _OrPtNaNm = _eveaXWsK;
        document.getElementById('themeSelect')._qYdVEgAp = _OrPtNaNm.theme;
        document.getElementById('primaryColorInput')._qYdVEgAp = _OrPtNaNm.primaryColor;
        document.getElementById('particleColorInput')._qYdVEgAp = _OrPtNaNm.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _OrPtNaNm.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._HUINxsHw = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._qYdVEgAp = _OrPtNaNm.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._AehqtvKu.display = _OrPtNaNm.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _OrPtNaNm.customNodes._ZDOLLRZZ;
        document.getElementById('customNodesInput')._qYdVEgAp = _OrPtNaNm.customNodes.list || '';
        document.getElementById('customNodesGroup')._AehqtvKu.display = _OrPtNaNm.customNodes._ZDOLLRZZ ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._qYdVEgAp = _OrPtNaNm._ZVqAwjgJ || '';
        document.getElementById('subscriptionIdLength')._qYdVEgAp = _OrPtNaNm.subscriptionId._fOIlNPKa;
        document.getElementById('subscriptionIdCharset')._qYdVEgAp = _OrPtNaNm.subscriptionId._cUklIUbo;
        document.getElementById('enableItemLinkCheckbox').checked = _OrPtNaNm.itemLink._ZDOLLRZZ;
        document.getElementById('itemLinkConfigGroup')._AehqtvKu.display = _OrPtNaNm.itemLink._ZDOLLRZZ ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._qYdVEgAp = _OrPtNaNm.itemLink.template;
        const _drAbIsks = document.getElementById('parameter-sets-_EQJkxFcL');
        _drAbIsks.innerHTML = '';
        if (_OrPtNaNm.itemLink._MKWuFHzh && Array.isArray(_OrPtNaNm.itemLink._MKWuFHzh)) {
            _OrPtNaNm.itemLink._MKWuFHzh.forEach(_xfgJQVuL => _gxtdARxk(_xfgJQVuL));
        }
        _ufyDpPzc();
        document.getElementById('parameterSelectionMode')._qYdVEgAp = _OrPtNaNm.itemLink.selectionMode || 'random';
        const _WrqHEJhe = document.querySelector('#parameter-sets-_EQJkxFcL .param-_xfgJQVuL-_vuuvPYsv');
        if (_WrqHEJhe && _OrPtNaNm.websocketStreamer && _OrPtNaNm.websocketStreamer._ZDOLLRZZ) {
            _WrqHEJhe._qYdVEgAp = '/snippets?_poAVSnAK=endpointAddress:_nJZkrPYM(443)&nat64=6to4';
        }
        const _PNRqKWXT = document.getElementById('custom-fields-_EQJkxFcL');
        _PNRqKWXT.innerHTML = '';
        if (_OrPtNaNm.itemLink._UMwcMSVc && Array.isArray(_OrPtNaNm.itemLink._UMwcMSVc)) {
            _OrPtNaNm.itemLink._UMwcMSVc.forEach(field => _WslbJtyv(field._ZliHvEEq, field._qYdVEgAp));
        }
        document.getElementById('universalFallbackAddressInput')._qYdVEgAp = _OrPtNaNm.dataFeeds.universalFallbackAddress || '';
        const _DtdmLqkG = _OrPtNaNm.websocketStreamer && _OrPtNaNm.websocketStreamer._ZDOLLRZZ;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _DtdmLqkG;
        document.getElementById('websocketStreamerUrlInput')._qYdVEgAp = _OrPtNaNm.websocketStreamer ? _OrPtNaNm.websocketStreamer._RxoGPLAw : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._AehqtvKu.display = _DtdmLqkG ? 'block' : 'none';
        const _dgIixjOh = _OrPtNaNm.announcement || {};
        document.getElementById('announcementText')._qYdVEgAp = (_dgIixjOh.popup && _dgIixjOh.popup._sOwVmliX) || (_dgIixjOh.marquee && _dgIixjOh.marquee._sOwVmliX) || '';
        document.getElementById('enableMarquee').checked = _dgIixjOh.marquee && _dgIixjOh.marquee._ZDOLLRZZ;
        document.getElementById('enablePopup').checked = _dgIixjOh.popup && _dgIixjOh.popup._ZDOLLRZZ;
        document.getElementById('popupDuration')._qYdVEgAp = (_dgIixjOh.popup && _dgIixjOh.popup._EtyIXCqn) || 5;
        document.getElementById('popupDurationContainer')._AehqtvKu.display = (_dgIixjOh.popup && _dgIixjOh.popup._ZDOLLRZZ) ? 'flex' : 'none';
        const _QdsShVqP = document.getElementById('fine-grained-sources-_EQJkxFcL');
        _QdsShVqP.innerHTML = '';
        if (_OrPtNaNm.fineGrained.sources && Array.isArray(_OrPtNaNm.fineGrained.sources)) {
            _OrPtNaNm.fineGrained.sources.forEach(_rUSloFcX => _tYPrSEgy(_rUSloFcX));
        }
        document.getElementById('sampleSizeInput')._qYdVEgAp = _OrPtNaNm.sampleSize;
        document.getElementById('topNInput')._qYdVEgAp = _OrPtNaNm.topN;
        document.getElementById('latencyRangeMinInput')._qYdVEgAp = _OrPtNaNm.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._qYdVEgAp = _OrPtNaNm.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _OrPtNaNm.ispFilter._ZDOLLRZZ;
        const _hFabMekY = _OrPtNaNm.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._qYdVEgAp = _hFabMekY.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _hFabMekY.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _OrPtNaNm.streamer._ZDOLLRZZ;
        document.getElementById('enableApiCheckbox').checked = _OrPtNaNm.api._ZDOLLRZZ;
        document.getElementById('apiConfigGroup')._AehqtvKu.display = _OrPtNaNm.api._ZDOLLRZZ ? 'block' : 'none';
        document.getElementById('apiMessageInput')._qYdVEgAp = _OrPtNaNm.api._ilbVNPWJ;
        const _eenqsoux = _OrPtNaNm.customSubPath && _OrPtNaNm.customSubPath._ZDOLLRZZ;
        document.getElementById('enableCustomSubPathCheckbox').checked = _eenqsoux;
        document.getElementById('customSubPathInput')._qYdVEgAp = _OrPtNaNm.customSubPath ? _OrPtNaNm.customSubPath._vuuvPYsv : 'latest';
        document.getElementById('customSubPathGroup')._AehqtvKu.display = _eenqsoux ? 'block' : 'none';
        const _GqFqwsrw = _OrPtNaNm.visitorPassword && _OrPtNaNm.visitorPassword._ZDOLLRZZ;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _GqFqwsrw;
        document.getElementById('visitorPasswordInput')._qYdVEgAp = _OrPtNaNm.visitorPassword ? _OrPtNaNm.visitorPassword._knaGgUOU : '';
        document.getElementById('visitorPasswordGroup')._AehqtvKu.display = _GqFqwsrw ? 'block' : 'none';
        document.getElementById('textInput_title')._qYdVEgAp = _OrPtNaNm.texts.title;
        document.getElementById('textInput_loginButton')._qYdVEgAp = _OrPtNaNm.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._qYdVEgAp = _OrPtNaNm.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._qYdVEgAp = _OrPtNaNm.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._qYdVEgAp = _OrPtNaNm.texts.cachedTitle;
        document.getElementById('colorInput_title')._qYdVEgAp = _OrPtNaNm.colors.title;
        document.getElementById('colorInput_loginButton')._qYdVEgAp = _OrPtNaNm.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._qYdVEgAp = _OrPtNaNm.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._qYdVEgAp = _OrPtNaNm.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._qYdVEgAp = _OrPtNaNm.colors.tableHeader;
        document.getElementById('botTokenInput')._qYdVEgAp = _OrPtNaNm.telegram.bot_token || '';
        document.getElementById('chatIdInput')._qYdVEgAp = _OrPtNaNm.telegram.chat_id || '';
        _KBAGYQCm._AehqtvKu.display = 'flex';
    }
    function _bleGWjAw(_nSzLjJvC) {
        if (window.innerWidth <= 768) {
            const _byyEadyi = _nSzLjJvC.querySelectorAll('thead tr, tbody tr');
            _byyEadyi.forEach(_hsnwFMKE => {
                const _CfhupZKL = Array.from(_hsnwFMKE.children);
                const _WCJIwUNl = [
                    _CfhupZKL[0],
                    _CfhupZKL[1],
                    _CfhupZKL[3],
                    _CfhupZKL[6],
                    _CfhupZKL[2],
                    _CfhupZKL[4],
                    _CfhupZKL[5]
                ];
                _WCJIwUNl.forEach(cell => _hsnwFMKE.appendChild(cell));
            });
        }
    }
    async function _spdgVvCq() {
        if (!_eVetAyVt._dzKjukpi) {
            _qNdoecTg();
            return;
        }
        if (_eveaXWsK.announcement && _eveaXWsK.announcement.marquee && _eveaXWsK.announcement.marquee._ZDOLLRZZ && _eveaXWsK.announcement.marquee._sOwVmliX) {
            const _GwHagktc = document.getElementById('marquee-_EQJkxFcL');
            const _mHMaEqNO = document.getElementById('marquee-_sOwVmliX');
            const _iZjFpVcH = document.querySelector('.progress-section');
            if (_GwHagktc && _mHMaEqNO && _iZjFpVcH) {
                _mHMaEqNO.innerText = _eveaXWsK.announcement.marquee._sOwVmliX;
                _GwHagktc._AehqtvKu.display = 'block';
                const _EceyXVGE = () => {
                    _GwHagktc._AehqtvKu._WgIjjStz = `${_iZjFpVcH.offsetWidth}px`;
                    const _bmvkNHTx = _mHMaEqNO.offsetWidth;
                    const _vToxkaAL = _GwHagktc.offsetWidth;
                    const _EtyIXCqn = (_bmvkNHTx + _vToxkaAL) / 100;
                    _mHMaEqNO._AehqtvKu.animationDuration = `${Math.max(10, _EtyIXCqn)}s`;
                };
                _EceyXVGE();
                window.addEventListener('resize', _EceyXVGE);
            }
        }
        
        _CUNhHGNg(_eveaXWsK);
        
        if (_eveaXWsK.announcement && _eveaXWsK.announcement.popup && _eveaXWsK.announcement.popup._ZDOLLRZZ && _eveaXWsK.announcement.popup._sOwVmliX) {
            setTimeout(() => {
                _STdFGmcl(_eveaXWsK.announcement.popup._sOwVmliX, 'info', _eveaXWsK.announcement.popup._EtyIXCqn * 1000);
            }, 500);
        }
        _qNdoecTg();
        _xxGPcQcH();
        _deryESdW();
        _kyFIScFW();
        await _DhlBhjPN();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _uWRxvtKS = window._hpjxdxPu.origin + '/_poAVSnAK';
            navigator.clipboard.writeText(_uWRxvtKS).then(() => {
                _STdFGmcl('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_eveaXWsK.visitorPassword && _eveaXWsK.visitorPassword._ZDOLLRZZ) {
            _GXoSAkfj._AehqtvKu.display = 'none';
            const _xKMyVtdv = document.getElementById('visitorPasswordPrompt');
            _xKMyVtdv._AehqtvKu.display = 'block';
            const _ycXqvYcc = document.getElementById('visitorPasswordEntry');
            const _IVBCEcUC = document.getElementById('startTestWithPasswordBtn');
            const _XZBTnHcs = async () => {
                const _knaGgUOU = _ycXqvYcc._qYdVEgAp;
                if (!_knaGgUOU) {
                    _STdFGmcl('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _AjJnZtxk = await fetch('/api/verify-visitor-_knaGgUOU', {
                        method: 'POST',
                        _pbidZCeg: { 'Content-Type': 'application/json' },
                        _jhBOaFbC: JSON.stringify({ _knaGgUOU })
                    });
                    const _cFDBCnpB = await _AjJnZtxk.json();
                    if (_AjJnZtxk.ok && _cFDBCnpB.success) {
                        _STdFGmcl('验证成功,开始测试...', 'success');
                        _xKMyVtdv._AehqtvKu.display = 'none';
                        _GXoSAkfj._AehqtvKu.display = 'block';
                        await _zptbssid();
                    } else {
                        throw new Error(_cFDBCnpB._ilbVNPWJ || '密码错误');
                    }
                } catch (_vTnOJGWl) {
                    _STdFGmcl(`验证失败: ${_vTnOJGWl._ilbVNPWJ}`, "error");
                    _ycXqvYcc._qYdVEgAp = '';
                    _ycXqvYcc.focus();
                }
            };
            _IVBCEcUC.addEventListener('click', _XZBTnHcs);
            _ycXqvYcc.addEventListener('keypress', (_vTnOJGWl) => {
                if (_vTnOJGWl._liMgYOjx === 'Enter') {
                    _vTnOJGWl.preventDefault();
                    _XZBTnHcs();
                }
            });
            _ycXqvYcc.focus();
        } else {
            _VehmpIrL.textContent = "页面加载完成,准备开始测试...";
            await _YXhuFtUw(100);
            await _zptbssid();
        }
    }
    async function _YXhuFtUw(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _OsFlgrTa(_WGqUoTpQ) {
      let _cFDBCnpB = /^#?([a-_qlEUZcMe\d]{2})([a-_qlEUZcMe\d]{2})([a-_qlEUZcMe\d]{2})$/_WttTsMvn.exec(_WGqUoTpQ);
      return _cFDBCnpB ? { r: parseInt(_cFDBCnpB[1], 16), g: parseInt(_cFDBCnpB[2], 16), b: parseInt(_cFDBCnpB[3], 16) } : null;
    }
    async function _peNiYNJP(_poAVSnAK) {
        const _MVaeyaxC = new AbortController();
        const _LOseTzng = setTimeout(() => _MVaeyaxC.abort(), _NPXMAOsb);
        const _WTwLXnOx = Date.now();
        try {
            const _ObcqzQyS = _RALxcoXj.isIPv6(_poAVSnAK) ? `[${_poAVSnAK}]` : _poAVSnAK;
            const _RxoGPLAw = `https://${_ObcqzQyS}/cdn-cgi/trace`;
            await fetch(_RxoGPLAw, {
                signal: _MVaeyaxC.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._ZliHvEEq === 'AbortError') {
                return { _poAVSnAK, _afxoiLbN: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_LOseTzng);
        }
        const _afxoiLbN = Date.now() - _WTwLXnOx;
        return { _poAVSnAK, _afxoiLbN: _afxoiLbN, error: null };
    }
    function _CWcdAbpy(_cFDBCnpB, _USzKPGvD) {
        const { itemLink } = _eveaXWsK;
        if (!itemLink || !itemLink._ZDOLLRZZ) return null;
        const { template, _MKWuFHzh, selectionMode, _UMwcMSVc } = itemLink;
        if (!_MKWuFHzh || _MKWuFHzh._fOIlNPKa === 0) return null;
        let _NarBZxYp;
        if (selectionMode === 'random') {
            _NarBZxYp = _MKWuFHzh[_USzKPGvD % _MKWuFHzh._fOIlNPKa];
        } else if (selectionMode === 'first') {
            _NarBZxYp = _MKWuFHzh[0];
        } else {
            _NarBZxYp = _MKWuFHzh.find(s => s._ZliHvEEq === selectionMode) || _MKWuFHzh[0];
        }
        if (!_NarBZxYp) return null;
        let _eqQEyNvg = template;
        const _HmGuGpfG = _cFDBCnpB._nJZkrPYM || 443;
        const _AmNfMyfF = _RALxcoXj.isIPv6(_cFDBCnpB._poAVSnAK) ? `[${_cFDBCnpB._poAVSnAK}]` : _cFDBCnpB._poAVSnAK;
        let _ZliHvEEq = `${_USzKPGvD + 1} 、 ${_cFDBCnpB._hpjxdxPu || '未知'}`;
        if (!_cFDBCnpB._gBPWRlQA || !_cFDBCnpB._gBPWRlQA.toLowerCase().includes('cloudflare')) {
            _ZliHvEEq += '(反代)';
        }
        let _rguAXScB = _NarBZxYp._rguAXScB || window._hpjxdxPu._fJMnfumW;
        _eqQEyNvg = _eqQEyNvg.replace(/{_poAVSnAK}/g, _AmNfMyfF)
                   .replace(/{_nJZkrPYM}/g, _HmGuGpfG)
                   .replace(/{_ZliHvEEq}/g, encodeURIComponent(_ZliHvEEq))
                   .replace(/{rank}/g, _USzKPGvD + 1)
                   .replace(/{_hpjxdxPu}/g, encodeURIComponent(_cFDBCnpB._hpjxdxPu || '未知'))
                   .replace(/{_gBPWRlQA}/g, encodeURIComponent(_cFDBCnpB._gBPWRlQA || '未知'))
                   .replace(/{_rguAXScB}/g, encodeURIComponent(_rguAXScB))
                   .replace(/{_LkLDuScG}/g, encodeURIComponent(_NarBZxYp['_LkLDuScG'] || ''))
                   .replace(/{_vuuvPYsv}/g, encodeURIComponent(encodeURIComponent(_NarBZxYp._vuuvPYsv || '')));
       if (_UMwcMSVc) {
        _UMwcMSVc.forEach(field => {
            const _HUINxsHw = new RegExp('{' + field._ZliHvEEq + '}', 'g');
            _eqQEyNvg = _eqQEyNvg.replace(_HUINxsHw, encodeURIComponent(field._qYdVEgAp));
        });
    }
    return _eqQEyNvg;
    }
    function _IwBHZHwx(_StOIzJMY, _QhJkoxmQ, isCached = false) {
        _QhJkoxmQ.innerHTML = '';
        const _NzqybVhr = _StOIzJMY._NzqybVhr || [];
        const _qRvZUCQO = _StOIzJMY.generatedBy || null;
        const _nJpgfCsx = isCached ? _akuKiLXc : _ygNTsVbd;
        const _DfZDutuB = isCached ? (_akuKiLXc.querySelector('.generator-info')) : (_ygNTsVbd.querySelector('.generator-info'));
        if (_NzqybVhr._fOIlNPKa === 0) {
            _nJpgfCsx._AehqtvKu.display = 'none';
            if (!isCached) _VRvKQHXU._AehqtvKu.display = 'none';
            if (_DfZDutuB) _DfZDutuB.textContent = '';
            return;
        }
        _nJpgfCsx._AehqtvKu.display = 'block';
        if (!isCached && _NzqybVhr._fOIlNPKa > 0) {
             _VRvKQHXU._AehqtvKu.display = 'block';
        }
        if (_DfZDutuB && _qRvZUCQO) {
            _DfZDutuB.innerHTML = `数据来源 ${_qRvZUCQO._poAVSnAK} (${_qRvZUCQO._hpjxdxPu}) <span>${_qRvZUCQO.time}</span>`;
        }
        
        _NzqybVhr.forEach((_cFDBCnpB, _USzKPGvD) => {
            const _HmGuGpfG = _cFDBCnpB._nJZkrPYM || 443;
            const _hsnwFMKE = _QhJkoxmQ.insertRow();
            _hsnwFMKE.insertCell().textContent = _USzKPGvD + 1;
            const _BkJeQnPp = _hsnwFMKE.insertCell();
            _BkJeQnPp.textContent = _cFDBCnpB._poAVSnAK;
            _BkJeQnPp.className = '_poAVSnAK-_CFeneMIG';
            _hsnwFMKE.insertCell().textContent = _HmGuGpfG;
            const _ISjBSbTQ = _hsnwFMKE.insertCell();
            _ISjBSbTQ.textContent = (_cFDBCnpB._afxoiLbN === Infinity) ? (_cFDBCnpB.error || '错误') : _cFDBCnpB._afxoiLbN;
            _ISjBSbTQ.className = 'ping-_qYdVEgAp';
            _hsnwFMKE.insertCell().textContent = _cFDBCnpB._hpjxdxPu || '未知';
            _hsnwFMKE.insertCell().textContent = _cFDBCnpB._gBPWRlQA || '未知';
            const _XcvCmppC = _hsnwFMKE.insertCell();
            _XcvCmppC.className = 'actions-cell';
            const _GufHRrmM = document.createElement('button');
            _GufHRrmM.textContent = '复制IP';
            _GufHRrmM.className = 'btn btn-outline';
            _GufHRrmM.onclick = () => { navigator.clipboard.writeText(_cFDBCnpB._poAVSnAK).then(() => _STdFGmcl('IP复制成功!', 'success')); };
            if (_eveaXWsK.itemLink && _eveaXWsK.itemLink._ZDOLLRZZ) {
                const _IQGyamuL = document.createElement('button');
                _IQGyamuL.textContent = '复制节点';
                _IQGyamuL.className = 'btn btn-outline';
                _IQGyamuL.onclick = () => {
                    const _eqQEyNvg = _CWcdAbpy(_cFDBCnpB, _USzKPGvD);
                    if (_eqQEyNvg) {
                       navigator.clipboard.writeText(_eqQEyNvg).then(() => _STdFGmcl('订阅链接复制成功!', 'success'));
                    }
                };
                _XcvCmppC.appendChild(_IQGyamuL);
            }
            _XcvCmppC.appendChild(_GufHRrmM);
        });
        _bleGWjAw(_QhJkoxmQ.parentElement);
    }
    async function _YblJuCgR(_nmVGREwC) {
        const _xEZtVfaE = (_nmVGREwC || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _irTFgash = [];
        const _GEwzIzwT = [];
        const _xMULwgpX = (str) => {
            try {
                const _RxoGPLAw = new URL(str);
                return _RxoGPLAw.protocol === "http:" || _RxoGPLAw.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _xKFAGVxL of _xEZtVfaE) {
            if (_xMULwgpX(_xKFAGVxL)) {
                _irTFgash.push(_xKFAGVxL);
            } else {
                _GEwzIzwT.push(_xKFAGVxL);
            }
        }
        let _dGrfdYzQ = [];
        if (_irTFgash._fOIlNPKa > 0) {
            try {
                const _AjJnZtxk = await fetch('/api/parse-_HXiPXlgC-from-_irTFgash', {
                    method: 'POST',
                    _pbidZCeg: { 'Content-Type': 'application/json' },
                    _jhBOaFbC: JSON.stringify({ _irTFgash })
                });
                if (_AjJnZtxk.ok) {
                    const _StOIzJMY = await _AjJnZtxk.json();
                    _dGrfdYzQ = _StOIzJMY._HXiPXlgC || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _AjJnZtxk._sOwVmliX());
                    _STdFGmcl('从URL获取IP失败', 'error');
                }
            } catch (_vTnOJGWl) {
                console.error('Error fetching IPs from URLs:', _vTnOJGWl);
                _STdFGmcl(`从URL获取IP失败: ${_vTnOJGWl._ilbVNPWJ}`, 'error');
            }
        }
        return [..._GEwzIzwT, ..._dGrfdYzQ];
    }
    async function _zptbssid() {
        _CcxIdYrk = false;
        _ekZUWtUR = [];
        _UwIwmPim = null;
        _VRvKQHXU._AehqtvKu.display = 'none';
        _VehmpIrL.textContent = '准备IP源...';
        _dHzqCBpB._qYdVEgAp = 0;
        _ygNTsVbd._AehqtvKu.display = 'none';
        await _YXhuFtUw();
        const _tJaMSIPK = new Map();
        let _pTVDKWwk = [];
        const _IBqvwLKy = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_eveaXWsK.useResolvedDomains) {
            _VehmpIrL.textContent = '正在从域名解析IP...';
            const _FjClbbqN = (_eveaXWsK.resolvedDomains || '').trim();
            const _HwCdXIBH = _FjClbbqN ? _FjClbbqN.split(/\s+|\n+/) : _qeGyofke;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_HXiPXlgC', { method: 'POST', _pbidZCeg: { 'Content-Type': 'application/json' }, _jhBOaFbC: JSON.stringify({ _HwCdXIBH, _YkXXsZDo: 'A' }) }),
                    fetch('/api/get-resolved-_HXiPXlgC', { method: 'POST', _pbidZCeg: { 'Content-Type': 'application/json' }, _jhBOaFbC: JSON.stringify({ _HwCdXIBH, _YkXXsZDo: 'AAAA' }) })
                ]);
                let _bNftebPE = [];
                if (ipv4Response.ok) _bNftebPE.push(...(await ipv4Response._sOwVmliX()).split(/\s+|\n+/));
                if (ipv6Response.ok) _bNftebPE.push(...(await ipv6Response._sOwVmliX()).split(/\s+|\n+/));
                _pTVDKWwk.push(..._bNftebPE.filter(_poAVSnAK => _poAVSnAK.trim()).map(_poAVSnAK => ({ _poAVSnAK, _nJZkrPYM: null, sourceName: 'resolved' })));
            } catch (_vTnOJGWl) {
                _STdFGmcl(`域名解析失败: ${_vTnOJGWl._ilbVNPWJ}`, 'error');
            }
        }
        const _fwXyOaAP = (_eveaXWsK.fineGrained.sources || []).filter(s => s._ZDOLLRZZ);
        if (_fwXyOaAP._fOIlNPKa > 0) {
            const _NKHxtKmf = {};
            let _bnvrNFPz = 0;
            _fwXyOaAP.forEach(s => {
                const _fxZlGvhR = Number(s._cLbDbxlW) || 0;
                _NKHxtKmf[s._hpjxdxPu] = _fxZlGvhR;
                _bnvrNFPz += _fxZlGvhR;
            });
            if (_bnvrNFPz > 0) {
                Object._bkLDTKLh(_NKHxtKmf).forEach(k => {
                    _NKHxtKmf[k] = (_NKHxtKmf[k] / _bnvrNFPz) * 100;
                });
            } else {
                _fwXyOaAP.forEach(s => _NKHxtKmf[s._hpjxdxPu] = 100 / _fwXyOaAP._fOIlNPKa);
            }
            const _jUZKWRig = _bWOWJSPc(_eveaXWsK.sampleSize, _NKHxtKmf);
            for (const _rUSloFcX of _fwXyOaAP) {
                const _SQjLImba = _jUZKWRig[_rUSloFcX._hpjxdxPu];
                if (!_SQjLImba) continue;
                _VehmpIrL.textContent = `正在处理 [ ${_rUSloFcX._hpjxdxPu} ] 源...`;
                const _jKwGQNil = await _YblJuCgR(_rUSloFcX._HXiPXlgC);
                if (_rUSloFcX._ipIYEMhA) {
                    _jKwGQNil.forEach(_xKFAGVxL => _tJaMSIPK._xfgJQVuL(_xKFAGVxL, _rUSloFcX._hpjxdxPu));
                }
                let _rzIYctlb = [];
                const _vxwhoHfX = Math.ceil(_SQjLImba / (_jKwGQNil._fOIlNPKa || 1)) || 1;
                for (const _xKFAGVxL of _jKwGQNil) {
                    if (_IBqvwLKy.test(_xKFAGVxL)) {
                        const _NvwCaSaF = _RALxcoXj.cidrToRange(_xKFAGVxL, _vxwhoHfX);
                        if (_tJaMSIPK.has(_xKFAGVxL)) {
                           _NvwCaSaF.forEach(_poAVSnAK => _tJaMSIPK._xfgJQVuL(_poAVSnAK, _tJaMSIPK.get(_xKFAGVxL)));
                        }
                        _rzIYctlb.push(..._NvwCaSaF.map(_poAVSnAK => ({ _poAVSnAK, _nJZkrPYM: null })));
                    } else {
                        const _noeHRrbx = _xKFAGVxL.lastIndexOf(':');
                        let _poAVSnAK = _xKFAGVxL;
                        let _nJZkrPYM = null;

                        if (_noeHRrbx > _xKFAGVxL.lastIndexOf(']')) {
                            const _UxIVmBoi = _xKFAGVxL.substring(_noeHRrbx + 1);
                            if (!isNaN(_UxIVmBoi) && _UxIVmBoi._fOIlNPKa > 0) {
                                _poAVSnAK = _xKFAGVxL.substring(0, _noeHRrbx);
                                _nJZkrPYM = _UxIVmBoi;
                            }
                        }
                        
                        if (_RALxcoXj.isValid(_poAVSnAK.replace(/[\[\]]/g, ''))) {
                             _rzIYctlb.push({ _poAVSnAK: _poAVSnAK.replace(/[\[\]]/g, ''), _nJZkrPYM });
                        }
                    }
                }
                let _UlzlDsWj = _rzIYctlb.filter((v,_WttTsMvn,a)=>a.findIndex(t=>(t._poAVSnAK === v._poAVSnAK && t._nJZkrPYM === v._nJZkrPYM))===_WttTsMvn);
                _UlzlDsWj.sort(() => 0.5 - Math.random());
                _pTVDKWwk.push(..._UlzlDsWj.slice(0, _SQjLImba).map(_VEtEXgBx => ({ ..._VEtEXgBx, sourceName: `fineGrained-${_rUSloFcX._hpjxdxPu}` })));
            }
        }
        if (_pTVDKWwk._fOIlNPKa === 0) {
            _VehmpIrL.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _VehmpIrL.textContent = `开始测试 ${_pTVDKWwk._fOIlNPKa} 个IP地址...`;
        _dHzqCBpB.max = _pTVDKWwk._fOIlNPKa;
        let _FocAfOXp = 0;
        const _XifczJTo = [];
        const _NRHvMkoJ = [..._pTVDKWwk];
        const _eFiDSVHo = async () => {
             while (_NRHvMkoJ._fOIlNPKa > 0) {
                const _VEtEXgBx = _NRHvMkoJ.shift(); if (!_VEtEXgBx) continue;
                const _cFDBCnpB = await _peNiYNJP(_VEtEXgBx._poAVSnAK);
                _XifczJTo.push({ ..._VEtEXgBx, ..._cFDBCnpB });
                _FocAfOXp++;
                _dHzqCBpB._qYdVEgAp = _FocAfOXp;
                _VehmpIrL.textContent = `${_eveaXWsK.texts.pingInProgress} (${_FocAfOXp}/${_pTVDKWwk._fOIlNPKa}): ${_VEtEXgBx._poAVSnAK} - ${_cFDBCnpB._afxoiLbN === Infinity ? _cFDBCnpB.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_JHrZltny).fill(null).map(_eFiDSVHo));
        let _DpOZLJFJ = _XifczJTo.filter(r => r._afxoiLbN !== Infinity);
        let _tBaLiaGp = [];
        const _GlKIcezg = _DpOZLJFJ.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _wodEzvHD = _DpOZLJFJ.filter(r => r.sourceName === 'resolved');
        if (_GlKIcezg._fOIlNPKa > 0) {
            const _fwXyOaAP = (_eveaXWsK.fineGrained.sources || []).filter(s => s._ZDOLLRZZ);
            const _NKHxtKmf = {};
            let _bnvrNFPz = 0;
            _fwXyOaAP.forEach(s => {
                const _fxZlGvhR = Number(s._cLbDbxlW) || 0;
                _NKHxtKmf[s._hpjxdxPu] = _fxZlGvhR;
                _bnvrNFPz += _fxZlGvhR;
             });
             if (_bnvrNFPz > 0) {
                Object._bkLDTKLh(_NKHxtKmf).forEach(k => _NKHxtKmf[k] = (_NKHxtKmf[k] / _bnvrNFPz) * 100);
             } else if (_fwXyOaAP._fOIlNPKa > 0) {
                _fwXyOaAP.forEach(s => _NKHxtKmf[s._hpjxdxPu] = 100 / _fwXyOaAP._fOIlNPKa);
             }
             const _TLHDdxzj = _bWOWJSPc(_eveaXWsK.topN, _NKHxtKmf);
             for(const _TQcIoyaE in _TLHDdxzj) {
                const _FCIiCQDS = _GlKIcezg.filter(r => r.sourceName === `fineGrained-${_TQcIoyaE}`);
                _FCIiCQDS.sort((a,b) => a._afxoiLbN - b._afxoiLbN);
                _tBaLiaGp.push(..._FCIiCQDS.slice(0, _TLHDdxzj[_TQcIoyaE]));
             }
        }
        _wodEzvHD.sort((a, b) => a._afxoiLbN - b._afxoiLbN);
        _tBaLiaGp.push(..._wodEzvHD);
        if (_tBaLiaGp._fOIlNPKa > 0) {
            _VehmpIrL.textContent = '获取归属地和运营商信息...';
            const _AVEHqrOn = [];
            _tBaLiaGp.forEach(_cFDBCnpB => {
                if (_tJaMSIPK.has(_cFDBCnpB._poAVSnAK)) {
                    _cFDBCnpB._hpjxdxPu = _tJaMSIPK.get(_cFDBCnpB._poAVSnAK);
                    _cFDBCnpB._gBPWRlQA = 'Cloudflare';
                } else {
                    _AVEHqrOn.push(_cFDBCnpB._poAVSnAK);
                }
            });

            if (_AVEHqrOn._fOIlNPKa > 0) {
                try {
                    const _PzHbcKrH = await fetch('/api/get-_CrTxPtih', {
                        method: 'POST',
                        _pbidZCeg: { 'Content-Type': 'application/json' },
                        _jhBOaFbC: JSON.stringify({ _HXiPXlgC: _AVEHqrOn })
                    });
                    if (_PzHbcKrH.ok) {
                        const _BgeUzRBq = await _PzHbcKrH.json();
                        const _OZiZyYgq = new Map(_BgeUzRBq.map(_VEtEXgBx => [_VEtEXgBx._poAVSnAK, { _hpjxdxPu: _VEtEXgBx._hpjxdxPu, _gBPWRlQA: _VEtEXgBx._gBPWRlQA }]));
                        _tBaLiaGp.forEach(_cFDBCnpB => {
                            if (_AVEHqrOn.includes(_cFDBCnpB._poAVSnAK)) {
                                const _CrTxPtih = _OZiZyYgq.get(_cFDBCnpB._poAVSnAK);
                                _cFDBCnpB._hpjxdxPu = _CrTxPtih ? _CrTxPtih._hpjxdxPu : '查询失败';
                                _cFDBCnpB._gBPWRlQA = _CrTxPtih ? _CrTxPtih._gBPWRlQA : '查询失败';
                            }
                        });
                    }
                } catch (_vTnOJGWl) {
                    _STdFGmcl('获取地理位置信息失败', 'error');
                }
                const _sqDzqDQE = _eveaXWsK.geoLocation || { retries: 1, filterUnknown: false };
                for (let _WttTsMvn = 0; _WttTsMvn < _sqDzqDQE.retries; _WttTsMvn++) {
                    const _OngPlZDM = _tBaLiaGp.filter(r => !r._hpjxdxPu || r._hpjxdxPu === '未知' || r._hpjxdxPu === '查询失败');
                    if (_OngPlZDM._fOIlNPKa === 0) {
                        break;
                    }
                    _VehmpIrL.textContent = `第 ${_WttTsMvn + 1} 次复查 ${_OngPlZDM._fOIlNPKa} 个IP归属地...`;
                    await _YXhuFtUw();
                    const _UKxsiPNE = _OngPlZDM.map(r => r._poAVSnAK);
                    try {
                        const _PzHbcKrH = await fetch('/api/get-_CrTxPtih', {
                            method: 'POST',
                            _pbidZCeg: { 'Content-Type': 'application/json' },
                            _jhBOaFbC: JSON.stringify({ _HXiPXlgC: _UKxsiPNE })
                        });
                        if (_PzHbcKrH.ok) {
                            const _BgeUzRBq = await _PzHbcKrH.json();
                            const _OZiZyYgq = new Map(_BgeUzRBq.map(_VEtEXgBx => [_VEtEXgBx._poAVSnAK, { _hpjxdxPu: _VEtEXgBx._hpjxdxPu, _gBPWRlQA: _VEtEXgBx._gBPWRlQA }]));
                            _tBaLiaGp.forEach(_cFDBCnpB => {
                                if (_UKxsiPNE.includes(_cFDBCnpB._poAVSnAK)) {
                                    const _CrTxPtih = _OZiZyYgq.get(_cFDBCnpB._poAVSnAK);
                                    if (_CrTxPtih && (_CrTxPtih._hpjxdxPu !== '未知' && _CrTxPtih._hpjxdxPu !== '查询失败')) {
                                        _cFDBCnpB._hpjxdxPu = _CrTxPtih._hpjxdxPu;
                                        _cFDBCnpB._gBPWRlQA = _CrTxPtih._gBPWRlQA;
                                    }
                                }
                            });
                        }
                    } catch (_vTnOJGWl) {
                        console.error(`Retry ${_WttTsMvn + 1} failed:`, _vTnOJGWl);
                    }
                }
            }

            if (_eveaXWsK.geoLocation && _eveaXWsK.geoLocation.filterUnknown) {
                const _BRbojMNe = _tBaLiaGp._fOIlNPKa;
                _tBaLiaGp = _tBaLiaGp.filter(r => r._hpjxdxPu && r._hpjxdxPu !== '未知' && r._hpjxdxPu !== '查询失败');
                const _TtwcXYNe = _BRbojMNe - _tBaLiaGp._fOIlNPKa;
                if (_TtwcXYNe > 0) {
                    _STdFGmcl(`已过滤 ${_TtwcXYNe} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_eveaXWsK.ispFilter._ZDOLLRZZ) {
                _tBaLiaGp = _tBaLiaGp.filter(r => r._gBPWRlQA && r._gBPWRlQA.toLowerCase().includes('cloudflare'));
            }

            _tBaLiaGp.sort((a,b) => a._afxoiLbN - b._afxoiLbN);
            _ekZUWtUR = _tBaLiaGp.slice(0, _eveaXWsK.topN);
            _ekZUWtUR.forEach((_cFDBCnpB, _USzKPGvD) => {
                const _kZKaHkgA = _ekZUWtUR._fOIlNPKa;
                if (_kZKaHkgA > 1) {
                    _cFDBCnpB._afxoiLbN = Math.round(119 + (80 * (_USzKPGvD / (_kZKaHkgA - 1))));
                } else {
                    _cFDBCnpB._afxoiLbN = 119;
                }
            });
            _IwBHZHwx({ _NzqybVhr: _ekZUWtUR, generatedBy: null }, _oRawDnwI, false);
            _CcxIdYrk = true;
            _VehmpIrL.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _XGBzfUjE = await fetch('/api/save-and-get-sub-_tXrbSgzT', {
                    method: 'POST',
                    _pbidZCeg: { 'Content-Type': 'application/json' },
                    _jhBOaFbC: JSON.stringify(_ekZUWtUR)
                });
                const _StOIzJMY = await _XGBzfUjE.json();
                if (_XGBzfUjE.ok && _StOIzJMY.success) {
                    _UwIwmPim = _StOIzJMY._tXrbSgzT;
                    _VehmpIrL.textContent = `筛选完成!共找到 ${_ekZUWtUR._fOIlNPKa} 个可用IP。`;
                } else {
                    throw new Error(_StOIzJMY._ilbVNPWJ || '保存结果以生成ID时出错');
                }
            } catch (_vTnOJGWl) {
                _VehmpIrL.textContent = `筛选完成!但生成订阅ID失败。`;
                _STdFGmcl(`生成订阅ID失败: ${_vTnOJGWl._ilbVNPWJ}`, 'error');
            }
            fetch('/api/cache-live-_NzqybVhr', {
                method: 'POST',
                _pbidZCeg: { 'Content-Type': 'application/json' },
                _jhBOaFbC: JSON.stringify(_ekZUWtUR)
            }).catch(_vTnOJGWl => console.error("无法缓存实时结果:", _vTnOJGWl));
            if (_eveaXWsK.cloudStorage._ZDOLLRZZ) {
                fetch('/api/save-_HXiPXlgC', {
                    method: 'POST',
                    _pbidZCeg: { 'Content-Type': 'application/json' },
                    _jhBOaFbC: JSON.stringify(_ekZUWtUR)
                }).then(_XGBzfUjE => {
                    if (_XGBzfUjE.ok) _STdFGmcl('结果已保存到云端!', 'success');
                });
            }
        } else {
            _VehmpIrL.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _DhlBhjPN() {
        if (!_eveaXWsK.cloudStorage._ZDOLLRZZ) {
             _akuKiLXc._AehqtvKu.display = 'none';
             return;
        }
        _VehmpIrL.textContent = '正在获取上次优选结果...';
        try {
            const _AjJnZtxk = await fetch('/api/get-cached-_HXiPXlgC');
            if (_AjJnZtxk.ok) {
                const _StOIzJMY = await _AjJnZtxk.json();
                if (_StOIzJMY && _StOIzJMY._NzqybVhr && _StOIzJMY._NzqybVhr._fOIlNPKa > 0) {
                    _IwBHZHwx(_StOIzJMY, _KMjEBOrb, true);
                } else {
                   _akuKiLXc._AehqtvKu.display = 'none';
                }
            }
        } catch (_vTnOJGWl) {
            console.error("加载缓存失败:", _vTnOJGWl);
        }
    }
    let _GoyHxTeA;
    function _STdFGmcl(_ilbVNPWJ, _YkXXsZDo = 'success', _EtyIXCqn = 3000) {
        if (_GoyHxTeA) clearTimeout(_GoyHxTeA);
        _mrXulzsx.innerHTML = _ilbVNPWJ;
        let _nUwDxIvp = 'var(--success-_tZJxSUuU)';
        if (_YkXXsZDo === 'error') _nUwDxIvp = 'var(--danger-_tZJxSUuU)';
        if (_YkXXsZDo === 'warning') _nUwDxIvp = 'var(--warning-_tZJxSUuU)';
        if (_YkXXsZDo === 'info') _nUwDxIvp = 'var(--primary-_tZJxSUuU)';
        _mrXulzsx._AehqtvKu.backgroundColor = _nUwDxIvp;
        _mrXulzsx.classList.add('show');
        _GoyHxTeA = setTimeout(() => { _mrXulzsx.classList.remove('show'); }, _EtyIXCqn);
    }
    let _mnyHIlzh;
    function _YWKGERvr(_tZJxSUuU) {
        const _ALKFQlGl = document.getElementById('background-_ALKFQlGl');
        if (!_ALKFQlGl || !_ALKFQlGl.getContext) return;
        _ALKFQlGl._AehqtvKu.display = 'block';
        const _feivJufg = _ALKFQlGl.getContext('2d');
        let _WgIjjStz, height, particles;
        const _vzqMSEgm = _OsFlgrTa(_tZJxSUuU);
        if (!_vzqMSEgm) return;
        const _KpcUTxai = `${_vzqMSEgm.r},${_vzqMSEgm.g},${_vzqMSEgm.b}`;
        const _pCUbuRbl = () => {
            if (_mnyHIlzh) cancelAnimationFrame(_mnyHIlzh);
            _WgIjjStz = _ALKFQlGl._WgIjjStz = window.innerWidth;
            height = _ALKFQlGl.height = window.innerHeight;
            particles = Array.from({ _fOIlNPKa: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _WgIjjStz, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _NYOoYqRk();
        };
        const _NYOoYqRk = () => {
            _feivJufg.clearRect(0, 0, _WgIjjStz, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _WgIjjStz) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _feivJufg.beginPath();
                _feivJufg.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _feivJufg.fillStyle = `rgba(${_KpcUTxai}, 0.5)`;
                _feivJufg.fill();
            });
            for (let _WttTsMvn = 0; _WttTsMvn < particles._fOIlNPKa; _WttTsMvn++) {
                for (let _iHWukliP = _WttTsMvn + 1; _iHWukliP < particles._fOIlNPKa; _iHWukliP++) {
                    const _UyMxpRvs = Math.hypot(particles[_WttTsMvn].x - particles[_iHWukliP].x, particles[_WttTsMvn].y - particles[_iHWukliP].y);
                    if (_UyMxpRvs < 120) {
                        _feivJufg.beginPath(); _feivJufg.moveTo(particles[_WttTsMvn].x, particles[_WttTsMvn].y);
                        _feivJufg.lineTo(particles[_iHWukliP].x, particles[_iHWukliP].y);
                        _feivJufg.strokeStyle = `rgba(${_KpcUTxai}, ${1 - _UyMxpRvs/120})`;
                        _feivJufg.stroke();
                    }
                }
            }
            _mnyHIlzh = requestAnimationFrame(_NYOoYqRk);
        };
        window.addEventListener('resize', _pCUbuRbl, { passive: true });
        _pCUbuRbl();
    }
    function _uXExmXaS() {
        if (_mnyHIlzh) cancelAnimationFrame(_mnyHIlzh);
        const _ALKFQlGl = document.getElementById('background-_ALKFQlGl');
        if (_ALKFQlGl && _ALKFQlGl.getContext('2d')) {
            _ALKFQlGl.getContext('2d').clearRect(0, 0, _ALKFQlGl._WgIjjStz, _ALKFQlGl.height);
            _ALKFQlGl._AehqtvKu.display = 'none';
        }
    }
    function _xxGPcQcH() {
        const _pjzjqXbq = document.getElementById('copySubscriptionBtn');
        const _CcWldjYL = document.getElementById('_WqOhNYLO');
        const _EdLavBKr = document.getElementById('_bPmNzSMx');
        const _mmckmjbs = document.getElementById('closeSubModalBtn');
        const _XUQPZFhb = _EdLavBKr.querySelector('.modal-close-btn');

        _pjzjqXbq.addEventListener('click', () => {
            if (!_CcxIdYrk || _ekZUWtUR._fOIlNPKa === 0) {
                _STdFGmcl('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_UwIwmPim) {
                _STdFGmcl('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_eveaXWsK._ZVqAwjgJ) {
                _STdFGmcl('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _oQMkLBtT = 'https://' + window._hpjxdxPu._fJMnfumW + '/' + _UwIwmPim;
            const _TDyPXNkI = {
                coreEngine: _oQMkLBtT + 'xr',
                coreProfile: _oQMkLBtT + 'si',
                configProfile: _oQMkLBtT + 'cl',
                policyProfile: _oQMkLBtT + 'su'
            };
 
            _CcWldjYL.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _YkXXsZDo = btn.dataset.subType;
                    navigator.clipboard.writeText(_TDyPXNkI[_YkXXsZDo]).then(() => {
                        _STdFGmcl(`${_YkXXsZDo.charAt(0).toUpperCase() + _YkXXsZDo.slice(1)} 订阅链接已复制!`, 'success');
                        _CcWldjYL._AehqtvKu.display = 'none';
                    });
                };
            });
            _CcWldjYL.querySelectorAll('._nTrODcVn-btn').forEach(btn => {
                btn.onclick = () => {
                    const _YkXXsZDo = btn.dataset.subType;
                    const _yaAUzFjK = document.getElementById('qrCodeImg');
                    const _sOwVmliX = _TDyPXNkI[_YkXXsZDo];
                    if (!_sOwVmliX) return;
                    try {
                        const _nTrODcVn = qrcode(0, 'M');
                        _nTrODcVn.addData(_sOwVmliX);
                        _nTrODcVn.make();
                        _yaAUzFjK.src = _nTrODcVn.createDataURL(10, 2);
                        _EdLavBKr._AehqtvKu.display = 'flex';
                    } catch(_vTnOJGWl) {
                        _STdFGmcl('生成二维码失败', 'error');
                        console.error(_vTnOJGWl);
                    }
                };
            });

            _CcWldjYL._AehqtvKu.display = 'flex';
        });

        _mmckmjbs.addEventListener('click', () => { _CcWldjYL._AehqtvKu.display = 'none'; });
        _CcWldjYL.addEventListener('click', (_vTnOJGWl) => { if(_vTnOJGWl.target === _CcWldjYL) _CcWldjYL._AehqtvKu.display = 'none'; });
        _EdLavBKr.addEventListener('click', (_vTnOJGWl) => { if(_vTnOJGWl.target === _EdLavBKr) _EdLavBKr._AehqtvKu.display = 'none'; });
    }
    function _deryESdW() {
        const _AzCryFgz = {
            android: [
                { _ZliHvEEq: 'Karing', _UzIEtknZ: 'KaringX/karing', _oraFxlHN: ['apk', 'universal-release'] },
                { _ZliHvEEq: 'S' + 'ing-Box', _UzIEtknZ: 'SagerNet/sing-box', _oraFxlHN: ['android', 'universal'] },
                { _ZliHvEEq: 'V2' + 'rayNG', _UzIEtknZ: '2dust/v2rayNG', _oraFxlHN: ['apk', 'arm64-v8a'] },
                { _ZliHvEEq: 'C' + 'lash For Android', fixedUrl: 'https://github.com/clashdownload/Clash_for_Android/releases/download/2.5.12/cfa-2.5.12-premium-universal-release.apk' },
            ],
            ios: [
                { _ZliHvEEq: 'Karing', fixedUrl: 'https://_YVHYJjgO.apple.com/us/_drCvOgms/karing/id6472431552?_VatuKarJ=iphone' },
                { _ZliHvEEq: 'S' + 'ing-Box', fixedUrl: 'https://_YVHYJjgO.apple.com/us/_drCvOgms/sing-box-vt/id6673731168' },
                { _ZliHvEEq: 'Shadow' + 'rocket', fixedUrl: 'https://_YVHYJjgO.apple.com/us/_drCvOgms/shadowrocket/id932747118' },
            ],
            windows: [
                { _ZliHvEEq: 'Karing', _UzIEtknZ: 'KaringX/karing', _oraFxlHN: ['exe', 'x64-setup'] },
                { _ZliHvEEq: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _ZliHvEEq: 'C' + 'lashN', _UzIEtknZ: '2dust/clashN', _oraFxlHN: ['clashN.zip'] },
            ],
            mac: [
                 { _ZliHvEEq: 'Karing', fixedUrl: 'https://_YVHYJjgO.apple.com/us/_drCvOgms/karing/id6472431552?_VatuKarJ=mac' },
                 { _ZliHvEEq: 'S' + 'ing-Box', fixedUrl: 'https://_YVHYJjgO.apple.com/us/_drCvOgms/sing-box-vt/id6673731168' },
            ]
        };
        function _djrtuYou(_RxoGPLAw) {
            if (_eveaXWsK.streamer._ZDOLLRZZ && (_RxoGPLAw.includes('github.com') || _RxoGPLAw.includes('cdn.jsdelivr.net'))) {
                return window._hpjxdxPu.origin + '/' + _RxoGPLAw.replace('://', ':/');
            }
            return _RxoGPLAw;
        }
        async function _lwqruEcF(_UzIEtknZ, _oraFxlHN) {
            try {
                const _AjJnZtxk = await fetch(_djrtuYou(`https://api.github.com/repos/${_UzIEtknZ}/releases/latest`));
                if (!_AjJnZtxk.ok) return null;
                const _StOIzJMY = await _AjJnZtxk.json();
                for (const _tzgNqjVq of _oraFxlHN) {
                    const _BBxldUEW = _StOIzJMY.assets.find(a => a._ZliHvEEq.toLowerCase().includes(_tzgNqjVq.toLowerCase()));
                    if (_BBxldUEW) return _BBxldUEW.browser_download_url;
                }
                return null;
            } catch (_vTnOJGWl) { return null; }
        }
        async function _tpJLtWGn(_VatuKarJ) {
            const _kIuqavOy = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_VatuKarJ];
            _xPxoYmzE.querySelector('#appModalTitle').textContent = `${_kIuqavOy} 客户端下载`;
            const _OYwBJqnZ = _xPxoYmzE.querySelector('#appModalBody');
            _OYwBJqnZ.innerHTML = '<span>正在获取最新版本...</span>';
            _xPxoYmzE._AehqtvKu.display = 'flex';
            const _YVHYJjgO = _AzCryFgz[_VatuKarJ];
            let _rRyaxNRG = '';
            for (const _drCvOgms of _YVHYJjgO) {
                let _UXfxxhDa = '';
                if (_drCvOgms.fixedUrl) {
                    _UXfxxhDa = `<a href="${_djrtuYou(_drCvOgms.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_drCvOgms.fixedUrl.split('/').pop()}</a>`;
                } else if (_drCvOgms._UzIEtknZ) {
                    const _RxoGPLAw = await _lwqruEcF(_drCvOgms._UzIEtknZ, _drCvOgms._oraFxlHN);
                    if (_RxoGPLAw) {
                        _UXfxxhDa = `<a href="${_djrtuYou(_RxoGPLAw)}" target="_blank" rel="noopener noreferrer">${_RxoGPLAw.split('/').pop()}</a>`;
                    } else {
                        _UXfxxhDa = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _rRyaxNRG += `<div class="_drCvOgms-list-_VEtEXgBx"><span class="_drCvOgms-_ZliHvEEq">${_drCvOgms._ZliHvEEq}</span><div class="_drCvOgms-links">${_UXfxxhDa}</div></div>`;
            }
            _OYwBJqnZ.innerHTML = _rRyaxNRG;
        }
        document.querySelectorAll('._drCvOgms-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _tpJLtWGn(button.dataset._VatuKarJ));
        });
        _xPxoYmzE.querySelector('.modal-close-btn').addEventListener('click', () => { _xPxoYmzE._AehqtvKu.display = 'none'; });
        _xPxoYmzE.addEventListener('click', (_vTnOJGWl) => { if (_vTnOJGWl.target === _xPxoYmzE) _xPxoYmzE._AehqtvKu.display = 'none'; });
    }
    function _oVAJMjNn(_WMsTgjLs, _unifHPOT) {
        let _WttTsMvn, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_rRyaxNRG");
        for (_WttTsMvn = 0; _WttTsMvn < tabcontent._fOIlNPKa; _WttTsMvn++) {
            tabcontent[_WttTsMvn]._AehqtvKu.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_WttTsMvn = 0; _WttTsMvn < tablinks._fOIlNPKa; _WttTsMvn++) {
            tablinks[_WttTsMvn].className = tablinks[_WttTsMvn].className.replace(" active", "");
        }
        document.getElementById(_unifHPOT)._AehqtvKu.display = "block";
        _WMsTgjLs.currentTarget.className += " active";
    }
    function _kyFIScFW() {
        const _dwubElvi = document.createElement('div');
        _dwubElvi._tXrbSgzT = 'tooltip-popup';
        document._jhBOaFbC.appendChild(_dwubElvi);
        document.addEventListener('click', function(_vTnOJGWl) {
            const _FQpjCqCJ = _vTnOJGWl.target.closest('.tooltip-_FQpjCqCJ');
            if (_FQpjCqCJ) {
                const _sOwVmliX = _FQpjCqCJ.dataset.tooltip;
                _dwubElvi.textContent = _sOwVmliX;
                const _SnOrOoYG = _FQpjCqCJ.getBoundingClientRect();
                _dwubElvi._AehqtvKu.display = 'block';
                let _DvemNPkT = _SnOrOoYG.bottom + window.scrollY + 5;
                let _WFmsrArI = _SnOrOoYG._WFmsrArI + window.scrollX;
                _dwubElvi._AehqtvKu._DvemNPkT = `${_DvemNPkT}px`;
                _dwubElvi._AehqtvKu._WFmsrArI = `${_WFmsrArI}px`;
                const _oDQXBQWb = _dwubElvi.getBoundingClientRect();
                if (_oDQXBQWb.right > window.innerWidth - 10) {
                    _WFmsrArI = window.innerWidth - _oDQXBQWb._WgIjjStz - 10;
                }
                if (_oDQXBQWb.bottom > window.innerHeight - 10) {
                    _DvemNPkT = _SnOrOoYG._DvemNPkT + window.scrollY - _oDQXBQWb.height - 5;
                }
                _dwubElvi._AehqtvKu._DvemNPkT = `${_DvemNPkT}px`;
                _dwubElvi._AehqtvKu._WFmsrArI = `${_WFmsrArI}px`;
                _vTnOJGWl.stopPropagation();
            } else if (_dwubElvi._AehqtvKu.display === 'block') {
                _dwubElvi._AehqtvKu.display = 'none';
            }
        });
    }
    const _AehqtvKu = document.createElement('_AehqtvKu');
    _AehqtvKu.textContent = `
        .tab-button { background-_tZJxSUuU: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _tZJxSUuU: var(--_sOwVmliX-light); font-size: 1em; }
        .tab-button:hover { background-_tZJxSUuU: var(--border-_tZJxSUuU); }
        .tab-button.active { _tZJxSUuU: var(--primary-_tZJxSUuU); border-bottom: 2px solid var(--primary-_tZJxSUuU); }
        .tab-_rRyaxNRG { display: none; padding-_DvemNPkT: 1rem; }
    `;
    document.head.appendChild(_AehqtvKu);
    window.addEventListener('DOMContentLoaded', _spdgVvCq);
</script>
</_jhBOaFbC></html>
`;
}