mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 09:15:50 +00:00
release: v2.2.3 [2026-05-29 13:07:39]
### 新功能 - Function Call 填表开关下方新增公益站风险提示横幅:部分公益站会屏蔽 tools 参数,请确认支持情况避免被意外封禁 ### 修复 - **Function Call 填表**: - 修复 ST 代理以 HTTP 200 + error body 形式返回错误、导致降级重试机制从未触发的问题 - 修复思考模式模型(如 DeepSeek v4-flash)因 tool_choice 不兼容返回 Bad Request 后正确降级并重试 - 重试时自动追加强制调用指令,防止思考模型绕过工具直接输出文本造成无效二次开销 - **超级记忆 / 翰林院**: - 修复 `getRagSettings()` 读写顶层路径而非嵌套路径,导致打开超级记忆面板后向量化、归档等开关在重载时被全默认值覆盖的问题 - 修复自动归档失效问题 - 修复归档管理器在同一事件中被三次触发的回归问题 - 修复翰林院设置旧版迁移逻辑异常
This commit is contained in:
16
core/api.js
16
core/api.js
@@ -985,7 +985,11 @@ export async function callAIForTools(messages, tool, options = {}) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const buildFCBody = (withToolChoice, overrideMessages) => ({
|
// deepseek.com 域名或模型名含 deepseek 时,第一次调用主动关闭思考模式,
|
||||||
|
// 让 tool_choice 强制走 Function Call(思考模式下 tool_choice 会报错/失败)
|
||||||
|
const isDeepSeek = /deepseek/i.test(finalOptions.apiUrl || '') || /deepseek/i.test(finalOptions.model || '');
|
||||||
|
|
||||||
|
const buildFCBody = (withToolChoice, overrideMessages, extraParams = {}) => ({
|
||||||
chat_completion_source: 'openai',
|
chat_completion_source: 'openai',
|
||||||
reverse_proxy: finalOptions.apiUrl,
|
reverse_proxy: finalOptions.apiUrl,
|
||||||
proxy_password: finalOptions.apiKey,
|
proxy_password: finalOptions.apiKey,
|
||||||
@@ -995,15 +999,16 @@ export async function callAIForTools(messages, tool, options = {}) {
|
|||||||
temperature: finalOptions.temperature ?? 1,
|
temperature: finalOptions.temperature ?? 1,
|
||||||
stream: false,
|
stream: false,
|
||||||
...(finalOptions.customParams || {}),
|
...(finalOptions.customParams || {}),
|
||||||
|
...extraParams,
|
||||||
tools: [tool],
|
tools: [tool],
|
||||||
...(withToolChoice ? { tool_choice: { type: 'function', function: { name: tool.function.name } } } : {}),
|
...(withToolChoice ? { tool_choice: { type: 'function', function: { name: tool.function.name } } } : {}),
|
||||||
});
|
});
|
||||||
|
|
||||||
const doFCRequest = async (withToolChoice, overrideMessages) => {
|
const doFCRequest = async (withToolChoice, overrideMessages, extraParams) => {
|
||||||
const response = await fetch('/api/backends/chat-completions/generate', {
|
const response = await fetch('/api/backends/chat-completions/generate', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { ...getRequestHeaders(), 'Content-Type': 'application/json' },
|
headers: { ...getRequestHeaders(), 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify(buildFCBody(withToolChoice, overrideMessages)),
|
body: JSON.stringify(buildFCBody(withToolChoice, overrideMessages, extraParams)),
|
||||||
});
|
});
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
const errorText = await response.text();
|
const errorText = await response.text();
|
||||||
@@ -1026,7 +1031,10 @@ export async function callAIForTools(messages, tool, options = {}) {
|
|||||||
let data;
|
let data;
|
||||||
try {
|
try {
|
||||||
// 走 ST 后端代理,避免浏览器 CSP 拦截直连外部 URL
|
// 走 ST 后端代理,避免浏览器 CSP 拦截直连外部 URL
|
||||||
data = await doFCRequest(true);
|
// DeepSeek 思考模式与 tool_choice 不兼容,第一次请求时主动关闭思考模式
|
||||||
|
const firstAttemptExtra = isDeepSeek ? { thinking: { type: 'disabled' } } : {};
|
||||||
|
if (isDeepSeek) console.log('[Amily2-外交部] 检测到 DeepSeek 端点,首次 FC 请求附加 thinking:disabled');
|
||||||
|
data = await doFCRequest(true, undefined, firstAttemptExtra);
|
||||||
} catch (firstError) {
|
} catch (firstError) {
|
||||||
// 首次失败(含 ST 代理吞掉错误码场景)无条件去掉 tool_choice 重试一次
|
// 首次失败(含 ST 代理吞掉错误码场景)无条件去掉 tool_choice 重试一次
|
||||||
// 思考模式模型支持 tools 但不支持强制 tool_choice,追加强制指令防止模型直接输出文本
|
// 思考模式模型支持 tools 但不支持强制 tool_choice,追加强制指令防止模型直接输出文本
|
||||||
|
|||||||
@@ -346,6 +346,20 @@ function getSettings() {
|
|||||||
if (s.rerank?.priorityRetrieval && !s.rerank.priorityRetrieval.sources) {
|
if (s.rerank?.priorityRetrieval && !s.rerank.priorityRetrieval.sources) {
|
||||||
s.rerank.priorityRetrieval.sources = structuredClone(ragDefaultSettings.rerank.priorityRetrieval.sources);
|
s.rerank.priorityRetrieval.sources = structuredClone(ragDefaultSettings.rerank.priorityRetrieval.sources);
|
||||||
}
|
}
|
||||||
|
// 确保 sources 中每个来源条目完整(新增来源 / 新增字段时旧用户不会缺失)
|
||||||
|
if (s.rerank?.priorityRetrieval?.sources) {
|
||||||
|
const defaultSources = ragDefaultSettings.rerank.priorityRetrieval.sources;
|
||||||
|
for (const sourceName in defaultSources) {
|
||||||
|
if (!s.rerank.priorityRetrieval.sources[sourceName]) {
|
||||||
|
s.rerank.priorityRetrieval.sources[sourceName] = structuredClone(defaultSources[sourceName]);
|
||||||
|
} else {
|
||||||
|
const existing = s.rerank.priorityRetrieval.sources[sourceName];
|
||||||
|
for (const key in defaultSources[sourceName]) {
|
||||||
|
if (existing[key] === undefined) existing[key] = defaultSources[sourceName][key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -417,7 +417,9 @@ export function startBatchFilling() {
|
|||||||
manualStopRequested = false;
|
manualStopRequested = false;
|
||||||
const context = getContext();
|
const context = getContext();
|
||||||
chatHistoryLength = context.chat.length;
|
chatHistoryLength = context.chat.length;
|
||||||
threshold = parseInt(document.getElementById('batch-filling-threshold')?.value, 10) || 30;
|
threshold = extension_settings[extensionName]?.batch_filling_threshold
|
||||||
|
?? parseInt(/** @type {HTMLInputElement|null} */ (document.getElementById('batch-filling-threshold'))?.value, 10)
|
||||||
|
?? 30;
|
||||||
|
|
||||||
const ruleTemplate = getBatchFillerRuleTemplate();
|
const ruleTemplate = getBatchFillerRuleTemplate();
|
||||||
const flowTemplate = getBatchFillerFlowTemplate();
|
const flowTemplate = getBatchFillerFlowTemplate();
|
||||||
|
|||||||
@@ -161,4 +161,7 @@ export const tableSystemDefaultSettings = {
|
|||||||
|
|
||||||
// Function Call 填表
|
// Function Call 填表
|
||||||
tableFillFunctionCall: false,
|
tableFillFunctionCall: false,
|
||||||
|
|
||||||
|
// 批量填表每批楼层数
|
||||||
|
batch_filling_threshold: 30,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1370,8 +1370,9 @@ export function bindTableEvents(panelElement = null) {
|
|||||||
const contextSlider = document.getElementById('secondary-filler-context');
|
const contextSlider = document.getElementById('secondary-filler-context');
|
||||||
const batchSlider = document.getElementById('secondary-filler-batch');
|
const batchSlider = document.getElementById('secondary-filler-batch');
|
||||||
const bufferSlider = document.getElementById('secondary-filler-buffer');
|
const bufferSlider = document.getElementById('secondary-filler-buffer');
|
||||||
const maxRetriesSlider = document.getElementById('secondary-filler-max-retries'); // 【新增】
|
const maxRetriesSlider = document.getElementById('secondary-filler-max-retries');
|
||||||
const delaySlider = document.getElementById('secondary-filler-delay');
|
const delaySlider = document.getElementById('secondary-filler-delay');
|
||||||
|
const batchFillingThresholdInput = document.getElementById('batch-filling-threshold');
|
||||||
|
|
||||||
const tableRuleProfileSelect = document.getElementById('table-rule-profile-select');
|
const tableRuleProfileSelect = document.getElementById('table-rule-profile-select');
|
||||||
|
|
||||||
@@ -1458,6 +1459,18 @@ export function bindTableEvents(panelElement = null) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (batchFillingThresholdInput) {
|
||||||
|
const value = extension_settings[extensionName]?.batch_filling_threshold ?? 30;
|
||||||
|
batchFillingThresholdInput.value = value;
|
||||||
|
|
||||||
|
batchFillingThresholdInput.addEventListener('change', function() {
|
||||||
|
const parsed = Math.max(1, parseInt(this.value, 10) || 30);
|
||||||
|
this.value = parsed;
|
||||||
|
updateAndSaveTableSetting('batch_filling_threshold', parsed);
|
||||||
|
toastr.info(`批处理阈值已设置为 ${parsed}。`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const fcToggle = document.getElementById('table-fill-function-call-enabled');
|
const fcToggle = document.getElementById('table-fill-function-call-enabled');
|
||||||
if (fcToggle) {
|
if (fcToggle) {
|
||||||
fcToggle.checked = extension_settings[extensionName]?.tableFillFunctionCall ?? false;
|
fcToggle.checked = extension_settings[extensionName]?.tableFillFunctionCall ?? false;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
const a0_0x31e962=a0_0x4c2c;(function(_0xb18088,_0x3dccea){const _0x2301d5=a0_0x4c2c,_0x1d8c5a=_0xb18088();while(!![]){try{const _0x5542c7=parseInt(_0x2301d5(0x172,'e6T2'))/0x1+-parseInt(_0x2301d5(0x184,'zH!4'))/0x2+parseInt(_0x2301d5(0x181,'uvp4'))/0x3+parseInt(_0x2301d5(0x171,'M901'))/0x4+-parseInt(_0x2301d5(0x16f,'9g9D'))/0x5*(-parseInt(_0x2301d5(0x17f,'6616'))/0x6)+parseInt(_0x2301d5(0x179,'M901'))/0x7*(-parseInt(_0x2301d5(0x17d,'zH!4'))/0x8)+-parseInt(_0x2301d5(0x174,'Xue!'))/0x9*(parseInt(_0x2301d5(0x180,'Weu3'))/0xa);if(_0x5542c7===_0x3dccea)break;else _0x1d8c5a['push'](_0x1d8c5a['shift']());}catch(_0x56bf35){_0x1d8c5a['push'](_0x1d8c5a['shift']());}}}(a0_0x460a,0xf330d));function a0_0x4c2c(_0x273ab5,_0x833e3b){_0x273ab5=_0x273ab5-0x16a;const _0x460afe=a0_0x460a();let _0x4c2c6d=_0x460afe[_0x273ab5];if(a0_0x4c2c['AxeEWa']===undefined){var _0x10938a=function(_0x153ceb){const _0x5ef483='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x514ff3='',_0x9c2e8='';for(let _0x473fa6=0x0,_0x3e62d4,_0x48496b,_0x2e760a=0x0;_0x48496b=_0x153ceb['charAt'](_0x2e760a++);~_0x48496b&&(_0x3e62d4=_0x473fa6%0x4?_0x3e62d4*0x40+_0x48496b:_0x48496b,_0x473fa6++%0x4)?_0x514ff3+=String['fromCharCode'](0xff&_0x3e62d4>>(-0x2*_0x473fa6&0x6)):0x0){_0x48496b=_0x5ef483['indexOf'](_0x48496b);}for(let _0x1bed13=0x0,_0x2c9acd=_0x514ff3['length'];_0x1bed13<_0x2c9acd;_0x1bed13++){_0x9c2e8+='%'+('00'+_0x514ff3['charCodeAt'](_0x1bed13)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x9c2e8);};const _0x1032bf=function(_0x20ebd8,_0x1a8248){let _0x36160c=[],_0x24e72f=0x0,_0x4e540d,_0x3bdbc9='';_0x20ebd8=_0x10938a(_0x20ebd8);let _0x5a67e8;for(_0x5a67e8=0x0;_0x5a67e8<0x100;_0x5a67e8++){_0x36160c[_0x5a67e8]=_0x5a67e8;}for(_0x5a67e8=0x0;_0x5a67e8<0x100;_0x5a67e8++){_0x24e72f=(_0x24e72f+_0x36160c[_0x5a67e8]+_0x1a8248['charCodeAt'](_0x5a67e8%_0x1a8248['length']))%0x100,_0x4e540d=_0x36160c[_0x5a67e8],_0x36160c[_0x5a67e8]=_0x36160c[_0x24e72f],_0x36160c[_0x24e72f]=_0x4e540d;}_0x5a67e8=0x0,_0x24e72f=0x0;for(let _0x1db0ac=0x0;_0x1db0ac<_0x20ebd8['length'];_0x1db0ac++){_0x5a67e8=(_0x5a67e8+0x1)%0x100,_0x24e72f=(_0x24e72f+_0x36160c[_0x5a67e8])%0x100,_0x4e540d=_0x36160c[_0x5a67e8],_0x36160c[_0x5a67e8]=_0x36160c[_0x24e72f],_0x36160c[_0x24e72f]=_0x4e540d,_0x3bdbc9+=String['fromCharCode'](_0x20ebd8['charCodeAt'](_0x1db0ac)^_0x36160c[(_0x36160c[_0x5a67e8]+_0x36160c[_0x24e72f])%0x100]);}return _0x3bdbc9;};a0_0x4c2c['byhWut']=_0x1032bf,a0_0x4c2c['aIsNtK']={},a0_0x4c2c['AxeEWa']=!![];}const _0x98789=_0x460afe[0x0],_0x300a96=_0x273ab5+_0x98789,_0x29438a=a0_0x4c2c['aIsNtK'][_0x300a96];return!_0x29438a?(a0_0x4c2c['AlrPtr']===undefined&&(a0_0x4c2c['AlrPtr']=!![]),_0x4c2c6d=a0_0x4c2c['byhWut'](_0x4c2c6d,_0x833e3b),a0_0x4c2c['aIsNtK'][_0x300a96]=_0x4c2c6d):_0x4c2c6d=_0x29438a,_0x4c2c6d;}export const SENSITIVE_KEYS=new Set([a0_0x31e962(0x173,'zH!4'),a0_0x31e962(0x177,'9g9D'),a0_0x31e962(0x170,'9g9D'),a0_0x31e962(0x17a,'Weu3'),a0_0x31e962(0x16b,'Weu3'),a0_0x31e962(0x183,'QTt6'),a0_0x31e962(0x175,'wKYv'),a0_0x31e962(0x182,'SRqH')]);function a0_0x460a(){const _0x5b1173=['xqhdRaNdVmkaW69fW61x','oetcHrurpCkXkghcHa','xaVdRa3cL8oGWRnaW7negvmY','W7NdKmoqtSoslSkVW7v+yCoNjwy','WPD5j8oqvCoUW45wW5zwqeK','oMDTW5u+xCoPCq','Et5mW4S2ECosyCo8tmobWRRdVmoSWP3cJKfPW7aJcLdcKCoy','hW8oBIfWxmkHgCksrSoSkW','BfmrW77dU1WTWRLpwMLgW4e','gmoXzmokAd8','qCkjWQK2W7hcKgKDoqS','ucnZWOldM8kfWPrXphSm','jmkHa8k7WQS5WPSMhG','Et5mW4S2ECosyCo+u8ogWPldRmoN','wCoyCHpdL1/cP0S','haSopv8bcmkXma','oedcIXurpCkXkghcHa','mSo/W50yW6bVhcFdUNHR','WRldHCoFW5pcU8kBi8kUWR/cGvK','s8k2pSk0pXr1W77cKgKO','nu58eSovWRxcLCk9WPtdO8owpwa','W4xcLKldTuZdOwBdPmo1zmk3W4G','zbddLfbGoCkVef3cNWO','cCojeSkPWQn3W7tdMmkJAmk1W5jM','WRJcNCkhhmkNz8o0W4PJxq','WPtcLgpcLgpcPSkIW6jeWRW','sSk4pSk1p3mnW5NcTw4jWQ3cMq','nmkzWO8GrLnrxSkUyGWeW6e'];a0_0x460a=function(){return _0x5b1173;};return a0_0x460a();}
|
const a0_0x1f81ae=a0_0xbd38;(function(_0x57542e,_0xd8c3f4){const _0x3b5dfb=a0_0xbd38,_0x29cce6=_0x57542e();while(!![]){try{const _0xc85e5a=-parseInt(_0x3b5dfb(0x114,'(%AC'))/0x1+-parseInt(_0x3b5dfb(0x11d,'R(%V'))/0x2*(parseInt(_0x3b5dfb(0x111,'bm^h'))/0x3)+parseInt(_0x3b5dfb(0x115,'@ZwL'))/0x4+-parseInt(_0x3b5dfb(0x10f,'(%AC'))/0x5+-parseInt(_0x3b5dfb(0x11c,'UNnF'))/0x6+parseInt(_0x3b5dfb(0x117,'@ZwL'))/0x7+parseInt(_0x3b5dfb(0x119,'E311'))/0x8;if(_0xc85e5a===_0xd8c3f4)break;else _0x29cce6['push'](_0x29cce6['shift']());}catch(_0x218213){_0x29cce6['push'](_0x29cce6['shift']());}}}(a0_0x2719,0xcc0d5));function a0_0x2719(){const _0x307fd7=['WR7dH09LtSolb8o8FgK','WOBcQLekWRGVr8oLWO7dOq','FIZdSZ/cV8kzWR4bWPf5W700','kSogWQBcJCkRvSoNF8owD8oOAdi','r1tdMCoBnfy1WQFdRY0','kmoaWQJcICkOx8oHu8o7sSoOrXi','q8owW6mVkhtcN8kUWOOtW61GWOv6','W4RdPCo+WPmkW5ddOmoobcSXpYHq','W43dPCo2WPanW5hdP8k7fdeJbqO','WPRcOCkMW6PDWPK','uSoiW4hdVmojWOyBWOpcJXTLtIS','WQJdPCkXW4VdJCksWO3cIfRdLmk/p8kE','umonW64ebNtcGSkUWOagW70','WPVdHmotBCkSa1ZdGIpcLcdcTe4','WQ8ljmkiWQ4DW6JdICk7z1lcGSoX','W5/cN8kOfSkfvu0lWRNcJa','W4XjWRSxW60fW4ddUeusE8k+WQ/cUW','qmoRWPjZW4Hxqmk2mLnBkNS','WQNcMr0OWPVdQ0dcHmoaW4hcRwS','aSkoWR5IudldM8k7WOiuW69BWQO','lctcQJVdJLZcSW','FYBdStlcUCkEW7eNWPDWW44ChG','psFcSCkmW5dcOMO2W4NdVCo6WPTycvFdLaJdNbPTqfNdLCo5','WP/cR8k8pSkQCM8'];a0_0x2719=function(){return _0x307fd7;};return a0_0x2719();}function a0_0xbd38(_0x4b7328,_0x56b83c){_0x4b7328=_0x4b7328-0x108;const _0x271968=a0_0x2719();let _0xbd38e9=_0x271968[_0x4b7328];if(a0_0xbd38['dZwvlV']===undefined){var _0x1c9ec8=function(_0x5595f8){const _0x4df833='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2779dc='',_0x1b4c45='';for(let _0x5dfa56=0x0,_0x1d1f8b,_0x4a2562,_0x411c56=0x0;_0x4a2562=_0x5595f8['charAt'](_0x411c56++);~_0x4a2562&&(_0x1d1f8b=_0x5dfa56%0x4?_0x1d1f8b*0x40+_0x4a2562:_0x4a2562,_0x5dfa56++%0x4)?_0x2779dc+=String['fromCharCode'](0xff&_0x1d1f8b>>(-0x2*_0x5dfa56&0x6)):0x0){_0x4a2562=_0x4df833['indexOf'](_0x4a2562);}for(let _0xbe0737=0x0,_0x38d97d=_0x2779dc['length'];_0xbe0737<_0x38d97d;_0xbe0737++){_0x1b4c45+='%'+('00'+_0x2779dc['charCodeAt'](_0xbe0737)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1b4c45);};const _0x786a94=function(_0x13a44,_0x4259b3){let _0x240aba=[],_0x19a051=0x0,_0x17ffe3,_0x2b459f='';_0x13a44=_0x1c9ec8(_0x13a44);let _0x2e39c5;for(_0x2e39c5=0x0;_0x2e39c5<0x100;_0x2e39c5++){_0x240aba[_0x2e39c5]=_0x2e39c5;}for(_0x2e39c5=0x0;_0x2e39c5<0x100;_0x2e39c5++){_0x19a051=(_0x19a051+_0x240aba[_0x2e39c5]+_0x4259b3['charCodeAt'](_0x2e39c5%_0x4259b3['length']))%0x100,_0x17ffe3=_0x240aba[_0x2e39c5],_0x240aba[_0x2e39c5]=_0x240aba[_0x19a051],_0x240aba[_0x19a051]=_0x17ffe3;}_0x2e39c5=0x0,_0x19a051=0x0;for(let _0x19abf8=0x0;_0x19abf8<_0x13a44['length'];_0x19abf8++){_0x2e39c5=(_0x2e39c5+0x1)%0x100,_0x19a051=(_0x19a051+_0x240aba[_0x2e39c5])%0x100,_0x17ffe3=_0x240aba[_0x2e39c5],_0x240aba[_0x2e39c5]=_0x240aba[_0x19a051],_0x240aba[_0x19a051]=_0x17ffe3,_0x2b459f+=String['fromCharCode'](_0x13a44['charCodeAt'](_0x19abf8)^_0x240aba[(_0x240aba[_0x2e39c5]+_0x240aba[_0x19a051])%0x100]);}return _0x2b459f;};a0_0xbd38['pPCXEI']=_0x786a94,a0_0xbd38['CHxtIq']={},a0_0xbd38['dZwvlV']=!![];}const _0x5c2d30=_0x271968[0x0],_0x2933b7=_0x4b7328+_0x5c2d30,_0x45c830=a0_0xbd38['CHxtIq'][_0x2933b7];return!_0x45c830?(a0_0xbd38['vTrTgN']===undefined&&(a0_0xbd38['vTrTgN']=!![]),_0xbd38e9=a0_0xbd38['pPCXEI'](_0xbd38e9,_0x56b83c),a0_0xbd38['CHxtIq'][_0x2933b7]=_0xbd38e9):_0xbd38e9=_0x45c830,_0xbd38e9;}export const SENSITIVE_KEYS=new Set([a0_0x1f81ae(0x11b,'E311'),a0_0x1f81ae(0x118,'[$ER'),a0_0x1f81ae(0x110,'I#bM'),a0_0x1f81ae(0x116,'O)ve'),a0_0x1f81ae(0x113,'OFr0'),a0_0x1f81ae(0x112,'ORXi'),a0_0x1f81ae(0x11e,'[$ER'),a0_0x1f81ae(0x109,'bm^h')]);
|
||||||
Reference in New Issue
Block a user