chaimi-keep-mcp 3.5.0-beta.2 → 3.5.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -326
- package/SKILL.md +35 -7
- package/bin/restart-daemon.js +180 -0
- package/oauth.js +1 -562
- package/package.json +10 -6
- package/references/authentication.md +15 -11
- package/references/response-templates.md +14 -8
- package/references/troubleshooting.md +72 -3
- package/server.js +1 -2597
- package/.env.example +0 -24
- package/CHANGELOG.md +0 -95
- package/config.example.yaml +0 -15
package/server.js
CHANGED
|
@@ -1,2598 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* 柴米AI记账 MCP Server (Node.js 版本)
|
|
4
|
-
* 适配微信云函数 mcpHub
|
|
5
|
-
* 支持 Claude Desktop、Cursor、WorkBuddy、OpenClaw
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// 设置 stdout 编码为 UTF-8,确保中文字符正确输出
|
|
9
|
-
process.stdout.setEncoding('utf8');
|
|
10
|
-
|
|
11
|
-
// 加载 .env 文件
|
|
12
|
-
try {
|
|
13
|
-
require('dotenv').config();
|
|
14
|
-
} catch (e) {
|
|
15
|
-
// dotenv 未安装,忽略
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
|
|
19
|
-
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
20
|
-
const {
|
|
21
|
-
CallToolRequestSchema,
|
|
22
|
-
ListToolsRequestSchema,
|
|
23
|
-
} = require('@modelcontextprotocol/sdk/types.js');
|
|
24
|
-
const path = require('path');
|
|
25
|
-
const os = require('os');
|
|
26
|
-
const fs = require('fs');
|
|
27
|
-
const crypto = require('crypto');
|
|
28
|
-
|
|
29
|
-
// 读取版本文件获取版本号
|
|
30
|
-
function getVersion() {
|
|
31
|
-
try {
|
|
32
|
-
const verFilePath = path.join(__dirname, 'VERSION');
|
|
33
|
-
return fs.readFileSync(verFilePath, 'utf8').trim();
|
|
34
|
-
} catch (e) {
|
|
35
|
-
// 如果版本文件不存在,从 package.json 兜底
|
|
36
|
-
const pkgJson = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8'));
|
|
37
|
-
return pkgJson.version;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const MCP_VERSION = getVersion();
|
|
41
|
-
|
|
42
|
-
// 导入 OAuth 模块
|
|
43
|
-
const { OAuthManager, FileTokenStorage } = require('./oauth.js');
|
|
44
|
-
|
|
45
|
-
// 导入配置管理工具
|
|
46
|
-
const { configManager } = require('./utils/config.js');
|
|
47
|
-
|
|
48
|
-
// 导入校验工具
|
|
49
|
-
const { validateDate } = require('./utils/validators.js');
|
|
50
|
-
|
|
51
|
-
// 导入密钥管理工具
|
|
52
|
-
const { getOrCreateSecretKey } = require('./utils/keyManager.js');
|
|
53
|
-
|
|
54
|
-
// 导入加密工具
|
|
55
|
-
const { encrypt, decrypt } = require('./utils/encryption.js');
|
|
56
|
-
|
|
57
|
-
// ==================== 请求频率限制 ====================
|
|
58
|
-
|
|
59
|
-
// 限流配置
|
|
60
|
-
const RATE_LIMITS = {
|
|
61
|
-
// 记账工具:30 秒 3 次
|
|
62
|
-
write: {
|
|
63
|
-
tools: ['save_expense', 'save_receipt', 'save_income'],
|
|
64
|
-
maxRequests: 3,
|
|
65
|
-
windowMs: 30 * 1000, // 30 秒
|
|
66
|
-
},
|
|
67
|
-
// 查询工具:30 秒 2 次
|
|
68
|
-
read: {
|
|
69
|
-
tools: ['get_expenses', 'get_receipt_list', 'get_statistics', 'get_insights', 'export_data'],
|
|
70
|
-
maxRequests: 2,
|
|
71
|
-
windowMs: 30 * 1000, // 30 秒
|
|
72
|
-
},
|
|
73
|
-
// 配置工具:30 秒 3 次
|
|
74
|
-
config: {
|
|
75
|
-
tools: ['get_skill', 'get_parse_prompt', 'get_text_parse_prompt'],
|
|
76
|
-
maxRequests: 3,
|
|
77
|
-
windowMs: 30 * 1000, // 30 秒
|
|
78
|
-
},
|
|
79
|
-
// 反馈提交:30 秒 1 次
|
|
80
|
-
feedback: {
|
|
81
|
-
tools: ['submit_feedback'],
|
|
82
|
-
maxRequests: 1,
|
|
83
|
-
windowMs: 30 * 1000, // 30 秒
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
// 限流记录:{ toolName: [timestamp1, timestamp2, ...] }
|
|
88
|
-
const rateLimitRecords = {};
|
|
89
|
-
|
|
90
|
-
// 检查是否超过频率限制
|
|
91
|
-
function checkRateLimit(toolName) {
|
|
92
|
-
// 查找工具所属的限流组
|
|
93
|
-
let limitConfig = null;
|
|
94
|
-
let limitType = null;
|
|
95
|
-
|
|
96
|
-
for (const [type, config] of Object.entries(RATE_LIMITS)) {
|
|
97
|
-
if (config.tools.includes(toolName)) {
|
|
98
|
-
limitConfig = config;
|
|
99
|
-
limitType = type;
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// 如果工具不在限流列表中,直接通过
|
|
105
|
-
if (!limitConfig) {
|
|
106
|
-
return { allowed: true };
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const now = Date.now();
|
|
110
|
-
const windowStart = now - limitConfig.windowMs;
|
|
111
|
-
|
|
112
|
-
// 初始化记录
|
|
113
|
-
if (!rateLimitRecords[toolName]) {
|
|
114
|
-
rateLimitRecords[toolName] = [];
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// 清理过期记录
|
|
118
|
-
rateLimitRecords[toolName] = rateLimitRecords[toolName].filter(
|
|
119
|
-
timestamp => timestamp > windowStart
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
// 检查是否超过限制
|
|
123
|
-
if (rateLimitRecords[toolName].length >= limitConfig.maxRequests) {
|
|
124
|
-
const oldestRequest = rateLimitRecords[toolName][0];
|
|
125
|
-
const resetTime = oldestRequest + limitConfig.windowMs;
|
|
126
|
-
const waitSeconds = Math.ceil((resetTime - now) / 1000);
|
|
127
|
-
|
|
128
|
-
return {
|
|
129
|
-
allowed: false,
|
|
130
|
-
limitType,
|
|
131
|
-
maxRequests: limitConfig.maxRequests,
|
|
132
|
-
windowMs: limitConfig.windowMs,
|
|
133
|
-
resetTime,
|
|
134
|
-
waitSeconds,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// 记录本次请求
|
|
139
|
-
rateLimitRecords[toolName].push(now);
|
|
140
|
-
|
|
141
|
-
return { allowed: true };
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// 获取 API 密钥(从环境变量或自动生成)
|
|
145
|
-
let CHAIMI_API_SECRET = process.env.CHAIMI_API_SECRET;
|
|
146
|
-
|
|
147
|
-
// ==================== 多环境配置 ====================
|
|
148
|
-
|
|
149
|
-
// 环境配置
|
|
150
|
-
const ENV = process.env.NODE_ENV || 'production';
|
|
151
|
-
|
|
152
|
-
// 加密的云函数 URL(开发和生产环境分开)
|
|
153
|
-
const ENCRYPTED_URLS = {
|
|
154
|
-
development: {
|
|
155
|
-
hub: 'enc:v2:d397243fce051c611175302dea8a7a54:8f0bc1dc6966e9149e8d3ecae2467830:cf61c7a159154d15aa1502deec2519931090ff791be67e89fd4e3b20322b2bea8071be02d768ec10abdc50b2d3e76df6dc44a6d46d61c2743acdef428205cc0e3534c93d94857cc91985db5fd69745053df05a87',
|
|
156
|
-
oauth: 'enc:v2:bff470f73af1723d6e320d39df72b342:eefb409dff5a4713931caa3886f9159c:18d0a711f31a5ba7e068e43d8bcce6b8fc56513d44ff3d90ab006063461b44025387e52cb2ce5ffe471a8a8f4b993879dcaa485dd1e845c647be134595467c4a00efc736d15abfcaa8d8cf460365fbf597e0',
|
|
157
|
-
prompt: 'enc:v2:a058c504374087a36417280f0bc4288d:ed5fc65a697c1254e8aeb9faa7119ec8:b8831fd319c35bc01554546827ce31bd04d2039fb87f0b6a19b35850ec228b6988b2103b1cc45a7bd21b117b299c5095a44e1ee4a4c2adb04e24a401e1271aff912503e2abb9cec03764b774df53e60b0686d3'
|
|
158
|
-
},
|
|
159
|
-
production: {
|
|
160
|
-
hub: 'enc:v2:500682dfbd51aff69852abe39430da35:3d57b5ac7f798c6770209159b6dfd9fb:7b9733f27208809b761090f7628f3799aac12c957cdd45b3d512eb4f1f1c18f626afd0b73b12982500122b11e373e0a2a71f14cb6c5966cf98af9ae4b9e79fb575d1e2f42ec403690d5c7dcc519e9eaec21865eb',
|
|
161
|
-
oauth: 'enc:v2:30adcae20bc1452e8e8c7eff088e8b61:b8bedcc9985d1e10185f8ae5c845cc9c:1b2206380eddcfc4d00ed920f20f838bfc664e2350591666db5a5c2b044a88165e0e7f04c58e2d4f0764bb9872aeaf625a91f7a19ce6909264115e7ce70b35c0c081eb4170cac869d3f8b576b7b4dc41580e',
|
|
162
|
-
prompt: 'enc:v2:beba836814161d59df3a2220ebc500ef:6023bde15c74be6bec641044a3f854de:4421b9f985a1914c06868c8577e57e26e3fd4fe4392c2c94862322fd30258eccae68fce6fd56e9a35427a724d3c22b735e9b5a822d05be098ae5e0662ea41c786e4acea12e4d80b598b543d346d7ccbdc32623'
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
// 解密 URL 函数(支持 AES-256-GCM)
|
|
167
|
-
function decryptUrl(encrypted, key) {
|
|
168
|
-
if (!encrypted) return '';
|
|
169
|
-
|
|
170
|
-
if (encrypted.startsWith('enc:v2:')) {
|
|
171
|
-
return decrypt(encrypted.replace('enc:v2:', ''), key);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (encrypted.startsWith('enc:v1:')) {
|
|
175
|
-
const urlEncryptKey = key || 'chaimi-url-key-2024';
|
|
176
|
-
const hex = encrypted.replace('enc:v1:', '');
|
|
177
|
-
let result = '';
|
|
178
|
-
for (let i = 0; i < hex.length; i += 2) {
|
|
179
|
-
const byte = parseInt(hex.substr(i, 2), 16);
|
|
180
|
-
result += String.fromCharCode(byte ^ urlEncryptKey.charCodeAt((i / 2) % urlEncryptKey.length));
|
|
181
|
-
}
|
|
182
|
-
return result;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return encrypted;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// ==================== URL 配置 ====================
|
|
189
|
-
|
|
190
|
-
let MCP_HUB_URL;
|
|
191
|
-
let MCP_PROMPT_URL;
|
|
192
|
-
let MCP_OAUTH_URL;
|
|
193
|
-
let tokenEncryptionKey;
|
|
194
|
-
|
|
195
|
-
// 初始化配置
|
|
196
|
-
async function initConfig() {
|
|
197
|
-
// 获取 URL 加密密钥
|
|
198
|
-
const urlEncryptKey = process.env.URL_ENCRYPT_KEY || 'd2e4168144a50c6d8d0c4692cd73331eb2bc1db0cd727afaf29ff9645d480e59';
|
|
199
|
-
|
|
200
|
-
// 获取 Token 加密密钥
|
|
201
|
-
tokenEncryptionKey = getOrCreateSecretKey();
|
|
202
|
-
|
|
203
|
-
// 获取 API 密钥
|
|
204
|
-
if (!CHAIMI_API_SECRET) {
|
|
205
|
-
CHAIMI_API_SECRET = process.env.CHAIMI_API_SECRET || '040f513aa8f0688b4fa151865ee7515dac707f9649f48ec13c953a5e7dca0cad';
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// 配置 URL
|
|
209
|
-
const envUrls = ENCRYPTED_URLS[ENV] || ENCRYPTED_URLS.production;
|
|
210
|
-
MCP_HUB_URL = process.env.MCP_HUB_URL || decryptUrl(envUrls.hub, urlEncryptKey);
|
|
211
|
-
MCP_PROMPT_URL = process.env.MCP_PROMPT_URL || decryptUrl(envUrls.prompt, urlEncryptKey);
|
|
212
|
-
MCP_OAUTH_URL = process.env.MCP_OAUTH_URL || decryptUrl(envUrls.oauth, urlEncryptKey);
|
|
213
|
-
|
|
214
|
-
console.error(`✅ 已加载 ${ENV} 环境配置`);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// Token 缓存(加密存储)
|
|
218
|
-
let cachedEncryptedToken = null;
|
|
219
|
-
let tokenExpireTime = 0;
|
|
220
|
-
|
|
221
|
-
// 获取解密的 Token
|
|
222
|
-
function getCachedToken() {
|
|
223
|
-
if (!cachedEncryptedToken || !tokenEncryptionKey) return null;
|
|
224
|
-
try {
|
|
225
|
-
return decrypt(cachedEncryptedToken, tokenEncryptionKey);
|
|
226
|
-
} catch (e) {
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
// 设置加密的 Token
|
|
232
|
-
function setCachedToken(token) {
|
|
233
|
-
if (!token || !tokenEncryptionKey) {
|
|
234
|
-
cachedEncryptedToken = null;
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
cachedEncryptedToken = encrypt(token, tokenEncryptionKey);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// OAuth 管理器实例
|
|
241
|
-
let oauthManager = null;
|
|
242
|
-
|
|
243
|
-
// 初始化 OAuth 管理器
|
|
244
|
-
async function initOAuthManager() {
|
|
245
|
-
// 使用新的配置路径 ~/.chaimi-keep/
|
|
246
|
-
const tokenPath = configManager.getPath('oauth-token.json');
|
|
247
|
-
const tokenStorage = new FileTokenStorage(tokenPath);
|
|
248
|
-
|
|
249
|
-
oauthManager = new OAuthManager({
|
|
250
|
-
mcpOAuthUrl: MCP_OAUTH_URL,
|
|
251
|
-
tokenStorage: tokenStorage,
|
|
252
|
-
// ⚠️ 重要:此回调在用户首次使用时显示验证码,切勿删除或清空!
|
|
253
|
-
// 如果删除,用户将无法看到授权验证码,导致无法使用 MCP Server
|
|
254
|
-
// 参见 FUNCTION_REGISTRY.md 中的 "验证码显示" 功能
|
|
255
|
-
// 注意:使用 console.error,避免污染 stdout(MCP 协议通信使用 stdout)
|
|
256
|
-
onQrCode: (qrData) => {
|
|
257
|
-
// 输出授权信息到控制台(用户可见)
|
|
258
|
-
console.error('\n' + '='.repeat(60));
|
|
259
|
-
console.error(' 柴米AI记账 MCP Server - 首次使用需要授权');
|
|
260
|
-
console.error('='.repeat(60));
|
|
261
|
-
console.error('');
|
|
262
|
-
console.error(` 验证码:${qrData.userCode}`);
|
|
263
|
-
console.error('');
|
|
264
|
-
console.error(' 请在"柴米AI记账"小程序中完成授权:');
|
|
265
|
-
console.error('');
|
|
266
|
-
console.error(' 1. 打开"柴米AI记账"小程序');
|
|
267
|
-
console.error(' 2. 点击"我的" → "Agent 授权"');
|
|
268
|
-
console.error(` 3. 输入验证码:${qrData.userCode}`);
|
|
269
|
-
console.error('');
|
|
270
|
-
console.error('='.repeat(60) + '\n');
|
|
271
|
-
},
|
|
272
|
-
// ⚠️ 重要:此回调在授权成功后通知用户,切勿删除!
|
|
273
|
-
onTokenReady: (token) => {
|
|
274
|
-
console.error('✅ 授权成功!Token 已保存。');
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
// 预加载已保存的 Token,避免每次重启都要求重新授权
|
|
279
|
-
try {
|
|
280
|
-
const existingToken = await oauthManager.tokenStorage.load();
|
|
281
|
-
if (existingToken && existingToken.accessToken && existingToken.expiresAt) {
|
|
282
|
-
// 检查 Token 是否过期(预留5分钟缓冲)
|
|
283
|
-
const expiresAt = new Date(existingToken.expiresAt).getTime();
|
|
284
|
-
if (expiresAt > Date.now() + 5 * 60 * 1000) {
|
|
285
|
-
// Token 有效,设置授权状态(加密存储)
|
|
286
|
-
setCachedToken(existingToken.accessToken);
|
|
287
|
-
tokenExpireTime = expiresAt;
|
|
288
|
-
authState.isAuthorized = true;
|
|
289
|
-
console.error('✅ 已从文件加载有效 Token,无需重新授权');
|
|
290
|
-
} else {
|
|
291
|
-
console.error('⏰ 保存的 Token 已过期,需要重新授权');
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
} catch (err) {
|
|
295
|
-
// 加载失败不影响后续流程,只是需要重新授权
|
|
296
|
-
console.error('⚠️ 加载保存的 Token 失败:', err.message);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
return oauthManager;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// 创建 MCP Server
|
|
303
|
-
const server = new Server(
|
|
304
|
-
{
|
|
305
|
-
name: 'chaimi-keep-mcp',
|
|
306
|
-
version: MCP_VERSION,
|
|
307
|
-
},
|
|
308
|
-
{
|
|
309
|
-
capabilities: {
|
|
310
|
-
tools: {},
|
|
311
|
-
},
|
|
312
|
-
}
|
|
313
|
-
);
|
|
314
|
-
|
|
315
|
-
// 工具列表
|
|
316
|
-
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
317
|
-
return {
|
|
318
|
-
tools: [
|
|
319
|
-
{
|
|
320
|
-
name: 'get_skill',
|
|
321
|
-
description: '【记账前必须调用】获取柴米AI记账最新 Skill 定义。每次记账前必须先调用此工具,获取当前版本的完整 Skill 文档,然后严格按照 Skill 定义执行。如果不调用此工具直接记账,操作将被拒绝',
|
|
322
|
-
inputSchema: {
|
|
323
|
-
type: 'object',
|
|
324
|
-
properties: {
|
|
325
|
-
timestamp: { type: 'string', description: '当前时间戳,用于验证 freshness' },
|
|
326
|
-
},
|
|
327
|
-
},
|
|
328
|
-
},
|
|
329
|
-
{
|
|
330
|
-
name: 'save_expense',
|
|
331
|
-
description: '【文本记账-支出】用户提及支出/消费时用此工具。前置:必须先调用get_skill获取规范,再调用get_text_parse_prompt获取凭证和解析模板。用法:mcporter call 柴米AI记账.save_expense _flowmate="SOLINWANG..." name="午餐" amount=35 category="餐饮" rawInput="午餐35元"。注意:上传图片请用save_receipt',
|
|
332
|
-
inputSchema: {
|
|
333
|
-
type: 'object',
|
|
334
|
-
properties: {
|
|
335
|
-
name: { type: 'string', description: '商品名称(必填)' },
|
|
336
|
-
amount: { type: 'number', description: '金额(必填)' },
|
|
337
|
-
category: { type: 'string', description: '【必填】支出分类(43个标准分类之一,如:餐饮、食品、交通、蔬菜)' },
|
|
338
|
-
unit: { type: 'string', description: '单位(可选)' },
|
|
339
|
-
marketPrice: { type: 'string', description: '市场单价(可选)' },
|
|
340
|
-
store: { type: 'string', description: '商家名称(可选)' },
|
|
341
|
-
date: { type: 'number', description: '【必填】消费时间(毫秒级时间戳,13位数字。必须根据实际年月日时分秒计算,不允许复制示例数字)' },
|
|
342
|
-
note: { type: 'string', description: '备注(可选)' },
|
|
343
|
-
agentType: { type: 'string', description: '【必填】Agent类型,如:claude-desktop、cursor、openclaw、workbuddy、trae' },
|
|
344
|
-
apiProvider: { type: 'string', description: '【必填】AI服务提供商,如:anthropic、openai、doubao、aliyun' },
|
|
345
|
-
rawInput: { type: 'string', description: '【必填】用户的原始输入内容,用于记录用户原始请求' },
|
|
346
|
-
_flowmate: { type: 'string', description: '【必填】流程凭证,从get_text_parse_prompt获取的myflowmate值' },
|
|
347
|
-
},
|
|
348
|
-
required: ['name', 'amount', 'category', 'agentType', 'apiProvider', 'rawInput', '_flowmate'],
|
|
349
|
-
},
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
name: 'save_receipt',
|
|
353
|
-
description: '【图片记账-小票】用户上传小票/发票/收据图片时用此工具。前置:必须先调用get_skill获取规范,再调用get_parse_prompt获取凭证和解析模板。用法:mcporter call 柴米AI记账.save_receipt _flowmate="SOLINWANG..." store="超市" totalAmount=156.5 items="[...]"。注意:文字描述请用save_expense/save_income',
|
|
354
|
-
inputSchema: {
|
|
355
|
-
type: 'object',
|
|
356
|
-
properties: {
|
|
357
|
-
store: { type: 'string', description: '商家名称(必填)' },
|
|
358
|
-
date: { type: 'number', description: '消费时间(毫秒级时间戳,13位数字。如提供 date_components 可不传此字段)' },
|
|
359
|
-
date_components: {
|
|
360
|
-
type: 'object',
|
|
361
|
-
description: '【推荐】消费时间组件。包含:year、month、day、hour、minute、second。服务端会自动转换为时间戳'
|
|
362
|
-
},
|
|
363
|
-
totalAmount: { type: 'number', description: '(必填)总金额(所有商品amount之和)' },
|
|
364
|
-
originalAmount: { type: 'number', description: '(必填)应付金额(优惠前)' },
|
|
365
|
-
discountAmount: { type: 'number', description: '(必填)优惠金额' },
|
|
366
|
-
actualAmount: { type: 'number', description: '(必填)实付金额(优惠后)' },
|
|
367
|
-
storeCategory: { type: 'string', description: '【必填】店铺一级分类(购物/美食/生活服务/其他)' },
|
|
368
|
-
storeSubCategory: { type: 'string', description: '【必填】店铺二级分类(超市/便利店/中餐厅/药店等)' },
|
|
369
|
-
paymentMethod: { type: 'string', description: '支付方式,如:微信支付、支付宝' },
|
|
370
|
-
receiptNo: { type: 'string', description: '小票编号' },
|
|
371
|
-
items: {
|
|
372
|
-
type: ['array', 'string'],
|
|
373
|
-
description: '【必填】商品列表,支持数组或JSON字符串格式(某些Agent如Claude Code可能传递JSON字符串)。每个商品必须包含:name、amount、price、quantity。⚠️ 注意:amount=price×quantity。示例数组:[{"name":"苹果","amount":5.5,"price":5.5,"quantity":1}]',
|
|
374
|
-
items: {
|
|
375
|
-
type: 'object',
|
|
376
|
-
properties: {
|
|
377
|
-
name: { type: 'string', description: '【必填】商品名称' },
|
|
378
|
-
originalName: { type: 'string', description: '原始商品名称(含规格)' },
|
|
379
|
-
price: { type: 'number', description: '【必填】单价' },
|
|
380
|
-
quantity: { type: 'number', description: '【必填】数量' },
|
|
381
|
-
unit: { type: 'string', description: '【必填】计价单位(如:元/500g、元/个、元/盒、元/袋)' },
|
|
382
|
-
amount: { type: 'number', description: '【必填】金额,必须等于 price × quantity' },
|
|
383
|
-
weight: { type: 'string', description: '重量' },
|
|
384
|
-
marketPrice: { type: 'string', description: '【必填】单价数值,根据unit计算,如unit=元/500g,则marketPrice=金额÷重量(g)×500' },
|
|
385
|
-
// 【改造】商品分类字段
|
|
386
|
-
productCategory: { type: 'string', description: '【必填】商品一级分类(如:蔬菜、肉类、水果、日化用品)' },
|
|
387
|
-
productSubCategory: { type: 'string', description: '商品二级分类(如:叶菜类、根茎类、家居清洁)' },
|
|
388
|
-
// 【改造】记账分类字段
|
|
389
|
-
category: { type: 'string', description: '【必填】记账分类(43个标准分类之一,如:蔬菜、购物、餐饮)' },
|
|
390
|
-
},
|
|
391
|
-
required: ['name', 'amount', 'price', 'quantity', 'unit', 'marketPrice', 'productCategory', 'category'],
|
|
392
|
-
},
|
|
393
|
-
},
|
|
394
|
-
agentType: { type: 'string', description: '【必填】Agent类型:claude-desktop、cursor、openclaw、workbuddy、trae' },
|
|
395
|
-
apiProvider: { type: 'string', description: '【必填】AI服务提供商:anthropic、openai、doubao、aliyun' },
|
|
396
|
-
rawInput: { type: 'string', description: '【必填】用户的原始输入内容' },
|
|
397
|
-
_flowmate: { type: 'string', description: '【必填】流程凭证,从get_parse_prompt获取的myflowmate值' },
|
|
398
|
-
},
|
|
399
|
-
required: ['store', 'items', 'storeCategory', 'storeSubCategory', 'agentType', 'apiProvider', 'rawInput', '_flowmate'],
|
|
400
|
-
},
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
name: 'get_expenses',
|
|
404
|
-
description: '查询消费记录(支持周/月周期)。支持按周/月或日期范围筛选,可查看分类、商家、来源等多维度数据。新功能:新增 period 参数,以及消费模式分析(高频商家、消费时间等)。返回格式:本工具只返回原始数据,不返回格式化消息。Agent必须使用get_skill获取SKILL.md中的"七、回复规范",再读取references/response-templates.md中的模板自行渲染回复。',
|
|
405
|
-
inputSchema: {
|
|
406
|
-
type: 'object',
|
|
407
|
-
properties: {
|
|
408
|
-
period: { type: 'string', description: '统计周期(推荐使用):this_week(本周)、last_week(上周)、this_month(本月)、last_month(上月),与startDate/endDate二选一', enum: ['this_week', 'last_week', 'this_month', 'last_month'] },
|
|
409
|
-
limit: { type: 'number', description: '返回数量限制,默认10条,最大100', default: 10 },
|
|
410
|
-
skip: { type: 'number', description: '跳过条数,用于分页', default: 0 },
|
|
411
|
-
startDate: { type: 'string', description: '开始日期(ISO格式,如:2026-04-01)' },
|
|
412
|
-
endDate: { type: 'string', description: '结束日期(ISO格式,如:2026-04-30)' },
|
|
413
|
-
category: { type: 'string', description: '按分类筛选(如:餐饮、食品、交通)' },
|
|
414
|
-
store: { type: 'string', description: '按商家名称筛选' },
|
|
415
|
-
source: { type: 'string', description: '按来源筛选(如:mcp_txt_expense、mcp_receipt)' },
|
|
416
|
-
keyword: { type: 'string', description: '按商品名称关键词搜索' },
|
|
417
|
-
orderBy: { type: 'string', description: '排序方式:date_desc(默认)、date_asc、amount_desc、amount_asc', enum: ['date_desc', 'date_asc', 'amount_desc', 'amount_asc'], default: 'date_desc' },
|
|
418
|
-
includeFlags: { type: 'boolean', description: '是否包含消费标记,默认true', default: true },
|
|
419
|
-
},
|
|
420
|
-
},
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
name: 'get_receipt_list',
|
|
424
|
-
description: '获取小票列表。支持按日期范围、商家、金额等多维度筛选。返回格式:本工具只返回原始数据,不返回格式化消息。Agent必须使用get_skill获取SKILL.md中的"七、回复规范",再读取references/response-templates.md中的模板自行渲染回复。',
|
|
425
|
-
inputSchema: {
|
|
426
|
-
type: 'object',
|
|
427
|
-
properties: {
|
|
428
|
-
limit: { type: 'number', description: '返回数量限制,默认5条,最大50', default: 5 },
|
|
429
|
-
skip: { type: 'number', description: '跳过条数,用于分页', default: 0 },
|
|
430
|
-
startDate: { type: 'string', description: '开始日期(ISO格式,如:2026-04-01)' },
|
|
431
|
-
endDate: { type: 'string', description: '结束日期(ISO格式,如:2026-04-30)' },
|
|
432
|
-
store: { type: 'string', description: '按商家名称筛选' },
|
|
433
|
-
minAmount: { type: 'number', description: '最小金额筛选' },
|
|
434
|
-
maxAmount: { type: 'number', description: '最大金额筛选' },
|
|
435
|
-
orderBy: { type: 'string', description: '排序方式:date_desc(默认)、date_asc、amount_desc、amount_asc', enum: ['date_desc', 'date_asc', 'amount_desc', 'amount_asc'], default: 'date_desc' },
|
|
436
|
-
},
|
|
437
|
-
},
|
|
438
|
-
},
|
|
439
|
-
{
|
|
440
|
-
name: 'get_statistics',
|
|
441
|
-
description: '获取消费统计(支持周/月周期)。支持按周/月或日期范围统计,可查看分类占比、消费趋势等。新功能:新增 period 参数(this_week、last_week、this_month、last_month),以及 insights 洞察数据。返回格式:本工具只返回原始数据,不返回格式化消息。Agent必须使用get_skill获取SKILL.md中的"七、回复规范",再读取references/response-templates.md中的模板自行渲染回复。',
|
|
442
|
-
inputSchema: {
|
|
443
|
-
type: 'object',
|
|
444
|
-
properties: {
|
|
445
|
-
period: { type: 'string', description: '统计周期(推荐使用):this_week(本周)、last_week(上周)、this_month(本月)、last_month(上月),与yearMonth或startDate/endDate二选一', enum: ['this_week', 'last_week', 'this_month', 'last_month'] },
|
|
446
|
-
yearMonth: { type: 'string', description: '年月(如:2026-03),与period或startDate/endDate二选一' },
|
|
447
|
-
startDate: { type: 'string', description: '开始日期(ISO格式),与period或yearMonth二选一' },
|
|
448
|
-
endDate: { type: 'string', description: '结束日期(ISO格式),与period或yearMonth二选一' },
|
|
449
|
-
includeInsights: { type: 'boolean', description: '是否包含洞察数据,默认true', default: true },
|
|
450
|
-
type: { type: 'string', description: '统计维度:item(商品明细)、receipt(小票汇总)、category(分类统计)、daily(每日趋势)、store(商家统计)', enum: ['item', 'receipt', 'category', 'daily', 'store'], default: 'category' },
|
|
451
|
-
category: { type: 'string', description: '按特定分类筛选统计' },
|
|
452
|
-
store: { type: 'string', description: '按特定商家筛选统计' },
|
|
453
|
-
groupBy: { type: 'string', description: '分组方式:category(分类)、date(日期)、store(商家)', enum: ['category', 'date', 'store'] },
|
|
454
|
-
},
|
|
455
|
-
},
|
|
456
|
-
},
|
|
457
|
-
{
|
|
458
|
-
name: 'get_insights',
|
|
459
|
-
description: '【新功能】获取消费洞察线索(包含趋势、模式、健康、优化建议)。纯云端计算,零AI成本!返回洞察线索,供 Agent 结合用户大模型进行深度分析。返回格式:本工具只返回原始数据,不返回格式化消息。Agent必须使用get_skill获取SKILL.md中的"七、回复规范",再读取references/response-templates.md中的模板自行渲染回复。',
|
|
460
|
-
inputSchema: {
|
|
461
|
-
type: 'object',
|
|
462
|
-
properties: {
|
|
463
|
-
period: { type: 'string', description: '统计周期:this_week(本周)、last_week(上周)、this_month(本月)、last_month(上月)', enum: ['this_week', 'last_week', 'this_month', 'last_month'], default: 'this_week' },
|
|
464
|
-
types: { type: ['string', 'array'], description: '洞察类型:trend(趋势)、pattern(模式)、health(健康)、optimization(优化),默认为全部', default: ['trend', 'pattern', 'health', 'optimization'] },
|
|
465
|
-
},
|
|
466
|
-
},
|
|
467
|
-
},
|
|
468
|
-
{
|
|
469
|
-
name: 'export_data',
|
|
470
|
-
description: '【新功能】导出完整的消费数据,供 Agent 深度分析(零AI成本!)。支持导出完整的消费记录和小票数据,然后在用户侧使用大模型进行深度分析。返回格式:本工具只返回原始数据,不返回格式化消息。Agent必须使用get_skill获取SKILL.md中的"七、回复规范",再读取references/response-templates.md中的模板自行渲染回复。',
|
|
471
|
-
inputSchema: {
|
|
472
|
-
type: 'object',
|
|
473
|
-
properties: {
|
|
474
|
-
period: { type: 'string', description: '周期:all(全部)、this_year(今年)、last_year(去年)、custom(自定义)', enum: ['all', 'this_year', 'last_year', 'custom'], default: 'this_year' },
|
|
475
|
-
format: { type: 'string', description: '导出格式:json 或 csv', enum: ['json', 'csv'], default: 'json' },
|
|
476
|
-
includeReceipts: { type: 'boolean', description: '是否包含小票记录,默认true', default: true },
|
|
477
|
-
startDate: { type: 'string', description: '开始日期(period=custom时必填)' },
|
|
478
|
-
endDate: { type: 'string', description: '结束日期(period=custom时必填)' },
|
|
479
|
-
},
|
|
480
|
-
},
|
|
481
|
-
},
|
|
482
|
-
{
|
|
483
|
-
name: 'save_income',
|
|
484
|
-
description: '【文本记账-收入】用户提及收入关键词(工资、红包、转账、退款等)时用此工具。前置:必须先调用get_skill获取规范,再调用get_text_parse_prompt获取凭证和解析模板。用法:mcporter call 柴米AI记账.save_income _flowmate="SOLINWANG..." name="红包" amount=100 category="红包" rawInput="收红包100元"',
|
|
485
|
-
inputSchema: {
|
|
486
|
-
type: 'object',
|
|
487
|
-
properties: {
|
|
488
|
-
name: { type: 'string', description: '收入来源(如:工资、奖金、红包)(必填)' },
|
|
489
|
-
amount: { type: 'number', description: '收入金额(必填)' },
|
|
490
|
-
category: { type: 'string', description: '【必填】收入分类(8个标准分类之一:工资、兼职、奖金、红包、退款、理财、转账、其他)' },
|
|
491
|
-
store: { type: 'string', description: '付款方(如:公司名称)(可选)' },
|
|
492
|
-
date: { type: 'number', description: '【必填】收入时间(毫秒级时间戳,13位数字。必须根据实际年月日时分秒计算,不允许复制示例数字)' },
|
|
493
|
-
note: { type: 'string', description: '备注(可选)' },
|
|
494
|
-
agentType: { type: 'string', description: '【必填】Agent类型,如:claude-desktop、cursor、openclaw、workbuddy、trae' },
|
|
495
|
-
apiProvider: { type: 'string', description: '【必填】AI服务提供商,如:anthropic、openai、doubao、aliyun' },
|
|
496
|
-
rawInput: { type: 'string', description: '【必填】用户的原始输入内容,用于记录用户原始请求' },
|
|
497
|
-
_flowmate: { type: 'string', description: '【必填】流程凭证,从get_text_parse_prompt获取的myflowmate值' },
|
|
498
|
-
},
|
|
499
|
-
required: ['name', 'amount', 'category', 'agentType', 'apiProvider', 'rawInput', '_flowmate'],
|
|
500
|
-
},
|
|
501
|
-
},
|
|
502
|
-
{
|
|
503
|
-
name: 'get_text_parse_prompt',
|
|
504
|
-
description: '【不调用100%失败】获取文字记账解析的Prompt模板和流程凭证。⚠️ 文字/语音记账必须先调用此工具获取凭证,AI解析时必须返回_flowmate字段,否则save_expense/save_income会报MISSING_TOKEN错误!',
|
|
505
|
-
inputSchema: {
|
|
506
|
-
type: 'object',
|
|
507
|
-
properties: {
|
|
508
|
-
agentType: { type: 'string', description: '【推荐自动填充】Agent类型,如:claude-desktop、cursor、openclaw、workbuddy、trae' },
|
|
509
|
-
apiProvider: { type: 'string', description: '【推荐自动填充】AI服务提供商,如:anthropic、openai、doubao、aliyun' },
|
|
510
|
-
},
|
|
511
|
-
},
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
name: 'get_parse_prompt',
|
|
515
|
-
description: '【不调用100%失败】获取小票图片解析的Prompt模板和流程凭证。⚠️ 小票记账必须先调用此工具获取凭证,AI解析时必须返回_flowmate字段,否则save_receipt会报MISSING_TOKEN错误!',
|
|
516
|
-
inputSchema: {
|
|
517
|
-
type: 'object',
|
|
518
|
-
properties: {
|
|
519
|
-
type: { type: 'string', description: 'Prompt类型,如:parseReceipt', default: 'parseReceipt' },
|
|
520
|
-
},
|
|
521
|
-
},
|
|
522
|
-
},
|
|
523
|
-
{
|
|
524
|
-
name: 'submit_feedback',
|
|
525
|
-
description: '提交反馈、建议或问题报告。当用户遇到记账问题、有功能建议或发现异常时,可使用此工具提交反馈。反馈类型包括:bug(问题报告)、feature(功能建议)、improvement(优化建议)、other(其他)。提交成功后会返回反馈编号,可用于查询处理进度。注意:反馈内容不要超过150个字符,超过部分会被截断。返回格式:本工具只返回原始数据,不返回格式化消息。Agent必须使用get_skill获取SKILL.md中的"七、回复规范",再读取references/response-templates.md中的模板自行渲染回复。',
|
|
526
|
-
inputSchema: {
|
|
527
|
-
type: 'object',
|
|
528
|
-
properties: {
|
|
529
|
-
content: { type: 'string', description: '反馈内容,详细描述问题或建议(必填,最多150个字符)' },
|
|
530
|
-
type: { type: 'string', description: '反馈类型:bug(问题报告)、feature(功能建议)、improvement(优化建议)、other(其他),默认other', enum: ['bug', 'feature', 'improvement', 'other'], default: 'other' },
|
|
531
|
-
contact: { type: 'string', description: '联系方式(可选),如邮箱、微信等,方便后续沟通' },
|
|
532
|
-
context: { type: 'string', description: '上下文信息(可选),如相关记账记录ID、错误截图描述等' },
|
|
533
|
-
agentType: { type: 'string', description: '【推荐自动填充】Agent类型,如:claude-desktop、cursor、openclaw、workbuddy、trae' },
|
|
534
|
-
apiProvider: { type: 'string', description: '【推荐自动填充】AI服务提供商,如:anthropic、openai、doubao、aliyun' },
|
|
535
|
-
},
|
|
536
|
-
required: ['content'],
|
|
537
|
-
},
|
|
538
|
-
},
|
|
539
|
-
],
|
|
540
|
-
};
|
|
541
|
-
});
|
|
542
|
-
|
|
543
|
-
// 工具名称映射:MCP Tool -> mcpHub Tool
|
|
544
|
-
const toolMapping = {
|
|
545
|
-
'save_expense': 'addExpense',
|
|
546
|
-
'save_receipt': 'addReceipt',
|
|
547
|
-
'save_income': 'addIncome',
|
|
548
|
-
'get_expenses': 'getExpenses',
|
|
549
|
-
'get_receipt_list': 'getExpenses',
|
|
550
|
-
'get_statistics': 'getStatistics',
|
|
551
|
-
'submit_feedback': 'addFeedback',
|
|
552
|
-
'get_insights': 'getInsights',
|
|
553
|
-
'export_data': 'exportData',
|
|
554
|
-
};
|
|
555
|
-
|
|
556
|
-
// 获取或刷新 Token(OAuth 2.0 Device Flow)
|
|
557
|
-
const TOKEN_REFRESH_INTERVAL = 2 * 60 * 60 * 1000;
|
|
558
|
-
let lastRefreshTime = 0;
|
|
559
|
-
|
|
560
|
-
async function getToken() {
|
|
561
|
-
// 【优化1】优先检查内存中的 token 是否有效
|
|
562
|
-
const cachedToken = getCachedToken();
|
|
563
|
-
if (cachedToken && tokenExpireTime > Date.now() + 5 * 60 * 1000) {
|
|
564
|
-
if (Date.now() - lastRefreshTime < TOKEN_REFRESH_INTERVAL) {
|
|
565
|
-
return cachedToken;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
// 【优化2】尝试从文件加载 token(优先级高于授权状态检查)
|
|
570
|
-
try {
|
|
571
|
-
const existingToken = await oauthManager.tokenStorage.load();
|
|
572
|
-
if (existingToken && existingToken.accessToken && existingToken.expiresAt) {
|
|
573
|
-
const expiresAt = new Date(existingToken.expiresAt).getTime();
|
|
574
|
-
if (expiresAt > Date.now() + 5 * 60 * 1000) {
|
|
575
|
-
// Token 有效,直接使用(加密存储)
|
|
576
|
-
setCachedToken(existingToken.accessToken);
|
|
577
|
-
tokenExpireTime = expiresAt;
|
|
578
|
-
authState.isAuthorized = true;
|
|
579
|
-
lastRefreshTime = Date.now();
|
|
580
|
-
console.error('✅ 已从文件加载有效 Token,无需重新授权');
|
|
581
|
-
return getCachedToken();
|
|
582
|
-
} else {
|
|
583
|
-
console.error('⏰ 保存的 Token 已过期,需要重新授权');
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
} catch (err) {
|
|
587
|
-
console.error('⚠️ 加载保存的 Token 失败:', err.message);
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
// 【优化3】Token 不存在或已过期,检查是否需要授权
|
|
591
|
-
if (!authState.isAuthorized) {
|
|
592
|
-
// 先检查是否有保存的授权状态(从文件加载)
|
|
593
|
-
const savedAuthState = await oauthManager.loadAuthState();
|
|
594
|
-
if (savedAuthState && savedAuthState.deviceCode) {
|
|
595
|
-
// 检查验证码是否已过期
|
|
596
|
-
if (oauthManager.isAuthStateExpired(savedAuthState)) {
|
|
597
|
-
console.error('⏰ 保存的验证码已过期,清除并生成新的验证码');
|
|
598
|
-
await oauthManager.clearAuthState();
|
|
599
|
-
// 继续执行,生成新的验证码
|
|
600
|
-
} else {
|
|
601
|
-
// 验证码未过期,尝试直接获取token(用户可能已授权)
|
|
602
|
-
try {
|
|
603
|
-
const token = await oauthManager.pollForTokenOnce(savedAuthState.deviceCode);
|
|
604
|
-
if (token) {
|
|
605
|
-
// 授权成功(加密存储)
|
|
606
|
-
setCachedToken(token.accessToken);
|
|
607
|
-
tokenExpireTime = token.expiresAt;
|
|
608
|
-
authState.isAuthorized = true;
|
|
609
|
-
await oauthManager.tokenStorage.save(token);
|
|
610
|
-
// 【新增】保存默认 Agent 名称和 deviceCode
|
|
611
|
-
await oauthManager.tokenStorage.saveAgentName('柴米AI助手');
|
|
612
|
-
await oauthManager.tokenStorage.saveDeviceCode(savedAuthState.deviceCode);
|
|
613
|
-
await oauthManager.clearAuthState();
|
|
614
|
-
console.error('✅ 授权成功!可以继续使用记账功能');
|
|
615
|
-
// 返回特殊标记,让上层知道这是刚完成授权的情况
|
|
616
|
-
throw new Error(`AUTH_JUST_COMPLETED:${getCachedToken()}`);
|
|
617
|
-
}
|
|
618
|
-
// 用户还未授权,返回同一个验证码
|
|
619
|
-
authState.deviceCode = savedAuthState.deviceCode;
|
|
620
|
-
authState.userCode = savedAuthState.userCode;
|
|
621
|
-
throw new Error(`NEED_AUTH:${savedAuthState.userCode}`);
|
|
622
|
-
} catch (err) {
|
|
623
|
-
if (err.message.startsWith('NEED_AUTH:') || err.message.startsWith('AUTH_JUST_COMPLETED:')) {
|
|
624
|
-
throw err;
|
|
625
|
-
}
|
|
626
|
-
// 其他错误,继续获取新的验证码
|
|
627
|
-
console.error('⚠️ 检查授权状态失败:', err.message);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
// 没有保存的授权状态或已过期,启动新的授权流程
|
|
633
|
-
await startAuthFlow();
|
|
634
|
-
|
|
635
|
-
// 返回验证码给Agent
|
|
636
|
-
throw new Error(`NEED_AUTH:${authState.userCode || '等待生成验证码'}`);
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
// 【优化4】已授权,尝试刷新 token
|
|
640
|
-
if (!oauthManager) {
|
|
641
|
-
throw new Error('OAuth 管理器未初始化,请检查 MCP_OAUTH_URL 配置');
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
try {
|
|
645
|
-
const oauthToken = await oauthManager.getValidToken();
|
|
646
|
-
setCachedToken(oauthToken.accessToken);
|
|
647
|
-
tokenExpireTime = oauthToken.expiresAt;
|
|
648
|
-
lastRefreshTime = Date.now();
|
|
649
|
-
await oauthManager.clearAuthState();
|
|
650
|
-
return getCachedToken();
|
|
651
|
-
} catch (err) {
|
|
652
|
-
// Token 获取失败,可能需要重新授权
|
|
653
|
-
authState.isAuthorized = false;
|
|
654
|
-
authState.isWaiting = false;
|
|
655
|
-
throw new Error(`NEED_AUTH:授权已过期,请重新授权`);
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
|
|
659
|
-
// 调用 mcpPrompt 云函数(获取 Prompt 或校验数据)
|
|
660
|
-
async function callMcpPrompt(tool, params, token) {
|
|
661
|
-
const response = await fetch(MCP_PROMPT_URL, {
|
|
662
|
-
method: 'POST',
|
|
663
|
-
headers: {
|
|
664
|
-
'Content-Type': 'application/json',
|
|
665
|
-
'Authorization': `Bearer ${token}`,
|
|
666
|
-
},
|
|
667
|
-
body: JSON.stringify({
|
|
668
|
-
tool: tool,
|
|
669
|
-
params: params,
|
|
670
|
-
}),
|
|
671
|
-
});
|
|
672
|
-
|
|
673
|
-
if (!response.ok) {
|
|
674
|
-
const errorText = await response.text();
|
|
675
|
-
throw new Error(`mcpPrompt 调用失败: ${errorText}`);
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
return await response.json();
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
// 生成请求签名(用于验证请求来自合法 MCP Server)
|
|
682
|
-
function generateSignature(body, timestamp, secret) {
|
|
683
|
-
const payload = JSON.stringify(body) + timestamp;
|
|
684
|
-
return crypto
|
|
685
|
-
.createHmac('sha256', secret)
|
|
686
|
-
.update(payload)
|
|
687
|
-
.digest('hex');
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
// MCP 调用日志记录函数
|
|
691
|
-
async function logMcpCall(logData) {
|
|
692
|
-
try {
|
|
693
|
-
// 异步发送日志到云函数,不阻塞主流程
|
|
694
|
-
const body = {
|
|
695
|
-
tool: 'logMcpCall',
|
|
696
|
-
params: logData,
|
|
697
|
-
};
|
|
698
|
-
const timestamp = Date.now().toString();
|
|
699
|
-
const signature = generateSignature(body, timestamp, CHAIMI_API_SECRET);
|
|
700
|
-
|
|
701
|
-
fetch(MCP_HUB_URL, {
|
|
702
|
-
method: 'POST',
|
|
703
|
-
headers: {
|
|
704
|
-
'Content-Type': 'application/json',
|
|
705
|
-
'Authorization': `Bearer ${await getToken()}`,
|
|
706
|
-
'X-Chaimi-Signature': signature,
|
|
707
|
-
'X-Chaimi-Timestamp': timestamp,
|
|
708
|
-
},
|
|
709
|
-
body: JSON.stringify(body),
|
|
710
|
-
}).catch(err => {
|
|
711
|
-
// 日志记录失败不影响主流程
|
|
712
|
-
console.error('MCP 调用日志记录失败:', err.message);
|
|
713
|
-
});
|
|
714
|
-
} catch (e) {
|
|
715
|
-
// 日志记录失败不影响主流程
|
|
716
|
-
console.error('MCP 调用日志记录异常:', e.message);
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
// 生成 traceId
|
|
721
|
-
function generateTraceId() {
|
|
722
|
-
return `trace_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
// 获取操作系统信息
|
|
726
|
-
function getOSInfo() {
|
|
727
|
-
return {
|
|
728
|
-
osType: process.platform, // 'darwin', 'win32', 'linux'
|
|
729
|
-
osVersion: os.release() // '23.6.0', '10.0.19045'
|
|
730
|
-
};
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
// 调用 mcpHub 云函数(带日志和链路追踪)
|
|
734
|
-
async function callMcpHubWithLogging(tool, params, token, traceId, startTime, osInfo, agentType, apiProvider) {
|
|
735
|
-
// 记录即将调用云函数(已停用:MCP调用日志待迁移到独立云函数)
|
|
736
|
-
// logMcpCall({
|
|
737
|
-
// traceId,
|
|
738
|
-
// stage: 'cloud_calling',
|
|
739
|
-
// toolName: tool,
|
|
740
|
-
// params: sanitizeLogParams(params),
|
|
741
|
-
// agentType: agentType || '',
|
|
742
|
-
// apiProvider: apiProvider || '',
|
|
743
|
-
// mcpVersion: MCP_VERSION,
|
|
744
|
-
// osType: osInfo?.osType,
|
|
745
|
-
// osVersion: osInfo?.osVersion,
|
|
746
|
-
// timestamp: new Date().toISOString(),
|
|
747
|
-
// logSource: 'mcp'
|
|
748
|
-
// });
|
|
749
|
-
|
|
750
|
-
// 添加 agentType 和 apiProvider 到 params,确保传递到云函数
|
|
751
|
-
const paramsWithMeta = {
|
|
752
|
-
...params,
|
|
753
|
-
agentType: agentType || '',
|
|
754
|
-
apiProvider: apiProvider || '',
|
|
755
|
-
};
|
|
756
|
-
|
|
757
|
-
try {
|
|
758
|
-
const result = await callMcpHub(tool, paramsWithMeta, token, traceId, osInfo);
|
|
759
|
-
|
|
760
|
-
// 记录云函数调用成功(已停用:MCP调用日志待迁移到独立云函数)
|
|
761
|
-
// logMcpCall({
|
|
762
|
-
// traceId,
|
|
763
|
-
// stage: 'cloud_success',
|
|
764
|
-
// toolName: tool,
|
|
765
|
-
// duration: Date.now() - startTime,
|
|
766
|
-
// agentType: agentType || '',
|
|
767
|
-
// apiProvider: apiProvider || '',
|
|
768
|
-
// mcpVersion: MCP_VERSION,
|
|
769
|
-
// osType: osInfo?.osType,
|
|
770
|
-
// osVersion: osInfo?.osVersion,
|
|
771
|
-
// timestamp: new Date().toISOString(),
|
|
772
|
-
// logSource: 'mcp'
|
|
773
|
-
// });
|
|
774
|
-
|
|
775
|
-
return result;
|
|
776
|
-
} catch (cloudErr) {
|
|
777
|
-
// 记录云函数调用失败(已停用:MCP调用日志待迁移到独立云函数)
|
|
778
|
-
// logMcpCall({
|
|
779
|
-
// traceId,
|
|
780
|
-
// stage: 'cloud_failed',
|
|
781
|
-
// toolName: tool,
|
|
782
|
-
// error: cloudErr.message,
|
|
783
|
-
// duration: Date.now() - startTime,
|
|
784
|
-
// agentType: agentType || '',
|
|
785
|
-
// apiProvider: apiProvider || '',
|
|
786
|
-
// mcpVersion: MCP_VERSION,
|
|
787
|
-
// osType: osInfo?.osType,
|
|
788
|
-
// osVersion: osInfo?.osVersion,
|
|
789
|
-
// timestamp: new Date().toISOString(),
|
|
790
|
-
// logSource: 'mcp'
|
|
791
|
-
// });
|
|
792
|
-
throw cloudErr;
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
// 调用 mcpHub 云函数
|
|
797
|
-
async function callMcpHub(tool, params, token, traceId, osInfo) {
|
|
798
|
-
const body = {
|
|
799
|
-
tool: tool,
|
|
800
|
-
params: {
|
|
801
|
-
...params,
|
|
802
|
-
_traceId: traceId, // 传递 traceId 用于链路追踪
|
|
803
|
-
osType: osInfo?.osType, // 传递操作系统类型
|
|
804
|
-
osVersion: osInfo?.osVersion, // 传递操作系统版本
|
|
805
|
-
},
|
|
806
|
-
};
|
|
807
|
-
const timestamp = Date.now().toString();
|
|
808
|
-
const signature = generateSignature(body, timestamp, CHAIMI_API_SECRET);
|
|
809
|
-
|
|
810
|
-
const response = await fetch(MCP_HUB_URL, {
|
|
811
|
-
method: 'POST',
|
|
812
|
-
headers: {
|
|
813
|
-
'Content-Type': 'application/json',
|
|
814
|
-
'Authorization': `Bearer ${token}`,
|
|
815
|
-
'X-Chaimi-Signature': signature,
|
|
816
|
-
'X-Chaimi-Timestamp': timestamp,
|
|
817
|
-
},
|
|
818
|
-
body: JSON.stringify(body),
|
|
819
|
-
});
|
|
820
|
-
|
|
821
|
-
if (!response.ok) {
|
|
822
|
-
const errorText = await response.text();
|
|
823
|
-
throw new Error(`mcpHub 调用失败: ${errorText}`);
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
return await response.json();
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
// Skill 读取记录文件路径
|
|
830
|
-
const SKILL_READ_LOG_PATH = path.join(os.homedir(), '.chaimi-mcp', 'skill-read.log');
|
|
831
|
-
const SKILL_VALID_DURATION = 5 * 60 * 1000; // 5分钟内有效
|
|
832
|
-
|
|
833
|
-
/**
|
|
834
|
-
* 获取上次读取 Skill 的时间
|
|
835
|
-
*/
|
|
836
|
-
function getLastSkillReadTime() {
|
|
837
|
-
try {
|
|
838
|
-
if (fs.existsSync(SKILL_READ_LOG_PATH)) {
|
|
839
|
-
const data = JSON.parse(fs.readFileSync(SKILL_READ_LOG_PATH, 'utf8'));
|
|
840
|
-
return data.lastReadTime || 0;
|
|
841
|
-
}
|
|
842
|
-
} catch (error) {
|
|
843
|
-
console.error('读取 Skill 记录失败:', error);
|
|
844
|
-
}
|
|
845
|
-
return 0;
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
/**
|
|
849
|
-
* 记录 Skill 读取时间
|
|
850
|
-
*/
|
|
851
|
-
function recordSkillRead() {
|
|
852
|
-
try {
|
|
853
|
-
const logDir = path.dirname(SKILL_READ_LOG_PATH);
|
|
854
|
-
if (!fs.existsSync(logDir)) {
|
|
855
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
856
|
-
}
|
|
857
|
-
fs.writeFileSync(SKILL_READ_LOG_PATH, JSON.stringify({
|
|
858
|
-
lastReadTime: Date.now(),
|
|
859
|
-
readAt: new Date().toISOString()
|
|
860
|
-
}, null, 2));
|
|
861
|
-
} catch (error) {
|
|
862
|
-
console.error('记录 Skill 读取失败:', error);
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
// 工具调用处理
|
|
867
|
-
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
868
|
-
const { name, arguments: args } = request.params;
|
|
869
|
-
const startTime = Date.now();
|
|
870
|
-
const traceId = generateTraceId();
|
|
871
|
-
const osInfo = getOSInfo();
|
|
872
|
-
|
|
873
|
-
// 提取元数据字段
|
|
874
|
-
const agentType = args.agentType || process.env.AGENT_TYPE || process.env.MCP_AGENT_TYPE || '';
|
|
875
|
-
const apiProvider = args.apiProvider || process.env.API_PROVIDER || process.env.MCP_API_PROVIDER || '';
|
|
876
|
-
|
|
877
|
-
// 记录请求到达(已停用:MCP调用日志待迁移到独立云函数)
|
|
878
|
-
// logMcpCall({
|
|
879
|
-
// traceId,
|
|
880
|
-
// stage: 'request_received',
|
|
881
|
-
// toolName: name,
|
|
882
|
-
// params: sanitizeLogParams(args),
|
|
883
|
-
// agentType: args.agentType || process.env.AGENT_TYPE || process.env.MCP_AGENT_TYPE || '',
|
|
884
|
-
// apiProvider: args.apiProvider || process.env.API_PROVIDER || process.env.MCP_API_PROVIDER || '',
|
|
885
|
-
// mcpVersion: MCP_VERSION,
|
|
886
|
-
// osType: osInfo.osType,
|
|
887
|
-
// osVersion: osInfo.osVersion,
|
|
888
|
-
// timestamp: new Date().toISOString(),
|
|
889
|
-
// logSource: 'mcp'
|
|
890
|
-
// });
|
|
891
|
-
|
|
892
|
-
// 检查频率限制
|
|
893
|
-
const rateLimitResult = checkRateLimit(name);
|
|
894
|
-
if (!rateLimitResult.allowed) {
|
|
895
|
-
const waitTime = rateLimitResult.waitSeconds < 60
|
|
896
|
-
? `${rateLimitResult.waitSeconds} 秒`
|
|
897
|
-
: `${Math.ceil(rateLimitResult.waitSeconds / 60)} 分钟`;
|
|
898
|
-
|
|
899
|
-
// 记录限流日志(已停用:MCP调用日志待迁移到独立云函数)
|
|
900
|
-
// logMcpCall({
|
|
901
|
-
// traceId,
|
|
902
|
-
// stage: 'rate_limited',
|
|
903
|
-
// toolName: name,
|
|
904
|
-
// error: 'RATE_LIMIT_EXCEEDED',
|
|
905
|
-
// duration: Date.now() - startTime,
|
|
906
|
-
// agentType,
|
|
907
|
-
// apiProvider,
|
|
908
|
-
// mcpVersion: MCP_VERSION,
|
|
909
|
-
// osType: osInfo.osType,
|
|
910
|
-
// osVersion: osInfo.osVersion,
|
|
911
|
-
// timestamp: new Date().toISOString(),
|
|
912
|
-
// logSource: 'mcp'
|
|
913
|
-
// });
|
|
914
|
-
|
|
915
|
-
return {
|
|
916
|
-
content: [
|
|
917
|
-
{
|
|
918
|
-
type: 'text',
|
|
919
|
-
text: JSON.stringify({
|
|
920
|
-
success: false,
|
|
921
|
-
error: `请求过于频繁,30 秒内最多调用 ${rateLimitResult.maxRequests} 次,请 ${waitTime} 后再试`,
|
|
922
|
-
code: 429
|
|
923
|
-
})
|
|
924
|
-
}
|
|
925
|
-
],
|
|
926
|
-
isError: true,
|
|
927
|
-
};
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
// 强制检查:记账工具必须先调用 get_skill
|
|
931
|
-
if (name === 'save_expense' || name === 'save_receipt' || name === 'save_income') {
|
|
932
|
-
const now = Date.now();
|
|
933
|
-
const lastReadTime = getLastSkillReadTime();
|
|
934
|
-
if (now - lastReadTime > SKILL_VALID_DURATION) {
|
|
935
|
-
// 记录校验失败(已停用:MCP调用日志待迁移到独立云函数)
|
|
936
|
-
// logMcpCall({
|
|
937
|
-
// traceId,
|
|
938
|
-
// stage: 'validation_failed',
|
|
939
|
-
// toolName: name,
|
|
940
|
-
// error: 'SKILL_NOT_READ',
|
|
941
|
-
// duration: Date.now() - startTime,
|
|
942
|
-
// agentType: args.agentType || process.env.AGENT_TYPE || process.env.MCP_AGENT_TYPE || '',
|
|
943
|
-
// apiProvider: args.apiProvider || process.env.API_PROVIDER || process.env.MCP_API_PROVIDER || '',
|
|
944
|
-
// mcpVersion: MCP_VERSION,
|
|
945
|
-
// osType: osInfo.osType,
|
|
946
|
-
// osVersion: osInfo.osVersion,
|
|
947
|
-
// timestamp: new Date().toISOString(),
|
|
948
|
-
// logSource: 'mcp'
|
|
949
|
-
// });
|
|
950
|
-
return {
|
|
951
|
-
content: [
|
|
952
|
-
{
|
|
953
|
-
type: 'text',
|
|
954
|
-
text: JSON.stringify({
|
|
955
|
-
success: false,
|
|
956
|
-
error: 'SKILL_NOT_READ',
|
|
957
|
-
message: '❌ 记账失败:未读取最新 Skill 定义\n\n根据规范,每次记账前必须先调用 `get_skill` 工具获取最新 Skill 定义。\n\n请按以下步骤操作:\n1. 调用 `get_skill` 工具\n2. 仔细阅读返回的 Skill 文档\n3. 严格按照 Skill 定义执行记账操作\n\n⚠️ 此检查是为了确保你使用的是最新版本的规范,避免凭记忆操作导致错误。',
|
|
958
|
-
code: 400
|
|
959
|
-
}),
|
|
960
|
-
},
|
|
961
|
-
],
|
|
962
|
-
};
|
|
963
|
-
}
|
|
964
|
-
}
|
|
965
|
-
|
|
966
|
-
const agentTypeFromEnv = process.env.AGENT_TYPE || process.env.MCP_AGENT_TYPE || '';
|
|
967
|
-
const apiProviderFromEnv = process.env.API_PROVIDER || process.env.MCP_API_PROVIDER || '';
|
|
968
|
-
|
|
969
|
-
if (!args.agentType && agentTypeFromEnv) {
|
|
970
|
-
args.agentType = agentTypeFromEnv;
|
|
971
|
-
}
|
|
972
|
-
if (!args.apiProvider && apiProviderFromEnv) {
|
|
973
|
-
args.apiProvider = apiProviderFromEnv;
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
try {
|
|
977
|
-
const token = await getToken();
|
|
978
|
-
|
|
979
|
-
let processedArgs = { ...args };
|
|
980
|
-
if (processedArgs.items && typeof processedArgs.items === 'string') {
|
|
981
|
-
try {
|
|
982
|
-
processedArgs.items = JSON.parse(processedArgs.items);
|
|
983
|
-
} catch (e) {
|
|
984
|
-
}
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
// 【新增】参数类型自动转换(兼容 CLI 工具的字符串传参)
|
|
988
|
-
function autoConvertTypes(toolName, args) {
|
|
989
|
-
const numberFields = {
|
|
990
|
-
'save_expense': ['amount', 'date'],
|
|
991
|
-
'save_receipt': ['totalAmount', 'actualAmount', 'originalAmount', 'discountAmount', 'date'],
|
|
992
|
-
'save_income': ['amount', 'date'],
|
|
993
|
-
};
|
|
994
|
-
|
|
995
|
-
const fields = numberFields[toolName] || [];
|
|
996
|
-
for (const field of fields) {
|
|
997
|
-
if (field in args && typeof args[field] !== 'number') {
|
|
998
|
-
const parsed = parseFloat(args[field]);
|
|
999
|
-
if (!isNaN(parsed)) {
|
|
1000
|
-
console.error(`[TypeConvert] ${field}: "${args[field]}" → ${parsed}`);
|
|
1001
|
-
args[field] = parsed;
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
// 转换 items 数组中的数字字段
|
|
1007
|
-
if (args.items && Array.isArray(args.items)) {
|
|
1008
|
-
args.items.forEach(item => {
|
|
1009
|
-
['amount', 'price', 'quantity'].forEach(field => {
|
|
1010
|
-
if (field in item && typeof item[field] !== 'number') {
|
|
1011
|
-
const parsed = parseFloat(item[field]);
|
|
1012
|
-
if (!isNaN(parsed)) item[field] = parsed;
|
|
1013
|
-
}
|
|
1014
|
-
});
|
|
1015
|
-
});
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
autoConvertTypes(name, processedArgs);
|
|
1020
|
-
|
|
1021
|
-
let result;
|
|
1022
|
-
|
|
1023
|
-
switch (name) {
|
|
1024
|
-
case 'get_skill': {
|
|
1025
|
-
// 读取 SKILL.md 文件
|
|
1026
|
-
const skillPath = path.join(__dirname, 'SKILL.md');
|
|
1027
|
-
let skillContent;
|
|
1028
|
-
try {
|
|
1029
|
-
skillContent = fs.readFileSync(skillPath, 'utf8');
|
|
1030
|
-
} catch (error) {
|
|
1031
|
-
skillContent = '无法读取 Skill 文件,请检查安装是否完整';
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
// 更新读取时间(持久化到文件)
|
|
1035
|
-
recordSkillRead();
|
|
1036
|
-
|
|
1037
|
-
result = {
|
|
1038
|
-
success: true,
|
|
1039
|
-
data: {
|
|
1040
|
-
skill: skillContent,
|
|
1041
|
-
version: MCP_VERSION,
|
|
1042
|
-
readAt: new Date().toISOString(),
|
|
1043
|
-
validFor: '5分钟'
|
|
1044
|
-
},
|
|
1045
|
-
message: `✅ Skill 定义已获取,有效期5分钟\n\n【重要】完整的 Skill 文档内容在 result.data.skill 字段中,请仔细阅读后严格按照 Skill 文档执行记账操作!`
|
|
1046
|
-
};
|
|
1047
|
-
userMessage = result.message;
|
|
1048
|
-
break;
|
|
1049
|
-
}
|
|
1050
|
-
|
|
1051
|
-
case 'save_expense': {
|
|
1052
|
-
// P0: 数据完整性检查 - 必填字段验证(date 有兜底,不强制检查)
|
|
1053
|
-
const requiredFields = ['name', 'amount', 'category', 'rawInput'];
|
|
1054
|
-
const missingFields = [];
|
|
1055
|
-
|
|
1056
|
-
for (const field of requiredFields) {
|
|
1057
|
-
if (processedArgs[field] === undefined || processedArgs[field] === null || processedArgs[field] === '') {
|
|
1058
|
-
missingFields.push(field);
|
|
1059
|
-
}
|
|
1060
|
-
}
|
|
1061
|
-
|
|
1062
|
-
if (missingFields.length > 0) {
|
|
1063
|
-
result = {
|
|
1064
|
-
success: false,
|
|
1065
|
-
error: `必填字段缺失:${missingFields.join(', ')}`,
|
|
1066
|
-
code: 400,
|
|
1067
|
-
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list 柴米AI记账 --schema 查看完整参数结构',
|
|
1068
|
-
debug: {
|
|
1069
|
-
missing: missingFields,
|
|
1070
|
-
received: Object.keys(processedArgs),
|
|
1071
|
-
docs: '调用 get_skill() 获取详细使用指南'
|
|
1072
|
-
}
|
|
1073
|
-
};
|
|
1074
|
-
userMessage = `❌ 记账失败\n\n错误:缺少必填字段:${missingFields.join(', ')}\n\n💡 解决方案:\n1. 请检查是否从用户输入中提取了所有信息\n2. 确保传递以下字段:name(商品名)、amount(金额)、category(分类)、rawInput(原始输入)\n3. 参考 SKILL.md 中的"调用前检查清单"`;
|
|
1075
|
-
break;
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
// 数值校验
|
|
1079
|
-
if (typeof processedArgs.amount !== 'number' || processedArgs.amount <= 0) {
|
|
1080
|
-
result = {
|
|
1081
|
-
success: false,
|
|
1082
|
-
error: '金额必须是正数',
|
|
1083
|
-
code: 400
|
|
1084
|
-
};
|
|
1085
|
-
userMessage = '❌ 记账失败:金额必须是正数';
|
|
1086
|
-
break;
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
|
-
// 【新增】处理 time_description(文本记账新时间格式)
|
|
1090
|
-
let timeNote = null;
|
|
1091
|
-
if (processedArgs.time_description) {
|
|
1092
|
-
const parsedDate = parseTimeDescription(processedArgs.time_description, Date.now());
|
|
1093
|
-
processedArgs.date = parsedDate;
|
|
1094
|
-
// 正常解析时不显示 timeNote,只有兜底或异常时才显示
|
|
1095
|
-
console.log(`[save_expense] 时间描述解析: ${processedArgs.time_description} → ${parsedDate} (${new Date(parsedDate).toLocaleString('zh-CN')})`);
|
|
1096
|
-
}
|
|
1097
|
-
|
|
1098
|
-
// P1: 日期合理性检查
|
|
1099
|
-
if (processedArgs.date) {
|
|
1100
|
-
const validation = validateDate(processedArgs.date, '消费日期');
|
|
1101
|
-
if (!validation.valid) {
|
|
1102
|
-
result = {
|
|
1103
|
-
success: false,
|
|
1104
|
-
error: validation.error,
|
|
1105
|
-
code: 400
|
|
1106
|
-
};
|
|
1107
|
-
userMessage = validation.message;
|
|
1108
|
-
break;
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
|
-
// 【新增】校验时间是否在合理范围内(±1年)
|
|
1112
|
-
const dateObj = new Date(processedArgs.date);
|
|
1113
|
-
const now = new Date();
|
|
1114
|
-
const oneYearAgo = new Date(now.getFullYear() - 1, 0, 1);
|
|
1115
|
-
const oneYearLater = new Date(now.getFullYear() + 1, 11, 31);
|
|
1116
|
-
|
|
1117
|
-
if (dateObj < oneYearAgo || dateObj > oneYearLater) {
|
|
1118
|
-
console.warn(`[save_expense] 时间异常:${processedArgs.date} (${dateObj.toLocaleString('zh-CN')}),使用当前时间`);
|
|
1119
|
-
processedArgs.date = Date.now();
|
|
1120
|
-
timeNote = '⏰ 时间说明:检测到时间异常,已使用当前时间';
|
|
1121
|
-
}
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
// 添加 agentType 和 apiProvider 到 processedArgs,确保 convertParams 能获取到
|
|
1125
|
-
processedArgs.agentType = agentType || '';
|
|
1126
|
-
processedArgs.apiProvider = apiProvider || '';
|
|
1127
|
-
|
|
1128
|
-
const mcpParams = convertParams('save_expense', processedArgs);
|
|
1129
|
-
result = await callMcpHubWithLogging('addExpense', mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1130
|
-
|
|
1131
|
-
if (result.success) {
|
|
1132
|
-
const displayName = processedArgs.name || '未知商品';
|
|
1133
|
-
const displayAmount = processedArgs.amount || 0;
|
|
1134
|
-
const displayCategory = processedArgs.category || '其他';
|
|
1135
|
-
const displayStore = processedArgs.store || '';
|
|
1136
|
-
|
|
1137
|
-
// 友好结束语(根据分类)
|
|
1138
|
-
const friendlyEndings = {
|
|
1139
|
-
'餐饮': '用餐愉快!🍚 / 好好吃饭哦~',
|
|
1140
|
-
'食品': '吃好喝好!🍎',
|
|
1141
|
-
'交通': '出行顺利!🚗',
|
|
1142
|
-
'购物': '买得开心!🛍️',
|
|
1143
|
-
'收入': '入账顺利!💰',
|
|
1144
|
-
'其他': '记账完成!继续保持~ ✨'
|
|
1145
|
-
};
|
|
1146
|
-
const friendlyEnding = friendlyEndings[displayCategory] || '记账完成!继续保持~ ✨';
|
|
1147
|
-
|
|
1148
|
-
// 消费洞察(如果有)
|
|
1149
|
-
let insightsText = '';
|
|
1150
|
-
if (result.insights && result.insights.length > 0) {
|
|
1151
|
-
insightsText = '\n\n消费洞察:' + result.insights.map(ins => ins.message || ins.title).join(';');
|
|
1152
|
-
}
|
|
1153
|
-
|
|
1154
|
-
// 新解锁成就(如果有)
|
|
1155
|
-
let achievementsText = '';
|
|
1156
|
-
if (result.newlyUnlocked && result.newlyUnlocked.length > 0) {
|
|
1157
|
-
achievementsText = '\n\n🎉 成就解锁:' + result.newlyUnlocked.map(a => `${a.icon} ${a.title}(+${a.points}分)`).join(';');
|
|
1158
|
-
}
|
|
1159
|
-
|
|
1160
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1161
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1162
|
-
result._templateHint = '请使用references/response-templates.md中的2.1标准成功模板渲染回复';
|
|
1163
|
-
result._templateVariables = {
|
|
1164
|
-
agentName: await getAgentName(),
|
|
1165
|
-
类型: '支出',
|
|
1166
|
-
商品名: displayName,
|
|
1167
|
-
商家: displayStore || null,
|
|
1168
|
-
金额: displayAmount,
|
|
1169
|
-
分类: result.data?.categoryName || displayCategory,
|
|
1170
|
-
日期: result.data?.date ? new Date(result.data.date).toLocaleString('zh-CN') : new Date().toLocaleString('zh-CN'),
|
|
1171
|
-
正能量祝福语: friendlyEnding,
|
|
1172
|
-
insightsText,
|
|
1173
|
-
achievementsText,
|
|
1174
|
-
timeNote: timeNote || null
|
|
1175
|
-
};
|
|
1176
|
-
}
|
|
1177
|
-
break;
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
|
-
case 'save_receipt': {
|
|
1181
|
-
// P0: 数据完整性检查 - 必填字段验证(date 有兜底,不强制检查)
|
|
1182
|
-
const requiredFields = ['store', 'totalAmount', 'actualAmount', 'originalAmount', 'discountAmount', 'storeCategory', 'storeSubCategory'];
|
|
1183
|
-
const missingFields = [];
|
|
1184
|
-
|
|
1185
|
-
for (const field of requiredFields) {
|
|
1186
|
-
if (processedArgs[field] === undefined || processedArgs[field] === null || processedArgs[field] === '') {
|
|
1187
|
-
missingFields.push(field);
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
|
|
1191
|
-
if (missingFields.length > 0) {
|
|
1192
|
-
result = {
|
|
1193
|
-
success: false,
|
|
1194
|
-
error: `必填字段缺失:${missingFields.join(', ')}`,
|
|
1195
|
-
code: 400,
|
|
1196
|
-
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list 柴米AI记账 --schema 查看完整参数结构',
|
|
1197
|
-
debug: {
|
|
1198
|
-
missing: missingFields,
|
|
1199
|
-
received: Object.keys(processedArgs),
|
|
1200
|
-
docs: '调用 get_skill() 获取详细使用指南'
|
|
1201
|
-
}
|
|
1202
|
-
};
|
|
1203
|
-
userMessage = `❌ 保存失败\n\n错误:缺少必填字段:${missingFields.join(', ')}\n\n💡 解决方案:\n1. 请检查是否从 get_parse_prompt 的解析结果中提取了所有信息\n2. 确保传递以下字段:store、totalAmount、actualAmount、originalAmount、discountAmount、storeCategory、storeSubCategory\n3. 参考 SKILL.md 中的小票字段核对清单`;
|
|
1204
|
-
break;
|
|
1205
|
-
}
|
|
1206
|
-
|
|
1207
|
-
// 数值校验
|
|
1208
|
-
const amountFields = ['totalAmount', 'actualAmount', 'originalAmount'];
|
|
1209
|
-
for (const field of amountFields) {
|
|
1210
|
-
if (typeof processedArgs[field] !== 'number' || processedArgs[field] <= 0) {
|
|
1211
|
-
result = {
|
|
1212
|
-
success: false,
|
|
1213
|
-
error: `${field} 必须是正数`,
|
|
1214
|
-
code: 400
|
|
1215
|
-
};
|
|
1216
|
-
userMessage = `❌ 保存失败:${field} 必须是正数`;
|
|
1217
|
-
break;
|
|
1218
|
-
}
|
|
1219
|
-
}
|
|
1220
|
-
if (result && !result.success) break;
|
|
1221
|
-
|
|
1222
|
-
if (typeof processedArgs.discountAmount !== 'number' || processedArgs.discountAmount < 0) {
|
|
1223
|
-
result = {
|
|
1224
|
-
success: false,
|
|
1225
|
-
error: 'discountAmount 必须是非负数',
|
|
1226
|
-
code: 400
|
|
1227
|
-
};
|
|
1228
|
-
userMessage = '❌ 保存失败:优惠金额必须是非负数';
|
|
1229
|
-
break;
|
|
1230
|
-
}
|
|
1231
|
-
|
|
1232
|
-
// 检查 items 是否存在且非空
|
|
1233
|
-
if (!processedArgs.items || !Array.isArray(processedArgs.items) || processedArgs.items.length === 0) {
|
|
1234
|
-
result = {
|
|
1235
|
-
success: false,
|
|
1236
|
-
error: 'items 不能为空,必须包含至少一个商品',
|
|
1237
|
-
code: 400
|
|
1238
|
-
};
|
|
1239
|
-
userMessage = '❌ 保存失败:商品列表不能为空\n\n💡 请确保从 get_parse_prompt 的解析结果中正确提取了 items 数组';
|
|
1240
|
-
break;
|
|
1241
|
-
}
|
|
1242
|
-
|
|
1243
|
-
// 检查 items 中每个商品的必填字段(包括分类字段)
|
|
1244
|
-
const invalidItems = [];
|
|
1245
|
-
processedArgs.items.forEach((item, index) => {
|
|
1246
|
-
const itemMissingFields = [];
|
|
1247
|
-
if (!item.hasOwnProperty('name') || item.name === '') itemMissingFields.push('name');
|
|
1248
|
-
if (!item.hasOwnProperty('amount') || item.amount === undefined) itemMissingFields.push('amount');
|
|
1249
|
-
if (!item.hasOwnProperty('price') || item.price === undefined) itemMissingFields.push('price');
|
|
1250
|
-
if (!item.hasOwnProperty('quantity') || item.quantity === undefined) itemMissingFields.push('quantity');
|
|
1251
|
-
// 【改造】检查新字段 productCategory 和 category
|
|
1252
|
-
if (!item.hasOwnProperty('productCategory') || item.productCategory === '') {
|
|
1253
|
-
itemMissingFields.push('productCategory');
|
|
1254
|
-
}
|
|
1255
|
-
if (!item.hasOwnProperty('category') || item.category === '') {
|
|
1256
|
-
itemMissingFields.push('category');
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
if (itemMissingFields.length > 0) {
|
|
1260
|
-
invalidItems.push(`商品${index + 1}(${item.name || '未命名'})缺少字段: ${itemMissingFields.join(', ')}`);
|
|
1261
|
-
}
|
|
1262
|
-
});
|
|
1263
|
-
|
|
1264
|
-
if (invalidItems.length > 0) {
|
|
1265
|
-
result = {
|
|
1266
|
-
success: false,
|
|
1267
|
-
error: `商品数据不完整:${invalidItems.join('; ')}。每个商品必须包含:name, amount, price, quantity, productCategory, category`,
|
|
1268
|
-
code: 400
|
|
1269
|
-
};
|
|
1270
|
-
userMessage = `❌ 保存失败\n\n错误:商品数据格式不完整\n\n${invalidItems.join('\n')}\n\n💡 解决方案:\n1. 请更新您的柴米AI记账 MCP Skill\n2. 确保每个商品包含完整的6个字段:name, amount, price, quantity, productCategory, category\n3. productCategory 是商品分类,category 是记账分类,都是必填项`;
|
|
1271
|
-
break;
|
|
1272
|
-
}
|
|
1273
|
-
|
|
1274
|
-
// 【新增】转换 date_components 为 date
|
|
1275
|
-
if (processedArgs.date_components && !processedArgs.date) {
|
|
1276
|
-
const { year, month, day, hour, minute, second } = processedArgs.date_components;
|
|
1277
|
-
|
|
1278
|
-
// 校验时间组件完整性
|
|
1279
|
-
if (!year || !month || !day || hour === undefined || minute === undefined) {
|
|
1280
|
-
result = {
|
|
1281
|
-
success: false,
|
|
1282
|
-
error: 'date_components 不完整',
|
|
1283
|
-
code: 400,
|
|
1284
|
-
hint: '必须包含:year、month、day、hour、minute'
|
|
1285
|
-
};
|
|
1286
|
-
userMessage = '❌ 保存失败:时间信息不完整\n\n请确保 date_components 包含完整的年月日时分秒';
|
|
1287
|
-
break;
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
// 转换为时间戳
|
|
1291
|
-
processedArgs.date = new Date(year, month - 1, day, hour, minute, second || 0).getTime();
|
|
1292
|
-
console.log(`[save_receipt] 时间组件转换: ${JSON.stringify(processedArgs.date_components)} → ${processedArgs.date}`);
|
|
1293
|
-
}
|
|
1294
|
-
|
|
1295
|
-
// P1: 日期合理性检查
|
|
1296
|
-
if (processedArgs.date) {
|
|
1297
|
-
const validation = validateDate(processedArgs.date, '小票日期');
|
|
1298
|
-
if (!validation.valid) {
|
|
1299
|
-
result = {
|
|
1300
|
-
success: false,
|
|
1301
|
-
error: validation.error,
|
|
1302
|
-
code: 400
|
|
1303
|
-
};
|
|
1304
|
-
userMessage = validation.message + ',请检查小票日期是否正确';
|
|
1305
|
-
break;
|
|
1306
|
-
}
|
|
1307
|
-
}
|
|
1308
|
-
|
|
1309
|
-
// P2: 智能补全 - 如果有缺失字段且提供了 rawInput,尝试重新解析
|
|
1310
|
-
const missingFieldsForFill = [];
|
|
1311
|
-
const fillableFields = ['store', 'date', 'totalAmount', 'actualAmount', 'originalAmount', 'discountAmount', 'paymentMethod'];
|
|
1312
|
-
for (const field of fillableFields) {
|
|
1313
|
-
if (processedArgs[field] === undefined || processedArgs[field] === null || processedArgs[field] === '') {
|
|
1314
|
-
missingFieldsForFill.push(field);
|
|
1315
|
-
}
|
|
1316
|
-
}
|
|
1317
|
-
|
|
1318
|
-
if (missingFieldsForFill.length > 0 && processedArgs.rawInput) {
|
|
1319
|
-
console.error(`⚠️ 字段缺失,尝试从 rawInput 重新解析:${missingFieldsForFill.join(', ')}`);
|
|
1320
|
-
|
|
1321
|
-
const parseResult = await callMcpPrompt(
|
|
1322
|
-
'parseReceipt',
|
|
1323
|
-
{
|
|
1324
|
-
text: processedArgs.rawInput,
|
|
1325
|
-
type: 'parseReceipt'
|
|
1326
|
-
},
|
|
1327
|
-
token
|
|
1328
|
-
);
|
|
1329
|
-
|
|
1330
|
-
if (parseResult.success && parseResult.data) {
|
|
1331
|
-
// 只补全缺失的字段
|
|
1332
|
-
for (const field of missingFieldsForFill) {
|
|
1333
|
-
if (parseResult.data[field] !== undefined && parseResult.data[field] !== null && parseResult.data[field] !== '') {
|
|
1334
|
-
processedArgs[field] = parseResult.data[field];
|
|
1335
|
-
console.error(`✅ 补全字段:${field} = ${processedArgs[field]}`);
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
|
|
1339
|
-
// 如果 items 也缺失,尝试补全
|
|
1340
|
-
if ((!processedArgs.items || processedArgs.items.length === 0) && parseResult.data.items) {
|
|
1341
|
-
processedArgs.items = parseResult.data.items;
|
|
1342
|
-
console.error(`✅ 补全字段:items(${processedArgs.items.length} 个商品)`);
|
|
1343
|
-
}
|
|
1344
|
-
} else {
|
|
1345
|
-
console.error(`❌ 重新解析失败:${parseResult.error || '未知错误'}`);
|
|
1346
|
-
}
|
|
1347
|
-
}
|
|
1348
|
-
|
|
1349
|
-
// P1: 金额一致性校验
|
|
1350
|
-
const ERROR_MARGIN = 0.1; // 允许0.1元误差
|
|
1351
|
-
|
|
1352
|
-
// 校验1:items 各项 amount 之和 ≈ totalAmount
|
|
1353
|
-
const itemsSum = processedArgs.items.reduce((sum, item) => sum + (item.amount || 0), 0);
|
|
1354
|
-
if (Math.abs(itemsSum - processedArgs.totalAmount) > ERROR_MARGIN) {
|
|
1355
|
-
result = {
|
|
1356
|
-
success: false,
|
|
1357
|
-
error: `商品金额总和 (${itemsSum.toFixed(2)}) 与总金额 (${processedArgs.totalAmount}) 不一致`,
|
|
1358
|
-
code: 400
|
|
1359
|
-
};
|
|
1360
|
-
userMessage = `❌ 保存失败:金额校验不通过\n\n商品金额总和:${itemsSum.toFixed(2)}元\n小票总金额:${processedArgs.totalAmount}元\n\n💡 请检查:\n1. 每个商品的 amount 是否正确(amount = price × quantity)\n2. 是否有遗漏的商品`;
|
|
1361
|
-
break;
|
|
1362
|
-
}
|
|
1363
|
-
|
|
1364
|
-
// 校验2:originalAmount - discountAmount ≈ actualAmount
|
|
1365
|
-
const calculatedActual = processedArgs.originalAmount - processedArgs.discountAmount;
|
|
1366
|
-
if (Math.abs(calculatedActual - processedArgs.actualAmount) > ERROR_MARGIN) {
|
|
1367
|
-
result = {
|
|
1368
|
-
success: false,
|
|
1369
|
-
error: `优惠计算不正确:原价(${processedArgs.originalAmount}) - 优惠(${processedArgs.discountAmount}) = ${calculatedActual.toFixed(2)},不等于实付金额(${processedArgs.actualAmount})`,
|
|
1370
|
-
code: 400
|
|
1371
|
-
};
|
|
1372
|
-
userMessage = `❌ 保存失败:金额校验不通过\n\n原价:${processedArgs.originalAmount}元\n优惠:${processedArgs.discountAmount}元\n计算实付:${calculatedActual.toFixed(2)}元\n实际实付:${processedArgs.actualAmount}元\n\n💡 请检查优惠金额是否正确`;
|
|
1373
|
-
break;
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
// 1. 调用 parseReceipt 重新提取小票信息(覆盖 Agent 传的数据)
|
|
1377
|
-
if (processedArgs.rawInput) {
|
|
1378
|
-
const parseResult = await callMcpPrompt(
|
|
1379
|
-
'parseReceipt',
|
|
1380
|
-
{
|
|
1381
|
-
text: processedArgs.rawInput,
|
|
1382
|
-
type: 'parseReceipt'
|
|
1383
|
-
},
|
|
1384
|
-
token
|
|
1385
|
-
);
|
|
1386
|
-
|
|
1387
|
-
if (parseResult.success && parseResult.data) {
|
|
1388
|
-
// 用 parseReceipt 提取的信息覆盖 Agent 传的参数
|
|
1389
|
-
processedArgs = {
|
|
1390
|
-
...processedArgs,
|
|
1391
|
-
...parseResult.data
|
|
1392
|
-
};
|
|
1393
|
-
}
|
|
1394
|
-
}
|
|
1395
|
-
|
|
1396
|
-
// 2. 调用 fillDefaults 补充默认值
|
|
1397
|
-
const fillResult = await callMcpPrompt(
|
|
1398
|
-
'fillDefaults',
|
|
1399
|
-
{
|
|
1400
|
-
data: processedArgs,
|
|
1401
|
-
type: 'parseReceipt'
|
|
1402
|
-
},
|
|
1403
|
-
token
|
|
1404
|
-
);
|
|
1405
|
-
|
|
1406
|
-
if (fillResult.success) {
|
|
1407
|
-
processedArgs = {
|
|
1408
|
-
...fillResult.data,
|
|
1409
|
-
...processedArgs
|
|
1410
|
-
};
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
|
-
// 添加 agentType 和 apiProvider 到 processedArgs,确保 convertParams 能获取到
|
|
1414
|
-
processedArgs.agentType = agentType || '';
|
|
1415
|
-
processedArgs.apiProvider = apiProvider || '';
|
|
1416
|
-
|
|
1417
|
-
const mcpParams = convertParams('save_receipt', processedArgs);
|
|
1418
|
-
result = await callMcpHubWithLogging('addReceipt', mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1419
|
-
|
|
1420
|
-
if (result.success) {
|
|
1421
|
-
const totalAmount = processedArgs.totalAmount || processedArgs.items?.reduce((sum, item) => sum + (item.amount || 0), 0) || 0;
|
|
1422
|
-
const storeName = processedArgs.store || '';
|
|
1423
|
-
const category = processedArgs.items?.[0]?.category || '购物';
|
|
1424
|
-
const itemCount = processedArgs.items?.length || 0;
|
|
1425
|
-
|
|
1426
|
-
// 友好结束语(根据分类)
|
|
1427
|
-
const friendlyEndings = {
|
|
1428
|
-
'餐饮': '用餐愉快!🍚',
|
|
1429
|
-
'食品': '吃好喝好!🍎',
|
|
1430
|
-
'购物': '买得开心!🛍️',
|
|
1431
|
-
'其他': '记账完成!继续保持~ ✨'
|
|
1432
|
-
};
|
|
1433
|
-
const friendlyEnding = friendlyEndings[category] || '买得开心!🛍️';
|
|
1434
|
-
|
|
1435
|
-
// 消费洞察(如果有)
|
|
1436
|
-
let insightsText = '';
|
|
1437
|
-
if (result.insights && result.insights.length > 0) {
|
|
1438
|
-
insightsText = '\n\n消费洞察:' + result.insights.map(ins => ins.message || ins.title).join(';');
|
|
1439
|
-
}
|
|
1440
|
-
|
|
1441
|
-
// 新解锁成就(如果有)
|
|
1442
|
-
let achievementsText = '';
|
|
1443
|
-
if (result.newlyUnlocked && result.newlyUnlocked.length > 0) {
|
|
1444
|
-
achievementsText = '\n\n🎉 成就解锁:' + result.newlyUnlocked.map(a => `${a.icon} ${a.title}(+${a.points}分)`).join(';');
|
|
1445
|
-
}
|
|
1446
|
-
|
|
1447
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1448
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1449
|
-
result._templateHint = '请使用references/response-templates.md中的2.3小票记账模板渲染回复';
|
|
1450
|
-
result._templateVariables = {
|
|
1451
|
-
agentName: await getAgentName(),
|
|
1452
|
-
store: storeName,
|
|
1453
|
-
totalAmount: totalAmount,
|
|
1454
|
-
category: result.data?.storeCategory || category,
|
|
1455
|
-
itemCount: itemCount,
|
|
1456
|
-
date: result.data?.date ? new Date(result.data.date).toLocaleDateString('zh-CN') : new Date().toLocaleDateString('zh-CN'),
|
|
1457
|
-
正能量祝福语: friendlyEnding,
|
|
1458
|
-
insightsText,
|
|
1459
|
-
achievementsText,
|
|
1460
|
-
items: processedArgs.items
|
|
1461
|
-
};
|
|
1462
|
-
}
|
|
1463
|
-
break;
|
|
1464
|
-
}
|
|
1465
|
-
|
|
1466
|
-
case 'get_expenses':
|
|
1467
|
-
case 'get_receipt_list': {
|
|
1468
|
-
const toolName = toolMapping[name];
|
|
1469
|
-
const mcpParams = convertParams(name, processedArgs);
|
|
1470
|
-
result = await callMcpHubWithLogging(toolName, mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1471
|
-
|
|
1472
|
-
if (result.success) {
|
|
1473
|
-
const total = result.data?.total || 0;
|
|
1474
|
-
const items = result.data?.items || [];
|
|
1475
|
-
const patterns = result.data?.patterns || {};
|
|
1476
|
-
|
|
1477
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1478
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1479
|
-
result._templateHint = '请使用references/response-templates.md中的2.5查询结果模板渲染回复';
|
|
1480
|
-
result._templateVariables = {
|
|
1481
|
-
total: total,
|
|
1482
|
-
items: items,
|
|
1483
|
-
patterns: patterns
|
|
1484
|
-
};
|
|
1485
|
-
}
|
|
1486
|
-
break;
|
|
1487
|
-
}
|
|
1488
|
-
|
|
1489
|
-
case 'get_statistics': {
|
|
1490
|
-
const toolName = toolMapping[name];
|
|
1491
|
-
const mcpParams = convertParams(name, processedArgs);
|
|
1492
|
-
result = await callMcpHubWithLogging(toolName, mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1493
|
-
|
|
1494
|
-
if (result.success) {
|
|
1495
|
-
const data = result.data || {};
|
|
1496
|
-
|
|
1497
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1498
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1499
|
-
result._templateHint = '请使用references/response-templates.md中的2.6统计结果模板渲染回复';
|
|
1500
|
-
result._templateVariables = {
|
|
1501
|
-
period: data.periodDisplay || data.period || '未知',
|
|
1502
|
-
totalAmount: data.totalAmount || 0,
|
|
1503
|
-
totalCount: data.totalCount || 0,
|
|
1504
|
-
compare: data.compare,
|
|
1505
|
-
budget: data.budget,
|
|
1506
|
-
categories: data.categories,
|
|
1507
|
-
insights: data.insights
|
|
1508
|
-
};
|
|
1509
|
-
}
|
|
1510
|
-
break;
|
|
1511
|
-
}
|
|
1512
|
-
|
|
1513
|
-
case 'get_insights': {
|
|
1514
|
-
const toolName = toolMapping[name];
|
|
1515
|
-
const mcpParams = convertParams(name, processedArgs);
|
|
1516
|
-
result = await callMcpHubWithLogging(toolName, mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1517
|
-
|
|
1518
|
-
if (result.success) {
|
|
1519
|
-
const data = result.data || {};
|
|
1520
|
-
const insights = data.insights || [];
|
|
1521
|
-
|
|
1522
|
-
// 构建友好的洞察摘要
|
|
1523
|
-
let summary = `🔍 消费洞察获取成功\n\n`;
|
|
1524
|
-
summary += `📅 周期:${data.periodDisplay || data.period || '未知'}\n`;
|
|
1525
|
-
summary += `💡 共找到 ${insights.length} 条洞察线索\n`;
|
|
1526
|
-
|
|
1527
|
-
if (insights.length > 0) {
|
|
1528
|
-
// 按优先级分组
|
|
1529
|
-
const highPriority = insights.filter(i => i.priority === 'high');
|
|
1530
|
-
const mediumPriority = insights.filter(i => i.priority === 'medium');
|
|
1531
|
-
const lowPriority = insights.filter(i => i.priority === 'low');
|
|
1532
|
-
|
|
1533
|
-
if (highPriority.length > 0) {
|
|
1534
|
-
summary += `\n🔴 高优先级(${highPriority.length}条):\n`;
|
|
1535
|
-
highPriority.forEach(insight => {
|
|
1536
|
-
summary += ` ${insight.emoji || '•'} ${insight.title}:${insight.message}\n`;
|
|
1537
|
-
});
|
|
1538
|
-
}
|
|
1539
|
-
|
|
1540
|
-
if (mediumPriority.length > 0) {
|
|
1541
|
-
summary += `\n🟡 中优先级(${mediumPriority.length}条):\n`;
|
|
1542
|
-
mediumPriority.slice(0, 2).forEach(insight => {
|
|
1543
|
-
summary += ` ${insight.emoji || '•'} ${insight.title}:${insight.message}\n`;
|
|
1544
|
-
});
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1547
|
-
if (lowPriority.length > 0) {
|
|
1548
|
-
summary += `\n🟢 低优先级(${lowPriority.length}条)\n`;
|
|
1549
|
-
}
|
|
1550
|
-
}
|
|
1551
|
-
|
|
1552
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1553
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1554
|
-
result._templateHint = '请使用references/response-templates.md中的2.6智能洞察模板渲染回复';
|
|
1555
|
-
result._templateVariables = {
|
|
1556
|
-
insights: insights
|
|
1557
|
-
};
|
|
1558
|
-
}
|
|
1559
|
-
break;
|
|
1560
|
-
}
|
|
1561
|
-
|
|
1562
|
-
case 'export_data': {
|
|
1563
|
-
const toolName = toolMapping[name];
|
|
1564
|
-
const mcpParams = convertParams(name, processedArgs);
|
|
1565
|
-
result = await callMcpHubWithLogging(toolName, mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1566
|
-
|
|
1567
|
-
if (result.success) {
|
|
1568
|
-
const summary = result.data?.summary || {};
|
|
1569
|
-
const totalRecords = summary.totalRecords || 0;
|
|
1570
|
-
const totalAmount = summary.totalAmount || 0;
|
|
1571
|
-
const periodDisplay = result.data?.periodDisplay || '';
|
|
1572
|
-
|
|
1573
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1574
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1575
|
-
result._templateHint = '请使用references/response-templates.md中的模板渲染回复';
|
|
1576
|
-
result._templateVariables = {
|
|
1577
|
-
period: periodDisplay,
|
|
1578
|
-
totalRecords: totalRecords,
|
|
1579
|
-
totalAmount: totalAmount
|
|
1580
|
-
};
|
|
1581
|
-
}
|
|
1582
|
-
break;
|
|
1583
|
-
}
|
|
1584
|
-
|
|
1585
|
-
case 'save_income': {
|
|
1586
|
-
// P0: 数据完整性检查 - 必填字段验证(date 改为 time_description,不强制检查)
|
|
1587
|
-
const requiredFields = ['name', 'amount', 'category', 'rawInput'];
|
|
1588
|
-
const missingFields = [];
|
|
1589
|
-
|
|
1590
|
-
for (const field of requiredFields) {
|
|
1591
|
-
if (processedArgs[field] === undefined || processedArgs[field] === null || processedArgs[field] === '') {
|
|
1592
|
-
missingFields.push(field);
|
|
1593
|
-
}
|
|
1594
|
-
}
|
|
1595
|
-
|
|
1596
|
-
if (missingFields.length > 0) {
|
|
1597
|
-
result = {
|
|
1598
|
-
success: false,
|
|
1599
|
-
error: `必填字段缺失:${missingFields.join(', ')}`,
|
|
1600
|
-
code: 400,
|
|
1601
|
-
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list 柴米AI记账 --schema 查看完整参数结构',
|
|
1602
|
-
debug: {
|
|
1603
|
-
missing: missingFields,
|
|
1604
|
-
received: Object.keys(processedArgs),
|
|
1605
|
-
docs: '调用 get_skill() 获取详细使用指南'
|
|
1606
|
-
}
|
|
1607
|
-
};
|
|
1608
|
-
userMessage = `❌ 收入记录失败\n\n错误:缺少必填字段:${missingFields.join(', ')}\n\n💡 解决方案:\n1. 请检查是否从用户输入中提取了所有信息\n2. 确保传递以下字段:name(收入来源)、amount(金额)、category(分类)、rawInput(原始输入)\n3. 参考 SKILL.md 中的"调用前检查清单"`;
|
|
1609
|
-
break;
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
|
-
// 数值校验
|
|
1613
|
-
if (typeof processedArgs.amount !== 'number' || processedArgs.amount <= 0) {
|
|
1614
|
-
result = {
|
|
1615
|
-
success: false,
|
|
1616
|
-
error: '金额必须是正数',
|
|
1617
|
-
code: 400
|
|
1618
|
-
};
|
|
1619
|
-
userMessage = '❌ 收入记录失败:金额必须是正数';
|
|
1620
|
-
break;
|
|
1621
|
-
}
|
|
1622
|
-
|
|
1623
|
-
// 【新增】处理 time_description(收入记账新时间格式)
|
|
1624
|
-
let timeNote = null;
|
|
1625
|
-
if (processedArgs.time_description) {
|
|
1626
|
-
const parsedDate = parseTimeDescription(processedArgs.time_description, Date.now());
|
|
1627
|
-
processedArgs.date = parsedDate;
|
|
1628
|
-
// 正常解析时不显示 timeNote,只有兜底或异常时才显示
|
|
1629
|
-
console.log(`[save_income] 时间描述解析: ${processedArgs.time_description} → ${parsedDate} (${new Date(parsedDate).toLocaleString('zh-CN')})`);
|
|
1630
|
-
}
|
|
1631
|
-
// 【新增】兜底:如果既没传 time_description 也没传 date,使用当前时间
|
|
1632
|
-
else if (!processedArgs.date) {
|
|
1633
|
-
processedArgs.date = Date.now();
|
|
1634
|
-
timeNote = '⏰ 时间说明:未指定时间,使用当前时间';
|
|
1635
|
-
console.log(`[save_income] 未传时间参数,使用当前时间: ${processedArgs.date}`);
|
|
1636
|
-
}
|
|
1637
|
-
|
|
1638
|
-
// P1: 日期合理性检查
|
|
1639
|
-
if (processedArgs.date) {
|
|
1640
|
-
const validation = validateDate(processedArgs.date, '收入日期');
|
|
1641
|
-
if (!validation.valid) {
|
|
1642
|
-
result = {
|
|
1643
|
-
success: false,
|
|
1644
|
-
error: validation.error,
|
|
1645
|
-
code: 400
|
|
1646
|
-
};
|
|
1647
|
-
userMessage = validation.message;
|
|
1648
|
-
break;
|
|
1649
|
-
}
|
|
1650
|
-
|
|
1651
|
-
// 【新增】校验时间是否在合理范围内(±1年)
|
|
1652
|
-
const dateObj = new Date(processedArgs.date);
|
|
1653
|
-
const now = new Date();
|
|
1654
|
-
const oneYearAgo = new Date(now.getFullYear() - 1, 0, 1);
|
|
1655
|
-
const oneYearLater = new Date(now.getFullYear() + 1, 11, 31);
|
|
1656
|
-
|
|
1657
|
-
if (dateObj < oneYearAgo || dateObj > oneYearLater) {
|
|
1658
|
-
console.warn(`[save_income] 时间异常:${processedArgs.date} (${dateObj.toLocaleString('zh-CN')}),使用当前时间`);
|
|
1659
|
-
processedArgs.date = Date.now();
|
|
1660
|
-
timeNote = '⏰ 时间说明:检测到时间异常,已使用当前时间';
|
|
1661
|
-
}
|
|
1662
|
-
}
|
|
1663
|
-
|
|
1664
|
-
// 添加 agentType 和 apiProvider 到 processedArgs,确保 convertParams 能获取到
|
|
1665
|
-
processedArgs.agentType = agentType || '';
|
|
1666
|
-
processedArgs.apiProvider = apiProvider || '';
|
|
1667
|
-
|
|
1668
|
-
const mcpParams = convertParams('save_income', processedArgs);
|
|
1669
|
-
result = await callMcpHubWithLogging('addIncome', mcpParams, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1670
|
-
|
|
1671
|
-
if (result.success) {
|
|
1672
|
-
const displayName = processedArgs.name || '未知收入';
|
|
1673
|
-
const displayAmount = processedArgs.amount || 0;
|
|
1674
|
-
const displayCategory = processedArgs.category || '其他';
|
|
1675
|
-
const displayStore = processedArgs.store || '';
|
|
1676
|
-
|
|
1677
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1678
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1679
|
-
result._templateHint = '请使用references/response-templates.md中的2.1标准成功模板渲染回复';
|
|
1680
|
-
result._templateVariables = {
|
|
1681
|
-
agentName: await getAgentName(),
|
|
1682
|
-
类型: '收入',
|
|
1683
|
-
商品名: displayName,
|
|
1684
|
-
商家: displayStore || null,
|
|
1685
|
-
金额: displayAmount,
|
|
1686
|
-
分类: result.data?.categoryName || displayCategory,
|
|
1687
|
-
日期: result.data?.date ? new Date(result.data.date).toLocaleString('zh-CN') : new Date().toLocaleString('zh-CN'),
|
|
1688
|
-
正能量祝福语: '入账顺利!💰',
|
|
1689
|
-
timeNote: timeNote || null
|
|
1690
|
-
};
|
|
1691
|
-
}
|
|
1692
|
-
break;
|
|
1693
|
-
}
|
|
1694
|
-
|
|
1695
|
-
case 'get_parse_prompt': {
|
|
1696
|
-
const promptType = args.type || 'parseReceipt';
|
|
1697
|
-
const promptResult = await callMcpPrompt('getPrompt', { type: promptType }, token);
|
|
1698
|
-
|
|
1699
|
-
if (promptResult.success) {
|
|
1700
|
-
result = {
|
|
1701
|
-
success: true,
|
|
1702
|
-
data: {
|
|
1703
|
-
type: promptType,
|
|
1704
|
-
version: promptResult.data.version,
|
|
1705
|
-
systemPrompt: promptResult.data.systemPrompt,
|
|
1706
|
-
userPromptTemplate: promptResult.data.userPromptTemplate,
|
|
1707
|
-
examples: promptResult.data.examples,
|
|
1708
|
-
myflowmate: promptResult.data.myflowmate,
|
|
1709
|
-
instructions: '请将 systemPrompt 作为 system message,把小票图片作为 user message,调用你的大模型进行解析。解析完成后,调用 save_receipt 工具保存结果。⚠️ 注意:AI解析结果必须包含 _flowmate 字段!'
|
|
1710
|
-
}
|
|
1711
|
-
};
|
|
1712
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1713
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1714
|
-
result._templateHint = '请使用references/response-templates.md中的2.1标准成功模板渲染回复';
|
|
1715
|
-
result._templateVariables = {
|
|
1716
|
-
version: promptResult.data.version,
|
|
1717
|
-
examples: promptResult.data.examples
|
|
1718
|
-
};
|
|
1719
|
-
} else {
|
|
1720
|
-
result = { success: false, error: promptResult.error };
|
|
1721
|
-
}
|
|
1722
|
-
break;
|
|
1723
|
-
}
|
|
1724
|
-
|
|
1725
|
-
case 'get_text_parse_prompt': {
|
|
1726
|
-
// 调用 mcpPrompt 云函数获取文字记账解析 Prompt
|
|
1727
|
-
const promptResult = await callMcpPrompt('getTextParsePrompt', {}, token);
|
|
1728
|
-
|
|
1729
|
-
if (promptResult.success) {
|
|
1730
|
-
result = {
|
|
1731
|
-
success: true,
|
|
1732
|
-
data: {
|
|
1733
|
-
prompt: promptResult.data.prompt,
|
|
1734
|
-
currentDate: promptResult.data.currentDate,
|
|
1735
|
-
currentTime: promptResult.data.currentTime,
|
|
1736
|
-
myflowmate: promptResult.data.myflowmate,
|
|
1737
|
-
instructions: promptResult.data.instructions
|
|
1738
|
-
}
|
|
1739
|
-
};
|
|
1740
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1741
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1742
|
-
result._templateHint = '请使用references/response-templates.md中的2.1标准成功模板渲染回复';
|
|
1743
|
-
result._templateVariables = {
|
|
1744
|
-
currentDate: promptResult.data.currentDate,
|
|
1745
|
-
currentTime: promptResult.data.currentTime
|
|
1746
|
-
};
|
|
1747
|
-
} else {
|
|
1748
|
-
result = { success: false, error: promptResult.error };
|
|
1749
|
-
}
|
|
1750
|
-
break;
|
|
1751
|
-
}
|
|
1752
|
-
|
|
1753
|
-
case 'submit_feedback': {
|
|
1754
|
-
const feedbackData = {
|
|
1755
|
-
content: processedArgs.content,
|
|
1756
|
-
feedType: processedArgs.type || 'other',
|
|
1757
|
-
contact: processedArgs.contact || '',
|
|
1758
|
-
context: processedArgs.context || '',
|
|
1759
|
-
agentType: processedArgs.agentType || '',
|
|
1760
|
-
apiProvider: processedArgs.apiProvider || '',
|
|
1761
|
-
mcpVersion: MCP_VERSION,
|
|
1762
|
-
userAgent: request.headers?.['user-agent'] || ''
|
|
1763
|
-
};
|
|
1764
|
-
|
|
1765
|
-
result = await callMcpHubWithLogging('addFeedback', feedbackData, token, traceId, startTime, osInfo, agentType, apiProvider);
|
|
1766
|
-
|
|
1767
|
-
if (result.success) {
|
|
1768
|
-
const typeText = {
|
|
1769
|
-
bug: '问题报告',
|
|
1770
|
-
feature: '功能建议',
|
|
1771
|
-
improvement: '优化建议',
|
|
1772
|
-
other: '其他反馈'
|
|
1773
|
-
}[feedbackData.feedType] || '其他反馈';
|
|
1774
|
-
|
|
1775
|
-
// 【新增】返回模板位置信息(Server只返回原始数据,Agent使用模板渲染)
|
|
1776
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1777
|
-
result._templateHint = '请使用references/response-templates.md中的模板渲染回复';
|
|
1778
|
-
result._templateVariables = {
|
|
1779
|
-
feedbackId: result.data.feedbackId,
|
|
1780
|
-
type: typeText,
|
|
1781
|
-
time: new Date().toLocaleString('zh-CN')
|
|
1782
|
-
};
|
|
1783
|
-
} else {
|
|
1784
|
-
result._templateLocation = 'references/response-templates.md';
|
|
1785
|
-
result._templateHint = '请使用references/response-templates.md中的模板渲染回复';
|
|
1786
|
-
result._templateVariables = {
|
|
1787
|
-
error: result.error || '未知错误'
|
|
1788
|
-
};
|
|
1789
|
-
}
|
|
1790
|
-
break;
|
|
1791
|
-
}
|
|
1792
|
-
|
|
1793
|
-
default:
|
|
1794
|
-
throw new Error(`未知工具: ${name}`);
|
|
1795
|
-
}
|
|
1796
|
-
|
|
1797
|
-
// 【新增】在结果中添加 agentName,让 Agent 可以使用
|
|
1798
|
-
const agentName = await getAgentName();
|
|
1799
|
-
if (result && typeof result === 'object') {
|
|
1800
|
-
result.agentName = agentName;
|
|
1801
|
-
}
|
|
1802
|
-
|
|
1803
|
-
// 【修改】Server 只返回原始数据,不再构建格式化消息
|
|
1804
|
-
// Agent 必须使用 references/response-templates.md 中的模板自行渲染回复
|
|
1805
|
-
const responseData = {
|
|
1806
|
-
success: result.success,
|
|
1807
|
-
data: result.data,
|
|
1808
|
-
error: result.error,
|
|
1809
|
-
_templateLocation: result._templateLocation,
|
|
1810
|
-
_templateHint: result._templateHint,
|
|
1811
|
-
_templateVariables: result._templateVariables,
|
|
1812
|
-
agentName: agentName
|
|
1813
|
-
};
|
|
1814
|
-
|
|
1815
|
-
return {
|
|
1816
|
-
content: [
|
|
1817
|
-
{
|
|
1818
|
-
type: 'text',
|
|
1819
|
-
text: `⚠️ 【注意】Server 只返回原始数据,不返回格式化消息。\n请使用 _templateLocation 指定的模板自行渲染回复。\n\n---\n📦 柴米AI记账 MCP v${MCP_VERSION}\n\n## 完整数据\n\`\`\`json\n${safeStringify(responseData)}\n\`\`\``,
|
|
1820
|
-
},
|
|
1821
|
-
],
|
|
1822
|
-
};
|
|
1823
|
-
} catch (error) {
|
|
1824
|
-
// 记录异常错误(已停用:MCP调用日志待迁移到独立云函数)
|
|
1825
|
-
// logMcpCall({
|
|
1826
|
-
// traceId,
|
|
1827
|
-
// stage: 'mcp_error',
|
|
1828
|
-
// toolName: name,
|
|
1829
|
-
// error: error.message,
|
|
1830
|
-
// duration: Date.now() - startTime,
|
|
1831
|
-
// agentType: agentType || '',
|
|
1832
|
-
// apiProvider: apiProvider || '',
|
|
1833
|
-
// mcpVersion: MCP_VERSION,
|
|
1834
|
-
// osType: osInfo.osType,
|
|
1835
|
-
// osVersion: osInfo.osVersion,
|
|
1836
|
-
// timestamp: new Date().toISOString(),
|
|
1837
|
-
// logSource: 'mcp'
|
|
1838
|
-
// });
|
|
1839
|
-
|
|
1840
|
-
// 处理授权错误
|
|
1841
|
-
if (error.message.startsWith('NEED_AUTH:')) {
|
|
1842
|
-
const userCode = error.message.replace('NEED_AUTH:', '');
|
|
1843
|
-
|
|
1844
|
-
if (userCode && userCode !== '等待生成验证码') {
|
|
1845
|
-
return {
|
|
1846
|
-
content: [
|
|
1847
|
-
{
|
|
1848
|
-
type: 'text',
|
|
1849
|
-
text: `🔐 首次使用需要授权
|
|
1850
|
-
|
|
1851
|
-
━━━━━━━━━━━━━━
|
|
1852
|
-
📱 验证码:**${userCode}**
|
|
1853
|
-
━━━━━━━━━━━━━━
|
|
1854
|
-
|
|
1855
|
-
请在"柴米AI记账"小程序中完成授权:
|
|
1856
|
-
|
|
1857
|
-
1️⃣ 打开微信小程序"柴米AI记账"
|
|
1858
|
-
|
|
1859
|
-
2️⃣ 点击"我的" → "Agent 授权"
|
|
1860
|
-
|
|
1861
|
-
3️⃣ 输入验证码:**${userCode}**
|
|
1862
|
-
|
|
1863
|
-
4️⃣ 点击确认授权
|
|
1864
|
-
|
|
1865
|
-
⚠️ 重要提示:
|
|
1866
|
-
• 授权完成后,MCP Server 会自动退出(正常现象)
|
|
1867
|
-
• 请重新发送您的记账指令,我才能为您完成记账
|
|
1868
|
-
• 首次授权后,后续记账将无需再次授权
|
|
1869
|
-
|
|
1870
|
-
⏳ 验证码有效期:30分钟`,
|
|
1871
|
-
},
|
|
1872
|
-
],
|
|
1873
|
-
};
|
|
1874
|
-
} else {
|
|
1875
|
-
return {
|
|
1876
|
-
content: [
|
|
1877
|
-
{
|
|
1878
|
-
type: 'text',
|
|
1879
|
-
text: `⏳ 正在准备授权,请稍等几秒后重试...`,
|
|
1880
|
-
},
|
|
1881
|
-
],
|
|
1882
|
-
};
|
|
1883
|
-
}
|
|
1884
|
-
}
|
|
1885
|
-
|
|
1886
|
-
// 处理刚完成授权的情况
|
|
1887
|
-
if (error.message.startsWith('AUTH_JUST_COMPLETED:')) {
|
|
1888
|
-
// 授权成功,继续读取 Skill 文档并返回
|
|
1889
|
-
const skillPath = path.join(__dirname, 'SKILL.md');
|
|
1890
|
-
let skillContent;
|
|
1891
|
-
try {
|
|
1892
|
-
skillContent = fs.readFileSync(skillPath, 'utf8');
|
|
1893
|
-
} catch (readError) {
|
|
1894
|
-
skillContent = '无法读取 Skill 文件,请检查安装是否完整';
|
|
1895
|
-
}
|
|
1896
|
-
|
|
1897
|
-
// 更新读取时间(持久化到文件)
|
|
1898
|
-
recordSkillRead();
|
|
1899
|
-
|
|
1900
|
-
return {
|
|
1901
|
-
content: [
|
|
1902
|
-
{
|
|
1903
|
-
type: 'text',
|
|
1904
|
-
text: `✅ 授权成功!
|
|
1905
|
-
|
|
1906
|
-
━━━━━━━━━━━━━━
|
|
1907
|
-
🎉 恭喜!您已完成授权
|
|
1908
|
-
━━━━━━━━━━━━━━
|
|
1909
|
-
|
|
1910
|
-
现在可以正常使用记账功能了!
|
|
1911
|
-
|
|
1912
|
-
${'='.repeat(60)}
|
|
1913
|
-
📋 Skill 定义文档(请仔细阅读并严格按照以下规范执行):
|
|
1914
|
-
${'='.repeat(60)}
|
|
1915
|
-
|
|
1916
|
-
${skillContent}
|
|
1917
|
-
|
|
1918
|
-
${'='.repeat(60)}
|
|
1919
|
-
|
|
1920
|
-
⚠️ 重要提示:
|
|
1921
|
-
• 授权完成后已自动获取 Skill 定义
|
|
1922
|
-
• 请严格按照上述 Skill 文档执行记账操作
|
|
1923
|
-
• 首次授权后,后续记账将无需再次授权`,
|
|
1924
|
-
},
|
|
1925
|
-
],
|
|
1926
|
-
};
|
|
1927
|
-
}
|
|
1928
|
-
|
|
1929
|
-
// 区分开发/生产环境,避免泄露内部错误信息
|
|
1930
|
-
const errorMessage = process.env.NODE_ENV === 'development'
|
|
1931
|
-
? `Error: ${error.message}`
|
|
1932
|
-
: '操作失败,请稍后重试或联系客服';
|
|
1933
|
-
|
|
1934
|
-
// 记录完整错误到日志(用于调试)
|
|
1935
|
-
console.error('Tool execution error:', {
|
|
1936
|
-
tool: request.params.name,
|
|
1937
|
-
error: error.message,
|
|
1938
|
-
stack: error.stack,
|
|
1939
|
-
timestamp: new Date().toISOString()
|
|
1940
|
-
});
|
|
1941
|
-
|
|
1942
|
-
return {
|
|
1943
|
-
content: [
|
|
1944
|
-
{
|
|
1945
|
-
type: 'text',
|
|
1946
|
-
text: errorMessage,
|
|
1947
|
-
},
|
|
1948
|
-
],
|
|
1949
|
-
isError: true,
|
|
1950
|
-
};
|
|
1951
|
-
}
|
|
1952
|
-
});
|
|
1953
|
-
|
|
1954
|
-
// 安全的 JSON 序列化函数,防止循环引用和超大数据导致内存溢出
|
|
1955
|
-
function safeStringify(obj, maxLength = 100000) {
|
|
1956
|
-
try {
|
|
1957
|
-
const str = JSON.stringify(obj, null, 2);
|
|
1958
|
-
if (str.length > maxLength) {
|
|
1959
|
-
return JSON.stringify({
|
|
1960
|
-
...obj,
|
|
1961
|
-
data: '[数据过大,已省略]',
|
|
1962
|
-
_note: `完整数据大小:${str.length} 字符`
|
|
1963
|
-
}, null, 2);
|
|
1964
|
-
}
|
|
1965
|
-
return str;
|
|
1966
|
-
} catch (error) {
|
|
1967
|
-
return JSON.stringify({ error: '数据序列化失败' });
|
|
1968
|
-
}
|
|
1969
|
-
}
|
|
1970
|
-
|
|
1971
|
-
function sanitizeString(str, maxLength = 200) {
|
|
1972
|
-
if (!str || typeof str !== 'string') return '';
|
|
1973
|
-
|
|
1974
|
-
// 硬性限制:输入不能超过 maxLength 的 10 倍,防止超大字符串导致内存溢出
|
|
1975
|
-
if (str.length > maxLength * 10) {
|
|
1976
|
-
throw new Error(`输入过长,最大允许 ${maxLength} 字符`);
|
|
1977
|
-
}
|
|
1978
|
-
|
|
1979
|
-
return str.replace(/<[^>]*>/g, '').substring(0, maxLength);
|
|
1980
|
-
}
|
|
1981
|
-
|
|
1982
|
-
function validateAmount(amount) {
|
|
1983
|
-
const num = parseFloat(amount);
|
|
1984
|
-
return isNaN(num) || num < 0 ? 0 : num;
|
|
1985
|
-
}
|
|
1986
|
-
|
|
1987
|
-
function validateQuantity(quantity) {
|
|
1988
|
-
const num = parseFloat(quantity);
|
|
1989
|
-
return isNaN(num) || num <= 0 ? 1 : num;
|
|
1990
|
-
}
|
|
1991
|
-
|
|
1992
|
-
/**
|
|
1993
|
-
* 格式化日期为 ISO 8601 格式(带时区)
|
|
1994
|
-
* 注意:此函数只负责格式标准化,不负责语义解析
|
|
1995
|
-
* 语义解析(如"午餐"→12:00)应由 Agent 完成
|
|
1996
|
-
*/
|
|
1997
|
-
function formatDateWithTimezone(dateInput) {
|
|
1998
|
-
// 如果未提供日期,返回当前时间戳
|
|
1999
|
-
if (!dateInput) {
|
|
2000
|
-
return Date.now();
|
|
2001
|
-
}
|
|
2002
|
-
|
|
2003
|
-
try {
|
|
2004
|
-
let timestamp;
|
|
2005
|
-
|
|
2006
|
-
// 如果是数字(时间戳)
|
|
2007
|
-
if (typeof dateInput === 'number') {
|
|
2008
|
-
timestamp = dateInput;
|
|
2009
|
-
}
|
|
2010
|
-
// 如果是字符串形式的数字(时间戳)
|
|
2011
|
-
else if (/^\d+$/.test(dateInput)) {
|
|
2012
|
-
timestamp = parseInt(dateInput, 10);
|
|
2013
|
-
}
|
|
2014
|
-
|
|
2015
|
-
// 如果是数字时间戳,直接返回
|
|
2016
|
-
if (timestamp) {
|
|
2017
|
-
return timestamp;
|
|
2018
|
-
}
|
|
2019
|
-
|
|
2020
|
-
// 如果已经是 UTC 格式(以 Z 结尾),转换为时间戳
|
|
2021
|
-
if (dateInput.endsWith('Z')) {
|
|
2022
|
-
return new Date(dateInput).getTime();
|
|
2023
|
-
}
|
|
2024
|
-
|
|
2025
|
-
// 如果是带时区的格式(如 +08:00),转换为时间戳
|
|
2026
|
-
if (dateInput.match(/[+-]\d{2}:\d{2}$/)) {
|
|
2027
|
-
return new Date(dateInput).getTime();
|
|
2028
|
-
}
|
|
2029
|
-
|
|
2030
|
-
// 如果是简单的 ISO 格式(如 2026-04-14T12:00:00),视为北京时间,转换为时间戳
|
|
2031
|
-
if (dateInput.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/)) {
|
|
2032
|
-
return new Date(dateInput + '+08:00').getTime();
|
|
2033
|
-
}
|
|
2034
|
-
|
|
2035
|
-
// 如果是纯日期格式(如 2026-04-14),默认使用中午12:00(北京时间),转换为时间戳
|
|
2036
|
-
if (dateInput.match(/^\d{4}-\d{2}-\d{2}$/)) {
|
|
2037
|
-
return new Date(`${dateInput}T12:00:00+08:00`).getTime();
|
|
2038
|
-
}
|
|
2039
|
-
|
|
2040
|
-
// 其他情况,尝试解析为时间戳
|
|
2041
|
-
const parsedTimestamp = new Date(dateInput).getTime();
|
|
2042
|
-
if (isNaN(parsedTimestamp)) {
|
|
2043
|
-
return Date.now(); // 解析失败,返回当前时间戳
|
|
2044
|
-
}
|
|
2045
|
-
|
|
2046
|
-
return parsedTimestamp;
|
|
2047
|
-
} catch (error) {
|
|
2048
|
-
console.error('日期格式化错误:', error);
|
|
2049
|
-
return Date.now();
|
|
2050
|
-
}
|
|
2051
|
-
}
|
|
2052
|
-
|
|
2053
|
-
/**
|
|
2054
|
-
* 解析时间描述为时间戳
|
|
2055
|
-
* @param {string} timeDesc - 时间描述(如 'yesterday', 'today')
|
|
2056
|
-
* @param {number} currentTimestamp - 当前时间戳
|
|
2057
|
-
* @returns {number} 时间戳
|
|
2058
|
-
*/
|
|
2059
|
-
function parseTimeDescription(timeDesc, currentTimestamp) {
|
|
2060
|
-
const now = new Date(currentTimestamp);
|
|
2061
|
-
const year = now.getFullYear();
|
|
2062
|
-
const month = now.getMonth();
|
|
2063
|
-
const day = now.getDate();
|
|
2064
|
-
|
|
2065
|
-
switch(timeDesc) {
|
|
2066
|
-
case 'just_now':
|
|
2067
|
-
case 'today':
|
|
2068
|
-
return currentTimestamp;
|
|
2069
|
-
|
|
2070
|
-
case 'yesterday':
|
|
2071
|
-
return new Date(year, month, day - 1, 12, 0, 0).getTime();
|
|
2072
|
-
|
|
2073
|
-
case 'yesterday_evening':
|
|
2074
|
-
return new Date(year, month, day - 1, 19, 0, 0).getTime();
|
|
2075
|
-
|
|
2076
|
-
case 'this_morning':
|
|
2077
|
-
return new Date(year, month, day, 8, 0, 0).getTime();
|
|
2078
|
-
|
|
2079
|
-
case 'this_noon':
|
|
2080
|
-
return new Date(year, month, day, 12, 0, 0).getTime();
|
|
2081
|
-
|
|
2082
|
-
case 'this_afternoon':
|
|
2083
|
-
return new Date(year, month, day, 14, 0, 0).getTime();
|
|
2084
|
-
|
|
2085
|
-
case 'this_evening':
|
|
2086
|
-
return new Date(year, month, day, 19, 0, 0).getTime();
|
|
2087
|
-
|
|
2088
|
-
default:
|
|
2089
|
-
// 尝试解析具体日期格式:2026-03-15 或 2026-03-15T15:00
|
|
2090
|
-
if (/^\d{4}-\d{2}-\d{2}$/.test(timeDesc)) {
|
|
2091
|
-
const [y, m, d] = timeDesc.split('-').map(Number);
|
|
2092
|
-
return new Date(y, m - 1, d, 12, 0, 0).getTime();
|
|
2093
|
-
}
|
|
2094
|
-
|
|
2095
|
-
if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(timeDesc)) {
|
|
2096
|
-
return new Date(timeDesc).getTime();
|
|
2097
|
-
}
|
|
2098
|
-
|
|
2099
|
-
// 兜底:返回当前时间
|
|
2100
|
-
return currentTimestamp;
|
|
2101
|
-
}
|
|
2102
|
-
}
|
|
2103
|
-
|
|
2104
|
-
/**
|
|
2105
|
-
* 获取时间说明文本
|
|
2106
|
-
* @param {string} timeDesc - 时间描述
|
|
2107
|
-
* @returns {string} 时间说明
|
|
2108
|
-
*/
|
|
2109
|
-
function getTimeNote(timeDesc) {
|
|
2110
|
-
const descMap = {
|
|
2111
|
-
'just_now': '刚刚',
|
|
2112
|
-
'today': '今天',
|
|
2113
|
-
'yesterday': '昨天',
|
|
2114
|
-
'yesterday_evening': '昨晚',
|
|
2115
|
-
'this_morning': '今早',
|
|
2116
|
-
'this_noon': '今天中午',
|
|
2117
|
-
'this_afternoon': '今天下午',
|
|
2118
|
-
'this_evening': '今晚'
|
|
2119
|
-
};
|
|
2120
|
-
|
|
2121
|
-
if (descMap[timeDesc]) {
|
|
2122
|
-
return `⏰ 时间说明:系统使用"${descMap[timeDesc]}"作为默认时间`;
|
|
2123
|
-
}
|
|
2124
|
-
|
|
2125
|
-
if (timeDesc && timeDesc.match(/^\d{4}-\d{2}-\d{2}$/)) {
|
|
2126
|
-
return `⏰ 时间说明:记录日期为 ${timeDesc}`;
|
|
2127
|
-
}
|
|
2128
|
-
|
|
2129
|
-
if (timeDesc && timeDesc.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/)) {
|
|
2130
|
-
return `⏰ 时间说明:记录精确时间为 ${timeDesc}`;
|
|
2131
|
-
}
|
|
2132
|
-
|
|
2133
|
-
return '';
|
|
2134
|
-
}
|
|
2135
|
-
|
|
2136
|
-
function extractWeightInGrams(weightStr) {
|
|
2137
|
-
if (!weightStr || typeof weightStr !== 'string') return 0;
|
|
2138
|
-
|
|
2139
|
-
const match = weightStr.match(/(\d+\.?\d*)\s*(g|kg|斤|克|千克)/i);
|
|
2140
|
-
if (!match) return 0;
|
|
2141
|
-
|
|
2142
|
-
const value = parseFloat(match[1]);
|
|
2143
|
-
const unit = match[2].toLowerCase();
|
|
2144
|
-
|
|
2145
|
-
switch (unit) {
|
|
2146
|
-
case 'g':
|
|
2147
|
-
case '克':
|
|
2148
|
-
return value;
|
|
2149
|
-
case 'kg':
|
|
2150
|
-
case '千克':
|
|
2151
|
-
return value * 1000;
|
|
2152
|
-
case '斤':
|
|
2153
|
-
return value * 500;
|
|
2154
|
-
default:
|
|
2155
|
-
return value;
|
|
2156
|
-
}
|
|
2157
|
-
}
|
|
2158
|
-
|
|
2159
|
-
function calculateMarketPrice(amount, weightStr) {
|
|
2160
|
-
const amountNum = parseFloat(amount);
|
|
2161
|
-
const weightInGrams = extractWeightInGrams(weightStr);
|
|
2162
|
-
|
|
2163
|
-
if (isNaN(amountNum) || amountNum <= 0 || weightInGrams <= 0) {
|
|
2164
|
-
return '';
|
|
2165
|
-
}
|
|
2166
|
-
|
|
2167
|
-
const pricePer500g = (amountNum / weightInGrams) * 500;
|
|
2168
|
-
return `${pricePer500g.toFixed(2)}元/500g`;
|
|
2169
|
-
}
|
|
2170
|
-
|
|
2171
|
-
function convertParams(toolName, args) {
|
|
2172
|
-
switch (toolName) {
|
|
2173
|
-
case 'save_expense': {
|
|
2174
|
-
if (!args.name || typeof args.name !== 'string' || args.name.trim() === '') {
|
|
2175
|
-
throw new Error('缺少必填参数:name(商品名称)');
|
|
2176
|
-
}
|
|
2177
|
-
if (args.amount === undefined || args.amount === null) {
|
|
2178
|
-
throw new Error('缺少必填参数:amount(金额)');
|
|
2179
|
-
}
|
|
2180
|
-
|
|
2181
|
-
const name = sanitizeString(args.name, 100);
|
|
2182
|
-
const amount = validateAmount(args.amount);
|
|
2183
|
-
|
|
2184
|
-
return {
|
|
2185
|
-
name: name,
|
|
2186
|
-
originalName: name,
|
|
2187
|
-
amount: amount,
|
|
2188
|
-
price: amount,
|
|
2189
|
-
quantity: 1,
|
|
2190
|
-
productCategory: sanitizeString(args.productCategory, 50) || '其他',
|
|
2191
|
-
productSubCategory: sanitizeString(args.productSubCategory, 50) || '',
|
|
2192
|
-
category: sanitizeString(args.category, 50) || '其他',
|
|
2193
|
-
unit: sanitizeString(args.unit, 20) || '',
|
|
2194
|
-
weight: '',
|
|
2195
|
-
marketPrice: sanitizeString(args.marketPrice, 50) || '',
|
|
2196
|
-
store: sanitizeString(args.store, 100) || '',
|
|
2197
|
-
date: formatDateWithTimezone(args.date),
|
|
2198
|
-
transactionType: 'expense',
|
|
2199
|
-
note: sanitizeString(args.note, 500) || '',
|
|
2200
|
-
rawInput: sanitizeString(args.rawInput, 1000) || '',
|
|
2201
|
-
agentType: sanitizeString(args.agentType, 50) || '',
|
|
2202
|
-
apiProvider: sanitizeString(args.apiProvider, 50) || '',
|
|
2203
|
-
mcpVersion: MCP_VERSION,
|
|
2204
|
-
source: 'mcp_txt_expense',
|
|
2205
|
-
_flowmate: args._flowmate,
|
|
2206
|
-
};
|
|
2207
|
-
}
|
|
2208
|
-
|
|
2209
|
-
case 'save_receipt': {
|
|
2210
|
-
let items = args.items;
|
|
2211
|
-
if (typeof items === 'string') {
|
|
2212
|
-
try {
|
|
2213
|
-
items = JSON.parse(items);
|
|
2214
|
-
} catch (e) {
|
|
2215
|
-
throw new Error('items 参数格式错误:必须是数组或 JSON 数组字符串');
|
|
2216
|
-
}
|
|
2217
|
-
}
|
|
2218
|
-
if (!Array.isArray(items)) {
|
|
2219
|
-
throw new Error('items 参数必须是数组');
|
|
2220
|
-
}
|
|
2221
|
-
|
|
2222
|
-
return {
|
|
2223
|
-
items: items.map((item, index) => {
|
|
2224
|
-
const weight = sanitizeString(item.weight, 50);
|
|
2225
|
-
const amount = validateAmount(item.amount);
|
|
2226
|
-
const marketPrice = sanitizeString(item.marketPrice, 50) || calculateMarketPrice(amount, weight);
|
|
2227
|
-
|
|
2228
|
-
return {
|
|
2229
|
-
itemIndex: index,
|
|
2230
|
-
name: sanitizeString(item.name, 100),
|
|
2231
|
-
originalName: sanitizeString(item.originalName, 200) || sanitizeString(item.name, 100),
|
|
2232
|
-
amount: amount,
|
|
2233
|
-
productCategory: sanitizeString(item.productCategory, 50) || '其他',
|
|
2234
|
-
productSubCategory: sanitizeString(item.productSubCategory, 50) || '',
|
|
2235
|
-
category: sanitizeString(item.category, 50) || '其他',
|
|
2236
|
-
transactionType: sanitizeString(item.transactionType, 50) || 'expense',
|
|
2237
|
-
price: validateAmount(item.price),
|
|
2238
|
-
quantity: item.quantity ? String(item.quantity).substring(0, 20) : '1',
|
|
2239
|
-
unit: sanitizeString(item.unit, 20),
|
|
2240
|
-
weight: weight,
|
|
2241
|
-
marketPrice: marketPrice,
|
|
2242
|
-
note: sanitizeString(item.note, 500),
|
|
2243
|
-
};
|
|
2244
|
-
}),
|
|
2245
|
-
store: sanitizeString(args.store, 100),
|
|
2246
|
-
receiptNo: sanitizeString(args.receiptNo, 50),
|
|
2247
|
-
totalAmount: validateAmount(args.totalAmount),
|
|
2248
|
-
originalAmount: validateAmount(args.originalAmount),
|
|
2249
|
-
discountAmount: validateAmount(args.discountAmount),
|
|
2250
|
-
actualAmount: validateAmount(args.actualAmount),
|
|
2251
|
-
paymentMethod: sanitizeString(args.paymentMethod, 50),
|
|
2252
|
-
memberCardNo: sanitizeString(args.memberCardNo, 50),
|
|
2253
|
-
currentPoints: parseInt(args.currentPoints) || 0,
|
|
2254
|
-
totalPoints: parseInt(args.totalPoints) || 0,
|
|
2255
|
-
date: formatDateWithTimezone(args.date),
|
|
2256
|
-
rawInput: sanitizeString(args.rawInput, 2000),
|
|
2257
|
-
agentType: sanitizeString(args.agentType, 50) || '',
|
|
2258
|
-
apiProvider: sanitizeString(args.apiProvider, 50) || '',
|
|
2259
|
-
mcpVersion: MCP_VERSION,
|
|
2260
|
-
source: 'mcp_receipt',
|
|
2261
|
-
storeCategory: sanitizeString(args.storeCategory, 50) || '其他',
|
|
2262
|
-
storeSubCategory: sanitizeString(args.storeSubCategory, 50) || '其他',
|
|
2263
|
-
_flowmate: args._flowmate,
|
|
2264
|
-
};
|
|
2265
|
-
}
|
|
2266
|
-
|
|
2267
|
-
case 'get_expenses': {
|
|
2268
|
-
// 【新增】支持 period 参数
|
|
2269
|
-
const periodDates = args.period ? parsePeriod(args.period) : {};
|
|
2270
|
-
return {
|
|
2271
|
-
startDate: periodDates.startDate || args.startDate,
|
|
2272
|
-
endDate: periodDates.endDate || args.endDate,
|
|
2273
|
-
limit: Math.min(parseInt(args.limit) || 10, 100),
|
|
2274
|
-
source: args.source,
|
|
2275
|
-
category: args.category,
|
|
2276
|
-
store: args.store,
|
|
2277
|
-
};
|
|
2278
|
-
}
|
|
2279
|
-
|
|
2280
|
-
case 'get_statistics': {
|
|
2281
|
-
// 【新增】支持 period 参数
|
|
2282
|
-
const periodDates = args.period ? parsePeriod(args.period) : {};
|
|
2283
|
-
return {
|
|
2284
|
-
startDate: periodDates.startDate || (args.yearMonth ? `${args.yearMonth}-01` : undefined),
|
|
2285
|
-
endDate: periodDates.endDate || (args.yearMonth ? getMonthEndDate(args.yearMonth) : undefined),
|
|
2286
|
-
type: args.type,
|
|
2287
|
-
includeInsights: args.includeInsights,
|
|
2288
|
-
};
|
|
2289
|
-
}
|
|
2290
|
-
|
|
2291
|
-
case 'save_income':
|
|
2292
|
-
return {
|
|
2293
|
-
name: sanitizeString(args.name, 100),
|
|
2294
|
-
amount: validateAmount(args.amount),
|
|
2295
|
-
category: sanitizeString(args.category, 50) || '其他',
|
|
2296
|
-
store: sanitizeString(args.store, 100),
|
|
2297
|
-
date: formatDateWithTimezone(args.date),
|
|
2298
|
-
note: sanitizeString(args.note, 500),
|
|
2299
|
-
transactionType: 'income',
|
|
2300
|
-
rawInput: sanitizeString(args.rawInput, 1000),
|
|
2301
|
-
agentType: sanitizeString(args.agentType, 50) || '',
|
|
2302
|
-
apiProvider: sanitizeString(args.apiProvider, 50) || '',
|
|
2303
|
-
mcpVersion: MCP_VERSION,
|
|
2304
|
-
source: 'mcp_txt_income',
|
|
2305
|
-
_flowmate: args._flowmate,
|
|
2306
|
-
};
|
|
2307
|
-
|
|
2308
|
-
default:
|
|
2309
|
-
return args;
|
|
2310
|
-
}
|
|
2311
|
-
}
|
|
2312
|
-
|
|
2313
|
-
function getMonthEndDate(yearMonth) {
|
|
2314
|
-
const [year, month] = yearMonth.split('-').map(Number);
|
|
2315
|
-
const lastDay = new Date(year, month, 0).getDate();
|
|
2316
|
-
return `${yearMonth}-${lastDay}`;
|
|
2317
|
-
}
|
|
2318
|
-
|
|
2319
|
-
// 【新增】解析 period 参数为日期范围
|
|
2320
|
-
function parsePeriod(period) {
|
|
2321
|
-
const now = new Date();
|
|
2322
|
-
const year = now.getFullYear();
|
|
2323
|
-
const month = now.getMonth();
|
|
2324
|
-
const day = now.getDate();
|
|
2325
|
-
const weekDay = now.getDay(); // 0=周日, 1=周一...
|
|
2326
|
-
|
|
2327
|
-
let startDate, endDate;
|
|
2328
|
-
|
|
2329
|
-
switch (period) {
|
|
2330
|
-
case 'this_week': {
|
|
2331
|
-
// 本周一到今天
|
|
2332
|
-
const mondayOffset = weekDay === 0 ? 6 : weekDay - 1;
|
|
2333
|
-
const monday = new Date(year, month, day - mondayOffset);
|
|
2334
|
-
startDate = formatDateISO(monday);
|
|
2335
|
-
endDate = formatDateISO(now);
|
|
2336
|
-
break;
|
|
2337
|
-
}
|
|
2338
|
-
case 'last_week': {
|
|
2339
|
-
// 上周一到上周日
|
|
2340
|
-
const thisMondayOffset = weekDay === 0 ? 6 : weekDay - 1;
|
|
2341
|
-
const lastMonday = new Date(year, month, day - thisMondayOffset - 7);
|
|
2342
|
-
const lastSunday = new Date(year, month, day - thisMondayOffset - 1);
|
|
2343
|
-
startDate = formatDateISO(lastMonday);
|
|
2344
|
-
endDate = formatDateISO(lastSunday);
|
|
2345
|
-
break;
|
|
2346
|
-
}
|
|
2347
|
-
case 'this_month': {
|
|
2348
|
-
// 本月1号到今天
|
|
2349
|
-
const firstDay = new Date(year, month, 1);
|
|
2350
|
-
startDate = formatDateISO(firstDay);
|
|
2351
|
-
endDate = formatDateISO(now);
|
|
2352
|
-
break;
|
|
2353
|
-
}
|
|
2354
|
-
case 'last_month': {
|
|
2355
|
-
// 上月1号到上月最后一天
|
|
2356
|
-
const firstDayLastMonth = new Date(year, month - 1, 1);
|
|
2357
|
-
const lastDayLastMonth = new Date(year, month, 0);
|
|
2358
|
-
startDate = formatDateISO(firstDayLastMonth);
|
|
2359
|
-
endDate = formatDateISO(lastDayLastMonth);
|
|
2360
|
-
break;
|
|
2361
|
-
}
|
|
2362
|
-
default:
|
|
2363
|
-
return { startDate: undefined, endDate: undefined };
|
|
2364
|
-
}
|
|
2365
|
-
|
|
2366
|
-
return { startDate, endDate };
|
|
2367
|
-
}
|
|
2368
|
-
|
|
2369
|
-
// 格式化日期为 YYYY-MM-DD
|
|
2370
|
-
function formatDateISO(date) {
|
|
2371
|
-
const y = date.getFullYear();
|
|
2372
|
-
const m = String(date.getMonth() + 1).padStart(2, '0');
|
|
2373
|
-
const d = String(date.getDate()).padStart(2, '0');
|
|
2374
|
-
return `${y}-${m}-${d}`;
|
|
2375
|
-
}
|
|
2376
|
-
|
|
2377
|
-
// 授权状态管理
|
|
2378
|
-
let authState = {
|
|
2379
|
-
isAuthorized: false,
|
|
2380
|
-
isWaiting: false,
|
|
2381
|
-
userCode: null,
|
|
2382
|
-
deviceCode: null,
|
|
2383
|
-
error: null
|
|
2384
|
-
};
|
|
2385
|
-
|
|
2386
|
-
// 【新增】获取 Agent 名称(仅用于记账回复,不修改授权流程)
|
|
2387
|
-
async function getAgentName() {
|
|
2388
|
-
try {
|
|
2389
|
-
if (oauthManager && oauthManager.tokenStorage) {
|
|
2390
|
-
const localName = await oauthManager.tokenStorage.loadAgentName();
|
|
2391
|
-
|
|
2392
|
-
// 如果是默认名称,尝试从云端获取
|
|
2393
|
-
if (localName === '柴米AI助手') {
|
|
2394
|
-
// 获取保存的 deviceCode
|
|
2395
|
-
const deviceCode = await oauthManager.tokenStorage.loadDeviceCode();
|
|
2396
|
-
if (deviceCode) {
|
|
2397
|
-
// 从云端获取
|
|
2398
|
-
const cloudName = await fetchAgentNameFromCloud(deviceCode);
|
|
2399
|
-
if (cloudName && cloudName !== '柴米AI助手') {
|
|
2400
|
-
await oauthManager.tokenStorage.saveAgentName(cloudName);
|
|
2401
|
-
return cloudName;
|
|
2402
|
-
}
|
|
2403
|
-
}
|
|
2404
|
-
}
|
|
2405
|
-
|
|
2406
|
-
return localName;
|
|
2407
|
-
}
|
|
2408
|
-
} catch (err) {
|
|
2409
|
-
// 忽略错误
|
|
2410
|
-
}
|
|
2411
|
-
return '柴米AI助手';
|
|
2412
|
-
}
|
|
2413
|
-
|
|
2414
|
-
// 【新增】从云端获取 Agent 名称
|
|
2415
|
-
async function fetchAgentNameFromCloud(deviceCode) {
|
|
2416
|
-
try {
|
|
2417
|
-
const response = await fetch(MCP_OAUTH_URL, {
|
|
2418
|
-
method: 'POST',
|
|
2419
|
-
headers: { 'Content-Type': 'application/json' },
|
|
2420
|
-
body: JSON.stringify({
|
|
2421
|
-
tool: 'getDeviceInfo',
|
|
2422
|
-
params: { deviceCode }
|
|
2423
|
-
})
|
|
2424
|
-
});
|
|
2425
|
-
const result = await response.json();
|
|
2426
|
-
if (result.success && result.data.agentName) {
|
|
2427
|
-
return result.data.agentName;
|
|
2428
|
-
}
|
|
2429
|
-
} catch (err) {
|
|
2430
|
-
// 忽略错误
|
|
2431
|
-
}
|
|
2432
|
-
return null;
|
|
2433
|
-
}
|
|
2434
|
-
|
|
2435
|
-
async function main() {
|
|
2436
|
-
await initConfig();
|
|
2437
|
-
await initOAuthManager();
|
|
2438
|
-
|
|
2439
|
-
const transport = new StdioServerTransport();
|
|
2440
|
-
await server.connect(transport);
|
|
2441
|
-
}
|
|
2442
|
-
|
|
2443
|
-
// 启动授权流程(获取验证码,启动后台轮询)
|
|
2444
|
-
async function startAuthFlow() {
|
|
2445
|
-
try {
|
|
2446
|
-
// 先检查是否有保存的授权状态
|
|
2447
|
-
const savedAuthState = await oauthManager.loadAuthState();
|
|
2448
|
-
if (savedAuthState && savedAuthState.userCode) {
|
|
2449
|
-
// 检查验证码是否过期
|
|
2450
|
-
if (oauthManager.isAuthStateExpired(savedAuthState)) {
|
|
2451
|
-
console.error('⏰ 验证码已过期,生成新的验证码');
|
|
2452
|
-
await oauthManager.clearAuthState();
|
|
2453
|
-
} else {
|
|
2454
|
-
// 有保存的验证码,直接使用
|
|
2455
|
-
authState.deviceCode = savedAuthState.deviceCode;
|
|
2456
|
-
authState.userCode = savedAuthState.userCode;
|
|
2457
|
-
authState.isWaiting = true;
|
|
2458
|
-
console.error(`🔑 使用已保存的验证码:${savedAuthState.userCode}`);
|
|
2459
|
-
// 启动后台轮询
|
|
2460
|
-
pollForAuthInBackground(savedAuthState.deviceCode, 5000);
|
|
2461
|
-
return;
|
|
2462
|
-
}
|
|
2463
|
-
}
|
|
2464
|
-
|
|
2465
|
-
// 获取新的设备码
|
|
2466
|
-
const deviceCodeRes = await oauthManager.requestDeviceCode(false);
|
|
2467
|
-
authState.deviceCode = deviceCodeRes.deviceCode;
|
|
2468
|
-
authState.userCode = deviceCodeRes.userCode;
|
|
2469
|
-
authState.isWaiting = true;
|
|
2470
|
-
|
|
2471
|
-
// 保存授权状态(30分钟有效)
|
|
2472
|
-
await oauthManager.saveAuthState({
|
|
2473
|
-
deviceCode: deviceCodeRes.deviceCode,
|
|
2474
|
-
userCode: deviceCodeRes.userCode,
|
|
2475
|
-
expiresAt: Date.now() + deviceCodeRes.expiresIn * 1000
|
|
2476
|
-
});
|
|
2477
|
-
|
|
2478
|
-
console.error(`🔑 验证码:${deviceCodeRes.userCode}`);
|
|
2479
|
-
console.error('⏳ 请在小程序中完成授权,然后再次调用');
|
|
2480
|
-
|
|
2481
|
-
// 启动后台轮询(3分钟)
|
|
2482
|
-
pollForAuthInBackground(deviceCodeRes.deviceCode, 5000);
|
|
2483
|
-
|
|
2484
|
-
} catch (err) {
|
|
2485
|
-
authState.error = err.message;
|
|
2486
|
-
authState.isWaiting = false;
|
|
2487
|
-
console.error('❌ 启动授权失败:', err.message);
|
|
2488
|
-
}
|
|
2489
|
-
}
|
|
2490
|
-
|
|
2491
|
-
// 后台轮询授权状态(3分钟)
|
|
2492
|
-
async function pollForAuthInBackground(deviceCode, interval) {
|
|
2493
|
-
const maxAttempts = 36; // 3分钟(36次 × 5秒)
|
|
2494
|
-
let attempts = 0;
|
|
2495
|
-
|
|
2496
|
-
console.error('⏳ 等待用户授权中...(3分钟内有效)');
|
|
2497
|
-
|
|
2498
|
-
while (attempts < maxAttempts && authState.isWaiting) {
|
|
2499
|
-
attempts++;
|
|
2500
|
-
await delay(interval);
|
|
2501
|
-
|
|
2502
|
-
try {
|
|
2503
|
-
// 调用云函数检查授权状态
|
|
2504
|
-
const token = await oauthManager.pollForTokenOnce(deviceCode);
|
|
2505
|
-
|
|
2506
|
-
if (token) {
|
|
2507
|
-
// 授权成功(加密存储)
|
|
2508
|
-
setCachedToken(token.accessToken);
|
|
2509
|
-
tokenExpireTime = token.expiresAt;
|
|
2510
|
-
authState.isAuthorized = true;
|
|
2511
|
-
authState.isWaiting = false;
|
|
2512
|
-
|
|
2513
|
-
// 保存token到文件
|
|
2514
|
-
await oauthManager.tokenStorage.save(token);
|
|
2515
|
-
|
|
2516
|
-
// 【新增】保存默认 Agent 名称和 deviceCode(首次记账时会获取真实名称)
|
|
2517
|
-
await oauthManager.tokenStorage.saveAgentName('柴米AI助手');
|
|
2518
|
-
await oauthManager.tokenStorage.saveDeviceCode(authState.deviceCode);
|
|
2519
|
-
|
|
2520
|
-
// 清除授权状态
|
|
2521
|
-
await oauthManager.clearAuthState();
|
|
2522
|
-
|
|
2523
|
-
console.error('✅ 授权成功!可以继续使用记账功能');
|
|
2524
|
-
|
|
2525
|
-
// 【修复】不退出进程,让 Agent 可以在同一会话中继续执行记账操作
|
|
2526
|
-
// 这样 Agent 调用 get_skill 授权后,可以立即调用 save_expense 记账
|
|
2527
|
-
// process.exit(0); // 注释掉,避免授权成功后进程退出
|
|
2528
|
-
return; // 直接返回,停止轮询
|
|
2529
|
-
}
|
|
2530
|
-
} catch (err) {
|
|
2531
|
-
if (err.message.includes('expired') || err.message.includes('invalid')) {
|
|
2532
|
-
authState.error = err.message;
|
|
2533
|
-
authState.isWaiting = false;
|
|
2534
|
-
console.error('❌ 授权失败:', err.message);
|
|
2535
|
-
process.exit(1);
|
|
2536
|
-
}
|
|
2537
|
-
// 继续轮询
|
|
2538
|
-
}
|
|
2539
|
-
}
|
|
2540
|
-
|
|
2541
|
-
// 3分钟超时
|
|
2542
|
-
authState.isWaiting = false;
|
|
2543
|
-
console.error('⏰ 授权超时(3分钟),请重新调用获取新验证码');
|
|
2544
|
-
// 【修复】不退出进程,让用户可以重新尝试
|
|
2545
|
-
// process.exit(0);
|
|
2546
|
-
}
|
|
2547
|
-
|
|
2548
|
-
// 延迟函数
|
|
2549
|
-
function delay(ms) {
|
|
2550
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
2551
|
-
}
|
|
2552
|
-
|
|
2553
|
-
/**
|
|
2554
|
-
* 脱敏处理日志参数
|
|
2555
|
-
* 移除敏感信息,限制长度
|
|
2556
|
-
*/
|
|
2557
|
-
function sanitizeLogParams(params) {
|
|
2558
|
-
if (!params || typeof params !== 'object') {
|
|
2559
|
-
return {};
|
|
2560
|
-
}
|
|
2561
|
-
|
|
2562
|
-
const sanitized = {};
|
|
2563
|
-
const allowedFields = [
|
|
2564
|
-
'name', 'amount', 'category', 'store', 'date', 'period',
|
|
2565
|
-
'format', 'types', 'limit', 'skip', 'content', 'feedType',
|
|
2566
|
-
'yearMonth', 'startDate', 'endDate', 'includeReceipts'
|
|
2567
|
-
];
|
|
2568
|
-
|
|
2569
|
-
for (const key of allowedFields) {
|
|
2570
|
-
if (params[key] !== undefined) {
|
|
2571
|
-
// 字符串字段长度限制
|
|
2572
|
-
if (typeof params[key] === 'string' && params[key].length > 200) {
|
|
2573
|
-
sanitized[key] = params[key].substring(0, 200) + '...';
|
|
2574
|
-
} else {
|
|
2575
|
-
sanitized[key] = params[key];
|
|
2576
|
-
}
|
|
2577
|
-
}
|
|
2578
|
-
}
|
|
2579
|
-
|
|
2580
|
-
// 特殊处理 items 数组(小票商品列表)
|
|
2581
|
-
if (params.items && Array.isArray(params.items)) {
|
|
2582
|
-
sanitized.itemsCount = params.items.length;
|
|
2583
|
-
sanitized.items = params.items.slice(0, 3).map(item => ({
|
|
2584
|
-
name: item.name,
|
|
2585
|
-
amount: item.amount,
|
|
2586
|
-
category: item.category
|
|
2587
|
-
}));
|
|
2588
|
-
}
|
|
2589
|
-
|
|
2590
|
-
return sanitized;
|
|
2591
|
-
}
|
|
2592
|
-
|
|
2593
|
-
// 注意:使用 console.error,避免污染 stdout(MCP 协议通信使用 stdout)
|
|
2594
|
-
main().catch((err) => {
|
|
2595
|
-
console.error('❌ MCP Server 启动失败:', err.message);
|
|
2596
|
-
console.error('堆栈:', err.stack);
|
|
2597
|
-
process.exit(1);
|
|
2598
|
-
});
|
|
2
|
+
const _0x2dbe2=_0x4c1e;(function(_0x4ffcff,_0x265f4e){const _0x12277a=_0x4c1e,_0x553048=_0x4ffcff();while(!![]){try{const _0x42ddbe=-parseInt(_0x12277a(0x47d))/0x1+-parseInt(_0x12277a(0x657))/0x2+parseInt(_0x12277a(0x5fc))/0x3+parseInt(_0x12277a(0x136))/0x4*(-parseInt(_0x12277a(0x25c))/0x5)+-parseInt(_0x12277a(0x48c))/0x6+-parseInt(_0x12277a(0x2eb))/0x7*(-parseInt(_0x12277a(0xa3))/0x8)+-parseInt(_0x12277a(0x537))/0x9*(-parseInt(_0x12277a(0x4e1))/0xa);if(_0x42ddbe===_0x265f4e)break;else _0x553048['push'](_0x553048['shift']());}catch(_0x1676c0){_0x553048['push'](_0x553048['shift']());}}}(_0x2503,0xd96ce),process[_0x2dbe2(0x79e)+'t'][_0x2dbe2(0x4d9)+_0x2dbe2(0x8e9)+'g'](_0x2dbe2(0x218)));try{require('doten'+'v')[_0x2dbe2(0x4af)+'g']();}catch(_0x8ac49c){}const {Server}=require(_0x2dbe2(0x802)+'lcont'+'extpr'+_0x2dbe2(0x44f)+'l/sdk'+'/serv'+_0x2dbe2(0x807)+_0x2dbe2(0x768)+'s'),{StdioServerTransport}=require(_0x2dbe2(0x802)+_0x2dbe2(0x472)+_0x2dbe2(0x8c5)+_0x2dbe2(0x44f)+'l/sdk'+_0x2dbe2(0x563)+_0x2dbe2(0x879)+'dio.j'+'s'),{CallToolRequestSchema,ListToolsRequestSchema}=require('@mode'+_0x2dbe2(0x472)+'extpr'+_0x2dbe2(0x44f)+_0x2dbe2(0x65b)+_0x2dbe2(0x82a)+_0x2dbe2(0x901)),path=require(_0x2dbe2(0xfa)),os=require('os'),fs=require('fs'),crypto=require(_0x2dbe2(0xa3b)+'o'),{exec}=require(_0x2dbe2(0x107)+_0x2dbe2(0x26a)+_0x2dbe2(0xa44)),util=require(_0x2dbe2(0x91e)),execPromise=util['promi'+_0x2dbe2(0x76d)](exec);function getVersion(){const _0x5bd21d=_0x2dbe2,_0x1c8463={};_0x1c8463[_0x5bd21d(0x764)]=_0x5bd21d(0x962)+'ON',_0x1c8463[_0x5bd21d(0x20b)]=_0x5bd21d(0x218),_0x1c8463['DFMOe']=_0x5bd21d(0x9b1)+'ge.js'+'on';const _0x179335=_0x1c8463;try{const _0x337b1d=path['join'](__dirname,_0x179335[_0x5bd21d(0x764)]);return fs[_0x5bd21d(0x3db)+_0x5bd21d(0x81f)+'nc'](_0x337b1d,_0x179335['CdTrE'])[_0x5bd21d(0x36c)]();}catch(_0x211795){const _0x4ba80c=JSON['parse'](fs[_0x5bd21d(0x3db)+_0x5bd21d(0x81f)+'nc'](path[_0x5bd21d(0x449)](__dirname,_0x179335['DFMOe']),_0x179335[_0x5bd21d(0x20b)]));return _0x4ba80c[_0x5bd21d(0x5c1)+'on'];}}const MCP_VERSION=getVersion(),{OAuthManager,FileTokenStorage}=require('./oau'+_0x2dbe2(0x18f)),{configManager}=require('./uti'+_0x2dbe2(0x6b7)+_0x2dbe2(0x1ec)+'js'),{validateDate}=require(_0x2dbe2(0x963)+_0x2dbe2(0x165)+_0x2dbe2(0x4c5)+_0x2dbe2(0x1a2)+'s'),{getOrCreateSecretKey}=require(_0x2dbe2(0x963)+_0x2dbe2(0x322)+_0x2dbe2(0x851)+'ger.j'+'s'),{encrypt,decrypt}=require(_0x2dbe2(0x963)+'ls/en'+_0x2dbe2(0xa3b)+_0x2dbe2(0x7db)+'s'),_0x46b235={};_0x46b235['tools']=[_0x2dbe2(0xf1)+_0x2dbe2(0x5c6)+'se',_0x2dbe2(0xf1)+'recei'+'pt',_0x2dbe2(0xf1)+'incom'+'e'],_0x46b235[_0x2dbe2(0x43b)+_0x2dbe2(0x315)+'s']=0x3,_0x46b235[_0x2dbe2(0x4d8)+'wMs']=0x1e*0x3e8;const _0x93a284={};_0x93a284[_0x2dbe2(0x474)]=[_0x2dbe2(0x143)+_0x2dbe2(0x10d)+'es','get_r'+'eceip'+_0x2dbe2(0x5f1)+'t','get_s'+_0x2dbe2(0x713)+'tics',_0x2dbe2(0x2ad)+_0x2dbe2(0x893)+'ts','expor'+_0x2dbe2(0x33c)+'a'],_0x93a284['maxRe'+'quest'+'s']=0x2,_0x93a284['windo'+_0x2dbe2(0x9d6)]=0x1e*0x3e8;const _0x12cca6={};_0x12cca6[_0x2dbe2(0x474)]=['get_s'+_0x2dbe2(0x8d2),'get_p'+'arse_'+_0x2dbe2(0x836)+'t',_0x2dbe2(0xde)+'ext_p'+_0x2dbe2(0x69b)+_0x2dbe2(0x836)+'t'],_0x12cca6[_0x2dbe2(0x43b)+'quest'+'s']=0x3,_0x12cca6[_0x2dbe2(0x4d8)+_0x2dbe2(0x9d6)]=0x1e*0x3e8;function _0x4c1e(_0xbd957a,_0x5e29e3){_0xbd957a=_0xbd957a-0x90;const _0x250311=_0x2503();let _0x4c1e91=_0x250311[_0xbd957a];if(_0x4c1e['QnGSAP']===undefined){var _0x5532de=function(_0x148122){const _0x171209='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x36817b='',_0x4b978d='';for(let _0x3495cc=0x0,_0x18a42f,_0x4b7531,_0x5e01b0=0x0;_0x4b7531=_0x148122['charAt'](_0x5e01b0++);~_0x4b7531&&(_0x18a42f=_0x3495cc%0x4?_0x18a42f*0x40+_0x4b7531:_0x4b7531,_0x3495cc++%0x4)?_0x36817b+=String['fromCharCode'](0xff&_0x18a42f>>(-0x2*_0x3495cc&0x6)):0x0){_0x4b7531=_0x171209['indexOf'](_0x4b7531);}for(let _0x13bb00=0x0,_0x1e5cdf=_0x36817b['length'];_0x13bb00<_0x1e5cdf;_0x13bb00++){_0x4b978d+='%'+('00'+_0x36817b['charCodeAt'](_0x13bb00)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4b978d);};_0x4c1e['uXZtXH']=_0x5532de,_0x4c1e['byedis']={},_0x4c1e['QnGSAP']=!![];}const _0x50bc92=_0x250311[0x0],_0x3b6401=_0xbd957a+_0x50bc92,_0x433a3b=_0x4c1e['byedis'][_0x3b6401];return!_0x433a3b?(_0x4c1e91=_0x4c1e['uXZtXH'](_0x4c1e91),_0x4c1e['byedis'][_0x3b6401]=_0x4c1e91):_0x4c1e91=_0x433a3b,_0x4c1e91;}const _0x47bec0={};_0x47bec0[_0x2dbe2(0x474)]=[_0x2dbe2(0x130)+_0x2dbe2(0x19b)+_0x2dbe2(0x2bc)],_0x47bec0[_0x2dbe2(0x43b)+_0x2dbe2(0x315)+'s']=0x1,_0x47bec0[_0x2dbe2(0x4d8)+'wMs']=0x1e*0x3e8;const _0x1245df={};_0x1245df['write']=_0x46b235,_0x1245df[_0x2dbe2(0x5d3)]=_0x93a284,_0x1245df['confi'+'g']=_0x12cca6,_0x1245df[_0x2dbe2(0x1b2)+_0x2dbe2(0x498)]=_0x47bec0;const RATE_LIMITS=_0x1245df,rateLimitRecords={};function checkRateLimit(_0x201f33){const _0x276629=_0x2dbe2,_0x381afa={};_0x381afa[_0x276629(0x93c)]='今天中午',_0x381afa[_0x276629(0x349)]=_0x276629(0x3dd),_0x381afa[_0x276629(0x76b)]='nUsEC',_0x381afa['jvZac']=function(_0x20462e,_0x5eb94e){return _0x20462e-_0x5eb94e;},_0x381afa[_0x276629(0x3c1)]=function(_0x31a6ec,_0x3ccb34){return _0x31a6ec>=_0x3ccb34;},_0x381afa['HFPjG']=function(_0x45da3e,_0x2591f7){return _0x45da3e/_0x2591f7;};const _0x1d7bd0=_0x381afa;let _0xd54965=null,_0x23dc14=null;for(const [_0x5a1c05,_0x409064]of Object[_0x276629(0x1dc)+'es'](RATE_LIMITS)){if(_0x1d7bd0[_0x276629(0x76b)]!==_0x1d7bd0[_0x276629(0x76b)]){const _0x413a6c={};_0x413a6c[_0x276629(0x15e)+_0x276629(0x104)]='刚刚',_0x413a6c['today']='今天',_0x413a6c['yeste'+_0x276629(0xf9)]='昨天',_0x413a6c['yeste'+_0x276629(0x75b)+_0x276629(0x1a1)+'ng']='昨晚',_0x413a6c[_0x276629(0x8af)+'morni'+'ng']='今早',_0x413a6c[_0x276629(0x8af)+_0x276629(0x1df)]=_0x1d7bd0[_0x276629(0x93c)],_0x413a6c[_0x276629(0x8af)+_0x276629(0x7d2)+_0x276629(0x1df)]=_0x1d7bd0[_0x276629(0x349)],_0x413a6c[_0x276629(0x8af)+'eveni'+'ng']='今晚';const _0x346063=_0x413a6c;if(_0x346063[_0x3858e1])return'⏰\x20时间说'+_0x276629(0x5a5)+'用\x22'+_0x346063[_0x4b15c6]+(_0x276629(0x478)+'时间');if(_0x3fbb73&&_0x497bf8[_0x276629(0x9d0)](/^\d{4}-\d{2}-\d{2}$/))return _0x276629(0x7df)+_0x276629(0x89e)+_0x276629(0x6f6)+_0x3eb577;if(_0x145012&&_0x579955[_0x276629(0x9d0)](/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/))return _0x276629(0x7df)+_0x276629(0x41d)+_0x276629(0x1da)+_0x20e0a1;return'';}else{if(_0x409064[_0x276629(0x474)][_0x276629(0x7c9)+'des'](_0x201f33)){_0xd54965=_0x409064,_0x23dc14=_0x5a1c05;break;}}}if(!_0xd54965){const _0x2e5082={};return _0x2e5082[_0x276629(0x7f8)+'ed']=!![],_0x2e5082;}const _0x1c8943=Date[_0x276629(0x104)](),_0x593199=_0x1d7bd0['jvZac'](_0x1c8943,_0xd54965['windo'+_0x276629(0x9d6)]);!rateLimitRecords[_0x201f33]&&(rateLimitRecords[_0x201f33]=[]);rateLimitRecords[_0x201f33]=rateLimitRecords[_0x201f33]['filte'+'r'](_0x34880d=>_0x34880d>_0x593199);if(_0x1d7bd0[_0x276629(0x3c1)](rateLimitRecords[_0x201f33][_0x276629(0x26e)+'h'],_0xd54965[_0x276629(0x43b)+_0x276629(0x315)+'s'])){const _0xd5edee=rateLimitRecords[_0x201f33][0x0],_0x2e627d=_0xd5edee+_0xd54965[_0x276629(0x4d8)+_0x276629(0x9d6)],_0x33308f=Math[_0x276629(0x97b)](_0x1d7bd0[_0x276629(0x54f)](_0x1d7bd0[_0x276629(0x573)](_0x2e627d,_0x1c8943),0x3e8)),_0x163e0b={};return _0x163e0b[_0x276629(0x7f8)+'ed']=![],_0x163e0b[_0x276629(0x20d)+_0x276629(0x949)]=_0x23dc14,_0x163e0b[_0x276629(0x43b)+_0x276629(0x315)+'s']=_0xd54965[_0x276629(0x43b)+_0x276629(0x315)+'s'],_0x163e0b['windo'+_0x276629(0x9d6)]=_0xd54965['windo'+_0x276629(0x9d6)],_0x163e0b[_0x276629(0x4c9)+_0x276629(0x3e2)]=_0x2e627d,_0x163e0b['waitS'+_0x276629(0x350)+'s']=_0x33308f,_0x163e0b;}rateLimitRecords[_0x201f33][_0x276629(0x9ef)](_0x1c8943);const _0x23a899={};return _0x23a899['allow'+'ed']=!![],_0x23a899;}const VERSION_FILE_PATH=path[_0x2dbe2(0x449)](os[_0x2dbe2(0x8fa)+'ir'](),_0x2dbe2(0x501)+_0x2dbe2(0x763)+'ep',_0x2dbe2(0x889)+_0x2dbe2(0x5c1)+_0x2dbe2(0x33f)+'t');let versionUpgradeHint=null;function checkVersionUpgrade(){const _0x29f80a=_0x2dbe2,_0x127bf2={};_0x127bf2[_0x29f80a(0x861)]=function(_0x4ea7eb,_0x4e0417){return _0x4ea7eb===_0x4e0417;},_0x127bf2[_0x29f80a(0x661)]='LPMBz',_0x127bf2[_0x29f80a(0x5b2)]=_0x29f80a(0x566),_0x127bf2['FcFhR']=function(_0x32fe32,_0x3c47c7){return _0x32fe32===_0x3c47c7;},_0x127bf2[_0x29f80a(0x569)]=_0x29f80a(0x188),_0x127bf2[_0x29f80a(0x5b5)]='utf8',_0x127bf2[_0x29f80a(0x526)]=function(_0x162e78,_0x406ae5){return _0x162e78!==_0x406ae5;},_0x127bf2[_0x29f80a(0x7ad)]='[版本检测'+_0x29f80a(0x910)+'败:';const _0x48b43f=_0x127bf2;try{if(_0x48b43f[_0x29f80a(0x861)](_0x48b43f[_0x29f80a(0x661)],_0x48b43f['rsfOe']))return _0x285f0b;else{const _0x190f74=VERSION_FILE_PATH;let _0x2cf11f=null;if(fs[_0x29f80a(0x6b5)+'sSync'](_0x190f74)){if(_0x48b43f[_0x29f80a(0x9bf)](_0x48b43f[_0x29f80a(0x569)],_0x48b43f[_0x29f80a(0x569)]))_0x2cf11f=fs['readF'+'ileSy'+'nc'](_0x190f74,_0x48b43f[_0x29f80a(0x5b5)])[_0x29f80a(0x36c)]();else{const _0x1c2252={};_0x1c2252[_0x29f80a(0x7a0)]='text',_0x1c2252['text']='⏳\x20正在准'+_0x29f80a(0x514)+_0x29f80a(0x874)+_0x29f80a(0x767);const _0x32475e={};return _0x32475e[_0x29f80a(0x9cc)+'nt']=[_0x1c2252],_0x32475e;}}_0x2cf11f&&_0x48b43f[_0x29f80a(0x526)](_0x2cf11f,MCP_VERSION)&&(versionUpgradeHint=_0x29f80a(0x847)+'新版本已安'+_0x29f80a(0x36e)+_0x2cf11f+_0x29f80a(0x952)+MCP_VERSION+('),如遇问'+_0x29f80a(0x815)+_0x29f80a(0xa36)+_0x29f80a(0x735)+'er\x20st'+_0x29f80a(0x517)+'\x20mcpo'+'rter\x20'+_0x29f80a(0xa05)),console[_0x29f80a(0x503)](_0x29f80a(0x198)+'级提示]\x20'+versionUpgradeHint+'\x0a'));const _0x44766d=path[_0x29f80a(0x7c8)+'me'](_0x190f74);if(!fs['exist'+_0x29f80a(0x776)](_0x44766d)){const _0x14053f={};_0x14053f[_0x29f80a(0x42a)+_0x29f80a(0x195)]=!![],fs[_0x29f80a(0x400)+_0x29f80a(0x16b)](_0x44766d,_0x14053f);}fs['write'+'FileS'+_0x29f80a(0x6cf)](_0x190f74,MCP_VERSION,_0x48b43f[_0x29f80a(0x5b5)]);}}catch(_0x1c4a94){console[_0x29f80a(0x617)](_0x48b43f[_0x29f80a(0x7ad)],_0x1c4a94['messa'+'ge']);}}function getAndClearUpgradeHint(){const _0x16f5d6=versionUpgradeHint;return versionUpgradeHint=null,_0x16f5d6;}checkVersionUpgrade();let CHAIMI_API_SECRET=process.env.CHAIMI_API_SECRET;const ENV=process.env.NODE_ENV||'produ'+_0x2dbe2(0xa45),_0x3acb32={};_0x3acb32[_0x2dbe2(0x9fb)]='enc:v'+_0x2dbe2(0x64b)+_0x2dbe2(0x1c1)+_0x2dbe2(0x930)+'c6111'+_0x2dbe2(0x171)+_0x2dbe2(0x57b)+_0x2dbe2(0x5c5)+_0x2dbe2(0x9d9)+'1dc69'+_0x2dbe2(0x4c6)+'49e8d'+_0x2dbe2(0x424)+_0x2dbe2(0x843)+_0x2dbe2(0x70b)+'61c7a'+_0x2dbe2(0x759)+_0x2dbe2(0x46a)+_0x2dbe2(0x5b6)+_0x2dbe2(0x4bf)+_0x2dbe2(0x7c3)+_0x2dbe2(0x7a1)+_0x2dbe2(0x2ba)+_0x2dbe2(0x862)+_0x2dbe2(0x118)+_0x2dbe2(0x475)+'22b2b'+_0x2dbe2(0x48d)+'1be02'+_0x2dbe2(0x5c3)+_0x2dbe2(0x70e)+_0x2dbe2(0x90c)+'2d3e7'+'6df6d'+_0x2dbe2(0xa02)+'d46d6'+_0x2dbe2(0x869)+_0x2dbe2(0x46f)+'f4282'+_0x2dbe2(0x881)+_0x2dbe2(0xa13)+_0x2dbe2(0x983)+'4857c'+_0x2dbe2(0x5bd)+_0x2dbe2(0x73f)+_0x2dbe2(0x948)+_0x2dbe2(0x38f)+_0x2dbe2(0x75f)+'7',_0x3acb32['oauth']=_0x2dbe2(0x865)+_0x2dbe2(0xbc)+_0x2dbe2(0x758)+_0x2dbe2(0x597)+'23d6e'+_0x2dbe2(0x48f)+_0x2dbe2(0x83d)+'b342:'+_0x2dbe2(0x723)+_0x2dbe2(0x53a)+_0x2dbe2(0x128)+_0x2dbe2(0x89d)+_0x2dbe2(0x54a)+'6f915'+_0x2dbe2(0x253)+_0x2dbe2(0x9fd)+_0x2dbe2(0xa48)+_0x2dbe2(0x7be)+_0x2dbe2(0x9d7)+_0x2dbe2(0x27d)+'ce6b8'+_0x2dbe2(0x112)+_0x2dbe2(0x13f)+_0x2dbe2(0x206)+_0x2dbe2(0x3ec)+_0x2dbe2(0x381)+_0x2dbe2(0x9c2)+_0x2dbe2(0x649)+'7e52c'+_0x2dbe2(0x23c)+'ffe47'+_0x2dbe2(0x241)+_0x2dbe2(0x823)+_0x2dbe2(0x401)+_0x2dbe2(0x345)+_0x2dbe2(0x826)+_0x2dbe2(0x7c5)+_0x2dbe2(0x86d)+_0x2dbe2(0x82c)+_0x2dbe2(0x73c)+'a00ef'+_0x2dbe2(0x500)+_0x2dbe2(0x9b)+_0x2dbe2(0x8a6)+_0x2dbe2(0x61f)+_0x2dbe2(0x40c)+'bf597'+'e0',_0x3acb32[_0x2dbe2(0x836)+'t']='enc:v'+_0x2dbe2(0x82b)+'8c504'+_0x2dbe2(0x2dc)+_0x2dbe2(0x4fa)+_0x2dbe2(0x1d5)+_0x2dbe2(0x79f)+_0x2dbe2(0x2b9)+'ed5fc'+_0x2dbe2(0x290)+_0x2dbe2(0x6bd)+'4e8ae'+_0x2dbe2(0x725)+_0x2dbe2(0x6e0)+_0x2dbe2(0x410)+'831fd'+_0x2dbe2(0x239)+_0x2dbe2(0x966)+_0x2dbe2(0x25f)+_0x2dbe2(0x945)+_0x2dbe2(0x86a)+_0x2dbe2(0x399)+_0x2dbe2(0x3de)+_0x2dbe2(0x65d)+_0x2dbe2(0x9da)+_0x2dbe2(0x318)+_0x2dbe2(0x504)+_0x2dbe2(0x814)+'2103b'+'1cc45'+_0x2dbe2(0x296)+_0x2dbe2(0x1f1)+_0x2dbe2(0x548)+_0x2dbe2(0x749)+_0x2dbe2(0x97)+_0x2dbe2(0xbe)+_0x2dbe2(0x4a9)+_0x2dbe2(0x4c8)+'401e1'+_0x2dbe2(0x5d1)+_0x2dbe2(0x940)+_0x2dbe2(0x3a7)+_0x2dbe2(0x267)+_0x2dbe2(0x491)+_0x2dbe2(0x998)+_0x2dbe2(0x71c)+_0x2dbe2(0x599)+_0x2dbe2(0x7cd);const _0xa8c5d0={};_0xa8c5d0[_0x2dbe2(0x9fb)]=_0x2dbe2(0x865)+_0x2dbe2(0x957)+_0x2dbe2(0x8a0)+'bd51a'+_0x2dbe2(0x691)+_0x2dbe2(0x754)+_0x2dbe2(0x835)+_0x2dbe2(0x62f)+'3d57b'+'5ac7f'+'798c6'+'77020'+_0x2dbe2(0x89b)+_0x2dbe2(0x605)+_0x2dbe2(0x913)+_0x2dbe2(0x382)+_0x2dbe2(0x260)+_0x2dbe2(0x883)+'61090'+_0x2dbe2(0x24d)+'f3799'+'aac12'+_0x2dbe2(0x926)+_0x2dbe2(0x182)+'3d512'+'eb4f1'+_0x2dbe2(0x5b3)+_0x2dbe2(0x3bb)+_0x2dbe2(0x2d2)+_0x2dbe2(0x278)+_0x2dbe2(0x8fd)+'122b1'+_0x2dbe2(0x9b2)+_0x2dbe2(0x604)+'71f14'+_0x2dbe2(0x681)+_0x2dbe2(0x2cd)+_0x2dbe2(0x26c)+_0x2dbe2(0x1a0)+_0x2dbe2(0xbf)+_0x2dbe2(0x14d)+_0x2dbe2(0x105)+'ec403'+'690d5'+_0x2dbe2(0x7b0)+_0x2dbe2(0x321)+_0x2dbe2(0x519)+'1865e'+'b',_0xa8c5d0[_0x2dbe2(0x7c1)]=_0x2dbe2(0x865)+_0x2dbe2(0xa25)+_0x2dbe2(0xb3)+'0bc14'+_0x2dbe2(0x255)+_0x2dbe2(0xa3c)+_0x2dbe2(0x3f9)+'8b61:'+_0x2dbe2(0x97a)+_0x2dbe2(0xe6)+_0x2dbe2(0x9f1)+_0x2dbe2(0x454)+_0x2dbe2(0x4fd)+_0x2dbe2(0x124)+'9c:1b'+_0x2dbe2(0x9d8)+_0x2dbe2(0x4f7)+_0x2dbe2(0x380)+_0x2dbe2(0x5d5)+_0x2dbe2(0x6b9)+_0x2dbe2(0x183)+_0x2dbe2(0x674)+_0x2dbe2(0x43f)+_0x2dbe2(0x9b9)+_0x2dbe2(0x5b0)+_0x2dbe2(0x656)+_0x2dbe2(0xee)+_0x2dbe2(0x3ce)+_0x2dbe2(0x955)+_0x2dbe2(0x683)+_0x2dbe2(0x701)+_0x2dbe2(0x7c6)+'872ae'+_0x2dbe2(0x829)+_0x2dbe2(0x812)+_0x2dbe2(0x562)+_0x2dbe2(0x2f8)+_0x2dbe2(0x6fc)+_0x2dbe2(0x8bb)+_0x2dbe2(0x390)+_0x2dbe2(0x216)+_0x2dbe2(0x7e3)+_0x2dbe2(0x751)+_0x2dbe2(0x197)+_0x2dbe2(0x1ff)+_0x2dbe2(0xf6)+'c4158'+'0e',_0xa8c5d0[_0x2dbe2(0x836)+'t']='enc:v'+_0x2dbe2(0x793)+_0x2dbe2(0x919)+'14161'+'d59df'+_0x2dbe2(0x602)+_0x2dbe2(0x2e0)+_0x2dbe2(0x99e)+'6023b'+_0x2dbe2(0x59e)+_0x2dbe2(0x224)+'bec64'+_0x2dbe2(0x11c)+_0x2dbe2(0x663)+_0x2dbe2(0x2c5)+_0x2dbe2(0x9a)+'985a1'+'914c0'+_0x2dbe2(0x418)+_0x2dbe2(0x7d8)+_0x2dbe2(0x2b0)+'e3fd4'+'fe439'+_0x2dbe2(0x15b)+_0x2dbe2(0x61b)+_0x2dbe2(0x740)+_0x2dbe2(0x19f)+'ccae6'+_0x2dbe2(0x28d)+'fd56e'+_0x2dbe2(0x3d2)+'27a72'+_0x2dbe2(0x78c)+'2b735'+_0x2dbe2(0x665)+_0x2dbe2(0x791)+_0x2dbe2(0x871)+_0x2dbe2(0x2a4)+_0x2dbe2(0xa26)+_0x2dbe2(0x8f3)+'86e4a'+_0x2dbe2(0x9f9)+_0x2dbe2(0x13b)+_0x2dbe2(0xb8)+_0x2dbe2(0x5ab)+'46d7c'+_0x2dbe2(0x5eb)+_0x2dbe2(0x1ca);const _0x52fe85={};_0x52fe85[_0x2dbe2(0x9e3)+_0x2dbe2(0x489)+'t']=_0x3acb32,_0x52fe85[_0x2dbe2(0x545)+_0x2dbe2(0xa45)]=_0xa8c5d0;const ENCRYPTED_URLS=_0x52fe85;function decryptUrl(_0x4a1847,_0x2d65a6){const _0x4e707e=_0x2dbe2,_0x8a645d={'lOKCJ':_0x4e707e(0x865)+'2:','hEPsD':function(_0x322415,_0x471416,_0x1fb42f){return _0x322415(_0x471416,_0x1fb42f);},'LQJAg':_0x4e707e(0x865)+'1:','CbzxQ':_0x4e707e(0x933),'UzVmU':function(_0x4cb509,_0x4e6f0b){return _0x4cb509||_0x4e6f0b;},'PYSuG':'chaim'+_0x4e707e(0x529)+_0x4e707e(0x55f)+'2024','lRwKY':function(_0x2c61bb,_0x11dc2a){return _0x2c61bb<_0x11dc2a;},'ySDcJ':function(_0x329f00,_0x4f0525){return _0x329f00/_0x4f0525;}};if(!_0x4a1847)return'';if(_0x4a1847[_0x4e707e(0xa05)+'sWith'](_0x8a645d[_0x4e707e(0x50e)]))return _0x8a645d[_0x4e707e(0x9b4)](decrypt,_0x4a1847[_0x4e707e(0x624)+'ce'](_0x8a645d['lOKCJ'],''),_0x2d65a6);if(_0x4a1847[_0x4e707e(0xa05)+_0x4e707e(0x7a3)](_0x8a645d[_0x4e707e(0x554)])){if('PWnEO'===_0x8a645d[_0x4e707e(0x50d)]){const _0x225527=_0x8a645d['UzVmU'](_0x2d65a6,_0x8a645d[_0x4e707e(0x82d)]),_0x1cec47=_0x4a1847['repla'+'ce'](_0x8a645d[_0x4e707e(0x554)],'');let _0x510807='';for(let _0x55c495=0x0;_0x8a645d[_0x4e707e(0x92d)](_0x55c495,_0x1cec47[_0x4e707e(0x26e)+'h']);_0x55c495+=0x2){const _0x43a04d=parseInt(_0x1cec47['subst'+'r'](_0x55c495,0x2),0x10);_0x510807+=String[_0x4e707e(0x367)+_0x4e707e(0x319)+'de'](_0x43a04d^_0x225527[_0x4e707e(0x4d7)+_0x4e707e(0x738)](_0x8a645d['ySDcJ'](_0x55c495,0x2)%_0x225527['lengt'+'h']));}return _0x510807;}else{const [_0x58c485,_0x53af54]=_0x5e281e[_0x4e707e(0x3b6)]('-')['map'](_0x405310),_0x3a58cf=new _0x3f018e(_0x58c485,_0x53af54,0x0)[_0x4e707e(0x7ca)+'te']();return _0x21776b+'-'+_0x3a58cf;}}return _0x4a1847;}let MCP_HUB_URL,MCP_PROMPT_URL,MCP_OAUTH_URL,tokenEncryptionKey;async function initConfig(){const _0x2a1e09=_0x2dbe2,_0xcc2026={'xMIgf':_0x2a1e09(0x3c6)+'68144'+'a50c6'+'d8d0c'+_0x2a1e09(0x230)+_0x2a1e09(0x339)+_0x2a1e09(0xdb)+_0x2a1e09(0x129)+_0x2a1e09(0x8b7)+_0x2a1e09(0x920)+_0x2a1e09(0x4b8)+'45d48'+_0x2a1e09(0x98f),'EmAfU':function(_0x189c16){return _0x189c16();},'VJVIX':function(_0x3d30e0,_0x41efce){return _0x3d30e0!==_0x41efce;},'ROrJa':_0x2a1e09(0x6b1),'KJvpY':_0x2a1e09(0x5ae)+_0x2a1e09(0x2c2)+'f0688'+_0x2a1e09(0xa04)+_0x2a1e09(0x497)+_0x2a1e09(0x5b8)+_0x2a1e09(0xa38)+_0x2a1e09(0x4fc)+'49f48'+_0x2a1e09(0x3fc)+_0x2a1e09(0x1d9)+_0x2a1e09(0x3da)+_0x2a1e09(0x8d9),'AOtir':function(_0x525f05,_0x3eb136,_0x170b89){return _0x525f05(_0x3eb136,_0x170b89);}},_0xb21a48=process.env.URL_ENCRYPT_KEY||_0xcc2026[_0x2a1e09(0x9a9)];tokenEncryptionKey=_0xcc2026[_0x2a1e09(0x7b3)](getOrCreateSecretKey);if(!CHAIMI_API_SECRET){if(_0xcc2026['VJVIX'](_0xcc2026[_0x2a1e09(0x530)],_0x2a1e09(0x6af)))CHAIMI_API_SECRET=process.env.CHAIMI_API_SECRET||_0xcc2026['KJvpY'];else{const _0x4a6982=_0x19b146[_0x2a1e09(0x7c8)+'me'](_0x3dcfaa);if(!_0x507247['exist'+'sSync'](_0x4a6982)){const _0xa22a5d={};_0xa22a5d[_0x2a1e09(0x42a)+'sive']=!![],_0x4ae2fa[_0x2a1e09(0x400)+'Sync'](_0x4a6982,_0xa22a5d);}_0x3260a8[_0x2a1e09(0x849)+_0x2a1e09(0x3d7)+'ync'](_0x2496fb,_0x1ec8e7['strin'+_0x2a1e09(0x222)]({'lastReadTime':_0x58d4b3['now'](),'readAt':new _0x249709()[_0x2a1e09(0x21d)+_0x2a1e09(0x9e9)+'g']()},null,0x2));}}const _0x528e52=ENCRYPTED_URLS[ENV]||ENCRYPTED_URLS[_0x2a1e09(0x545)+'ction'];MCP_HUB_URL=process.env.MCP_HUB_URL||decryptUrl(_0x528e52[_0x2a1e09(0x9fb)],_0xb21a48),MCP_PROMPT_URL=process.env.MCP_PROMPT_URL||decryptUrl(_0x528e52['promp'+'t'],_0xb21a48),MCP_OAUTH_URL=process.env.MCP_OAUTH_URL||_0xcc2026[_0x2a1e09(0x790)](decryptUrl,_0x528e52['oauth'],_0xb21a48),console[_0x2a1e09(0x617)]('✅\x20已加载'+'\x20'+ENV+'\x20环境配置');}let cachedEncryptedToken=null,tokenExpireTime=0x0;function getCachedToken(){const _0x37260e=_0x2dbe2,_0x30ef1a={};_0x30ef1a['PAIwb']=function(_0x222198,_0x545b5f){return _0x222198||_0x545b5f;},_0x30ef1a['TnUmz']=_0x37260e(0x8cb);const _0x1990fc=_0x30ef1a;if(_0x1990fc[_0x37260e(0xa2f)](!cachedEncryptedToken,!tokenEncryptionKey))return null;try{return decrypt(cachedEncryptedToken,tokenEncryptionKey);}catch(_0x8895a5){return _0x1990fc[_0x37260e(0x4e9)]!==_0x1990fc[_0x37260e(0x4e9)]?{'osType':_0x5d45b2[_0x37260e(0x5cf)+_0x37260e(0xa3f)],'osVersion':_0x18c02b['relea'+'se']()}:null;}}function setCachedToken(_0x15fe44){const _0x156a98=_0x2dbe2,_0x3b660e={'ujoNX':function(_0x3ad474,_0xd407c4){return _0x3ad474||_0xd407c4;},'RXbHq':function(_0x2db340,_0x1eb3e1){return _0x2db340!==_0x1eb3e1;},'WBjzk':'pqYsM','NbOZC':function(_0x15de5b,_0x3549c0,_0x461acb){return _0x15de5b(_0x3549c0,_0x461acb);}};if(_0x3b660e['ujoNX'](!_0x15fe44,!tokenEncryptionKey)){if(_0x3b660e[_0x156a98(0x34b)](_0x3b660e['WBjzk'],_0x3b660e[_0x156a98(0xe8)]))_0x347e9d+='\x20\x20'+(_0x1018b8[_0x156a98(0x3d9)]||'•')+'\x20'+_0x2d6d0c[_0x156a98(0x71a)]+':'+_0x592944[_0x156a98(0x715)+'ge']+'\x0a';else{cachedEncryptedToken=null;return;}}cachedEncryptedToken=_0x3b660e[_0x156a98(0x6a8)](encrypt,_0x15fe44,tokenEncryptionKey);}function clearCachedToken(){cachedEncryptedToken=null;}let oauthManager=null;async function initOAuthManager(){const _0x5aebf7=_0x2dbe2,_0x37cdbe={};_0x37cdbe['YHAZB']='1|8|9'+_0x5aebf7(0x5b9)+_0x5aebf7(0x761)+'2|2|1'+'0|3|6'+_0x5aebf7(0x35b),_0x37cdbe[_0x5aebf7(0x2b5)]=function(_0x4c706c,_0xcd0e7){return _0x4c706c+_0xcd0e7;},_0x37cdbe[_0x5aebf7(0x4eb)]=_0x5aebf7(0x8a9)+'I记账\x20M'+_0x5aebf7(0x19c)+_0x5aebf7(0x375)+'-\x20首次使'+'用需要授权',_0x37cdbe[_0x5aebf7(0x12c)]=_0x5aebf7(0x7ae)+_0x5aebf7(0x431)+_0x5aebf7(0x1a3)+_0x5aebf7(0x64e)+_0x5aebf7(0xc1),_0x37cdbe[_0x5aebf7(0x766)]=function(_0x48c5b6,_0x12c4cc){return _0x48c5b6+_0x12c4cc;},_0x37cdbe[_0x5aebf7(0x116)]=_0x5aebf7(0x714)+_0x5aebf7(0x7a9)+_0x5aebf7(0x6ba)+'存。',_0x37cdbe['QPSpE']=_0x5aebf7(0x7c1)+'-toke'+_0x5aebf7(0x110)+'n',_0x37cdbe[_0x5aebf7(0xa0a)]=function(_0x35d15b,_0x550e78){return _0x35d15b===_0x550e78;},_0x37cdbe[_0x5aebf7(0x730)]=_0x5aebf7(0x1d4),_0x37cdbe[_0x5aebf7(0x576)]=_0x5aebf7(0x27b),_0x37cdbe[_0x5aebf7(0x4b7)]=function(_0x25364b,_0x327d6b){return _0x25364b>_0x327d6b;},_0x37cdbe['gDTNV']=function(_0x1cca1c,_0x222e59){return _0x1cca1c+_0x222e59;},_0x37cdbe['MsbWK']=function(_0x17f906,_0x2c6bf3){return _0x17f906*_0x2c6bf3;},_0x37cdbe['YDnev']=function(_0x2fb388,_0x211421){return _0x2fb388===_0x211421;},_0x37cdbe[_0x5aebf7(0x348)]='mKPpE',_0x37cdbe[_0x5aebf7(0x577)]=_0x5aebf7(0xa37),_0x37cdbe[_0x5aebf7(0x252)]=_0x5aebf7(0x5ce)+_0x5aebf7(0x51b)+_0x5aebf7(0x6db)+_0x5aebf7(0x67d)+'授权',_0x37cdbe[_0x5aebf7(0x123)]=function(_0x225e45,_0x421f9b){return _0x225e45!==_0x421f9b;},_0x37cdbe[_0x5aebf7(0x4bc)]=_0x5aebf7(0x79a),_0x37cdbe[_0x5aebf7(0x5db)]='uSagm',_0x37cdbe['tlwAg']=_0x5aebf7(0x79d)+'保存的\x20T'+_0x5aebf7(0x61c)+_0x5aebf7(0x3d3);const _0x599df8=_0x37cdbe,_0xdae6e=configManager['getPa'+'th'](_0x599df8['QPSpE']),_0x15662a=new FileTokenStorage(_0xdae6e);oauthManager=new OAuthManager({'mcpOAuthUrl':MCP_OAUTH_URL,'tokenStorage':_0x15662a,'onQrCode':_0x136b55=>{const _0x5979e6=_0x5aebf7,_0x108f32=_0x599df8['YHAZB']['split']('|');let _0x3ac5c1=0x0;while(!![]){switch(_0x108f32[_0x3ac5c1++]){case'0':console[_0x5979e6(0x617)]('');continue;case'1':console[_0x5979e6(0x617)](_0x599df8[_0x5979e6(0x2b5)]('\x0a','='[_0x5979e6(0x10c)+'t'](0x3c)));continue;case'2':console['error']('\x20\x201.\x20'+_0x5979e6(0x121)+_0x5979e6(0x80e)+'小程序');continue;case'3':console['error'](_0x5979e6(0x5ff)+'输入验证码'+':'+_0x136b55[_0x5979e6(0x302)+_0x5979e6(0x464)]);continue;case'4':console[_0x5979e6(0x617)]('');continue;case'5':console[_0x5979e6(0x617)](_0x5979e6(0x863)+':'+_0x136b55[_0x5979e6(0x302)+'ode']);continue;case'6':console[_0x5979e6(0x617)]('');continue;case'7':console[_0x5979e6(0x617)](_0x5979e6(0x4cb)+_0x5979e6(0x967)+'账\x22小程序'+_0x5979e6(0x3c5)+':');continue;case'8':console[_0x5979e6(0x617)](_0x599df8[_0x5979e6(0x4eb)]);continue;case'9':console['error']('='[_0x5979e6(0x10c)+'t'](0x3c));continue;case'10':console[_0x5979e6(0x617)](_0x599df8[_0x5979e6(0x12c)]);continue;case'11':console[_0x5979e6(0x617)](_0x599df8['YLhCb']('='[_0x5979e6(0x10c)+'t'](0x3c),'\x0a'));continue;case'12':console[_0x5979e6(0x617)]('');continue;}break;}},'onTokenReady':_0x12d0a8=>{const _0x4706b2=_0x5aebf7;console[_0x4706b2(0x617)](_0x599df8[_0x4706b2(0x116)]);}});try{if(_0x599df8[_0x5aebf7(0xa0a)]('PwmtI',_0x599df8[_0x5aebf7(0x730)])){const _0x2a1fdb=await oauthManager[_0x5aebf7(0x2df)+_0x5aebf7(0x4f0)+'ge']['load']();if(_0x2a1fdb&&_0x2a1fdb[_0x5aebf7(0x63d)+_0x5aebf7(0x187)+'n']&&_0x2a1fdb[_0x5aebf7(0x6bf)+'esAt']){if(_0x599df8[_0x5aebf7(0x576)]===_0x599df8['GHkAT']){const _0x3f0175=new Date(_0x2a1fdb[_0x5aebf7(0x6bf)+_0x5aebf7(0x6f0)])[_0x5aebf7(0xa0e)+'me']();if(_0x599df8['jFUiE'](_0x3f0175,_0x599df8[_0x5aebf7(0x3ea)](Date[_0x5aebf7(0x104)](),_0x599df8[_0x5aebf7(0x83b)](0x5,0x3c)*0x3e8)))setCachedToken(_0x2a1fdb[_0x5aebf7(0x63d)+_0x5aebf7(0x187)+'n']),tokenExpireTime=_0x3f0175,authState['isAut'+_0x5aebf7(0x181)+'ed']=!![],console[_0x5aebf7(0x617)]('✅\x20已从文'+'件加载有效'+_0x5aebf7(0x51b)+_0x5aebf7(0x970)+_0x5aebf7(0x4a2));else{if(_0x599df8[_0x5aebf7(0xa23)](_0x599df8[_0x5aebf7(0x348)],_0x599df8[_0x5aebf7(0x577)])){const _0x44f98c={..._0x1a4935['data'],..._0x132484};_0x2b265c=_0x44f98c;}else console[_0x5aebf7(0x617)](_0x599df8[_0x5aebf7(0x252)]);}}else return _0x436db2;}}else return _0x5aebf7(0x7df)+_0x5aebf7(0x5a5)+'用\x22'+_0xd0956f[_0x14e271]+(_0x5aebf7(0x478)+'时间');}catch(_0x2a15af){if(_0x599df8[_0x5aebf7(0x123)](_0x599df8[_0x5aebf7(0x4bc)],_0x599df8['PaLQz']))console[_0x5aebf7(0x617)](_0x599df8[_0x5aebf7(0x2a3)],_0x2a15af[_0x5aebf7(0x715)+'ge']);else throw _0x5f360b;}return oauthManager;}const _0x13f8ac={};_0x13f8ac['name']='chaim'+_0x2dbe2(0x99f)+_0x2dbe2(0x8f9),_0x13f8ac[_0x2dbe2(0x5c1)+'on']=MCP_VERSION;const _0x1bc78b={};_0x1bc78b[_0x2dbe2(0x474)]={};function _0x2503(){const _0x20b795=['ioAwH+wTLY/OR60','mJO1mda','C3rezxy','zMLSDgu','5Bcp56Il5BQp','u1PxvNu','vuPZBLm','ywXbBw8','5y+V5P+L55Yl5yIg57g7','y0PHru0','vKXbELO','vvfWs3C','vKvsu0K','lI91DgK','mI4G5lUu57Ug','5lUK77Ym5OIr5OMn6io9','nwjJmde','5P+057gZquNORRa','BNtLV4xPOBVKVB8','vfvOwum','teLov0e','z2vUDa','CfbtsM0','77YADgHPCW','77YA5lIk5lYG5zU+54Mh','5A6m5Pw05PwW5O2U5AsN','BU+8JoAxOoMCGoMhJq','5Aw95zcd6AwT5zoMFG','t3nLBgi','tfDuDxy','ms4G5Q+p5lIQ','DgvZDa','CNrPzxm','qLL1qvC','iIbZDg8','zxrFCge','yJHIzwq','y2vPBa','te9TAeK','zxmUBwq','wxjiCMG','zNzIDeO','zwfKvgK','wu1uzNK','wNb1BM0','yZKZzdK','uhjVBxa','5PYa5AsN6yEr6AkD562B','57Ut5P2F5PEL5PYF77Yi','B24k','uxLsBuq','sEIUSoI0PI5Z','y2uGW5CG','AxrO','zK9YEMy','iowTL+ESPG','6k+75y+wifnR','mgu1oq','y3n2','wg9yrNq','imoxihf1','te5MAhm','iowUMUs5IEoaGUAVJW','AhrZ','s0nwsMm','rwfSwfC','ngi3nZq','vLvtq2m','u0r1qM8','yxFJGif3BW','6i635y+wu0Tj','Cgf0Dgu','mdbLzJO','As1Rzwu','t0P5uuC','6yEm5PEG5Rov55sF5OIq','z2vUDe4','qxP1s0i','ignHDgu','zxHPDa','tc5Tzos4Rq','CMjXEva','6k6W5B+g5Pon5l2C5A+8','Ee1jz2y','DvfPC1i','5lIQ5Qch5yEg5yIg57g7','s3zJwuW','BgvkBNC','yvHVtgq','zwX1wLq','5lIT55Qe5QIH5P2/5RIY','CgfJA2e','mwuZnZm','s0TJD2y','AevqC0q','uf9pqvu','C2H4vuq','qNPoy1q','x2zSB3C','ntKXnJy','B3j0zxi','6k6W6lsM5yQF6io95lQg','6k6W6lsM5A6m5OIq77Yb','5PYQ5zg95zcn','nsbJyxq','rMngAfi','zuvwvLG','yxjYyxK','nJfIndq','6AQm6k+b56cb5PYj5Pwi','4OcIiowWJ+EOI+w6JW','AhDgBNi','yMnhr2e','zxb6t1C','6l6t5ywL6AQm6k+b56cb','zNPTy2m','z1bUy0e','5y6F5AEl6k+35Rgc','y29UDgu','yxzLx3i','vxn2sKm','z2v0rgu','Bwf0y2G','iUAFToEXS0fj','DLPdAeq','5lMjcGRMOlNMJA4','5y+w5AsX6lsLoG','qu53zg0','D01Z','mdy4ztq','mJiWnJm','ogyWyMm','yte5yJm','5BcX6kEJ6zsb77YA','qLzyr1G','yNvN','uxnQwei','zxiG5y+Q6l+u','cJmUiha','nEwiHUMsNW','6yEr6AkD77Yi5B+f5AgR','zgv2zwW','6lsL77YA5PE26zE05l+H','uMXHuu4','55sO6zYa6kAb5O6i5P2d','562j77Ym5PA55l6/5zco','Aw5WDxq','u3rYAw4','iUwnIoMKKdm1','zw5HAEoaGq','zwnLAxa','6BUy6k6KkEoaGwq','nxWXFdC','ChvZAa','z3rIDfe','nwqXzte','BMfSqw0','z1f6B1C','y0jAwMi','6zo65lQm57QN5yIg57g7','5PwW5O2U77Ym5lIn6l+u','zxvMAfG','zMvHDhu','y2vHmti','DhrRu2K','AhvI','uhvxAfe','zdbHnZe','5yQF6io977YA5PAW5AkE','4OcIioAoIoADG+wUJa','6lsF6lsJ6l6t5ywL6AQm','BNb1Dca','yZq0yty','Axb0kowWJW','yJrMyte','C3rHCNq','ywDLBNq','57UN57UT5l+D5OYbFG','5PE26zE057Ue5lU26l2S','BMfStMe','tfPAywK','6ls55PE26zE0562j77Yj','s2DPqKq','5yIzC2f2zq','z2v0vgK','ioMhJEIMGEApKoEKUG','BuPyAxC','5PE26zE05BYc5BI477YA','5OIq55Qe77Yb77Yi5y+Q','ztm1mZq','qw1VDw4','swnUueS','sLfMsvu','sgfUzgW','5OkO55Qe6k6W6lsM5OYh','ywnRswq','6z2I55Qe6AQm6k+b56cb','zgvZyYG','w3nHDMu','AgriD1m','Dw5044cbCW','zxiGC3q','q1aG56UV5OMn','5P6q5AsX6lsL77YA','5zco57UT6k6W6lsM5Bcg','wurUzxy','z3nJDMO','mJOZmge','mdy2mMu','DwrLiem','ntdKUkRLRzFNRky','EYjUyw0','6lcd55sO5AsX6lsLoG','l+ACIowrQoACN++8Iq','ms7MN6xNNiSG','DgLJCW','6AoFl+EuN+A0U+ACJq','uefjD2i','zxzPy2u','lJuSiNe','sKj3ueu','5zob5zcn56EW','44cr6i635y+w5Bcp56wO','r2f5r0i','cIaGig0','z3nHuhm','nwrHyZC','ugLiA28','44cbB3bLBG','y3j5Chq','ogm3zwy','iUs4G+oaGEwBNUwKJq','5PwW77YAyw1V','B3jT','BNb1Dd0','5ywL5PE26zE077Yi5Q+R','uvfSwwe','ms4G6k+35PU0','zxnZ','y3rPB24','44cc57QV5lQr56UV6k6H','BwfYA2u','mwyZmwe','mdOWmcS','DKXet1i','6l+WifnRAq','ignHBgW','ksdKUi7MGlVPH5e','uxPQwvu','5l2/55sO55Qe5PIV5PYa','44cbzg91yG','yxvUDvC','77YmquNOP6pMNPa','Cgf5Bwu','ndrLmwu','s0vo6zsz6k+V','CNreyxq','mJfIowy','mtvHyMy','rvPsr1K','5lIT55QemI42','44cq5B+f5AgR44cr5RAi','5OIq5O6i5P2d77YAcG','wK5bBu8','q3bXs2C','DfPiz3q','ogvNzw9YDq','A2v5D28','55sO6Asq5Osj5B+R77Yb','5OIwignZDG','vgTsEMK','6lsL77YA5PYQ6k+75y+w','AfLgy1a','B3vUDf8','ALrNBwe','vK5TEhu','BNrOkoACRa','5lMjcUkaOIdOR7C','BMzV','44cq5B+f5AgR44cr5PwW','5A+F5PwW5O2U77Ym6BUy','tw9iuKW','zgnHzti','qMnlDhe','ExPrAKq','zgvszwm','DLbIyw0','yJu5ogi','zsdLRzFMRRxVVie','6AQm6k+b56cb5BEY6l+h','77Yj77Ym6k+36yEn5PAW','mJPIzMy','ios8MUIhQUwkQoMaGa','ztrHngm','ztC5zMi','thn2B3m','ioAoIoADGYi','swPQt3y','tuLtu0K','5lIQ5A2x5Q6177YABG','BxLMBg8','Aff4BLy','Dejszxm','zs9LBMq','EwvHCG','B3vIyw8','C2LVBG','6k+35l2/55sOCMu','5PAW54Mi5PYS5BEY5A6j','B3bLBMm','44cc5PsV5OYb5OYj5zgO','zuLK','77YA57Y65Bcr5B+f5AgR','cGRIMQdVUi8G6yEn','5lUu57Ug6zIf6k+75zco','DMDwAeW','BwTOqNC','CMvK','sLnZueC','ig1LC3m','vdeYoJa','DxrOu3q','mwvImMi','BNqSiha','z1D3BhO','z2v0x3q','mJaYnI0','Bg9Hzee','EuXUD20','6yEr6AkD5PIV5zcM5Q2J','kEoaGw90Aa','EMGTq04','Bgf0zuW','y2m5otG','77Yi5B+f5AgR77Yj5Oc7','v0jQEMS','4P2mioAoIoADG+wKSq','44cq5B+f5AgR44cr6k6W','5PYa5AsN5ywb6k64ia','s2ziu3e','Cvvlsha','ndrHodG','6yEr44cb57QI5yYf44cb','C3Dny0q','C2f2zv8','yxbPuhi','D05sENG','ChroBW','u0Lmy1G','yJDIngq','6jsS6i+C77Yj','DwjnAgm','CMrHEq','Cgf0Aa','B3rOzxi','qvvusf8','6lgH77YjcUkaOIa','rNb5Efa','z2zbBei','5lIk5zgOkEoaGxq','ExvU','DgfSqw0','zw1WBge','BM93','ztjMndi','zwfY44cbBq','y2HPBgq','5y+n6AAi5yAf5A6577Ym','rKHJB0i','BfDnv3C','Bu9rvwm','CMvWzwe','EhbLBNm','CMu9iUI2Hq','zoAiLNn0yq','BI5QC28','BNrqB2K','zMm1nJu','5OYb5PwW57Ue5OIwsG','AwnLpEMhKq','5y+n6AAi57g75z6l77YA','rwHMAhe','u3r0y3q','owzKngu','5l2CcUkaOIdPPPy','ChjPy2u','whDYBuy','mta0nge','DgrOBKK','5Aww6yEr44cb57QI5yYf','Bw1psK0','77Ym5yAn6k+75y+wCG','5OMt5BYaiUAFToEXSW','Ahnorve','Ag9At0u','odq1y2m','q1b1vei','57g777Yi5AAc77YA5y+2','x3jLy2u','nwe0nZe','yZfKyJa','vfPgse8','wvn4D2q','Cfnct0W','DgHLCG','A2D2B0e','5O2IoIa','C3vIBwK','77YA6Asq6AwU44cb6AoF','CMvKDwm','AM5Sseu','CMTIDwq','4PQG77IpiowkOoI9VEs/Nq','ota5ntzYrvfIrw0','D21HDgu','tKviuhO','t3byufa','yvbjqNG','ztrKoda','Au9SCgu','wwvxDva','B2qG5y+c5PwW','mtnKndq','5ywL5yIg57g777Yioa','5Ps25ywL5P2L5RQq77Yi','sKrvDwG','z2v0x2u','5O2U5zU+54Mh5PE255sO','C2jgr2O','6lcd55sOigDL','Dgvrthi','vwHowwe','uNbwBNK','Aw52ywW','B3vcC1O','Dg9VBa','ntC1zde','zgvMyxu','t0fOv3G','tKCUlI4','Dg9gAxG','Dw5044cbza','BgXzzwe','5OI36ygh5yIW6k6W6lsM','zMLSBeq','DxLrwui','6lsMiUwWJ+EOI+w6JW','77Ym6k+35Qoa5P+L5Bcp','44cq5B+f5AgR44crqq','ExHvAgS','mMmYyZK','swzRAxy','uLblvvm','ANvZDf8','Aw5N','iowiHUMsNW','5ywL77YjcJmU','BwLUqw0','y29Kzq','5zkmicG','BhmVDMe','6zIf6k+76l+u5zUE55Qe','cGRWN46jioAiKa','wK13Cxe','5zUE5Asn6kEe6iYdiG','tKDFve8','u3LUyW','DxnLCKe','zgvjBNm','AooaGwXHCW','AgHUAKe','6ls55Qch6k6W77Ym6BUy','nZuZmdi','D0TTz0C','5zwg5A6244cb6yEr6AkD','Fdz8nhW','6l6t5ywL6l+h6zw/77Ym','6k6W6lsM77Ym5Pon5l2C','5B2v5AsX6lsLcGO','ioEUOEEqHUwzQoACQG','Dwn0Aw8','5PwW5A2x44cc5AAc5O+q','sMDWr2S','Aw5JB20','5OgV5lIn5A6m5Pw0cG','q2Trz28','EwvHCUoaGq','veHFvvi','Ag9YAxO','zgq0nwi','zJGZogi','DuHRB1G','5PE26zE0oIa','zwLWDhm','C1rVA2u','BLfkvNu','77YbcGO','shHjCwO','sNzoCKO','uMvJB3i','BKXlzKy','44cq6k6W6lsM5yMn5B+f','DgGUANm','v1f1DKm','qMvHCMu','x05pvf8','surjsLm','iIbUyw0','C2L2zq','Cerru0y','nJLKm2y','cLVNIyJMNkZLJyC','wNjyA0y','cJiUioEHRG','Df9Mzwu','q1aGu2u','mdaL5AsX6lsL','BI9QC28','mdi1ogu','ywu0yJK','zxzLBMK','B3jZlMO','iIdIHPiGiG','5yI277Ym6BUy6k6Knq','6AkD5B+f6Ag75PIV6z2E','qNrZv1m','rvrfrdO','5P+t5zUE5Asn','5A6m5Pw05PwW5O2UcG','Axb0Aw8','DMLJzuK','mtaW','CxvHBNq','zxnRDg8','y3bFCMu','6k6W6lsM5yMn5B+f6Ag7','AwnVBG','zMvLzgi','5B2v5AsX6lsL77YA6yEr','zxj2zxi','5B2t5yMn5PE26zE0','BxbSyxq','vvHyEKC','BNruAw0','qKHkvKi','5Asn5yI256s65l6l5PwW','5OI35O+q5y+k5Ps25ywL','iowpGUAvSoAGVow8JW','z2nlC2K','6zEU6Aky44cb5PYj5yQF','DxzdEMm','6k+35Bcgihn5','nZi0m2y','ALPfsNq','sgTjz0O','5B+f5AgR5A2x5Q6177YA','Ag91CUoaGq','5lYA6kkR5OIQ5PAT44cc','A3vkqNu','lM1K','EgztsKO','mJyYmW','zxjdyxm','vLvvqw4','Avb6B1O','CfDAsLm','y2f0y2G','ioAyR+wqPUACIEMbLW','uxPxq0i','vxzAyuK','C3bVBNm','uhDTDeK','mtCYoda','CMLNAw4','BNbSuhu','5BYa5AEl5PEL5PYF77Yi','otuZytu','56gU5PE26zE05lI6ia','y+oaGw9Wzq','zw50CMK','veLWww8','5l6BigrHDa','BM9VBG','CM92zw0','B09Vq2O','q2rnvwO','sKjpvMO','zurmvNy','Bg93','5y+w5lQg5OMa5PYj5l+H','tu9OsfK','t3vKEeq','CMuO5zwg5A62','Cg9SBey','y1PqEwC','BMzPzY4','BcJLHAJPG6GP','Dgfvz0O','A2v0uhi','svj3EeW','mwiXmtC','77Ym5lIn562j5lQo5A6E','vMfgCxe','Dg9tDhi','5yAZ5PA55Qgi77YAcG','vKzWA0u','AgvTysa','5lIT55QeiUs4G+oaGq','5lIT55QemI41','5RAi6ls55PwW5O2U77Ym','C2TPBgW','ywTnALC','Dw50qw0','vw5sD2S','ogi1nZy','Df9Wyxi','Bwj5weC','CgDdr2i','ifnRAwW','lEAuR+whUUoaKEEuQa','zwzHDwW','zMyZzdK','BNrbBw8','BNreyxq','5lYy5yYw5BU66k6U77Yj','BgWG5A6A5lMj','q2ruCKu','C3rYAw4','BgLTAxq','u2X6BfO','EhrFzxG','yM9VBgu','lEwWJ+ELQooaKEEuQa','Dw5044cbBW','veX4zNm','5yQF77YbcGRILie','5B2v5AsX6lsLoG','mgmWode','B3jPzxm','DxrMoa','56Es5yAf5PYa5AsA6lcd','seXOvum','B3dJGifJDq','rgf0zEs6Ja','Dg9ju08','zerPC3a','iUE6OUwmHsiG','77Ym55sO5lQo6AQm6k+b','5zwg5zob5zcn56EW77Yi','z2LMEq','BLbYB3a','nZrIzty','5lYG6ycssLnp','sMr2zKe','Exr0B3y','ywDL77Ym5OQk','5y+kigLUCW','77Ym5yAn6lcd55sOzW','6zsz6k+VoG','zxrFDgu','Ahfrr2u','zYJPL67POPJMIQu','5B+f5AgR77Yj','ndy5mMm','A3jfwwS','77Yi5B+f5AgR77Yj5lYy','ihnHDMu','AMDMu08','BuvkCMq','ycdLT6xLHBCk','mxW5Fdy','ww1RB0u','mZe5yZm','562B6ycj57UF6k6H','5RAi6ls55PE26zE077Yi','yJjJztu','5QIH5z6l6l+B6kgm6kEJ','B250AooaGq','5ywdcUwWJ+ELQoAaUW','44cq5B+f5AgR44cr55sO','mwe4ytG','DgvYigW','5ywi6lcd55sO5Q2K5BEL','DfbYAwm','57UF6k6Hkq','ioAwH+s7TU+8JoIVTW','57QN5O+q56s6xsa','5OMN6kgm6k6W6lsM5Pon','B2jQzwm','zgv2Awm','tunqihy','5P2H77YjcG','zJC2mJG','D1jfCwq','DgfTCa','ioAwH+AHO+wgHEwUUq','lcjWCMK','ANbUtuG','owm6mtG','lI5DiUoaGG','ntjLogu','D2fYBG','rKf4Ewe','BcdMN7tNSBnb','ANnVBG','BwnWvMu','iGOkm++4J+kdOYa','mZG1zMTlre9o','5yw36i635y+w5yET6k+b','zMvLzfq','ntu0ntq','mJCYmdG','Bgf344cbDW','44cbBgfZDa','Bgf0zuG','Bvv3q3G','5PAW54Mi5PYS55Qe6kEe','CNzdu2O','yMi5y2u','lcbJyxq','y3jLyxq','x3bYB2m','ywn0Dwe','otHHzJK','BxPgr1C','BgvUz3q','yw/JGifHBa','4P2miowqR+wkQoAoIa','5Ps257QI5yYfmta','mtu2lJu','C2fNzE+8Ja','cGRILihILihILie','sEACJEwkOEApKos+MW','Ee1ZyNC','DxbKyxq','m2iXmJK','A3DiC2y','5Qoa5P+L5A6j6kof5PIV','ENHhsfy','zw5KC1C','m2q4yMm','4PYfioIHPEwfQowTLW','44cb5yw86igm44cb5Aww','ywrKrxG','teDttha','5P2/5RIY5P+t5zUE5Asn','BNvTyMu','pslPPjdPPA4I','44cq5PAh5PYS6k6W6lsM','BMfP44cbza','EsWGy2e','6l+u5zUE5Qc85BYp77YA','D09tuKW','5y+wu0Tjta','5A2x5Q6177YAC3q','5yET6k+b77YmquK','ogzJzty','yLbLB3e','yIdOSipNLkJLPle','nJvHnJK','yufXCKC','zwPLqwi','ALH2zgO','5PE277Yim+wiHUMsNW','CMj0ru4','ytDIzdi','5B+f6Ag75yYf5zcR77YA','ANDXAvO','6ykU566X44cb5B6U5l+H','CMvSzwe','mgFJGihLHymV','u3P5vfu','DgLUzW','moADOE+8JoACGowKPW','rvDsyvy','wMDeC2W','ufHQBha','5yIg5P6q77Yi6zU2qq','DgX3qwC','ogfLnwu','igfTB3u','CM9KDwm','mY4G5y+c6icd','5ywdcUIUOEEUL+wUNG','B1fZtKW','B21WDca','v1jKrNu','55sO5PEL5B+x6k6W5B2v','z2v0x2K','r1PhzgS','wxrwwuu','ntDLmJy','cGRWN5kHioINOW','sffMB1m','5z6l77YAy2XH','5B+f5AgR5A2x5Q6157Y6','B2Pwu0C','ru11y3a','B250Aa','uKvbra','mJG4zdO','zJC5mwi','zM15s0G','zgjHy2S','ywT3u0O','AMDzqLa','DowMGKnSyq','5l6l5PwW57Ue77YAwW','zhDwBfi','mtnHytG','u1bqqMm','zK1Ts2y','zgu6ndq','yLbvzee','y0LHD0i','kIOkcJtVUi/IG6m','lZuWmgC','vNrbweK','4O+WioAoIoADG+I2Hq','zxnWB24','oty2y2y','5y+w5yET6k+b5zkm6kEJ','twXkvfC','zgPlyLq','6k6W6lsMiGOk','zMqWyJC','uwzYv2W','BwLUDxq','CNnVCUoaGq','6AQm5lIn6ycA6l+hcG','tunqifm','BNrO','ksdKUi3KUidOH7q','sNDXDgS','u09o5A2x56YM','mZC0mdG','6io977YA5PAW5AkEia','BKTewey','Dg9Rzw4','mgvIyZu','5PYF77Ym5RIf6zMK5BM2','rwrhA04','AuPfy0e','B1vAq04','BNqG5O6i5P2d','zgf0yq','u0TjteW','DwrLlwq','B2XMB1u','ywDxr0G','ndGWmdC4ovDxtK1zrW','6Ag75ywi6lcd55sO5Q2K','CgvYAw8','Bgf5','r2LovKC','DuvAEfa','5PE25B+f6Ag76l+u5zUE','oIaI','57g7kEoaGwrH','Eg5RBKe','DgJVViNVViZKU6u','4PQG77IpicdMO4dMN6u','Dg9mB3C','nJKWoti','x3rLBxa','77Ym5lIn6l+u5zUE5Qc8','57UF6k6H5zgO5PYF77Yi','zvjRwwG','u0LlD2q','8j+uKsdPQOZOR4hNOie','56Es57QN5PE26zE05OIZ','kIOk4Psb4Psb','y29TCge','DxnLCKm','r2HArfy','zv9PBMm','5A2x5Q615lIT77Ym6k+3','8j+uJsdMTOJOTlNMTj4','5B+f6Ag75l2/55sOzW','55sO5lQo5yIg6Ag1','seHMre8','m3WWFdi','y2f0Aw8','5zob44cb5lQK6ycA44cb','AuLYquK','6k+35Rgc6l+h5lQo6Akr','Du9dshy','44cb5zwg5A6244cb5P2L','44cq5B+f5AgR44cr5Ps2','BNrZ','5Q2K5BEL5yw36i635y+w','y2XLyxi','CxvLC3q','5PYQ55+L6zsz6k+V','DhKIoJe','ntG1mgu','AgfYq28','5ywdcGRWN5kHia','6k6H77Yi5PsV5OYb5zgO','5l+D5A2y55Qeifq','D0fmv0m','BNnLxsa','yM1bqLq','5OYj54M55A6A5yIg57g7','nte5ztK','BhmVA2u','BevNB3i','y3rdyxq','ios4JEIdVEs4UUEPUG','B21L5lYA5OQL','6ycj44cc6l+u5zUE5Qc8','77Ym5BEY55Yb55wLxq','cGRWN5kHioIVTW','ue1fC1a','B3j5kowiHG','CKTWsfG','DwrUu3G','DenHDgu','5Qoa5P+L5RIf5y2viG','BgzWy1e','5zgkkEoaGwzL','C0viq1i','CZ0IwY4','DLzKyMi','5zUE5y6F5AEl5PwW5O2U','5AAc77YA5BEL6lwe44cb','zxHHBxa','5OI35O+q5y+k5PsV5yE6','zdCZmZm','t2j0Bwq','CMvXDwu','Df9Kyxq','DgHYB3a','Aw51Dgu','B24UDhG','B2rL5y+V6io9','zwPHBxe','44cq5B+f5AgR44cr5y2v','77YmmtpKVy3MLBa','zuHTywm','y2fHndG','CMvXDwK','vLffrwO','y0L2tKS','whvWzwi','vK1MtKe','uLHIshe','mdG6mda','5lYG5Q2K5A2x5Q6177Yj','t2rwsMW','B250Aos6Ja','zwnVBMq','reDeDLC','5PEG6zYa5yAn5QYH5O6i','r1fHqLi','5yw35y+c5PwWiIa','5y+V6ycj77Yj77Ym5AAc','5BEY5l2/55sO5B2t5yMn','y3rtDwi','A1nnyNO','lI4UiIa','cVcFN6iG5l2o5lYy','FdeX','44cru2vYDG','zNL0Bue','5zwg5zob5PIo57Ugkq','5PE26zE05O+p6l+W6kEJ','CgDpwhe','BgvZ','z3v0t00','BwfWCeS','rNLmzvO','5P6qoIa','5P2d5Rwb56Il','zNjVBum','B250AoAiLG','572U77YA5B+f6Ag75ywi','r0Dws04','twDiBKe','DhjPBq','5P+L5RIf5y2viG','6koficG','quNORRdOTkyG','55sO5Rov77YABwm','CNnPB24','6kEJ5yAZ5PA55Rov77YA','u2TPBgW','C29Y44cbBW','CNzLCIa','t0DXzfq','BMtJGilMNi3LIQe','zv9Yzwm','q2PbBvK','q3nhAMG','5lI6ihvZzq','5lUy5QY+5PA577Yi5AAc','rhLuExG','r1n0yNC','D2vPz2G','y2zJngq','nJa2mZq','otCZm2y','tMXjr1C','zxiO5yw25lUw','Cg9PBNq','6kgO44cc5PsV5OYb5OYj','5P6CiIWIyq','5PEG5Rov6k+75y+wia','uw9qzwi','rgf0zs8','44cq5B+f5AgR44cr6k6H','z1LvwKW','77YA5y+n6AAi5yAf5A65','77Ym6yo95PIV5B+f5AgR','nta1m2q','mgiZnwm','6yEr6AkD77Yi5OMa5PYj','ifnlsuW','ihjHD0K','AwnZ','6iEZ5Bcr5lIa5lIQ5zwg','5yQHl+wfTUs7LU+8Iq','AhD2Cha','5PYS5zgOkEoaGwW','mdrKmJa','77Ym5yIzBwfY','rvvhuem','uxzLEg8','EvnQzuy','6zkF5yAf5PYj5Pwi77Yj','Ce5YvLG','5y2G5Q+u44cb5RAi6ls5','BMfTzq','5OIw6igu57o75A6I5PYn','5y6F5AEl5zwg5zob5zcn','5yw25lUw5y+n6AAi','44cc6l+u5zUE5Qc85BYp','wKnAqvK','mdnLmMe','BgHfCM4','AwpJGifVCa','BML0pEwfGW','6io955Yl5yIW77YjcG','yxj0','DcbFzMW','ywjZ','5P6C44cb5PEL5yYw55sO','cVcFK6yG5P+057gZ','5zgO5PYF77YAywW','zw5Jzxm','44cq5PAW5yQF6io944cr','EEoaGUkAOo+4JYdMS6G','CKnHCMq','C3bSAxq','zxnjBG','zYNdLZuW','tKHTrhO','55sO5OYh5y2x','zJyYnMe','CNNJGifZDa','5P6q5QIH5P2/44cc55sO','5Bcp56wO6k6W6lsM5QIH','yxbWBgK','C1r6rMW','CvrXAxC','zunVzgu','yxzLx2u','5OIq5PAW55Qe6AQm6k+b','5lIT5A6m5OIq5O6i5P2d','zdjLnde','6iYd5zU0562B6ycj77Ym','B25Zzs0','5y+w5lQgigL0','Fdr8ohW','AgjVzMy','vwf3yum','6i635y+wifnR','mty1zta','5ywi57QN77Yi','Do+8IowoN+wNI+I+KW','Axb0iow3Pq','oweZntq','5AsX6lsLoG','ywrKsw4','lMXVzW','8j+tHsdLKAJMNj/VVjO','rMLSzvm','w+AvSoAnRUI/H+wKPW','zw1VAMK','ztDKy2e','CMvHzey','6lEZ6l+h5P2H5PwW77Ym','5lUk5AsP5lIl5y2i','mZLMyJG','5y675BM0kEoaGwm','DLH0vKy','D3PXB0W','vgLTzq','Cvrwuhe','44cc5y+n6AAi57g75z6l','4O+WioMQJoIVGEEGGq','DwrKEEoaGq','5B+f6Ag75ywi6lcd55sO','z2v0vgu','5A2x44cc5B+f6Ag75Qc5','z0rutLy','z2v0tw8','mgfImda','Buzgvei','BwKTBwm','thnWB0y','zgfPBhK','ELbsthm','s0rPBvq','Bhb3yw8','5lI65OkO5A6m5OIq6k6W','zhbMuNC','5P6C5lIT5Q2J56gU5O+q','whbZvue','DNDAwNq','zJa4ogu','mNWZFda','yKzoA04','zwmXm2m','tMLjzNm','6lsL77YA5lYy5OoG6yEr','C2XPy2u','BwTKAxi','mZG3owq','5QYH5O6i5P2d5zco77Ym','5lQo6k6W5B2v55sO5OI3','q2Hdtuy','zNfnCvu','x3nRAwW','q291BNq','tu1XExi','AhbJyMm','5OgV44ccqwDL','zhHJEfu','mdm2nwy','veXKEg8','zuDOCKy','r2LhEhO','yZG6yJG','yxjPywi','EwvZDgu','AwDODhm','uNv1y00','DhjHzq','swvuzhu','iowpGUAvSow/HEMHUW','nJG2ogm','CgvUC2u','77Yi5AAc77YABwm','5zgOkEoaGxrO','vePHCu4','5PIo77YA6k6W5B2v57k+','cMbGya','5PE26zE05BYc5BI477Ym','5lU35y2v5l2n77Yi5AAc','zgfvufG','5B6U5l+H5Bcp56Il5BQp','CMLJzCox','m2vJywu','ioATPoAJGoAFPEAyRW','5O2I5lI65PE26zE05OIZ','CooaGwn1CG','5PYa5PAWifnR','CwXAs3G','CMvJDxi','tKvfrf8','B3zPzgu','5OI355Qe5y6F5AEl6l6t','5BEY6i635y+w77Ym5PYj','iIbHBw8','ANnVBIa','54k55yE7iUAiKEEAHa','A05nvKy','5yw35O+q5lQK5y+n6AAi','5yIg57g777Yj44cbCG','DxnLCI0','BM90zq','yw1L77Yi5Ps2','qwP1tee','77Yi6lAf5BIcl+s+VW','DhjHBNm','Bwf4uMu','5OYj54wNifnR','y2H0A2W','6BUy6k6K5lI65ywO6yoO','ztiZnta','veT3AwC','Dg9W44cbyW','ioADOEA0NUwVN+E6VW','5Pon5l2C5AsX6lsL77Ym','l+ACIoAiLUAxPEACNW','6lsMcUkaOIdPPPy','CLHkug4','5RAi6ls55PEL5PYF','AxrLBq','AM9PBG','5P6q44cc6l+u5zUE5Qc8','Dg9Yzum','u2vSDMG','BM5HC0u','5lIQ44cb5ywdl+EBKG','B3rVy28','B3DTyxq','77Ym5AAc77YAmJa','D3Pky0W','AwXS6i635y+w','mde4nwy','6i+C57g744cb5Qc56iYo','DxjZB3i','AgLZx20','C2pJGifHBq','77YA5ywS5y+45zcn56EW','DM5HB3e','AxnbCNi','vM9QsMW','vgHNtwu','tLfUAhG','y29Tzsa','A3vLA20','zw50kos8Ma','yxDjBNa','5Q+R56Es57QN5PE26zE0','B2rL','Dw5PDa','CNrDia','5OIZ77YmmtpKVy0','5Q2J56gU77YA5y6F5lU3','Axz3Efa','ngqXnwe','CgfYyw0','z3jVDxa','yNvKz2u','q09nueW','m2fJzgu','Df9Kzxm','mJyTmdq','BgnVBNq','sLvtvf8','Dg9VBhm','m2iYmdm','x3LLyxi','wxvVBu4','iUs9Nos4UUM7MoIUPa','rgf0zq','zos4REEAHoAOOEADVW','Dw50pxa','5PYF77YAmZdLIiy','ndm5ota1uKzXs2Pz','5lIl6kEe6iYd5OMN6kgm','AwXSioIUSa','A1Pty1y','B3vUDa','5A+F6i635y+w5OIq5yQF','Fdv8mti','6l+u5zUE5y6F5AEl5PwW','5lYG5PE26zE05y+c5PwW','Df9ZA2K','5PIo77YA5Qoa5Rwl5yIW','D1jSEgS','B3bTzw4','u3LIrg0','rhHvuvy','mta0odi1mJHbDMXhzfq','zwe4mdC','A0vLD2O','mZiWzdm','Axb0','yZaZnZy','4O+ZioIVT+wCQowWJW','5zcRif9MBa','BNrOkos4IG','44cq5B+f5AgR44cr5Rwb','z2vUDoEXUW','nte4nJu','ywnR','5P+L6k+I57Ut5P6C5QIH','ChjPB3i','BNnL44cbBq','C0XYsuG','77Ym5AAc77YAyw4','5Qc85OYj54wNifm','BvbYB20','5PIV5zcM5yYf5zcR5RAi','vfbfDuK','5PAW5O6i5P2d','y2vPChq','8j+BJE+4JW','5PwW77YABMfT','EefJEgW','s3fksge','v1rpr0W','mMfKyJa','B3j577Yi5yIg','Bwf0zt0','EgPUz0m','FdeWFde','AwXSiowUMG','y29UzMK','57g744cb5A625Bgf5RIf','77YAkIO','Aw5ZDhi','5BEY6l+h5PYF77Ym55sF','C1jTvwm','5lIL5Qc85OYj54wN5lIk','Dgf0zq','AKzvAuu','owzMoty','5ywL6lsM6Ag65yIP77Yb','whjsCg8','uwfNvhe','BLzAqKu','5Bcp56wO5PEL5PYF','6k+b56cb77YAkIO','zgvLyZi','77Ym6lAf6l+h6yoO5yIg','qvvusdO','kEoaGxn0BW','Fdf8mNW','vxPKA1q','BgLKyxq','nJzLote','5lMj44cccGROR7C','nguYnge','CMvZzxq','77YiDgHPCW','icdOR7FLNkGI','6AkD5B+f6Ag75PIV5Q2J','C2uTDgu','Bw9UDgG','svvtshK','A0XXuwS','q1nMuMS','5A+85yE65Qc85BYp77YA','5Qoa5Rwl5yIW5lIA5yQH','5zwg77Ym5AAc77YAyq','BenYB08','y29TCg8','y2HHCKm','D2LUzg8','C2v0rw4','Dw505lMl5zkm','zgf0zv8','55sO5AsN5QIH5z6l6l+B','yxrHlNm','yw50Axq','BefTB3u','5zUE5Qc85BYp5yYw5RAi','mJuYnJiWAxDJq2nt','t0rIqu8','cVcFK4SGu2S','wwDbtgC','AxnbDxq','AxnJB3u','562j5B6f55sF5OIq6AQm','5PYS5BEL5yw35y+Q6l+u','vg5vBxO','5PYikEoaGwXH','AKP4ug0','DhmG5y+V5lIn','5BIc5zY65y2v5lU377Yi','Dw50ptm','6yca5QY+44cb55cg6lsI','u3rVCMe','zNrOr0q','ueLHsLK','EvjmDve','C2vFChi','sunTv0i','55Qe5QIH5P2/6iEQ6kgm','odbLzgq','y29UBMu','5A2y55QeifrV','n2eZnJq','562j77Yj5PE255sO5Q2K','mdDMoty','ogfLnwm','6lsM5yIg57g777Yina','CMfL','yZCZnMq','lMnOywK','CMvMzxi','Bg9N','yZiYogi','AgLUDa','6AkDicG','D29YA2i','5lIT55Qe5QIH5P2/6iEQ','w+EjIoACRoAJGoA1IW','y3DzChi','6k+35zYOiUAFToEXSW','Bg9Hzeq','q2j6Efe','Be9lq0O','5OI35O6i5P2d5lITlG','vg9VBca','6lAl5yQ/562j44cc5PAW','5Qch5yEg5OIq5yQF5QIH','5Q2K5BEL5yw355U05O6L','5Ash5O6i5P2d77Ym6k+3','Fdr8mhW','v1Llr3m','B3aGjIy','B3vUDd0','zwfLyZi','qwPLtgW','ifrVA2u','koACRowrQcNJGie','v0rXsgC','uwHiC0C','yw1L','whnMCNq','Aw50','D2vLAYG','tgfLswu','uM5NrNq','5PYQ55+L5zwg5zob','qMnWwMK','5OoG5zco77Yj','lM1Kios4Rq','As11CMW','AwXSioIVUW','svvcBKS','5O+p6l+W6k+355sOCW','mY4G5lIL5Qc8','6lsLcGRPLjNOR68','CerUueu','uK9YsMe','yK1frwS','swPbsKG','zxrFC2S','z2v0rNu','6kEJ5P6q5QIH5P2/44cc','zM9Yrwe','mte0m2HUwxvTAq','zv9JB20','5y2v5l2n77Yi5y+V6ycj','mdLKzMy','AvP0r0e','C2f2zuq','uMTKy0W','zKXOwwm','C2XWtg8','5zwg5A625zcn56EW77Yi','BgfKseC','BwnWx3q','5lUL5y+k5RAi6ls55QIH','EMTZBLm','ChjVzhu','5lUu57Ug6zIf6k+75BM2','6k6W6lsM6kEJ5P6q55Qe','yJi5owm','5PYQ55+L5BEL5yw3oG','yweZodG','5yMn5PE26zE0','ruHbueK','yNrRufO','6Akr5zwg5A6244cb5RAi','sezqAKC','vMz5DLK','BwHPt00','zhzztuW','kE+8JowMGUMbH+MxRG','tffkqwC','y2vZl3i','6kgO5lIn6io95lI656M6','B3jRyNu','DfHHEha','ELH3ru4','zwDVCNK','zsi6iUIlUq','cUkuGEkuGEkuGEkuGq','u2zhzva','6k6W6lsMlNnH','lwTLEs0','qM1zrha','5O6i5P2d54Q25Ocb5AsX','yte5y2u','l3nLCNy','zxHLy3u','5B+f5AgR77Ym5PYa5AsA','s1fbA3m','uwnTy0q','4P2mioAuTUwfPEIUSa','suDUALK','6lsL77YA6yEr6AkD5QcH','v1rJtKu','BwvDioACQG','BePntuS','56Il5yET6k+b77Ym5lUo','5Qc85BYp5yYw5RAi5OgV','5BM05PYi77Yi5AAc77YA','ioAbREwwNo+8GEAcQa','EuLgEMS','ANzAywm','DMPbzNG','5lQg5OMa5PYj5l+H5OgV','r0HRqvq','rM1HAxq','5lIT55QemI4Z','B21WDa','zgLNzxm','zgvHoge','kE+8JoM7MoIUPg8','rLjSt2O','55QeiUIWG+EuQowjJq','6ls55PE26zE057Ue5lU2','DhHnEva','6io95BU66k6U5OIw5y+r','BwvDioAxTG','wuD0Evm','ygbGANm','zxj0Eq','y2XHD+oaGq','6kAb5O+q56s677YAcG','DgLnBvK','thfZweS','CNHMvhO','BgzZEgS','q1D6yNa','verMtey','5O+q5lQK5OIq5yQF5zco','AxnxywK','5lUy44cb5PsV5lUy5A6D','5y+Q6l+u5zUE5y6F5AEl','5OYj5P2L5RQq562B6ycj','5P2H77Ym5PYa5AsNnq','A2HKwuK','cGOJiYa','z2PWzwS','m2fMmtC','C2TPCa','nJbImdy','6l+B5BQM44cc5RoO5Osp','5P2d5A6m5OIq5zco77Ym','5OIq5zco5BEY6iEQ5yQO','5yYw5BU66k6UkEoaGq','zguXnwm','vLfWC0W','AxrLBxm','rMnpyuu','rvvjB1C','ywrKuMu','zgvgBge','5PIo77YA57o757UF5l2/','sLrlu0q','vgXLsKi','yMzyANi','AwnLlca','B21L','ntqZzdm','AgfZt3C','teWUBwq','mdqWzJu','A3bot0i','nMrInwe','Ag9K','CNnMt2u','zJfJmtG','EwvHCK0','u1fKy3O','yte1mdi','BhrOkowbPq','zwu3nte','Fdb8nxW','Cg1wrwi','nxWWFdm','quDoAMW','yZKXotG','ksa9ia','6k+356In5zco6yEn6k+v','t0jjzKy','DMvYC2K','ltaX','zdC2ogu','ios9Nos4UIbZ','n2e1ndO','zxHWzw4','iow3PEwfT+IoT+wpLG','5PIo77YA5PYQ5OYh5A6A','5BEL5yw344cc5yMn572U','iJO1lJu','6k+b56cb77YbcGO','zgfKzhi','zE+8IowvHUwtGEwqJq','4O+Wios/NEwTMoEAHa','CgXHDgy','5O2UDw5PDa','mJCXywy','44cq5O6O6i2q44cr5RAi','CMvHza','iIdIHPiG','mdbLzdK','5PYj5zYOiefN','zgvZy3i','DhLWzxm','Dwn0q2e','q29UDMu','ugfmuxO','6k6KDhj1zq','Cwjuq0G','DufZwvy','77Yiyw1VDq','yNvNkoMxRG','kE+8Jos9V+EuQow9KW','5O2U5A6E6zMf5BM05PYi','y3vYCMu','77YA5B+f6Ag75ywi6lcd','svnp5Qc85BYp','ms4G6k+35Qoa','Dg9T5PE25B+f','BgLKvg8','zgLZy28','C291CMm','y2jKyZm','BNqGpsa','yuzdy1a','rxHzvfy','BMnLCY8','DwviAMi','Df9SAxm','5AAc5l2v5P+L55Yl5BEL','yw1VDw4','44cq5O6O6i2q6iEQ5yQO','qwnmDgy','5y+V5l2/55sO5Q2K5BEL','zhNJGif0CG','6yEr6AkD5B+f6Ag75PIV','8j+uKsdKVB/NLkJLT7i','uvrLwfO','s1LoAw0','mZC0mZqZm3vJDMrksa','562j5AsA57U05BQM562B','EwzSB3C','icaZlIa','DoEXU+wEI++8JowMGG','z2f0BNe','m2eYmJi','C2v0uMu','ztbHmMe','nMrMzdK','ltmW77Yj','z29YEqO','sLPoChm','ue9tva','5lIL5Qc85OYj54wN5lUL','AhDVqNe','54MP44cb6Asq6AwU77Yj','56wO6k6W5B2v77Ym6BUy','57g757UF6k6HkEoaGq','zwzLCMu','vujUrNe','6ls55PE26zE077Yi5Q+R','yxrL','5AgR5ywf44crqwC','5A6m5Pw0ifnR','77Yi5y+V6ycj77Yj77Ym','BKDMqwW','zxjYB3i','zwLWDa','5O6i5P2d77Ym54s25zco','rxHTCg4','ndG2mJm','B2TLBIa','5O2U77Ym5lIn6l+u5zUE','566x77Ym6zU2quK','ognMndy','EeLuBM8','5lUk5AsP5lIT5y2i','6kEJ5P6q5PE25B+f6Ag7','kos8MowmLUw7UUIURG','CMvWBge','CMvJzwK','AwXPDgK','BMrrBNu','5y6fl+InR+w6L+ETIq','ze9rrMO','6k+355sOC2f2','44cb6ikj57g744cb5Rc0','77YA5zwg5zob5PwW5O2U','rxjYB3i','5A2x5Q6177YA','zgeZntO','Efbmqxa','B3nwzxi','Ee9XBge','koI2I+wkVYNJGie','6i635y+w5RAi6ls557UF','m+s4QUAGH+whHUwiHG','5P+L6k+I5RAi6ls56k6W','yw92AgS','wLHJAxO','DKXwqK4','6i635y+w5Bcp56wO5yIx','ANbPyuq','77YACgfYCW','ywnJzxm','svHeuLm','CgPKBuC','r0Dmvuy','DhrLDgy','5Ash5RoO77Yi5y+V6ycj','yw1Llca','zvvVu1K','CNnLx3a','CM5Z','77YA5ywdlZuW','5Bcg6kkR5OUs57UD','mdi1mZG','m3W2Fdi','mJPKmZK','t0f1DgG','rxDIAvu','qwDLBNq','sfPOuvy','4P2mioIUSoI0PUwKSq','Axr5lca','5PwW57Ut5P6e','C3rHy2S','5zwg5zob55Qeige','BMv3BhK','nwmYyJa','nJi2odG0CujuBMfd','B2nHDgK','v0PYwvK','5Bcp56wO5zU+54Mh5l2C','Bc9ZzgS','y2HHAw0','n2yWyJy','yNbqrxe','EhrFAw4','DoAOOEADV+wsJoA1Gq','A3zQs0C','x25VDgu','m2y4ntq','4PQG77IpiooaKoAZQoAeJW','ztLInwe','rLLvuLC','yxrLx2e','rfjhvuy','DwfUDgK','wvLmzMK','ywHzz1q','6k6W5B2vsutJGie','5PIV5PwW57Ue','A3rKtKu','6lsLoIa','tw5Xtfi','EuLqwMq','6zsz6k+V77YA5B+f6Ag7','6Aky5OQL5zgkkEoaGq','zMm2nJq','vw5SB2m','su9utKi','44cr6i635y+w5PAh5A2x','5Rov77YABwnW','wg9gyNO','rgflCha','tMvou0K','5l+D5lYG6ycs5lUL5lIl','77Ym6zYa6kAb6yEn5PAW','yxr1CMu','DMfSAwq','5OI36l6t5ywL5lIT5O+q','y2i2yZu','zxmVCMu','yZu4zti','wurcugi','Dhj5Axi','AxPHDgK','swLIq2G','5BEY5A6m5OIq5O6i5P2d','5Q615Qc45A+55RIf5y2v','5lIl5A2x5Q6177YABG','Bwf4qw0','B3jKzxi','ELDHtxi','Bw9YBMK','EKfXB1G','vLfwrxa','zMy2otG','D0XcEfu','zw5pBMm','44cq5B+f5AgR44cr5zwg','q0HHB0W','v0L3Ahm','zgDhvMm','5zcd5Aw95zAD5Aw977Yb','id0G','Dow/HEMHU+s9V+EuQa','yxjZzv8','qxv0Afm','iowqJUwgJEIVLq','8j+uKcdPPPBMRkhKVB8','senPruC','n3WX','sLnptIa','BxvbvLu','AwvJwei','zcdLJ4lMLBdVViW','56wO5PEL5PYF5PIV5zcM','Ce5iuhG','lI7VViGZ5yIg','tMjpwKm','y29UDge','5PsV5lUy5PA55BYp77Ym','5ywdiUoaGUAZQoAeJW','BMfTzEoaGq','tUwTL+ESPUs4SU+8Iq','5zwg5zob6yEr6AkD5Oc7','t2vMB3i','5AsX77Ym5BcD6k+v5lUo','A05Juum','wMPhsMm','5lMj5PAh5QgJ77Yi6k+3','Bxb0','zxHPC3q','AenYA0m','BhmVy28','zfndEKu','mJbMmJa','zw4G5BEY5l+D','AwTqvLu','CMLVzoAiLG','n2mXmJu','uwfPze0','zxHWAxi','Aw5Mt24','zwHKC2C','57UT5l2/55sO6k6W6lsM','Dw9XEwG','5P+L5PIV5zcM5lUoia','z3ruweC','Aw1WCM8','v1PzBvm','ioEcUEwhU+EHRUIUPa','ygDLDf8','teDPvhC','EvjsEue','6AkD77Ym5B+f6Ag7562j','t1nQuMS','5ywdlZuWma','Ew5J','wvfnBfG','CY5Tzos4Rq','vfzVyue','uKnIzMS','zvnTtKe','q1fuDxm','DezMqLy','55QeiUs4G+oaGEwBNG','5yI277Ym6BUy6k6Kmq','DhnPB1a','BgXct2u','BIdLT7lOV4FMNj8','y2f0zwC','tunqioIWGW','q1LgCeq','5lMW5B6x5BYa5B+d77Yb','nZeXowu','546W5BYc5BI45PE277Ym','5PIV5PwW57Ue5OIwia','44cq5lIn6lcd55sOmq','CMuO5yQF6io9','vgvTCgW','sK1kr1y','C2TsCeC','mU+4J+kdOYdNGRNLH7SI','56gU5l+D5lYG6ycs5lUL','BwqG5lIT55Qe','BgWG5PAh5QgJ','5ywi6lcd55sOiga','77Yi5AAc77YA6jsS6i+C','y0v4wg4','ugzHrKm','zxnbDa','ltaX77Yj','5Q2K5BEL5yw344cc5yMn','5zU+54Mh6kEJ5P6q55Qe','4O+ZioETIEw+HEEuQa','BNnLlxq','5PYF5lI6ia','BwnWB3i','77Ym5AAc77YAy2W','A2vK','44cbC2vJBW','BerUD1K','nJqXmtu','CM1mz2C','x3DLzwS','5PE26zE077Ym5l2/55sO','CMfUzg8','zdrMmdC','BgWOksa','CM4O5QIH5BYp','B29HyKi','DhjLBMq','CxvirMS','5OYj5zwg5A625zcn56EW','z29YEsa','yxrPC3q','CIbJywW','mZa6y2y','zd1JDxm','vhbowvy','yZeWywi','DMvFAw4','u3vIq2e','Bujov2u','se1Pv0O','Dgf0Axm','4PYfioAoIoADG+AiKa','BwvZC2e','zt0Iu08','tLfUCNG','z0DXCgW','CKnWEwi','DgL0Bgu','B3vY44cbBq','zgy1m2u','5BQ3kEoaGw9W','AKfxzhC','z0LyC1K','BfLcqMS','zt0I5y2i6Asq','y2fWywi','zwvMyJq','vNPwqvG','yJLMywe','DgvtDhi','A2LSBca','DhLVsLy','5PYQ55+L5Ps25ywL','57UF6k6H57Ut5P6C5QIH','A2vUiowKSq','ChjVCgu','kZa4oJa','v0zozLu','ENzlvw8','r1z0uui','DgvNB3i','q2Xtsgi','seDoEMK','5z6l77Ym5AAc77YAyW','y3bVCNq','uLHADgO','Dg9KyxK','B2rLqxq','44cc5PsV5OYb5A+85yE6','6kEe6iYd77Ym5Q+p5QYH','ExbL','ndy3yZq','5PYn5yQH5O+q5l6B5zwg','77Yi5B+f5AgR77Yj5BQu','nwrInwy','mJjMzdm','tKHzrNy','6zE05O+p6l+W6kEJ5P6q','Bwf0zq','5P2d5AsX6lsLoG','44cbywn0Dq','z2v0x3a','Aw5ZAwC','5yAn6lcd55sOz2u','nta5nwe','6Ag76lcd55sO44cr6i63','igzYzxm','DcWGChi','zLvnDfC','w1r5Cgu','zw1YsK4','Bg9Ntwm','mgnHyZG','4P2mioMhJEAwSoINOW','s1fABfu','ntjHyMu','AKvVsNa','Bw91BNq','yxrLCY4','ndCWzJC','mtu5mtu','cUwvHUwtGEMhKEMINq','CMrHEv8','5O6O6i2q5l2/55sO77Yj','A2LSBaO','rw9oCLy','zJa1ytG','idqWmE+8Ja','nhW3Fde','suLRDwG','BwKTA2u','Curdz0W','rMnivwi','wuXOq2i','6yEn6k+vlI4U','zgv4lMO','5PIV5zcM5yYf5zcR5Bcp','s0Lmtc4','t3fLwMK','6Aky5OIw5BU66k6U77Yi','C2LMEq','qMXbrhK','zsbFzMW','ywH0s3e','CMLJzsW','l3jLC3a','5B2t5yMn5PE26zE05OIZ','5yQF77Yb5y+V5lUL57UN','AxnFBw8','C1n5BMm','A2LSBoIoTW','seHxDNy','ywn0Aw8','lIdLJ4lOGimG','zvHOCLu','zMvYzw4','5yIP5BQxl+s4REMKKa','zLviC28','77YAcUkaOIdMJOG','B3juB2S','6l+u5zUE5PwW6yEp6zMq','5zcR5A6m5Pw055QenG','ENrbshO','5BYp77YA5PYS5BEL5yw3','5lU35PwW5yc877Ym5Qc5','DgLTzv8','svfwCM0','5PwW57Ue5A2x56YM5lIY','cGOTls0','5BYp44cb5ygL5BQ344cb','rK96s0m','ngqZyZi','5Qoa5P+Lie1d','ugr1wxC','B3j5','qu90Axi','odiYzda','ihbYB2q','mJPIzwi','Bgf1zgu','AfjouKK','sgzwvfa','5lQo5P+L6k+I5Ase55cg','D2fPDfm','CMvZCg8','BNbVuhm','zw50l00','yvHvwuG','4PQG77IpicdLIQdOVB0','C3rKB3u','zJbIyZq','DhLWzq','mta5mgy','77Yj77Yi5B+f5AgR77Yj','C1DPDgG','5yYf5OUS77YAyNu','yxn0x3C','5yAn6k+75y+wCMu','lxjLywq','zgvZ','5yQF77Ybvg9R','ksaTios8Ma','4Psb4PsbcGRIMQdVUi8','Bwf0zEwaVa','uLnizMe','icaYlIa','Cw9ivuy','yZDKy2m','5P2dcGRIJ7mG','uNjKqMC','rw1bzLu','wwrSvxy','mowfGYi','cJhVUi/IG6mG5OMt5BYa','yw5LCxi','5BYc5BI4oG','4P2mios/NEwTMowKSq','yw1L77Yi5zwg','D2vLAW','5lMj5OMN6kgm6k6W6lsM','ywrKrMu','nwjHn2u','5PAW5OkO55Qe5P+057gZ','cGRJGjdPH43OPOe','B2f1DgG','55sOz2v0xW','nte5otm','zw5057g75z6l','odq1yZy','nJrIyJK','BMvUDhm','zgLYBMe','Aw5JBhu','z2v0rge','EK9szgW','wKTur24','odzKmW','Afv2uMS','5Bcp56wO57Yw5y+3','44cr5A6m5Pw055Qeia','CM9TChq','ywz0zxi','suv4u00','AKzos1y','BwLU','l+wpKEELQc/MLly','5BU66k6U5OIw6zEU6Aky','odu3n2u','rejez0C','Cfbxv3K','Aw9UlMO','mdpVViNVViZKUi4','44cc5Q+p5lIQ5zwg5zob','5OIr55QeiIdIHPi','4O+WioAxTUMxToIVTa','Bg9Hza','6zsz6k+V5OIQ5zU+5O+p','y29NtNe','zwi0mtC','C2f2zue','ios4QUwvHUwtGE+8Iq','BwnWuhi','Dgrov00','5Asn6kEe6iYdiU+8Ja','6k6H566x77Ym5AAcDq','z2v0sw4','u2nOzw0','s0Hkv3m','5ywL5yAf5A6577Ym55sO','CMf3sw4','u0nnCK4','CxD6rMC','cGRMTOJOTlNMTj4','5OYj5lUL5lIl5Q2L6AQK','BvLRwLy','C3vIC3q','5lIT55Qe5Bcp56wO5A2x','zM1cyNO','5lIk5PYikE+8Jos4JG','ywXSB3C','5lIT55QemI4X','x3rYywm','s094sxC','zxHWB3i','yxn0x20','Bwf0zEwTLW','DxnLCLa','44cbCMvJzq','DMrptMS','qg1Vzgu','DuniqMG','tefQshy','sgrpBfe','z2v0x3m','zxiVAw4','DuHNAfm','4PYfifnRAq','ugXXDMW','77Ymy2f0zq','CenHBgW','56wO5Rgh5Oc7kEoaGq','quNORRdOTkyI','44cbDgHPCW','5y+w5P+057gZquK','5zYOihjLCW','ytKXzJC','DgxKUOZPGiNKUia','nJK4ogi','6Aky6k+35OMN6kgm77YA','DgLVBIa','z2T5vfe','5P+L5PIV5zcM5lUo55sO','DgvTCgW','44ccqwDLBG','BoIoT+wpLUINHoImGW','5PIV6k6W6lsM5yIg57g7','Axr544cc56s6','DgvZlM0','AwXLu3K','q2DJugK','B3jPz2K','6l+B6kgm5REX5BQM5yIg','zJrIotK','Ag5LC3m','77Yj77YAcG','nwrKmwu','CgXHDgu','77Yj77Yi5y+V6ycj77Yj','ywy2mJu','l3r5Cgu','mJPHmdu','mZq1otu','ufLtDuC','sfbbEu0','D0PlAgG','Dgv4Da','AxL1BG','u056vei','BNrOCM8','5PEL5PE25yIg56Es6k6H','mZK0mZa','ChjVBxa','C3rVCMu','Afn0yxq','uerArfe','yvL2CeK','txnIv0S','77Yi6lsT54MPl+E+JG','owrMnZi','Df9HC2m','y29Tzq','v2XID3q','EwvHCIG','5BYp5yIg5P6q77Yi6AUy','mJq2nZG','EwDZqvG','6k+36yEn5PAW5y+r6ycb','BNrnzxq','8j+sOsdMO4dMTyVLIla','5ywL5P2L5RQq77Yj44cb','D3jPDgu','r3zkCuu','AeDKuge','5yE677Yi5Q2J5BI4546W','mtuW5lIQ5A2x','thz2Euu','DfvUDMe','6k+75y+wCMvM','Eu1HBMe','yKnHDgu','z2uUANm','mNWWFdu','6l2S6lsM44cb6yca5QY+','5BIciIb0BW','6iE06zsz6k+V44cc','qM5JveG','zMfnuhi','lI4U','D0LUChu','lwrLC2S','AgjRy2W','ywXLu3q','A2X6CNi','B250AcG','t0PTAK0','zty3ztG','icdPQOZOR4hNOie','ywXS','zw5JoNy','tK95yMi','tcdPHy3NVA4','5l+D5A2y55Qe6AQm6k+b','mwmYnZq','ztmXyMq','5P2H77Yj77YAcG','6yEn5PAW6kEJ5P6q77YA','ndDIzte','Dg90ywW','5RoO5Osp77YA5PAh5A2x','cVcFN6eG5lIT5lYy','nwjLmdK','whfXtKW','rK1LB0q','56In562j5yEG56Es5zco','5OYj54M55A6A5zwg5A62','iLnpteK','5zcM5A6m5Pw0','Cvv3sw0','zxiVC3q','BwvTyMu','4P2mie1dua','EufRAhe','6k6W6lsM5Pon5l2C77Yb','AvztugS','zuv4CgK','tMfTzq','mdvJyZa','sejPELG','oda5yJC','CgvUy2W','CM9hy0C','Dg9mB2m','BgfZDf8','ig1JCg8','BgfZDc0','5PwW5O2U5BQp5yIx5yYw','zs9Zyxy','qwTNBhK','8j+sOsdLHBhMIB7LIla','6kEM5y+r6yEn5PAW5O6i','Df9TB24','5AAc5P6C5lIn6lcd55sO','6k6W5B2vifnR','6z+Z6k6W6lsM5B+f6Ag7','BNnPz2G','BKfkvMu','6i635y+w6k+M57Ug5l2/','sxLcD2q','Cg9Uzw4','t091BKm','q2f0zwC','DcdNMOtOP6pMNPa','ote1owi','zxH0x3a','mZKZmwm','5PIo77YA6k6W5B2v5PEL','77Ym5l2/55sO5B2t5yMn','nJGYzgy','txDcC04','C3zjDKK','56Il5yET6k+b44cc4PQG77Ip','De9Juhm','x2v4Cgu','y2fHogq','y2xJGifXDq','57Yw5y+377Ym5y+V55sO','icdMN7tNSBnb','q29Kzq','DxfNuMO','rhj5y0C','CgfKu3q','Agv4','DgHPC18','ChbNqvm','zw51Bq','uvLeru8','Fdf8nhW','5PwW5O2U44cc5PAW5yQF','DooaGxbYAq','q01Uwxu','y2q3mJC','qvvmEwu','sEAiKoACRo+8GE+8Iq','rwfNDLq','ztDJztC','5O+q5lQK5y+n6AAi44cb','5A6A5lMj5OMN6kgm44cc','C3LZDgu','ywXZEvK','77Yj77Ym5lIoCgu','5P+057gZquNLIQK','6kEe6iYdiU+8JowgJq','zwrIywm','AhjVCgK','zxH0Chi','rwv0sgy','BuDVDKi','5ywdcUwUNUMzHEwUNG','z2v0x3i','Chv0','u096vu4','57Mb77YmmZaG','6lcd55sOz2v0','C3vJy2u','iowpGUIaGYbt','77Yi5AAc77YA6Asq6AwU','yLPmr2e','A2LSBa','zNzezuS','icjbz2u','Axr5','6lcd55sO6i635y+w5PAW','y2uIoJu','iowmHEwqQ+wUJoAvTa','mgnHza','D0Lzs28','zgvZyW','y3zetuy','z2v0rxG','6AQm6k+b56cb77Ym5y+Q','5Ps25ywL5PEL5PYF','BwfW','57g777Yj44cbCMe','AfzPCvi','AwXSioAwHW','zM9YBwe','yxrLz28','y3vZDg8','57Y65Bcr5B+f5AgR5y+c','44cq5B+f5AgR44cr5PsV','y29KAw4','A2vU','iUwfRs41ia','cGRNJRdLNkJLJ68','57g75lMl5lIa77Ym5AAc','su5RwMm','zgf0zq','6kgm5RIY5P+t5zUE5Asn','kos8MowmLINVViW','77Yi6yEr6AkD77Yj44cb','ytqXyZC','5ywZ6zsU6k+n77Yi5BEL','BuLSEhK','5PYS5PYikEoaGwW','EfvesuW','B3j5tMe','Cc1Ty3a','Ag9Tzwq','DgLTzxm','y21RyMu','odi1mda','B21WDoIoTW','kEE8UUwWKEwTL+AUTq','5Pwi5PYFnEwiHUMsNW','CY5QCW','6iEQ6kgm5RIY5P+t5zUE','DhjHy2u','zw5Krge','zw1LBNq','zg91yMe','ioASOE+8JoIVTYa','Dxfdu2y','ze92y08','5B2t5yMn54Mi5PYS55Qe','EvDssuC','zgm1mgi','ioAyR+wqPUATO+EHRG','zwzmCvu','5l6BiefNzq','xsdMO4dMTyVLPle','Cg9YDgu','qvbcDeu','zMi6n2i','5AgR5ywf44crquK','qxDurwC','kEoaGwHLyq','A3nezKy','A2v5CW','ytGZnJG','B+oaGwfSAq','AhbwwvK','BfDuvuy','5OoG5yMn77Yj','DxrPBa','C2f2zq','ywzHzJi','6iYd77Ym6yg/5ywn5yET','AeDNA04','5BU66k6UkEoaGwK','Axn0ioAFTa','z3DpyvO','yZK1n2m','5O6i5P2dcGRIMQdVUi8','5zob5lIa57QN5yIg57g7','44cb6AoF5zob44cb5lQK','B3nuExa','vfDlrwy','4Psb4Psb4Psb4Psb4Psb','Bfj3s1K','sgreyuK','6lcd55sO5l2G55Qe5AsN','y2uWnte','CMLUzW','DvLfu3m','ufDUru8','vLvrA3a','ihf1yw4','5ywdcUs8MoAdOo+8MG','qvbbwxO','Bu9HwKO','y1rJs2e','DgLTAxO','sxfJyKi','rxvxuLu','CgfYC2u','r3Pkv1C','B3b0Aw0','zJKXmJu','Bgf0zvy','5zob5yIx6kgO77Ym5PsV','uMvJzwK','q3vitgG','nJGYn2m','ioMhJEIMGEIVToAyJG','5PEL5PYF6iYd5zU044cb','zdy5nZq','vhLWzq','D3LTrwy','shfky1m','DoIoT+wpLUEAHg0','uvPPyxG','44cq5B+f5AgR44cr5BQx','57UF6k6H5zgO5PYF77YA','CurHvxy','rhv4qxO','iokgKIa','5Q6177YAAxrL','57Ut5P6C5lIT5O+q5y+w','ztDMmdq'];_0x2503=function(){return _0x20b795;};return _0x2503();}const _0x47c06a={};_0x47c06a[_0x2dbe2(0x722)+_0x2dbe2(0x626)+'es']=_0x1bc78b;const server=new Server(_0x13f8ac,_0x47c06a);server['setRe'+'quest'+_0x2dbe2(0xa17)+'er'](ListToolsRequestSchema,async()=>{const _0x1b0175=_0x2dbe2,_0x448061={};_0x448061[_0x1b0175(0x1fe)]='get_s'+_0x1b0175(0x8d2),_0x448061[_0x1b0175(0x3e3)]=_0x1b0175(0x18e)+_0x1b0175(0x74a)+_0x1b0175(0x810)+'记账最新\x20'+'Skill'+_0x1b0175(0x994)+'次记账前必'+_0x1b0175(0x2ec)+'工具,获取'+_0x1b0175(0x90a)+_0x1b0175(0x614)+_0x1b0175(0x8e3)+'档,然后严'+_0x1b0175(0x49e)+_0x1b0175(0x727)+_0x1b0175(0x8bd)+_0x1b0175(0x890)+_0x1b0175(0x513)+_0x1b0175(0x176)+_0x1b0175(0x648),_0x448061[_0x1b0175(0x3ed)]=_0x1b0175(0x249)+'t',_0x448061['gVsFA']=_0x1b0175(0x773)+_0x1b0175(0x220)+_0x1b0175(0x74b)+_0x1b0175(0x824),_0x448061[_0x1b0175(0x4f1)]=_0x1b0175(0xf1)+'expen'+'se',_0x448061['gGqpl']=_0x1b0175(0x20c)+'g',_0x448061['hQxnV']=_0x1b0175(0x283)+'r',_0x448061['IjjOv']=_0x1b0175(0x9e2)+')',_0x448061[_0x1b0175(0x22d)]=_0x1b0175(0x4ed)+'可选)',_0x448061[_0x1b0175(0xa1)]=_0x1b0175(0x540)+'可选)',_0x448061['WZYmS']=_0x1b0175(0x159)+_0x1b0175(0x275)+_0x1b0175(0x4d4)+_0x1b0175(0x833)+'pic、o'+'penai'+_0x1b0175(0x93)+_0x1b0175(0x26f)+_0x1b0175(0x831),_0x448061[_0x1b0175(0x7fb)]=_0x1b0175(0x7ee)+_0x1b0175(0x8ca),_0x448061[_0x1b0175(0x264)]=_0x1b0175(0x9b8)+_0x1b0175(0x743),_0x448061[_0x1b0175(0x2af)]=_0x1b0175(0xf1)+'recei'+'pt',_0x448061[_0x1b0175(0x1bd)]='【图片记账'+_0x1b0175(0x211)+'户上传小票'+_0x1b0175(0x7d6)+_0x1b0175(0x144)+_0x1b0175(0x6f2)+_0x1b0175(0x369)+_0x1b0175(0x8cd)+_0x1b0175(0x406)+_0x1b0175(0x81b)+_0x1b0175(0x22a)+_0x1b0175(0x979)+'rse_p'+'rompt'+'获取凭证和'+'解析模板。'+'用法:mc'+'porte'+_0x1b0175(0x70a)+_0x1b0175(0x258)+_0x1b0175(0x989)+_0x1b0175(0x9cd)+'eceip'+_0x1b0175(0x3ad)+_0x1b0175(0x450)+_0x1b0175(0x716)+_0x1b0175(0x96a)+_0x1b0175(0x150)+_0x1b0175(0x978)+_0x1b0175(0x10e)+_0x1b0175(0x856)+_0x1b0175(0x102)+_0x1b0175(0x518)+_0x1b0175(0x272)+'\x20item'+_0x1b0175(0x333)+_0x1b0175(0x254)+_0x1b0175(0x86f)+_0x1b0175(0x52c)+'ave_e'+_0x1b0175(0x10d)+_0x1b0175(0x88b)+_0x1b0175(0x304)+_0x1b0175(0x5aa),_0x448061[_0x1b0175(0xa1d)]=_0x1b0175(0x540)+_0x1b0175(0x22f),_0x448061['FpyxP']=_0x1b0175(0x5d2)+_0x1b0175(0x57f)+'。包含:y'+_0x1b0175(0x106)+_0x1b0175(0x23e)+'day、h'+_0x1b0175(0x71b)+_0x1b0175(0x33e)+_0x1b0175(0x6fa)+_0x1b0175(0x377)+'端会自动转'+_0x1b0175(0x426),_0x448061['uAhcK']=_0x1b0175(0x73e)+'付金额(优'+_0x1b0175(0x91d),_0x448061[_0x1b0175(0x90e)]=_0x1b0175(0x232)+'惠金额',_0x448061[_0x1b0175(0x762)]='(必填)实'+'付金额(优'+_0x1b0175(0x527),_0x448061[_0x1b0175(0x54c)]=_0x1b0175(0x94e)+'铺一级分类'+_0x1b0175(0x83c)+_0x1b0175(0xa2e)+_0x1b0175(0x396),_0x448061[_0x1b0175(0x32c)]='【必填】店'+_0x1b0175(0x9f5)+_0x1b0175(0x439)+_0x1b0175(0x77d)+_0x1b0175(0x628)+')',_0x448061[_0x1b0175(0x2b6)]=_0x1b0175(0x6aa)+'如:微信支'+_0x1b0175(0x590),_0x448061[_0x1b0175(0x82f)]=_0x1b0175(0x9c1),_0x448061[_0x1b0175(0x912)]=_0x1b0175(0x3a3)+'称(含规格'+')',_0x448061[_0x1b0175(0x1e7)]=_0x1b0175(0x342)+'价',_0x448061['XkbYG']=_0x1b0175(0xb0)+'量',_0x448061[_0x1b0175(0x29c)]=_0x1b0175(0x38b)+_0x1b0175(0x420)+_0x1b0175(0x647)+_0x1b0175(0x29b)+_0x1b0175(0x44e)+'、元/袋)',_0x448061[_0x1b0175(0x53b)]='【必填】金'+_0x1b0175(0x6cc)+'于\x20pri'+_0x1b0175(0x98a)+_0x1b0175(0x1ad)+'ity',_0x448061[_0x1b0175(0x637)]=_0x1b0175(0x694)+_0x1b0175(0x928)+_0x1b0175(0x6ed)+_0x1b0175(0x62b)+_0x1b0175(0x3af)+'品)',_0x448061[_0x1b0175(0x6b8)]='商品二级分'+_0x1b0175(0x126)+_0x1b0175(0x455)+_0x1b0175(0x4b0)+'洁)',_0x448061['tOcPs']=_0x1b0175(0xea)+_0x1b0175(0x4fe)+'3个标准分'+_0x1b0175(0x8ed)+':蔬菜、购'+_0x1b0175(0x60c),_0x448061[_0x1b0175(0xff)]=_0x1b0175(0x3a1),_0x448061[_0x1b0175(0x925)]=_0x1b0175(0x5f3)+'t',_0x448061[_0x1b0175(0x34e)]=_0x1b0175(0x11a),_0x448061[_0x1b0175(0x1ce)]='unit',_0x448061[_0x1b0175(0x937)]=_0x1b0175(0xa47)+_0x1b0175(0x244)+'e',_0x448061[_0x1b0175(0x8f5)]=_0x1b0175(0x545)+_0x1b0175(0x324)+_0x1b0175(0x55a),_0x448061[_0x1b0175(0x2ea)]=_0x1b0175(0x6dc)+_0x1b0175(0x78f),_0x448061['VMfNA']=_0x1b0175(0x159)+_0x1b0175(0x496)+_0x1b0175(0x2b3)+_0x1b0175(0x2e8)+_0x1b0175(0x1ae)+_0x1b0175(0x427)+_0x1b0175(0x374)+_0x1b0175(0x884)+_0x1b0175(0x99b)+_0x1b0175(0x134)+_0x1b0175(0x5f7)+'ae',_0x448061[_0x1b0175(0x96c)]=_0x1b0175(0x240)+_0x1b0175(0x42d)+'入内容',_0x448061[_0x1b0175(0x77b)]=_0x1b0175(0x495)+_0x1b0175(0x56e)+_0x1b0175(0x746)+_0x1b0175(0x69b)+_0x1b0175(0x836)+_0x1b0175(0x94c)+'yflow'+_0x1b0175(0x7ac),_0x448061[_0x1b0175(0x71f)]=_0x1b0175(0x837),_0x448061[_0x1b0175(0x552)]='items',_0x448061[_0x1b0175(0xa42)]=_0x1b0175(0x837)+_0x1b0175(0x899)+_0x1b0175(0x78f),_0x448061['EwbiU']=_0x1b0175(0x837)+'SubCa'+'tegor'+'y',_0x448061[_0x1b0175(0x32a)]='agent'+'Type',_0x448061[_0x1b0175(0x944)]=_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r',_0x448061[_0x1b0175(0x332)]=_0x1b0175(0x143)+_0x1b0175(0x10d)+'es',_0x448061[_0x1b0175(0x6d5)]=_0x1b0175(0x636)+'录(支持周'+_0x1b0175(0xa2b)+_0x1b0175(0xcf)+_0x1b0175(0x444)+_0x1b0175(0x3c7)+_0x1b0175(0x95e)+_0x1b0175(0x310)+'源等多维度'+_0x1b0175(0x8b4)+_0x1b0175(0x2dd)+_0x1b0175(0x2ed)+_0x1b0175(0x6a4)+_0x1b0175(0x543)+_0x1b0175(0x842)+_0x1b0175(0x54e)+_0x1b0175(0xa0b)+_0x1b0175(0x3a5)+':本工具只'+_0x1b0175(0x484)+_0x1b0175(0x61d)+_0x1b0175(0x56f)+'。Agen'+'t必须使用'+'get_s'+'kill获'+'取SKIL'+_0x1b0175(0x9a6)+_0x1b0175(0x6d7)+_0x1b0175(0x7e8)+_0x1b0175(0x7a6)+_0x1b0175(0x77c)+'ces/r'+_0x1b0175(0x2cc)+'se-te'+_0x1b0175(0x1b6)+_0x1b0175(0x97d)+_0x1b0175(0x508)+_0x1b0175(0x8f0)+'。',_0x448061[_0x1b0175(0x982)]=_0x1b0175(0x2fb)+'推荐使用)'+_0x1b0175(0x96d)+_0x1b0175(0x6fe)+'(本周)、'+'last_'+'week('+_0x1b0175(0x100)+_0x1b0175(0x457)+_0x1b0175(0x860)+_0x1b0175(0x8f6)+_0x1b0175(0x7fd)+_0x1b0175(0x860)+'上月),与'+_0x1b0175(0xa05)+_0x1b0175(0x38a)+_0x1b0175(0x904)+_0x1b0175(0x813),_0x448061[_0x1b0175(0x139)]=_0x1b0175(0x887)+_0x1b0175(0x7bb),_0x448061[_0x1b0175(0x7f6)]=_0x1b0175(0x8af)+_0x1b0175(0x4ce),_0x448061['KKcwf']=_0x1b0175(0x887)+'month',_0x448061[_0x1b0175(0x39f)]=_0x1b0175(0x3dc)+_0x1b0175(0x308),_0x448061['HHWvv']=_0x1b0175(0x1d8)+_0x1b0175(0x5e5)+',如:20'+_0x1b0175(0x471)+_0x1b0175(0x6f1),_0x448061[_0x1b0175(0x9e5)]='按分类筛选'+_0x1b0175(0x8d0)+_0x1b0175(0x929)+'通)',_0x448061['oQsNL']=_0x1b0175(0x707)+'筛选',_0x448061[_0x1b0175(0xa4a)]=_0x1b0175(0x592)+_0x1b0175(0x41a)+'p_txt'+_0x1b0175(0x8a5)+_0x1b0175(0x49b)+_0x1b0175(0x1af)+_0x1b0175(0x4a3)+')',_0x448061[_0x1b0175(0x99a)]='排序方式:'+_0x1b0175(0x4db)+_0x1b0175(0xa1b)+_0x1b0175(0x9ed)+_0x1b0175(0x667)+_0x1b0175(0x458)+_0x1b0175(0xaa)+'desc、'+_0x1b0175(0x5f3)+_0x1b0175(0x83e),_0x448061[_0x1b0175(0x54d)]=_0x1b0175(0x4db)+_0x1b0175(0x8db),_0x448061[_0x1b0175(0x2ef)]=_0x1b0175(0x4db)+'asc',_0x448061[_0x1b0175(0x951)]=_0x1b0175(0x5f3)+_0x1b0175(0x470)+'c',_0x448061['SfGeP']='amoun'+'t_asc',_0x448061[_0x1b0175(0x608)]=_0x1b0175(0x210)+'an',_0x448061['ClUxQ']='get_r'+'eceip'+_0x1b0175(0x5f1)+'t',_0x448061[_0x1b0175(0x2ab)]=_0x1b0175(0x63a)+_0x1b0175(0x386)+_0x1b0175(0x947)+_0x1b0175(0x173)+_0x1b0175(0x5fd)+_0x1b0175(0x327)+_0x1b0175(0x784)+_0x1b0175(0x591)+'数据,不返'+_0x1b0175(0x4e0)+_0x1b0175(0x40a)+_0x1b0175(0x968)+_0x1b0175(0x7c2)+_0x1b0175(0x1fb)+_0x1b0175(0x99c)+_0x1b0175(0x5ad)+_0x1b0175(0x1f8)+'回复规范\x22'+_0x1b0175(0x120)+_0x1b0175(0x60f)+_0x1b0175(0x5ef)+'respo'+_0x1b0175(0x6f5)+_0x1b0175(0x103)+_0x1b0175(0x81e)+_0x1b0175(0x47a)+_0x1b0175(0x902)+'复。',_0x448061[_0x1b0175(0x2bd)]=_0x1b0175(0x781)+_0x1b0175(0x1a4)+_0x1b0175(0x593)+'0',_0x448061[_0x1b0175(0x997)]=_0x1b0175(0x986)+_0x1b0175(0x5e5)+',如:20'+'26-04'+_0x1b0175(0x606),_0x448061['YrHrh']='最小金额筛'+'选',_0x448061[_0x1b0175(0x697)]=_0x1b0175(0x985)+'选',_0x448061[_0x1b0175(0xa35)]='get_s'+_0x1b0175(0x713)+'tics',_0x448061[_0x1b0175(0x531)]=_0x1b0175(0x8af)+_0x1b0175(0x7bb),_0x448061[_0x1b0175(0x9f3)]=_0x1b0175(0x570)+_0x1b0175(0xdf)+_0x1b0175(0x7dc)+_0x1b0175(0x2ed)+_0x1b0175(0x10f)+_0x1b0175(0x99)+_0x1b0175(0xc8)+_0x1b0175(0x21c)+'选一',_0x448061[_0x1b0175(0x839)]=_0x1b0175(0x1d8)+_0x1b0175(0x5e5)+_0x1b0175(0x8c0)+_0x1b0175(0x6bc)+'yearM'+'onth二'+'选一',_0x448061[_0x1b0175(0x8f7)]='是否包含洞'+_0x1b0175(0xb1)+_0x1b0175(0x5dc),_0x448061[_0x1b0175(0x630)]='统计维度:'+'item('+_0x1b0175(0x35e)+_0x1b0175(0x800)+_0x1b0175(0xa03)+_0x1b0175(0x80d)+_0x1b0175(0x6dc)+'ory(分'+_0x1b0175(0x60e)+'daily'+'(每日趋势'+_0x1b0175(0x4c2)+_0x1b0175(0x1e9)+_0x1b0175(0x245),_0x448061[_0x1b0175(0x3e0)]=_0x1b0175(0x448),_0x448061[_0x1b0175(0x45a)]=_0x1b0175(0x625)+'pt',_0x448061[_0x1b0175(0x17b)]=_0x1b0175(0x3f0),_0x448061[_0x1b0175(0xa2)]=_0x1b0175(0x320)+_0x1b0175(0x23a),_0x448061[_0x1b0175(0xd7)]=_0x1b0175(0x875)+_0x1b0175(0x23a),_0x448061[_0x1b0175(0x36b)]=_0x1b0175(0x8ef),_0x448061[_0x1b0175(0x341)]='get_i'+_0x1b0175(0x893)+'ts',_0x448061['txMyP']=_0x1b0175(0x94f)+_0x1b0175(0x8af)+_0x1b0175(0x522)+_0x1b0175(0x398)+_0x1b0175(0x7a5)+'eek(上'+_0x1b0175(0x41b)+_0x1b0175(0x775)+_0x1b0175(0xad)+_0x1b0175(0x4ea)+'st_mo'+_0x1b0175(0x494)+'月)',_0x448061[_0x1b0175(0x279)]=_0x1b0175(0x705),_0x448061['PcuTD']='patte'+'rn',_0x448061[_0x1b0175(0x2e2)]='healt'+'h',_0x448061['KfECU']=_0x1b0175(0x93f)+_0x1b0175(0x686)+'on',_0x448061['VNmxu']=_0x1b0175(0x3b3)+'导出完整的'+_0x1b0175(0x1fa)+_0x1b0175(0x90f)+'nt\x20深度'+_0x1b0175(0x2a2)+_0x1b0175(0x8b9)+_0x1b0175(0x739)+'完整的消费'+'记录和小票'+'数据,然后'+'在用户侧使'+_0x1b0175(0x4dc)+'行深度分析'+_0x1b0175(0x3a5)+':本工具只'+_0x1b0175(0x484)+'据,不返回'+_0x1b0175(0x56f)+_0x1b0175(0x81a)+_0x1b0175(0x69a)+'get_s'+_0x1b0175(0x777)+_0x1b0175(0x28a)+_0x1b0175(0x9a6)+_0x1b0175(0x6d7)+_0x1b0175(0x7e8)+_0x1b0175(0x7a6)+_0x1b0175(0x77c)+_0x1b0175(0x555)+_0x1b0175(0x2cc)+_0x1b0175(0x4cd)+_0x1b0175(0x1b6)+'es.md'+_0x1b0175(0x508)+_0x1b0175(0x8f0)+'。',_0x448061[_0x1b0175(0x460)]=_0x1b0175(0x3b1)+_0x1b0175(0x1ed)+_0x1b0175(0x80f)+_0x1b0175(0x476)+'(今年)、'+_0x1b0175(0x887)+_0x1b0175(0x841)+_0x1b0175(0x3df)+'ustom'+'(自定义)',_0x448061[_0x1b0175(0x1a6)]=_0x1b0175(0x864),_0x448061[_0x1b0175(0x720)]=_0x1b0175(0x887)+_0x1b0175(0xc9),_0x448061[_0x1b0175(0x40e)]=_0x1b0175(0x8e6)+'m',_0x448061[_0x1b0175(0x383)]=_0x1b0175(0x8af)+'year',_0x448061[_0x1b0175(0x142)]=_0x1b0175(0x4d2)+_0x1b0175(0x430)+_0x1b0175(0xa6),_0x448061['uQisR']=_0x1b0175(0x259),_0x448061['rSRWi']=_0x1b0175(0x990),_0x448061[_0x1b0175(0x31d)]=_0x1b0175(0x1d8)+'perio'+_0x1b0175(0x70c)+_0x1b0175(0x5e7)+'填)',_0x448061['FYURW']=_0x1b0175(0x986)+_0x1b0175(0x2ed)+_0x1b0175(0x70c)+'tom时必'+'填)',_0x448061[_0x1b0175(0x94d)]=_0x1b0175(0x285)+'-收入】用'+_0x1b0175(0x1bb)+_0x1b0175(0x8f4)+'资、红包、'+_0x1b0175(0x855)+_0x1b0175(0x4fb)+_0x1b0175(0x5c9)+_0x1b0175(0x5e4)+_0x1b0175(0x7c2)+_0x1b0175(0x1fb)+'获取规范,'+_0x1b0175(0x748)+'t_tex'+_0x1b0175(0x200)+_0x1b0175(0x4f4)+_0x1b0175(0x8fe)+_0x1b0175(0x2ce)+_0x1b0175(0x3bd)+_0x1b0175(0x678)+_0x1b0175(0x9ba)+_0x1b0175(0xa4c)+'\x20柴米AI'+_0x1b0175(0x55e)+_0x1b0175(0x70f)+_0x1b0175(0x45f)+'_flow'+_0x1b0175(0x4ab)+_0x1b0175(0x876)+'NWANG'+_0x1b0175(0x359)+'name='+_0x1b0175(0x21f)+_0x1b0175(0x5f3)+'t=100'+_0x1b0175(0x9a4)+'gory='+_0x1b0175(0x21f)+_0x1b0175(0x7ee)+'put=\x22'+_0x1b0175(0x271)+_0x1b0175(0x7b5),_0x448061[_0x1b0175(0x6d4)]='收入金额('+_0x1b0175(0x22f),_0x448061[_0x1b0175(0x9c)]=_0x1b0175(0x311)+_0x1b0175(0x140)+_0x1b0175(0x9ab)+'之一:工资'+_0x1b0175(0x27f)+_0x1b0175(0xef)+_0x1b0175(0x4ef)+'、转账、其'+'他)',_0x448061[_0x1b0175(0x6a3)]=_0x1b0175(0x37c)+_0x1b0175(0x459)+_0x1b0175(0x828),_0x448061[_0x1b0175(0x452)]=_0x1b0175(0x311)+_0x1b0175(0xa41)+'秒级时间戳'+',13位数'+_0x1b0175(0x3e9)+_0x1b0175(0x5e2)+_0x1b0175(0x834)+'算,不允许'+'复制示例数'+'字)',_0x448061[_0x1b0175(0x9a3)]=_0x1b0175(0x159)+_0x1b0175(0x496)+_0x1b0175(0x734)+_0x1b0175(0x794)+_0x1b0175(0x85c)+'top、c'+_0x1b0175(0x456)+_0x1b0175(0xa3a)+_0x1b0175(0x586)+_0x1b0175(0x507)+_0x1b0175(0x3e6)+_0x1b0175(0x415),_0x448061[_0x1b0175(0x2c6)]=_0x1b0175(0x240)+_0x1b0175(0x42d)+_0x1b0175(0x7ed)+_0x1b0175(0x403)+_0x1b0175(0x9cb),_0x448061[_0x1b0175(0x601)]='【必填】流'+_0x1b0175(0x56e)+_0x1b0175(0xde)+'ext_p'+_0x1b0175(0x69b)+_0x1b0175(0x836)+_0x1b0175(0x94c)+_0x1b0175(0x5fe)+_0x1b0175(0x7ac),_0x448061['gYUZL']='【不调用1'+_0x1b0175(0x19d)+_0x1b0175(0x677)+_0x1b0175(0x547)+_0x1b0175(0x984)+'t模板和流'+_0x1b0175(0x8a3)+_0x1b0175(0x956)+_0x1b0175(0x892)+_0x1b0175(0x243)+_0x1b0175(0x25d)+_0x1b0175(0x95)+_0x1b0175(0x2f1)+_0x1b0175(0x9b8)+_0x1b0175(0x7fe)+'段,否则s'+_0x1b0175(0x3c3)+'xpens'+'e/sav'+'e_inc'+_0x1b0175(0x326)+_0x1b0175(0xc3)+_0x1b0175(0x16a)+'KEN错误'+'!',_0x448061[_0x1b0175(0x52f)]=_0x1b0175(0x5f4)+_0x1b0175(0x613)+_0x1b0175(0x7c4)+_0x1b0175(0x6f8)+'aude-'+'deskt'+_0x1b0175(0x21b)+_0x1b0175(0x2d5)+_0x1b0175(0xce)+_0x1b0175(0x261)+_0x1b0175(0x557)+'ddy、t'+_0x1b0175(0x4ff),_0x448061['PiHko']='Promp'+_0x1b0175(0x600)+_0x1b0175(0x63c)+'eRece'+_0x1b0175(0x490),_0x448061[_0x1b0175(0x149)]=_0x1b0175(0x115)+_0x1b0175(0x5e0)+_0x1b0175(0x673)+_0x1b0175(0x9f8)+_0x1b0175(0x6e4)+_0x1b0175(0x923)+'mprov'+_0x1b0175(0x905)+_0x1b0175(0x623)+_0x1b0175(0xe3)+_0x1b0175(0x384)+_0x1b0175(0x57c)+_0x1b0175(0x12d),_0x448061[_0x1b0175(0x1e8)]=_0x1b0175(0xfb),_0x448061['vdONk']='联系方式('+_0x1b0175(0x355)+_0x1b0175(0x299)+_0x1b0175(0x9e7)+'续沟通',_0x448061['NHmDz']='上下文信息'+_0x1b0175(0x615)+'如相关记账'+_0x1b0175(0x66c)+_0x1b0175(0x7e1)+'述等',_0x448061['jTgma']=_0x1b0175(0x5f4)+_0x1b0175(0x914)+'服务提供商'+_0x1b0175(0x49d)+_0x1b0175(0x33d)+_0x1b0175(0x3a9)+_0x1b0175(0x9eb)+_0x1b0175(0x906)+_0x1b0175(0x91a)+_0x1b0175(0x101),_0x448061[_0x1b0175(0xa7)]='conte'+'nt';const _0x390ed8=_0x448061,_0x5b2d7d={};_0x5b2d7d[_0x1b0175(0x3a1)]=_0x390ed8[_0x1b0175(0x1fe)],_0x5b2d7d['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x3e3)],_0x5b2d7d[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x5b2d7d[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x5b2d7d[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x5b2d7d[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8fb)+_0x1b0175(0x24f)]={},_0x5b2d7d[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8fb)+_0x1b0175(0x24f)]['type']=_0x1b0175(0x20c)+'g',_0x5b2d7d[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8fb)+_0x1b0175(0x24f)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8['gVsFA'];const _0x27a0b7={};_0x27a0b7[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x27a0b7[_0x1b0175(0x5d7)+'iptio'+'n']=_0x1b0175(0x539)+')';const _0x2d8296={};_0x2d8296[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x2d8296['descr'+_0x1b0175(0x1aa)+'n']='备注(可选'+')';const _0x3bf655={};_0x3bf655[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x3bf655[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x240)+_0x1b0175(0x42d)+_0x1b0175(0x7ed)+_0x1b0175(0x403)+_0x1b0175(0x9cb);const _0x3cd4a2={};_0x3cd4a2[_0x1b0175(0x3a1)]=_0x390ed8[_0x1b0175(0x4f1)],_0x3cd4a2['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x285)+_0x1b0175(0x204)+_0x1b0175(0x338)+'/消费时用'+_0x1b0175(0x6f2)+'置:必须先'+'调用get'+_0x1b0175(0x406)+_0x1b0175(0x81b)+_0x1b0175(0x22a)+_0x1b0175(0x22c)+'xt_pa'+_0x1b0175(0x645)+_0x1b0175(0x7d1)+'获取凭证和'+_0x1b0175(0x535)+_0x1b0175(0x370)+_0x1b0175(0x911)+_0x1b0175(0x70a)+'l\x20柴米A'+_0x1b0175(0x989)+_0x1b0175(0x3c3)+_0x1b0175(0x10d)+_0x1b0175(0x76f)+_0x1b0175(0x450)+_0x1b0175(0x716)+'LINWA'+_0x1b0175(0x150)+_0x1b0175(0x194)+_0x1b0175(0x721)+_0x1b0175(0x42f)+_0x1b0175(0x4ee)+_0x1b0175(0x9be)+_0x1b0175(0x55a)+_0x1b0175(0x284)+_0x1b0175(0x393)+_0x1b0175(0xa40)+_0x1b0175(0x9ea)+_0x1b0175(0x6ab)+_0x1b0175(0x96e)+_0x1b0175(0x62a)+_0x1b0175(0x378)+_0x1b0175(0x618),_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']['requi'+_0x1b0175(0xd6)]=['name',_0x1b0175(0x5f3)+'t',_0x1b0175(0x6dc)+'ory',_0x1b0175(0xa06)+_0x1b0175(0x949),_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r',_0x390ed8[_0x1b0175(0x7fb)],_0x390ed8[_0x1b0175(0x264)]],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t']={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]['unit']=_0x27a0b7,_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa47)+_0x1b0175(0x244)+'e']={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]['note']=_0x2d8296,_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)]=_0x3bf655,_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)]={},_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x221)+_0x1b0175(0x22f),_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xc2)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x7a0)]=_0x390ed8['gGqpl'],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x8e8)+'出分类(4'+_0x1b0175(0x635)+_0x1b0175(0x8ed)+_0x1b0175(0x131)+_0x1b0175(0x30c)+_0x1b0175(0xf7),_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa47)+_0x1b0175(0x244)+'e'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa47)+_0x1b0175(0x244)+'e'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['hqQGe'],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0xa1)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)]['type']=_0x390ed8[_0x1b0175(0xc6)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x9e)+_0x1b0175(0x611)+_0x1b0175(0x2ff)+_0x1b0175(0x343)+_0x1b0175(0x3e9)+_0x1b0175(0x5e2)+_0x1b0175(0x834)+'算,不允许'+_0x1b0175(0x1ba)+'字)',_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x159)+'gent类'+_0x1b0175(0x734)+_0x1b0175(0x794)+_0x1b0175(0x85c)+_0x1b0175(0x441)+_0x1b0175(0x456)+_0x1b0175(0xa3a)+_0x1b0175(0x586)+_0x1b0175(0x507)+_0x1b0175(0x3e6)+'trae',_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']['type']=_0x390ed8[_0x1b0175(0x718)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x6c7)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)]['type']=_0x390ed8[_0x1b0175(0x718)],_0x3cd4a2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x495)+_0x1b0175(0x56e)+'get_t'+'ext_p'+'arse_'+'promp'+_0x1b0175(0x94c)+_0x1b0175(0x5fe)+_0x1b0175(0x7ac);const _0x1e6fa9={};_0x1e6fa9['name']=_0x390ed8[_0x1b0175(0x2af)],_0x1e6fa9[_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8['gcKsi'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8['mFFTB'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x346)+_0x1b0175(0xd6)]=[_0x390ed8['gIXsY'],_0x390ed8['dvYML'],_0x390ed8[_0x1b0175(0xa42)],_0x390ed8[_0x1b0175(0x64d)],_0x390ed8[_0x1b0175(0x32a)],_0x390ed8[_0x1b0175(0x944)],_0x1b0175(0x7ee)+_0x1b0175(0x8ca),_0x390ed8['mUwCx']],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x4db)+_0x1b0175(0x4d6)+_0x1b0175(0x7c7)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x86e)+_0x1b0175(0xa14)+'t']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x821)+_0x1b0175(0x9f2)+_0x1b0175(0x481)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5e9)+_0x1b0175(0x1fd)+_0x1b0175(0x481)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x26b)+_0x1b0175(0x4df)+'nt']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)+_0x1b0175(0x899)+_0x1b0175(0x78f)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)+_0x1b0175(0x710)+_0x1b0175(0x731)+'y']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x96)+_0x1b0175(0x846)+_0x1b0175(0x5b1)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x625)+_0x1b0175(0xf4)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]['type']=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xa1d)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)]['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x23b)+_0x1b0175(0x463)+_0x1b0175(0x467)+_0x1b0175(0x17a)+_0x1b0175(0x1de)+_0x1b0175(0x538)+_0x1b0175(0x897)+_0x1b0175(0x4ec)+_0x1b0175(0x34d),_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x4db)+_0x1b0175(0x4d6)+_0x1b0175(0x7c7)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x4db)+_0x1b0175(0x4d6)+_0x1b0175(0x7c7)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xfe)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x86e)+_0x1b0175(0xa14)+'t'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x86e)+_0x1b0175(0xa14)+'t'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x1b0175(0xe7)+_0x1b0175(0x391)+'商品amo'+_0x1b0175(0x4da)+')',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x821)+_0x1b0175(0x9f2)+_0x1b0175(0x481)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x821)+_0x1b0175(0x9f2)+_0x1b0175(0x481)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['uAhcK'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5e9)+_0x1b0175(0x1fd)+_0x1b0175(0x481)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5e9)+_0x1b0175(0x1fd)+_0x1b0175(0x481)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x90e)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x26b)+_0x1b0175(0x4df)+'nt'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x26b)+_0x1b0175(0x4df)+'nt']['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x762)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)+_0x1b0175(0x899)+_0x1b0175(0x78f)][_0x1b0175(0x7a0)]='strin'+'g',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)+_0x1b0175(0x899)+_0x1b0175(0x78f)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['EHAPI'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)+_0x1b0175(0x710)+_0x1b0175(0x731)+'y'][_0x1b0175(0x7a0)]=_0x390ed8['gGqpl'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)+_0x1b0175(0x710)+_0x1b0175(0x731)+'y'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x32c)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x96)+_0x1b0175(0x846)+_0x1b0175(0x5b1)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x96)+_0x1b0175(0x846)+_0x1b0175(0x5b1)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x2b6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x625)+_0x1b0175(0xf4)]['type']=_0x390ed8['gGqpl'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x625)+_0x1b0175(0xf4)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x7cf),_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x7a0)]=[_0x390ed8['wJKhh'],_0x1b0175(0x20c)+'g'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='【必填】商'+_0x1b0175(0x942)+_0x1b0175(0x113)+_0x1b0175(0x2db)+'串格式(某'+'些Agen'+_0x1b0175(0x2bf)+_0x1b0175(0xa27)+_0x1b0175(0x340)+_0x1b0175(0x225)+_0x1b0175(0x6ad)+_0x1b0175(0x7dd)+_0x1b0175(0x297)+_0x1b0175(0x6ac)+_0x1b0175(0x5f3)+_0x1b0175(0x8b5)+_0x1b0175(0x8a7)+_0x1b0175(0x4de)+_0x1b0175(0x3b4)+'意:amo'+_0x1b0175(0x47b)+_0x1b0175(0x423)+_0x1b0175(0x1ad)+_0x1b0175(0x81d)+_0x1b0175(0x2c0)+_0x1b0175(0xa29)+_0x1b0175(0x55b)+_0x1b0175(0x387)+_0x1b0175(0x756)+_0x1b0175(0x5ca)+_0x1b0175(0x251)+_0x1b0175(0x8d7)+_0x1b0175(0xa31)+_0x1b0175(0x669)+_0x1b0175(0x317)+'}]',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x346)+_0x1b0175(0xd6)]=[_0x390ed8[_0x1b0175(0xff)],_0x390ed8['gwOaZ'],_0x390ed8['OdVJl'],_0x1b0175(0x1ad)+_0x1b0175(0x8d5),_0x390ed8['pWZJS'],_0x390ed8[_0x1b0175(0x937)],_0x390ed8[_0x1b0175(0x8f5)],_0x390ed8['agWGH']],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x821)+_0x1b0175(0xa09)+'me']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x11a)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x1ad)+_0x1b0175(0x8d5)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x465)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x37f)+'t']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa47)+_0x1b0175(0x244)+'e']={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x545)+_0x1b0175(0x324)+_0x1b0175(0x55a)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x545)+_0x1b0175(0x357)+_0x1b0175(0x899)+_0x1b0175(0x78f)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)]={},_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='【必填】商'+_0x1b0175(0xa33),_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x821)+_0x1b0175(0xa09)+'me'][_0x1b0175(0x7a0)]=_0x390ed8['gGqpl'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x821)+_0x1b0175(0xa09)+'me'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x912)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x11a)]['type']=_0x390ed8[_0x1b0175(0xc6)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x11a)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8['MOhHY'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x1ad)+_0x1b0175(0x8d5)]['type']=_0x390ed8['hQxnV'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x1ad)+_0x1b0175(0x8d5)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['XkbYG'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x465)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x465)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['SzyTU'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t'][_0x1b0175(0x7a0)]=_0x1b0175(0x283)+'r',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x53b)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x37f)+'t']['type']=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x37f)+'t']['descr'+'iptio'+'n']='重量',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa47)+_0x1b0175(0x244)+'e'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa47)+_0x1b0175(0x244)+'e'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='【必填】单'+_0x1b0175(0x785)+_0x1b0175(0x5d0)+_0x1b0175(0x7e9)+_0x1b0175(0x3aa)+_0x1b0175(0x2c9)+_0x1b0175(0x39a)+_0x1b0175(0x1ef)+_0x1b0175(0x114)+'额÷重量('+_0x1b0175(0x3b8)+'0',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x545)+_0x1b0175(0x324)+_0x1b0175(0x55a)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x545)+_0x1b0175(0x324)+_0x1b0175(0x55a)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x637)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x545)+_0x1b0175(0x357)+_0x1b0175(0x899)+_0x1b0175(0x78f)]['type']=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x545)+_0x1b0175(0x357)+_0x1b0175(0x899)+_0x1b0175(0x78f)]['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x6b8)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5a0)][_0x1b0175(0x5a0)][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x8a4)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)]['type']=_0x1b0175(0x20c)+'g',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x34a)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']['type']=_0x390ed8['gGqpl'],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x1b0175(0x159)+'I服务提供'+'商:ant'+_0x1b0175(0x8c4)+_0x1b0175(0x1db)+_0x1b0175(0x286)+_0x1b0175(0xca)+'、aliy'+'un',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x96c)],_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x1e6fa9[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8['eXhrU'];const _0x18d0f4={};_0x18d0f4[_0x1b0175(0x3a1)]=_0x390ed8[_0x1b0175(0x332)],_0x18d0f4[_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x6d5)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']['type']='objec'+'t',_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)]={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)]={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)]={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)]={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5ea)+'e']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa4)+'rd']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x5a4)+'gs']={},_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']['descr'+'iptio'+'n']=_0x390ed8[_0x1b0175(0x982)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x8b1)]=[_0x1b0175(0x8af)+_0x1b0175(0x7bb),_0x390ed8[_0x1b0175(0x139)],_0x390ed8[_0x1b0175(0x7f6)],_0x390ed8[_0x1b0175(0x9b3)]],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x781)+_0x1b0175(0x6d8)+_0x1b0175(0x29e)+_0x1b0175(0x1ac),_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)]['defau'+'lt']=0xa,_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)]['type']=_0x390ed8[_0x1b0175(0xc6)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x39f)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)][_0x1b0175(0x14e)+'lt']=0x0,_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)]['type']='strin'+'g',_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x778)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te']['type']=_0x390ed8[_0x1b0175(0x718)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='结束日期('+_0x1b0175(0x5e5)+_0x1b0175(0x451)+'26-04'+_0x1b0175(0x606),_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x9e5)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x7a0)]='strin'+'g',_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x2a9)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5ea)+'e'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5ea)+'e'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xa4a)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa4)+'rd']['type']=_0x390ed8['gGqpl'],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa4)+'rd']['descr'+'iptio'+'n']='按商品名称'+'关键词搜索',_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['SDuBo'],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By'][_0x1b0175(0x8b1)]=[_0x390ed8[_0x1b0175(0x54d)],_0x390ed8[_0x1b0175(0x2ef)],_0x390ed8[_0x1b0175(0x951)],_0x390ed8[_0x1b0175(0x55d)]],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By'][_0x1b0175(0x14e)+'lt']=_0x390ed8['btkPZ'],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x5a4)+'gs'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x608)],_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x5a4)+'gs'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x4a0)+_0x1b0175(0x170)+_0x1b0175(0x5dc),_0x18d0f4[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x5a4)+'gs'][_0x1b0175(0x14e)+'lt']=!![];const _0x30bd55={};_0x30bd55[_0x1b0175(0x3a1)]=_0x390ed8['ClUxQ'],_0x30bd55[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x2ab)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te']={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x162)+_0x1b0175(0x481)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68b)+_0x1b0175(0x481)]={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By']={},_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)]['type']=_0x390ed8[_0x1b0175(0xc6)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['akwSJ'],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x20d)][_0x1b0175(0x14e)+'lt']=0x5,_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)]['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x39f)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x598)]['defau'+'lt']=0x0,_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x778)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te']['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x997)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]['type']=_0x390ed8[_0x1b0175(0x718)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x2a9)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x162)+_0x1b0175(0x481)]['type']=_0x390ed8['hQxnV'],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x162)+_0x1b0175(0x481)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x97e)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68b)+_0x1b0175(0x481)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0xc6)],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68b)+_0x1b0175(0x481)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['dgGVc'],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By'][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By']['descr'+'iptio'+'n']=_0x390ed8['SDuBo'],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By']['enum']=[_0x1b0175(0x4db)+_0x1b0175(0x8db),'date_'+'asc',_0x390ed8[_0x1b0175(0x951)],_0x390ed8[_0x1b0175(0x55d)]],_0x30bd55[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x68c)+'By'][_0x1b0175(0x14e)+'lt']=_0x390ed8[_0x1b0175(0x54d)];const _0x289288={};_0x289288[_0x1b0175(0x3a1)]=_0x390ed8[_0x1b0175(0xa35)],_0x289288[_0x1b0175(0x5d7)+'iptio'+'n']=_0x1b0175(0x634)+_0x1b0175(0x31b)+_0x1b0175(0xa2b)+'。支持按周'+_0x1b0175(0x444)+'范围统计,'+_0x1b0175(0x95e)+_0x1b0175(0x3a0)+_0x1b0175(0x511)+_0x1b0175(0x9fe)+'\x20peri'+_0x1b0175(0x13e)+_0x1b0175(0x4ca)+_0x1b0175(0x6fe)+_0x1b0175(0x262)+'_week'+_0x1b0175(0x80f)+'_mont'+_0x1b0175(0x16e)+_0x1b0175(0x88f)+_0x1b0175(0x2f5)+_0x1b0175(0x229)+_0x1b0175(0x413)+'\x20洞察数据'+'。返回格式'+':本工具只'+'返回原始数'+_0x1b0175(0x61d)+_0x1b0175(0x56f)+_0x1b0175(0x81a)+_0x1b0175(0x69a)+'get_s'+_0x1b0175(0x777)+_0x1b0175(0x28a)+_0x1b0175(0x9a6)+_0x1b0175(0x6d7)+_0x1b0175(0x7e8)+_0x1b0175(0x7a6)+_0x1b0175(0x77c)+_0x1b0175(0x555)+_0x1b0175(0x2cc)+_0x1b0175(0x4cd)+_0x1b0175(0x1b6)+'es.md'+'中的模板自'+_0x1b0175(0x8f0)+'。',_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']['type']=_0x390ed8[_0x1b0175(0x3ed)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5b4)+'onth']={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)]={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te']={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x16d)+_0x1b0175(0x413)]={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7a0)]={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)]={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x46c)+'By']={},_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='统计周期('+_0x1b0175(0x75c)+_0x1b0175(0x96d)+_0x1b0175(0x6fe)+_0x1b0175(0x51c)+'last_'+_0x1b0175(0x522)+_0x1b0175(0x100)+_0x1b0175(0x457)+'onth('+_0x1b0175(0x8f6)+_0x1b0175(0x7fd)+_0x1b0175(0x860)+_0x1b0175(0x7f7)+_0x1b0175(0x5b4)+_0x1b0175(0x368)+'start'+'Date/'+_0x1b0175(0x904)+_0x1b0175(0x813),_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x8b1)]=[_0x390ed8[_0x1b0175(0x531)],_0x390ed8[_0x1b0175(0x139)],_0x1b0175(0x8af)+'month',_0x390ed8[_0x1b0175(0x9b3)]],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5b4)+'onth'][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5b4)+'onth'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x9f3)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x839)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x1b0175(0x986)+_0x1b0175(0x5e5)+_0x1b0175(0x8c0)+_0x1b0175(0x6bc)+_0x1b0175(0x5b4)+_0x1b0175(0x34f)+'选一',_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x16d)+_0x1b0175(0x413)][_0x1b0175(0x7a0)]=_0x1b0175(0x210)+'an',_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x16d)+_0x1b0175(0x413)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x8f7)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0x16d)+_0x1b0175(0x413)]['defau'+'lt']=!![],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7a0)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7a0)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x630)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7a0)][_0x1b0175(0x8b1)]=[_0x390ed8['vXtVF'],_0x390ed8[_0x1b0175(0x45a)],_0x390ed8['agWGH'],_0x390ed8[_0x1b0175(0x17b)],_0x390ed8[_0x1b0175(0x71f)]],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7a0)][_0x1b0175(0x14e)+'lt']=_0x1b0175(0x6dc)+_0x1b0175(0x78f),_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)]['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8['tZHgt'],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xd7)],_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x46c)+'By'][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x46c)+'By'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='分组方式:'+_0x1b0175(0x6dc)+_0x1b0175(0x32b)+_0x1b0175(0x2f3)+'te(日期'+')、sto'+_0x1b0175(0x1e9)+')',_0x289288[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x46c)+'By']['enum']=[_0x390ed8[_0x1b0175(0x2ea)],_0x390ed8[_0x1b0175(0x36b)],'store'];const _0x427d26={};_0x427d26['name']=_0x390ed8[_0x1b0175(0x341)],_0x427d26['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x3b3)+'获取消费洞'+'察线索(包'+'含趋势、模'+_0x1b0175(0x78a)+_0x1b0175(0x209)+_0x1b0175(0xa46)+_0x1b0175(0x61e)+'成本!返回'+'洞察线索,'+_0x1b0175(0x90f)+'nt\x20结合'+'用户大模型'+_0x1b0175(0x822)+_0x1b0175(0x44a)+_0x1b0175(0x784)+'只返回原始'+_0x1b0175(0x9f6)+_0x1b0175(0x4e0)+'息。Age'+_0x1b0175(0x968)+'用get_'+_0x1b0175(0x1fb)+_0x1b0175(0x99c)+'LL.md'+_0x1b0175(0x1f8)+_0x1b0175(0x169)+_0x1b0175(0x120)+_0x1b0175(0x60f)+'nces/'+_0x1b0175(0x799)+_0x1b0175(0x6f5)+_0x1b0175(0x103)+'tes.m'+_0x1b0175(0x47a)+_0x1b0175(0x902)+'复。',_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']['type']=_0x390ed8['mFFTB'],_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']={},_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5d8)]={},_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x7a0)]='strin'+'g',_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x580)],_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']['enum']=[_0x390ed8[_0x1b0175(0x531)],_0x390ed8[_0x1b0175(0x139)],_0x1b0175(0x8af)+_0x1b0175(0x4ce),_0x390ed8[_0x1b0175(0x9b3)]],_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x14e)+'lt']=_0x390ed8[_0x1b0175(0x531)],_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5d8)]['type']=[_0x390ed8[_0x1b0175(0x718)],_0x390ed8['wJKhh']],_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5d8)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='洞察类型:'+_0x1b0175(0x705)+_0x1b0175(0x633)+_0x1b0175(0x99d)+_0x1b0175(0x703)+_0x1b0175(0x916)+_0x1b0175(0x5b7)+_0x1b0175(0x71d)+_0x1b0175(0x93a)+'ation'+_0x1b0175(0x8f1)+_0x1b0175(0x43e),_0x427d26[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5d8)]['defau'+'lt']=[_0x390ed8['kwHsf'],_0x390ed8['PcuTD'],_0x390ed8[_0x1b0175(0x2e2)],_0x390ed8['KfECU']];const _0xbdb1ac={};_0xbdb1ac[_0x1b0175(0x3a1)]='expor'+_0x1b0175(0x33c)+'a',_0xbdb1ac[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xac)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8['mFFTB'],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8e4)+'t']={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0xb6)+_0x1b0175(0x186)]={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)]={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te']={},_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d']['descr'+'iptio'+'n']=_0x390ed8[_0x1b0175(0x460)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x8b1)]=[_0x390ed8[_0x1b0175(0x1a6)],_0x1b0175(0x8af)+_0x1b0175(0xc9),_0x390ed8[_0x1b0175(0x720)],_0x390ed8['eGhrF']],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x2ed)+'d'][_0x1b0175(0x14e)+'lt']=_0x390ed8[_0x1b0175(0x383)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8e4)+'t']['type']=_0x390ed8[_0x1b0175(0x718)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8e4)+'t'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x142)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8e4)+'t'][_0x1b0175(0x8b1)]=[_0x390ed8[_0x1b0175(0x9aa)],_0x390ed8['rSRWi']],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8e4)+'t'][_0x1b0175(0x14e)+'lt']=_0x1b0175(0x259),_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0xb6)+_0x1b0175(0x186)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x608)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0xb6)+_0x1b0175(0x186)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x769)+_0x1b0175(0x60d)+_0x1b0175(0x5dc),_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7c9)+_0x1b0175(0xb6)+_0x1b0175(0x186)][_0x1b0175(0x14e)+'lt']=!![],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)][_0x1b0175(0x7a0)]='strin'+'g',_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa05)+_0x1b0175(0x479)]['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x31d)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0xbdb1ac[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x904)+'te'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x666)];const _0x12e746={};_0x12e746['type']=_0x1b0175(0x20c)+'g',_0x12e746['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x141)+_0x1b0175(0x336)+_0x1b0175(0x11e)+_0x1b0175(0x7a2);const _0x3f03d2={};_0x3f03d2[_0x1b0175(0x3a1)]=_0x1b0175(0xf1)+'incom'+'e',_0x3f03d2[_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x94d)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x346)+_0x1b0175(0xd6)]=[_0x390ed8[_0x1b0175(0xff)],_0x390ed8[_0x1b0175(0x925)],_0x390ed8['agWGH'],_0x1b0175(0xa06)+_0x1b0175(0x949),_0x390ed8['CuHLh'],_0x390ed8['KOxIw'],_0x1b0175(0x9b8)+'mate'],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x3a1)]=_0x12e746,_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t']={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x436)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)]={},_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t'][_0x1b0175(0x7a0)]=_0x390ed8['hQxnV'],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x5f3)+'t'][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x6d4)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x6dc)+_0x1b0175(0x78f)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x9c)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x837)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x6a3)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)][_0x1b0175(0x7a0)]=_0x1b0175(0x283)+'r',_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x8ef)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x452)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x436)][_0x1b0175(0x7a0)]=_0x390ed8['gGqpl'],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x436)]['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x642)+')',_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8['AzuKB'],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r'][_0x1b0175(0x7a0)]=_0x390ed8['gGqpl'],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x6c7)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)]['type']=_0x390ed8['gGqpl'],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x7ee)+_0x1b0175(0x8ca)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x2c6)],_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x3f03d2[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0x9b8)+_0x1b0175(0x743)][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x601)];const _0x25cd61={};_0x25cd61[_0x1b0175(0x3a1)]=_0x1b0175(0xde)+'ext_p'+'arse_'+_0x1b0175(0x836)+'t',_0x25cd61[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x38c)],_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a']={},_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x3ed)],_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)]={},_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)]={},_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']={},_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xa06)+_0x1b0175(0x949)][_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0x52f)],_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r']['type']=_0x390ed8[_0x1b0175(0x718)],_0x25cd61[_0x1b0175(0x9e8)+_0x1b0175(0x7eb)+'a'][_0x1b0175(0x72c)+_0x1b0175(0x976)][_0x1b0175(0xf2)+_0x1b0175(0x42c)+'r'][_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']='【推荐自动'+_0x1b0175(0x914)+_0x1b0175(0x73d)+_0x1b0175(0x49d)+_0x1b0175(0x33d)+_0x1b0175(0x3a9)+'enai、'+'douba'+_0x1b0175(0x91a)+_0x1b0175(0x101);const _0x30bcdb={};_0x30bcdb[_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x30bcdb[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0xa39)],_0x30bcdb[_0x1b0175(0x14e)+'lt']=_0x1b0175(0x93d)+_0x1b0175(0x943)+'pt';const _0x28efe1={};_0x28efe1['type']=_0x30bcdb;const _0x582e0d={};_0x582e0d['type']='objec'+'t',_0x582e0d[_0x1b0175(0x72c)+_0x1b0175(0x976)]=_0x28efe1;const _0x2a7a04={};_0x2a7a04[_0x1b0175(0x3a1)]='get_p'+_0x1b0175(0x69b)+'promp'+'t',_0x2a7a04['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x6e3)+'00%失败'+_0x1b0175(0xa34)+_0x1b0175(0x6f3)+_0x1b0175(0x984)+_0x1b0175(0x660)+'程凭证。⚠️'+'\x20小票记账'+_0x1b0175(0x3e7)+_0x1b0175(0x313)+_0x1b0175(0x28c)+_0x1b0175(0x622)+'返回_fl'+_0x1b0175(0x450)+'e字段,否'+_0x1b0175(0xa0d)+_0x1b0175(0x127)+'ipt会报'+_0x1b0175(0xc3)+_0x1b0175(0x16a)+_0x1b0175(0x98)+'!',_0x2a7a04[_0x1b0175(0x9e8)+'Schem'+'a']=_0x582e0d;const _0x55147c={};_0x55147c[_0x1b0175(0x7a0)]=_0x390ed8['gGqpl'],_0x55147c['descr'+'iptio'+'n']=_0x1b0175(0x108)+'详细描述问'+_0x1b0175(0x76c)+_0x1b0175(0x565)+_0x1b0175(0x84d)+'符)';const _0xda8bc9={};_0xda8bc9[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0xda8bc9['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x149)],_0xda8bc9[_0x1b0175(0x8b1)]=[_0x1b0175(0x9dd),_0x1b0175(0x9f8)+'re',_0x1b0175(0x6c6)+'vemen'+'t','other'],_0xda8bc9[_0x1b0175(0x14e)+'lt']=_0x390ed8[_0x1b0175(0x1e8)];const _0x129dce={};_0x129dce[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x129dce[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x801)];const _0x349adc={};_0x349adc[_0x1b0175(0x7a0)]=_0x390ed8[_0x1b0175(0x718)],_0x349adc[_0x1b0175(0x5d7)+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x3b9)];const _0x54b2e6={};_0x54b2e6[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x54b2e6['descr'+_0x1b0175(0x1aa)+'n']=_0x390ed8[_0x1b0175(0x52f)];const _0x40024d={};_0x40024d[_0x1b0175(0x7a0)]=_0x1b0175(0x20c)+'g',_0x40024d[_0x1b0175(0x5d7)+'iptio'+'n']=_0x390ed8[_0x1b0175(0xab)];const _0x12956b={};_0x12956b[_0x1b0175(0x9cc)+'nt']=_0x55147c,_0x12956b[_0x1b0175(0x7a0)]=_0xda8bc9,_0x12956b[_0x1b0175(0x6a9)+'ct']=_0x129dce,_0x12956b['conte'+'xt']=_0x349adc,_0x12956b[_0x1b0175(0xa06)+_0x1b0175(0x949)]=_0x54b2e6,_0x12956b['apiPr'+_0x1b0175(0x42c)+'r']=_0x40024d;const _0x1a2c60={};_0x1a2c60[_0x1b0175(0x7a0)]='objec'+'t',_0x1a2c60['prope'+_0x1b0175(0x976)]=_0x12956b,_0x1a2c60[_0x1b0175(0x346)+'red']=[_0x390ed8[_0x1b0175(0xa7)]];const _0x33f223={};_0x33f223[_0x1b0175(0x3a1)]='submi'+_0x1b0175(0x19b)+_0x1b0175(0x2bc),_0x33f223['descr'+_0x1b0175(0x1aa)+'n']=_0x1b0175(0x8bc)+_0x1b0175(0x7d7)+'报告。当用'+_0x1b0175(0x154)+_0x1b0175(0x1be)+_0x1b0175(0x581)+_0x1b0175(0x6e1)+_0x1b0175(0x5f6)+_0x1b0175(0x433)+_0x1b0175(0x3e4)+_0x1b0175(0x7a4)+_0x1b0175(0x22e)+_0x1b0175(0x331)+_0x1b0175(0x67e)+'(功能建议'+')、imp'+_0x1b0175(0x1e0)+_0x1b0175(0x461)+_0x1b0175(0x59d)+'other'+'(其他)。'+_0x1b0175(0x58e)+'会返回反馈'+_0x1b0175(0x8a8)+_0x1b0175(0x797)+_0x1b0175(0x59a)+_0x1b0175(0x38d)+'不要超过1'+_0x1b0175(0xa28)+_0x1b0175(0x4c0)+_0x1b0175(0x1c6)+_0x1b0175(0x288)+_0x1b0175(0x4e8)+_0x1b0175(0x335)+_0x1b0175(0x2fa)+'式化消息。'+_0x1b0175(0x64e)+_0x1b0175(0x307)+_0x1b0175(0x533)+_0x1b0175(0x453)+_0x1b0175(0x2e7)+'.md中的'+_0x1b0175(0xa3d)+_0x1b0175(0x8c2)+_0x1b0175(0x850)+'erenc'+_0x1b0175(0x682)+_0x1b0175(0x1d3)+'e-tem'+_0x1b0175(0x827)+_0x1b0175(0x6d1)+_0x1b0175(0x4f6)+'渲染回复。',_0x33f223[_0x1b0175(0x9e8)+'Schem'+'a']=_0x1a2c60;const _0x1807cd={};return _0x1807cd[_0x1b0175(0x474)]=[_0x5b2d7d,_0x3cd4a2,_0x1e6fa9,_0x18d0f4,_0x30bd55,_0x289288,_0x427d26,_0xbdb1ac,_0x3f03d2,_0x25cd61,_0x2a7a04,_0x33f223],_0x1807cd;});const _0x309ae3={};_0x309ae3[_0x2dbe2(0xf1)+_0x2dbe2(0x5c6)+'se']='addEx'+_0x2dbe2(0x419),_0x309ae3[_0x2dbe2(0xf1)+_0x2dbe2(0x625)+'pt']=_0x2dbe2(0x5a3)+_0x2dbe2(0x4a3),_0x309ae3['save_'+'incom'+'e']=_0x2dbe2(0x3d4)+_0x2dbe2(0x83f),_0x309ae3['get_e'+_0x2dbe2(0x10d)+'es']=_0x2dbe2(0x8dd)+'pense'+'s',_0x309ae3[_0x2dbe2(0x8c9)+_0x2dbe2(0x9ec)+_0x2dbe2(0x5f1)+'t']=_0x2dbe2(0x8dd)+_0x2dbe2(0x419)+'s',_0x309ae3[_0x2dbe2(0x806)+_0x2dbe2(0x713)+_0x2dbe2(0xa2d)]='getSt'+_0x2dbe2(0x709)+_0x2dbe2(0x394),_0x309ae3['submi'+_0x2dbe2(0x19b)+_0x2dbe2(0x2bc)]=_0x2dbe2(0x7bd)+_0x2dbe2(0x8c3)+'k',_0x309ae3['get_i'+_0x2dbe2(0x893)+'ts']=_0x2dbe2(0x7ea)+'sight'+'s',_0x309ae3[_0x2dbe2(0x7fc)+_0x2dbe2(0x33c)+'a']=_0x2dbe2(0x7fc)+'tData';const toolMapping=_0x309ae3,TOKEN_REFRESH_INTERVAL=0x2*0x3c*0x3c*0x3e8;let lastRefreshTime=0x0;async function getToken(){const _0x2017c3=_0x2dbe2,_0x21ce3f={'pPWWy':_0x2017c3(0xe4),'QuKgc':_0x2017c3(0x7df)+'明:检测到'+_0x2017c3(0x41f)+_0x2017c3(0x356)+'时间','ovpGf':_0x2017c3(0x5a0)+_0x2017c3(0x417)+_0x2017c3(0x66d),'rwEsy':_0x2017c3(0x388)+_0x2017c3(0x373)+_0x2017c3(0x246)+_0x2017c3(0x27a)+_0x2017c3(0x877),'nKDXF':function(_0x5ceca5,_0x45e627){return _0x5ceca5(_0x45e627);},'IyBwd':function(_0x4a7f17,_0x23d34d){return _0x4a7f17(_0x23d34d);},'ExYTV':function(_0x41cf07){return _0x41cf07();},'QcmcD':function(_0x316bfd,_0x5772cb){return _0x316bfd>_0x5772cb;},'eufhX':function(_0x5adaf6,_0x285bb5){return _0x5adaf6*_0x285bb5;},'gtRkE':function(_0xb0bcb5,_0x58fcc0){return _0xb0bcb5<_0x58fcc0;},'JQfIU':function(_0xfc4668,_0x42f019){return _0xfc4668-_0x42f019;},'tUnva':function(_0x453dc5,_0x17f57b){return _0x453dc5===_0x17f57b;},'IDIJS':_0x2017c3(0x291),'FRlOj':_0x2017c3(0x4c4),'muAVU':function(_0x5b5457,_0x534692){return _0x5b5457===_0x534692;},'ztAHz':_0x2017c3(0x8bf),'mbyXG':_0x2017c3(0x109),'oUZCN':function(_0x52388d,_0x3910ee){return _0x52388d+_0x3910ee;},'RPKUS':function(_0x46c8bb,_0x2d2bd9){return _0x46c8bb*_0x2d2bd9;},'DnEDJ':'GBChy','KcQpu':_0x2017c3(0x98c),'NQnhx':'5|2|3'+_0x2017c3(0x515)+'1','bpPEq':'✅\x20已从文'+'件加载有效'+'\x20Toke'+_0x2017c3(0x970)+_0x2017c3(0x4a2),'hViqR':function(_0x34eaeb,_0x5db5a3){return _0x34eaeb(_0x5db5a3);},'ogyWr':_0x2017c3(0x5ce)+_0x2017c3(0x51b)+_0x2017c3(0x6db)+',需要重新'+'授权','VzVAX':_0x2017c3(0x61a),'Sttct':function(_0x2513e4,_0x3322a3){return _0x2513e4!==_0x3322a3;},'CkQgo':_0x2017c3(0x295),'yRLuQ':_0x2017c3(0x5ce)+_0x2017c3(0xba)+_0x2017c3(0x2e1)+'生成新的验'+'证码','hYFcP':_0x2017c3(0x30a)+_0x2017c3(0x174)+_0x2017c3(0x9ee)+'|8','ahtKq':function(_0x34f437,_0x5c11aa){return _0x34f437(_0x5c11aa);},'rgXHT':_0x2017c3(0x8c1)+'手','BzAAo':_0x2017c3(0x714)+_0x2017c3(0x774)+'续使用记账'+'功能','tdhnI':_0x2017c3(0xfc)+_0x2017c3(0x473)+'COMPL'+_0x2017c3(0x1a7),'Rrquo':_0x2017c3(0x2fd),'VFpkE':_0x2017c3(0x4e7)+'证码','wsYDj':_0x2017c3(0x64c)+_0x2017c3(0x178)+'初始化,请'+_0x2017c3(0x78d)+_0x2017c3(0x9b5)+_0x2017c3(0x180)+_0x2017c3(0x867),'tyfNd':function(_0x5bd0e8,_0x285f9e){return _0x5bd0e8(_0x285f9e);},'JWxpJ':function(_0x560638){return _0x560638();}},_0x3c1471=_0x21ce3f[_0x2017c3(0x5ee)](getCachedToken);if(_0x3c1471&&_0x21ce3f['QcmcD'](tokenExpireTime,Date[_0x2017c3(0x104)]()+_0x21ce3f[_0x2017c3(0x9f7)](_0x21ce3f[_0x2017c3(0x9f7)](0x5,0x3c),0x3e8))){if(_0x21ce3f['gtRkE'](_0x21ce3f[_0x2017c3(0xa16)](Date[_0x2017c3(0x104)](),lastRefreshTime),TOKEN_REFRESH_INTERVAL)){if(_0x21ce3f[_0x2017c3(0x84f)](_0x2017c3(0x898),_0x21ce3f[_0x2017c3(0x193)]))_0x108c95[_0x2017c3(0x256)]('[save'+_0x2017c3(0x8a5)+_0x2017c3(0x31e)+_0x2017c3(0xa11)+_0x54852d[_0x2017c3(0x8ef)]+'\x20('+_0x586b60[_0x2017c3(0x886)+'aleSt'+_0x2017c3(0x931)](_0x21ce3f[_0x2017c3(0x7da)])+('),使用当'+_0x2017c3(0x54b))),_0x6d59ff[_0x2017c3(0x8ef)]=_0x424d69[_0x2017c3(0x104)](),_0x358204=_0x21ce3f['QuKgc'];else return _0x3c1471;}}try{if(_0x21ce3f[_0x2017c3(0x57d)]===_0x21ce3f[_0x2017c3(0x57d)]){const _0x5aa14e=await oauthManager[_0x2017c3(0x2df)+_0x2017c3(0x4f0)+'ge'][_0x2017c3(0x7e0)]();if(_0x5aa14e&&_0x5aa14e[_0x2017c3(0x63d)+_0x2017c3(0x187)+'n']&&_0x5aa14e[_0x2017c3(0x6bf)+_0x2017c3(0x6f0)]){if(_0x21ce3f[_0x2017c3(0x6a2)](_0x21ce3f[_0x2017c3(0x783)],_0x21ce3f[_0x2017c3(0x201)]))return new _0x214983(_0x16bfa6)[_0x2017c3(0xa0e)+'me']();else{const _0xdf35c=new Date(_0x5aa14e[_0x2017c3(0x6bf)+'esAt'])[_0x2017c3(0xa0e)+'me']();if(_0x21ce3f[_0x2017c3(0x567)](_0xdf35c,_0x21ce3f[_0x2017c3(0x2e4)](Date[_0x2017c3(0x104)](),_0x21ce3f['eufhX'](_0x21ce3f[_0x2017c3(0x15d)](0x5,0x3c),0x3e8)))){if(_0x21ce3f[_0x2017c3(0x6a2)](_0x21ce3f['DnEDJ'],_0x21ce3f['KcQpu']))throw new _0x3ba694(_0x21ce3f['ovpGf']);else{const _0x399988=_0x21ce3f[_0x2017c3(0x45e)][_0x2017c3(0x3b6)]('|');let _0x4ff54d=0x0;while(!![]){switch(_0x399988[_0x4ff54d++]){case'0':console[_0x2017c3(0x617)](_0x21ce3f[_0x2017c3(0x65e)]);continue;case'1':return _0x21ce3f[_0x2017c3(0x5ee)](getCachedToken);case'2':tokenExpireTime=_0xdf35c;continue;case'3':authState[_0x2017c3(0x4e5)+_0x2017c3(0x181)+'ed']=!![];continue;case'4':lastRefreshTime=Date[_0x2017c3(0x104)]();continue;case'5':_0x21ce3f[_0x2017c3(0x8e2)](setCachedToken,_0x5aa14e[_0x2017c3(0x63d)+_0x2017c3(0x187)+'n']);continue;}break;}}}else console[_0x2017c3(0x617)](_0x21ce3f['ogyWr']);}}}else _0x4829cd=_0x21ce3f['rwEsy'];}catch(_0x97a0be){_0x21ce3f[_0x2017c3(0x6a2)](_0x2017c3(0x61a),_0x21ce3f[_0x2017c3(0x724)])?console['error'](_0x2017c3(0x135)+_0x2017c3(0x4f9)+_0x2017c3(0x72b)+'败:',_0x97a0be[_0x2017c3(0x715)+'ge']):_0x1659fc[_0x2017c3(0x5a0)]=_0x4eeb4b[_0x2017c3(0x93d)](_0x4f5bb1[_0x2017c3(0x5a0)]);}if(!authState[_0x2017c3(0x4e5)+'horiz'+'ed']){if(_0x21ce3f[_0x2017c3(0x117)](_0x2017c3(0x295),_0x21ce3f[_0x2017c3(0x17e)])){const _0x421280=_0x378c9f['perio'+'d']?_0x21ce3f[_0x2017c3(0x2de)](_0xa04146,_0x2023b3['perio'+'d']):{};return{'startDate':_0x421280[_0x2017c3(0xa05)+_0x2017c3(0x479)]||_0x5ca925[_0x2017c3(0xa05)+_0x2017c3(0x479)],'endDate':_0x421280[_0x2017c3(0x904)+'te']||_0x329084[_0x2017c3(0x904)+'te'],'limit':_0x933b5b[_0x2017c3(0x7d5)](_0x21ce3f[_0x2017c3(0x896)](_0x230e81,_0x557e87[_0x2017c3(0x20d)])||0xa,0x64),'source':_0x428023[_0x2017c3(0x5ea)+'e'],'category':_0x5aa861['categ'+_0x2017c3(0x78f)],'store':_0x4b5af8['store']};}else{const _0x59c693=await oauthManager[_0x2017c3(0xe0)+_0x2017c3(0xda)+_0x2017c3(0x612)]();if(_0x59c693&&_0x59c693[_0x2017c3(0x24a)+'eCode']){if(oauthManager['isAut'+_0x2017c3(0x838)+_0x2017c3(0x87f)+_0x2017c3(0xd6)](_0x59c693))console[_0x2017c3(0x617)](_0x21ce3f[_0x2017c3(0x4f3)]),await oauthManager[_0x2017c3(0x314)+_0x2017c3(0x69c)+_0x2017c3(0x4b6)]();else try{const _0x1a51c4=await oauthManager[_0x2017c3(0x1ea)+_0x2017c3(0x780)+_0x2017c3(0x693)+'e'](_0x59c693['devic'+_0x2017c3(0x3c2)]);if(_0x1a51c4){const _0xfc8f84=_0x21ce3f[_0x2017c3(0xa9)][_0x2017c3(0x3b6)]('|');let _0xeba126=0x0;while(!![]){switch(_0xfc8f84[_0xeba126++]){case'0':tokenExpireTime=_0x1a51c4['expir'+_0x2017c3(0x6f0)];continue;case'1':await oauthManager['clear'+_0x2017c3(0x69c)+_0x2017c3(0x4b6)]();continue;case'2':authState['isAut'+_0x2017c3(0x181)+'ed']=!![];continue;case'3':_0x21ce3f[_0x2017c3(0x770)](setCachedToken,_0x1a51c4[_0x2017c3(0x63d)+_0x2017c3(0x187)+'n']);continue;case'4':await oauthManager[_0x2017c3(0x2df)+'Stora'+'ge'][_0x2017c3(0x7e4)+'gentN'+_0x2017c3(0x51f)](_0x21ce3f['rgXHT']);continue;case'5':await oauthManager[_0x2017c3(0x2df)+'Stora'+'ge'][_0x2017c3(0x53c)+_0x2017c3(0xa30)+'Code'](_0x59c693['devic'+_0x2017c3(0x3c2)]);continue;case'6':await oauthManager[_0x2017c3(0x2df)+_0x2017c3(0x4f0)+'ge']['save'](_0x1a51c4);continue;case'7':console[_0x2017c3(0x617)](_0x21ce3f['BzAAo']);continue;case'8':throw new Error('AUTH_'+_0x2017c3(0x473)+_0x2017c3(0x46e)+_0x2017c3(0x1a7)+_0x21ce3f['ExYTV'](getCachedToken));continue;}break;}}authState['devic'+_0x2017c3(0x3c2)]=_0x59c693[_0x2017c3(0x24a)+'eCode'],authState['userC'+_0x2017c3(0x464)]=_0x59c693[_0x2017c3(0x302)+_0x2017c3(0x464)];throw new Error('NEED_'+_0x2017c3(0x4c1)+_0x59c693[_0x2017c3(0x302)+_0x2017c3(0x464)]);}catch(_0x521916){if(_0x521916['messa'+'ge'][_0x2017c3(0xa05)+'sWith'](_0x2017c3(0x42b)+_0x2017c3(0x4c1))||_0x521916[_0x2017c3(0x715)+'ge']['start'+_0x2017c3(0x7a3)](_0x21ce3f[_0x2017c3(0x11d)])){if(_0x21ce3f['Sttct'](_0x2017c3(0x2fd),_0x21ce3f['Rrquo']))return new _0x3ec71e(_0x18bf91)[_0x2017c3(0xa0e)+'me']();else throw _0x521916;}console[_0x2017c3(0x617)]('⚠️\x20\x20检查'+_0x2017c3(0x561)+'败:',_0x521916[_0x2017c3(0x715)+'ge']);}}await _0x21ce3f[_0x2017c3(0x5ee)](startAuthFlow);throw new Error(_0x2017c3(0x42b)+'AUTH:'+(authState[_0x2017c3(0x302)+'ode']||_0x21ce3f[_0x2017c3(0x1f6)]));}}if(!oauthManager)throw new Error(_0x21ce3f['wsYDj']);try{const _0x9ea9da=await oauthManager['getVa'+_0x2017c3(0x5e8)+_0x2017c3(0x8ea)]();return _0x21ce3f['tyfNd'](setCachedToken,_0x9ea9da['acces'+_0x2017c3(0x187)+'n']),tokenExpireTime=_0x9ea9da[_0x2017c3(0x6bf)+'esAt'],lastRefreshTime=Date[_0x2017c3(0x104)](),await oauthManager['clear'+_0x2017c3(0x69c)+_0x2017c3(0x4b6)](),_0x21ce3f['JWxpJ'](getCachedToken);}catch(_0x36def6){authState['isAut'+_0x2017c3(0x181)+'ed']=![],authState[_0x2017c3(0x58f)+_0x2017c3(0x29d)]=![],await _0x21ce3f[_0x2017c3(0x5ee)](startAuthFlow);throw new Error(_0x2017c3(0x42b)+'AUTH:'+(authState[_0x2017c3(0x302)+_0x2017c3(0x464)]||_0x2017c3(0x4e7)+'证码'));}}async function callMcpPrompt(_0x7186b8,_0x44ca21,_0x5c4ecc){const _0xf27dc1=_0x2dbe2,_0x82919a={'uAsYV':_0xf27dc1(0x5ce)+_0xf27dc1(0x51b)+_0xf27dc1(0x6db)+_0xf27dc1(0x67d)+'授权','UsvJC':function(_0x5ed860,_0x5ff9d4,_0x1914b9){return _0x5ed860(_0x5ff9d4,_0x1914b9);},'IeTdu':_0xf27dc1(0x3bf)+'catio'+_0xf27dc1(0x19e)+'n','ZNAmO':function(_0x56fa75,_0x1f0d95){return _0x56fa75!==_0x1f0d95;},'YlpPt':_0xf27dc1(0x2f4),'tUCKE':_0xf27dc1(0x6cb)},_0x3b1bd5={};_0x3b1bd5[_0xf27dc1(0x14c)]=_0x7186b8,_0x3b1bd5[_0xf27dc1(0x46b)+'s']=_0x44ca21;const _0x3fd87b=await _0x82919a[_0xf27dc1(0x9ce)](fetch,MCP_PROMPT_URL,{'method':'POST','headers':{'Content-Type':_0x82919a[_0xf27dc1(0x416)],'Authorization':_0xf27dc1(0x191)+'r\x20'+_0x5c4ecc},'body':JSON[_0xf27dc1(0x20c)+_0xf27dc1(0x222)](_0x3b1bd5)});if(!_0x3fd87b['ok']){if(_0x82919a[_0xf27dc1(0xa0)](_0x82919a['YlpPt'],_0x82919a['tUCKE'])){const _0x3433dd=await _0x3fd87b[_0xf27dc1(0x830)]();throw new Error(_0xf27dc1(0x7e6)+_0xf27dc1(0x2aa)+_0xf27dc1(0xa2a)+'\x20'+_0x3433dd);}else _0x3b9181[_0xf27dc1(0x617)](sTqsiO[_0xf27dc1(0x5de)]);}return await _0x3fd87b['json']();}function generateSignature(_0x1546ce,_0x3d490a,_0x42c858){const _0x52d75a=_0x2dbe2,_0x492794={};_0x492794[_0x52d75a(0x12b)]=function(_0x503195,_0x5cda25){return _0x503195+_0x5cda25;},_0x492794[_0x52d75a(0x26d)]=_0x52d75a(0x8ae);const _0x4d70e8=_0x492794,_0x3af257=_0x4d70e8[_0x52d75a(0x12b)](JSON[_0x52d75a(0x20c)+_0x52d75a(0x222)](_0x1546ce),_0x3d490a);return crypto[_0x52d75a(0x269)+_0x52d75a(0x344)]('sha25'+'6',_0x42c858)[_0x52d75a(0x277)+'e'](_0x3af257)[_0x52d75a(0x57a)+'t'](_0x4d70e8['mzFGW']);}async function logMcpCall(_0x55a374){const _0x46e9de=_0x2dbe2,_0x41e27f={'lpwao':_0x46e9de(0x3d8)+',已省略]','FMrHR':function(_0xeffdd,_0x1e3fbc){return _0xeffdd-_0x1e3fbc;},'NeNSI':_0x46e9de(0x309),'ppgAS':_0x46e9de(0x6dd)+_0x46e9de(0x2ac)+'失败:','rbqyP':_0x46e9de(0x668),'zksnS':_0x46e9de(0x750)+_0x46e9de(0x80c),'NtJim':function(_0x598d1c,_0x6d4edf,_0x4c654c,_0x4c4524){return _0x598d1c(_0x6d4edf,_0x4c654c,_0x4c4524);},'cBZZb':_0x46e9de(0x609),'JTHXA':_0x46e9de(0x3bf)+_0x46e9de(0x30b)+_0x46e9de(0x19e)+'n','LOGDy':function(_0x8ba5e7){return _0x8ba5e7();},'BcZmx':function(_0x77bd3,_0x53d88f){return _0x77bd3!==_0x53d88f;},'Lsvos':'QFZrP','aXUYH':_0x46e9de(0x6dd)+_0x46e9de(0x2ac)+'异常:'};try{if(_0x46e9de(0x668)!==_0x41e27f[_0x46e9de(0x9a7)]){const _0x3cd9b3=_0x281b95[_0x46e9de(0x20c)+_0x46e9de(0x222)](_0x112820,null,0x2);if(_0x3cd9b3['lengt'+'h']>_0x123500){const _0x28d821={..._0x558b9d};return _0x28d821[_0x46e9de(0x2e6)]=_0x41e27f[_0x46e9de(0x3f3)],_0x28d821[_0x46e9de(0x662)]=_0x46e9de(0x96f)+'小:'+_0x3cd9b3['lengt'+'h']+_0x46e9de(0x98d),_0x4eb37a['strin'+'gify'](_0x28d821,null,0x2);}return _0x3cd9b3;}else{const _0x2b6dfa={};_0x2b6dfa[_0x46e9de(0x14c)]=_0x41e27f[_0x46e9de(0x544)],_0x2b6dfa[_0x46e9de(0x46b)+'s']=_0x55a374;const _0x45a1e6=_0x2b6dfa,_0x33bbfc=Date[_0x46e9de(0x104)]()[_0x46e9de(0x1f4)+_0x46e9de(0x15f)](),_0x41a8a0=_0x41e27f['NtJim'](generateSignature,_0x45a1e6,_0x33bbfc,CHAIMI_API_SECRET);fetch(MCP_HUB_URL,{'method':_0x41e27f[_0x46e9de(0x9f4)],'headers':{'Content-Type':_0x41e27f['JTHXA'],'Authorization':'Beare'+'r\x20'+await _0x41e27f['LOGDy'](getToken),'X-Chaimi-Signature':_0x41a8a0,'X-Chaimi-Timestamp':_0x33bbfc},'body':JSON[_0x46e9de(0x20c)+_0x46e9de(0x222)](_0x45a1e6)})[_0x46e9de(0x1cf)](_0x4eaabf=>{const _0x3d5540=_0x46e9de,_0x690f59={'rxfTz':function(_0x20c0fe,_0x1d83aa){return _0x41e27f['FMrHR'](_0x20c0fe,_0x1d83aa);}};if(_0x3d5540(0x309)!==_0x41e27f[_0x3d5540(0x67b)]){const [_0x4d54a5,_0x2b4b99,_0x29429e]=_0x51d911['split']('-')[_0x3d5540(0x8e0)](_0x79d723);return new _0x3c8c06(_0x4d54a5,_0x690f59[_0x3d5540(0x58a)](_0x2b4b99,0x1),_0x29429e,0xc,0x0,0x0)['getTi'+'me']();}else console['error'](_0x41e27f[_0x3d5540(0x8b0)],_0x4eaabf[_0x3d5540(0x715)+'ge']);});}}catch(_0x8f318c){if(_0x41e27f['BcZmx'](_0x46e9de(0x753),_0x41e27f[_0x46e9de(0xc0)]))console[_0x46e9de(0x617)](_0x41e27f[_0x46e9de(0x79c)],_0x8f318c[_0x46e9de(0x715)+'ge']);else throw _0x191ae4;}}function generateTraceId(){const _0x5d90e4=_0x2dbe2;return _0x5d90e4(0x903)+'_'+Date[_0x5d90e4(0x104)]()+'_'+Math['rando'+'m']()['toStr'+_0x5d90e4(0x15f)](0x24)[_0x5d90e4(0x7f4)+'r'](0x2,0x9);}function getOSInfo(){const _0x13b638=_0x2dbe2;return{'osType':process[_0x13b638(0x5cf)+_0x13b638(0xa3f)],'osVersion':os[_0x13b638(0x29a)+'se']()};}async function callMcpHubWithLogging(_0x43c0bc,_0x2fbeb4,_0x2f50bc,_0x4409b1,_0x4f4f33,_0x595af8,_0x5ab166,_0x52d6c9){const _0x1b9c2e=_0x2dbe2,_0x29e9f4={'HqJcS':function(_0x35fdea,_0x35ae7a){return _0x35fdea(_0x35ae7a);},'ttkSi':'doten'+'v','WTcNE':function(_0x4a8e72,_0x5d4e4e){return _0x4a8e72||_0x5d4e4e;},'CGBLb':function(_0x132ad0,_0x36b4ef,_0x473fa9,_0xab6df4,_0x4706fb,_0x3c52ec){return _0x132ad0(_0x36b4ef,_0x473fa9,_0xab6df4,_0x4706fb,_0x3c52ec);},'YmkoE':function(_0x57e1de,_0x280a79){return _0x57e1de===_0x280a79;},'QzjYU':_0x1b9c2e(0x4d3)+_0x1b9c2e(0x760)+_0x1b9c2e(0x88e)+_0x1b9c2e(0x366),'EoNrV':function(_0x1a4eb2){return _0x1a4eb2();},'VQSZT':function(_0x87d2dd){return _0x87d2dd();},'akMjW':'等待生成验'+'证码','HBizX':function(_0x2fc85b,_0x1497a4){return _0x2fc85b!==_0x1497a4;},'TDfLF':_0x1b9c2e(0xa10)},_0x40e72d={..._0x2fbeb4,'agentType':_0x5ab166||'','apiProvider':_0x29e9f4[_0x1b9c2e(0x56b)](_0x52d6c9,'')};try{const _0x508b24=await _0x29e9f4['CGBLb'](callMcpHub,_0x43c0bc,_0x40e72d,_0x2f50bc,_0x4409b1,_0x595af8);if(!_0x508b24[_0x1b9c2e(0x8ce)+'ss']&&_0x29e9f4[_0x1b9c2e(0x238)](_0x508b24['code'],0x191)){console[_0x1b9c2e(0x617)](_0x29e9f4[_0x1b9c2e(0x91)]),_0x29e9f4[_0x1b9c2e(0x75e)](clearCachedToken),await oauthManager[_0x1b9c2e(0x314)+_0x1b9c2e(0x69c)+_0x1b9c2e(0x4b6)](),await _0x29e9f4['VQSZT'](startAuthFlow);throw new Error(_0x1b9c2e(0x42b)+_0x1b9c2e(0x4c1)+(authState[_0x1b9c2e(0x302)+_0x1b9c2e(0x464)]||_0x29e9f4[_0x1b9c2e(0x1fc)]));}return _0x508b24;}catch(_0x790f33){if(_0x29e9f4[_0x1b9c2e(0x882)](_0x29e9f4[_0x1b9c2e(0x58d)],_0x29e9f4[_0x1b9c2e(0x58d)]))iGTypH[_0x1b9c2e(0x94b)](_0x4b978d,iGTypH[_0x1b9c2e(0x9fa)])[_0x1b9c2e(0x4af)+'g']();else throw _0x790f33;}}async function callMcpHub(_0x4c8a88,_0x1053f3,_0x2dcf7e,_0xc800ab,_0x217fe6){const _0x26f0e4=_0x2dbe2,_0x21c6b8={'eUoSY':function(_0x3e01c4,_0x807e3b,_0x215f81,_0x179b06){return _0x3e01c4(_0x807e3b,_0x215f81,_0x179b06);},'infOn':function(_0x5d76e8,_0x8a9162,_0x4d7616){return _0x5d76e8(_0x8a9162,_0x4d7616);},'ITnlK':_0x26f0e4(0x609),'cJaEM':_0x26f0e4(0x3bf)+'catio'+_0x26f0e4(0x19e)+'n'},_0x3d5d16={..._0x1053f3};_0x3d5d16[_0x26f0e4(0x7fa)+_0x26f0e4(0xd0)]=_0xc800ab,_0x3d5d16['osTyp'+'e']=_0x217fe6?.[_0x26f0e4(0x92a)+'e'],_0x3d5d16[_0x26f0e4(0x631)+'sion']=_0x217fe6?.[_0x26f0e4(0x631)+_0x26f0e4(0xcb)];const _0x4df3ba={};_0x4df3ba[_0x26f0e4(0x14c)]=_0x4c8a88,_0x4df3ba[_0x26f0e4(0x46b)+'s']=_0x3d5d16;const _0xeb0b09=_0x4df3ba,_0x446f06=Date['now']()[_0x26f0e4(0x1f4)+'ing'](),_0x1f878e=_0x21c6b8[_0x26f0e4(0x644)](generateSignature,_0xeb0b09,_0x446f06,CHAIMI_API_SECRET),_0x6e4e90=await _0x21c6b8[_0x26f0e4(0x6c0)](fetch,MCP_HUB_URL,{'method':_0x21c6b8['ITnlK'],'headers':{'Content-Type':_0x21c6b8[_0x26f0e4(0x95f)],'Authorization':_0x26f0e4(0x191)+'r\x20'+_0x2dcf7e,'X-Chaimi-Signature':_0x1f878e,'X-Chaimi-Timestamp':_0x446f06},'body':JSON[_0x26f0e4(0x20c)+'gify'](_0xeb0b09)});if(!_0x6e4e90['ok']){const _0x401c32=await _0x6e4e90[_0x26f0e4(0x830)]();throw new Error('mcpHu'+_0x26f0e4(0x28f)+_0x26f0e4(0x66f)+_0x401c32);}return await _0x6e4e90['json']();}const SKILL_READ_LOG_PATH=path[_0x2dbe2(0x449)](os['homed'+'ir'](),_0x2dbe2(0x501)+_0x2dbe2(0x3ee)+'p',_0x2dbe2(0x1fb)+_0x2dbe2(0x7a7)+_0x2dbe2(0x3d5)),SKILL_VALID_DURATION=0x5*0x3c*0x3e8;function getLastSkillReadTime(){const _0x19f491=_0x2dbe2,_0x4fda13={};_0x4fda13[_0x19f491(0x18b)]=_0x19f491(0x5ce)+_0x19f491(0x51b)+_0x19f491(0x6db)+',需要重新'+'授权',_0x4fda13[_0x19f491(0x9d2)]=function(_0x37c4f9,_0x508abb){return _0x37c4f9===_0x508abb;},_0x4fda13['cmkbe']=_0x19f491(0x8d3),_0x4fda13[_0x19f491(0x6a6)]=_0x19f491(0x969),_0x4fda13[_0x19f491(0x684)]=_0x19f491(0x98e)+_0x19f491(0x47f)+_0x19f491(0x215);const _0x20e239=_0x4fda13;try{if(_0x20e239['vZChD'](_0x20e239[_0x19f491(0x8fc)],_0x20e239['pNHPx']))_0x25edec[_0x19f491(0x617)](TAwFDo[_0x19f491(0x18b)]);else{if(fs[_0x19f491(0x6b5)+'sSync'](SKILL_READ_LOG_PATH)){const _0x266d89=JSON[_0x19f491(0x93d)](fs['readF'+_0x19f491(0x81f)+'nc'](SKILL_READ_LOG_PATH,_0x19f491(0x218)));return _0x266d89['lastR'+_0x19f491(0x980)+'me']||0x0;}}}catch(_0x1bda9d){console['error'](_0x20e239[_0x19f491(0x684)],_0x1bda9d);}return 0x0;}function recordSkillRead(){const _0x3488c8=_0x2dbe2,_0x4051f3={};_0x4051f3[_0x3488c8(0x589)]=_0x3488c8(0x891)+_0x3488c8(0x52a)+_0x3488c8(0x9d4);const _0x4c50bb=_0x4051f3;try{const _0x1bc08e=path[_0x3488c8(0x7c8)+'me'](SKILL_READ_LOG_PATH);if(!fs[_0x3488c8(0x6b5)+_0x3488c8(0x776)](_0x1bc08e)){const _0x3df6c1={};_0x3df6c1[_0x3488c8(0x42a)+_0x3488c8(0x195)]=!![],fs[_0x3488c8(0x400)+_0x3488c8(0x16b)](_0x1bc08e,_0x3df6c1);}fs[_0x3488c8(0x849)+_0x3488c8(0x3d7)+_0x3488c8(0x6cf)](SKILL_READ_LOG_PATH,JSON[_0x3488c8(0x20c)+_0x3488c8(0x222)]({'lastReadTime':Date[_0x3488c8(0x104)](),'readAt':new Date()['toISO'+_0x3488c8(0x9e9)+'g']()},null,0x2));}catch(_0x12c202){console[_0x3488c8(0x617)](_0x4c50bb[_0x3488c8(0x589)],_0x12c202);}}server[_0x2dbe2(0x603)+_0x2dbe2(0x315)+_0x2dbe2(0xa17)+'er'](CallToolRequestSchema,async _0x3c2936=>{const _0x251974=_0x2dbe2,_0x204ba2={'pmVEb':_0x251974(0x509)+']\x20检测失'+'败:','EUIoW':_0x251974(0x5f3)+'t','ndQnu':_0x251974(0x11a),'kpNOB':'quant'+_0x251974(0x8d5),'kLqQk':_0x251974(0x218),'IRwxL':function(_0x210fe2,_0x38c5f7){return _0x210fe2(_0x38c5f7);},'KgiBD':_0x251974(0x86e)+_0x251974(0xa14)+'t','ZjGJc':'actua'+_0x251974(0x4df)+'nt','LAjHv':_0x251974(0x821)+_0x251974(0x9f2)+_0x251974(0x481),'NHYFv':_0x251974(0x5e9)+'untAm'+_0x251974(0x481),'AjeLl':_0x251974(0x8ef),'GGVKN':function(_0x463952,_0x60ff21){return _0x463952===_0x60ff21;},'dCWMr':_0x251974(0xf8),'nplPu':_0x251974(0x2be),'KfHSq':function(_0x3f8792,_0x38335b){return _0x3f8792 in _0x38335b;},'Xsfrt':_0x251974(0x283)+'r','gutOM':function(_0xb3ec62,_0x59ce36){return _0xb3ec62(_0x59ce36);},'jXvdj':_0x251974(0x973),'cTcKa':function(_0x2d35ca,_0x1cd1f6){return _0x2d35ca!==_0x1cd1f6;},'CHaoL':function(_0x511b29,_0x28b1f5){return _0x511b29===_0x28b1f5;},'Plqvl':_0x251974(0x6dc)+_0x251974(0x78f),'qoHUF':_0x251974(0x42b)+_0x251974(0x4c1),'hhnjA':_0x251974(0xfc)+_0x251974(0x473)+_0x251974(0x46e)+_0x251974(0x1a7),'tnSii':_0x251974(0x2f6)+'授权状态失'+'败:','yttov':function(_0xf77b2f,_0x292cb1){return _0xf77b2f+_0x292cb1;},'skRpG':_0x251974(0x7f1)+'察:','uIKZq':_0x251974(0x3fa)+_0x251974(0x4ad)+_0x251974(0x237)+_0x251974(0x483)+_0x251974(0x3ca)+_0x251974(0x6a0),'HZhQV':_0x251974(0x8a9)+'I记账\x20M'+_0x251974(0x19c)+_0x251974(0x375)+'-\x20首次使'+_0x251974(0x9e6),'uHkoX':_0x251974(0x7ae)+'点击\x22我的'+'\x22\x20→\x20\x22'+_0x251974(0x64e)+'\x20授权\x22','tiMmY':_0x251974(0x4cb)+'柴米AI记'+_0x251974(0x157)+_0x251974(0x3c5)+':','gtbtQ':'\x20\x201.\x20'+'打开\x22柴米'+_0x251974(0x80e)+_0x251974(0x95a),'eEVVX':_0x251974(0x20c)+'g','gPncA':_0x251974(0x388)+'Skill'+_0x251974(0x246)+'检查安装是'+_0x251974(0x877),'HCiEG':_0x251974(0x3a1),'OBIfF':function(_0x319049,_0x207e47){return _0x319049===_0x207e47;},'krEYk':function(_0x2ebc8d,_0x2f900f){return _0x2ebc8d===_0x2f900f;},'dXwrq':'produ'+'ctCat'+'egory','RrdBg':function(_0x4fa5dd,_0xdcdda6){return _0x4fa5dd>_0xdcdda6;},'uYESs':'SPPBc','uHghS':_0x251974(0x9bd),'HQfoS':_0x251974(0x135)+_0x251974(0x4f9)+_0x251974(0x72b)+'败:','wzqoL':function(_0x4de444,_0x153bb8){return _0x4de444+_0x153bb8;},'ZCZAY':'...','LGiTw':function(_0x3c0cd6,_0x4d69ca){return _0x3c0cd6(_0x4d69ca);},'IjAJH':_0x251974(0x167)+_0x251974(0x9db),'TPEuI':function(_0x512dd3,_0x258ff0,_0x36860c){return _0x512dd3(_0x258ff0,_0x36860c);},'QagTq':_0x251974(0x865)+'2:','LaeIe':_0x251974(0x3d8)+_0x251974(0x328),'wymEf':_0x251974(0x14a)+'id','BncTH':'❌\x20授权失'+'败:','AjuLA':function(_0x288e66,_0xc99ff5){return _0x288e66===_0xc99ff5;},'ODbAO':_0x251974(0x993),'WYKGs':_0x251974(0x276),'TWKEf':_0x251974(0x79d)+_0x251974(0x31c)+_0x251974(0x61c)+'失败:','eRkYh':function(_0x154164,_0x32496c){return _0x154164(_0x32496c);},'AMLgR':function(_0x531809,_0xfd0ed3){return _0x531809<=_0xfd0ed3;},'ZdiwF':function(_0x599942,_0x57958b){return _0x599942*_0x57958b;},'udnSx':_0x251974(0x865)+'1:','aneqr':function(_0x2c6971,_0x225adf){return _0x2c6971<_0x225adf;},'FMeoD':function(_0x580e1a,_0x27e682){return _0x580e1a^_0x27e682;},'aLCRe':function(_0x19f4fb,_0x203adb){return _0x19f4fb%_0x203adb;},'FcHUb':function(_0xe67e56,_0x51cbfb){return _0xe67e56/_0x51cbfb;},'iOlpe':function(_0xa07f42,_0x44b85e){return _0xa07f42+_0x44b85e;},'ahYgT':function(_0x10a6e0,_0x14c1fb){return _0x10a6e0-_0x14c1fb;},'VUSCc':_0x251974(0x502)+_0x251974(0x3b2)+_0x251974(0x772)+_0x251974(0x3c8)+_0x251974(0x819)+_0x251974(0x757)+'md','uqCSf':_0x251974(0x316),'ANwdm':function(_0x1ebdd4,_0x437f51){return _0x1ebdd4+_0x437f51;},'KqJHa':function(_0x3d3f01,_0x30ba83){return _0x3d3f01>_0x30ba83;},'HGNzi':'数据序列化'+'失败','CMnYu':function(_0x177fd0){return _0x177fd0();},'MMqyr':function(_0xaddcb4){return _0xaddcb4();},'FcOaE':function(_0x2d6a9a,_0x4600a9){return _0x2d6a9a(_0x4600a9);},'QzWCB':function(_0x40136d,_0x46eb02){return _0x40136d<_0x46eb02;},'khdYI':_0x251974(0x830),'nhjID':function(_0x3d59f9,_0x5e8415){return _0x3d59f9===_0x5e8415;},'epzOW':'save_'+_0x251974(0x5c6)+'se','SybDm':_0x251974(0xf1)+_0x251974(0x625)+'pt','kEewj':function(_0x4eab19,_0x2b1265){return _0x4eab19===_0x2b1265;},'UXXzG':_0x251974(0x2e7)+_0x251974(0x192)+_0x251974(0x2b8),'daUPX':_0x251974(0x650)+_0x251974(0xa8)+_0x251974(0x428)+'ill\x20定'+_0x251974(0x9d3)+_0x251974(0x73a)+_0x251974(0x1b0)+_0x251974(0x6ec)+_0x251974(0x806)+'kill`'+_0x251974(0x5c7)+'最新\x20Sk'+_0x251974(0x4ae)+_0x251974(0x4c7)+_0x251974(0x7f2)+'操作:\x0a1'+'.\x20调用\x20'+_0x251974(0x6c9)+'skill'+_0x251974(0x236)+_0x251974(0x964)+_0x251974(0x166)+_0x251974(0x203)+'l\x20文档\x0a'+_0x251974(0x52d)+_0x251974(0x43c)+_0x251974(0x4ae)+_0x251974(0x7bc)+'操作\x0a\x0a⚠️'+_0x251974(0x425)+'为了确保你'+_0x251974(0x92)+_0x251974(0x265)+_0x251974(0x921)+_0x251974(0x9a8)+_0x251974(0x857),'yWRIG':_0x251974(0xb4),'Odgwl':function(_0x206de3){return _0x206de3();},'xfSJJ':function(_0x34199b,_0x209b89){return _0x34199b!==_0x209b89;},'WJrYY':'XlHUi','tJAzp':function(_0x52b265,_0x156b08,_0x35ae70){return _0x52b265(_0x156b08,_0x35ae70);},'Selvh':_0x251974(0x806)+_0x251974(0x8d2),'FyLeZ':'LFSSj','lhErn':_0x251974(0x9b7),'OSjRk':function(_0x79551c){return _0x79551c();},'YuomN':_0x251974(0x7ee)+_0x251974(0x8ca),'ygsAX':function(_0x31230b,_0x2d6875){return _0x31230b!==_0x2d6875;},'FhQmX':'HxIqj','VfyvY':function(_0x4521e2,_0x55be1f){return _0x4521e2===_0x55be1f;},'VQVEp':function(_0x56633a,_0x55b9ee){return _0x56633a===_0x55b9ee;},'ouBsZ':_0x251974(0x372)+_0x251974(0xa2c)+'SKILL'+'.md\x20中'+_0x251974(0x8eb)+_0x251974(0x5f2)+_0x251974(0x354)+'2.运行\x20'+_0x251974(0x6f7)+_0x251974(0x242)+_0x251974(0x924)+'米AI记账'+'\x20--sc'+_0x251974(0x1f7)+'查看完整参'+_0x251974(0x652),'hbkcl':function(_0x2d1152,_0x207f04){return _0x2d1152<=_0x207f04;},'sTzFl':_0x251974(0x5f8)+'正数','jZEJt':_0x251974(0x650)+'败:金额必'+'须是正数','UFIuQ':'RNiud','LBTDJ':_0x251974(0x447),'UQpKw':function(_0x298737,_0x7cab4d){return _0x298737-_0x7cab4d;},'rCpyb':function(_0x3fd586,_0x391fae){return _0x3fd586<_0x391fae;},'cZPyg':_0x251974(0xe4),'HdOlQ':function(_0x1dd12c,_0x2cd6d7){return _0x1dd12c||_0x2cd6d7;},'QhHsG':function(_0x37aaab,_0x1715a3,_0x3afe85,_0x1cde4e,_0x3300c0,_0x294a25,_0xc0d4c1,_0x491a31,_0x7d62b9){return _0x37aaab(_0x1715a3,_0x3afe85,_0x1cde4e,_0x3300c0,_0x294a25,_0xc0d4c1,_0x491a31,_0x7d62b9);},'iPzoZ':_0x251974(0x280)+_0x251974(0x419),'kUVSK':_0x251974(0x525),'JdvfA':'用餐愉快!'+'🍚\x20/\x20好'+_0x251974(0x971),'PIaJY':'出行顺利!'+'🚗','Oselb':_0x251974(0x6df)+_0x251974(0x4a4),'qDaUv':'记账完成!'+_0x251974(0xa07)+'\x20✨','zORdl':'ItQuG','hGdPa':function(_0x201972,_0xb8ec00){return _0x201972!==_0xb8ec00;},'DzGhz':_0x251974(0x7f0),'ehdsg':function(_0x451120,_0xaac5c0){return _0x451120+_0xaac5c0;},'YYLfi':_0x251974(0xcc)+_0x251974(0x77c)+_0x251974(0x555)+_0x251974(0x2cc)+_0x251974(0x4cd)+_0x251974(0x1b6)+_0x251974(0x97d)+_0x251974(0x7f9)+_0x251974(0x512)+_0x251974(0x282),'INkZc':function(_0x115e44){return _0x115e44();},'BANfi':_0x251974(0x133),'bFNkN':_0x251974(0x78e),'GhZDV':_0x251974(0x837),'ktdNE':_0x251974(0x837)+'Categ'+_0x251974(0x78f),'Sjatc':_0x251974(0x837)+_0x251974(0x710)+_0x251974(0x731)+'y','GzJWW':function(_0x100f0a,_0xfe623f){return _0x100f0a!==_0xfe623f;},'yAkhq':_0x251974(0x6e6),'zWaMr':'ZewCY','EzQtH':function(_0x3ec860,_0x56223e){return _0x3ec860===_0x56223e;},'iIrAI':function(_0x57531f,_0x5c1bb1){return _0x57531f===_0x5c1bb1;},'roGcG':_0x251974(0x146)+_0x251974(0x486)+_0x251974(0x702)+_0x251974(0x895)+_0x251974(0x3ba),'sczVJ':function(_0x541b2d,_0x33d6d8){return _0x541b2d===_0x33d6d8;},'bPeoq':'ljVsq','xOqla':function(_0x3b9c78,_0x20841f){return _0x3b9c78<_0x20841f;},'ueHjb':function(_0x3a24f8,_0x5bc04e){return _0x3a24f8!==_0x5bc04e;},'jByDY':_0x251974(0x5ed),'xxrbR':'disco'+_0x251974(0x1fd)+'ount\x20'+'必须是非负'+'数','EQWbu':_0x251974(0x7b9)+_0x251974(0x3fe)+_0x251974(0x1a5)+'负数','UawaC':'items'+_0x251974(0x325)+',必须包含'+_0x251974(0x395)+'品','NYRaP':_0x251974(0x7b9)+'败:商品列'+_0x251974(0x556)+_0x251974(0x329)+'确保从\x20g'+_0x251974(0x979)+_0x251974(0x645)+'rompt'+'\x20的解析结'+_0x251974(0x3f6)+_0x251974(0x3c9)+'ems\x20数'+'组','Wlbwt':function(_0x4dbefc,_0x10c584){return _0x4dbefc>_0x10c584;},'vjAfx':function(_0x19d5a2,_0x44bcca){return _0x19d5a2||_0x44bcca;},'DGDvW':function(_0x51f573,_0x3e4725){return _0x51f573===_0x3e4725;},'TVoaA':function(_0x1a38b6,_0x721748){return _0x1a38b6===_0x721748;},'CjAmY':_0x251974(0x4ba),'llBOe':_0x251974(0x4db)+_0x251974(0x4d6)+'nents'+'\x20不完整','uvCzc':'必须包含:'+_0x251974(0x17f)+_0x251974(0x4ce)+'、day、'+_0x251974(0x1c5)+_0x251974(0x2d4)+'e','gHPbI':_0x251974(0x7b9)+_0x251974(0x9e4)+_0x251974(0x17d)+'\x0a请确保\x20'+'date_'+_0x251974(0x4d6)+'nents'+_0x251974(0x8d8)+'的年月日时'+'分秒','iVSPk':function(_0x3256d0,_0x124773){return _0x3256d0||_0x124773;},'CSfRk':_0x251974(0x4bd),'faMPr':function(_0x5dd2a4,_0x4d1974){return _0x5dd2a4!==_0x4d1974;},'UJsnS':_0x251974(0x40b),'zNhrf':_0x251974(0x158)+_0x251974(0x6a5)+'正确','CYFpD':'payme'+_0x251974(0x846)+_0x251974(0x5b1),'XoXFt':function(_0x327def,_0x14ab7a){return _0x327def!==_0x14ab7a;},'AcLtf':_0x251974(0x95b),'hwFnr':function(_0x51482a,_0x140993){return _0x51482a===_0x140993;},'rvCSj':function(_0xee8f0d,_0x3dfd38){return _0xee8f0d===_0x3dfd38;},'wKmgG':function(_0x7f34b3,_0x7abe64,_0x118957,_0x296778){return _0x7f34b3(_0x7abe64,_0x118957,_0x296778);},'tXaxp':'parse'+'Recei'+'pt','lfpcQ':_0x251974(0x44d),'daddr':function(_0x5aaeef,_0x3007cc){return _0x5aaeef!==_0x3007cc;},'QoPeb':function(_0x516381,_0x5cd10c){return _0x516381!==_0x5cd10c;},'tglni':_0x251974(0x83a),'uOCHv':_0x251974(0x717),'bVERA':function(_0x251b98,_0x35434a){return _0x251b98>_0x35434a;},'SxVZi':function(_0x11d9e4,_0x4ed2ab){return _0x11d9e4-_0x4ed2ab;},'klzrr':'SJbiK','UuMWm':_0x251974(0x155)+_0x251974(0x205)+'ts','fmyKH':function(_0x3ca765,_0x40d522){return _0x3ca765||_0x40d522;},'sLrIH':'addRe'+_0x251974(0x4a3),'JoJVO':_0x251974(0xa5)+'🍚','BYuAW':function(_0x315bf8,_0x1597a4){return _0x315bf8!==_0x1597a4;},'slpLo':_0x251974(0x560),'kZScV':function(_0x177d85,_0x9f93f4){return _0x177d85+_0x9f93f4;},'kSMbz':function(_0x282fc5,_0x1385f7){return _0x282fc5===_0x1385f7;},'hpVYY':_0x251974(0xf3),'fvbtJ':function(_0x3e978e,_0xac2e45){return _0x3e978e+_0xac2e45;},'oaGOi':'请使用re'+'feren'+_0x251974(0x555)+'espon'+'se-te'+'mplat'+_0x251974(0x97d)+_0x251974(0x578)+_0x251974(0x3be)+_0x251974(0x282),'hwvpp':_0x251974(0x143)+_0x251974(0x10d)+'es','QYDEO':_0x251974(0x8c9)+'eceip'+_0x251974(0x5f1)+'t','IExSM':function(_0x231738,_0x1937dd){return _0x231738===_0x1937dd;},'WDqHg':'SYzEH','IcnPK':function(_0x141e73,_0x3374d3,_0x4e39cf){return _0x141e73(_0x3374d3,_0x4e39cf);},'xjngC':function(_0x39b757,_0x4a189d,_0x45efd8,_0x5e874f,_0x53608f,_0x2f9426,_0x365598,_0x5cf1e2,_0x3d2b92){return _0x39b757(_0x4a189d,_0x45efd8,_0x5e874f,_0x53608f,_0x2f9426,_0x365598,_0x5cf1e2,_0x3d2b92);},'QaidM':_0x251974(0x74d),'IPWcH':'XDChs','dwVlR':function(_0x55331e,_0xf94f1c,_0x8f39f6){return _0x55331e(_0xf94f1c,_0x8f39f6);},'zOVcR':_0x251974(0x5fa),'iesLn':'请使用re'+_0x251974(0x77c)+_0x251974(0x555)+'espon'+'se-te'+'mplat'+_0x251974(0x97d)+_0x251974(0x9d)+_0x251974(0x72a)+_0x251974(0x282),'MoHRL':'get_i'+_0x251974(0x893)+'ts','zXwEN':function(_0x4821f0,_0x3bd90b,_0x40140d){return _0x4821f0(_0x3bd90b,_0x40140d);},'KvcYL':function(_0x290e36,_0x2d0326,_0x457548,_0x2602ea,_0x1d0fcf,_0x175f93,_0x2fc340,_0x533041,_0x38c201){return _0x290e36(_0x2d0326,_0x457548,_0x2602ea,_0x1d0fcf,_0x175f93,_0x2fc340,_0x533041,_0x38c201);},'RORVz':'dpfRw','xOWzR':function(_0x361d52,_0x29e257){return _0x361d52>_0x29e257;},'PfaFC':_0x251974(0xcc)+'feren'+_0x251974(0x555)+_0x251974(0x2cc)+_0x251974(0x4cd)+_0x251974(0x1b6)+_0x251974(0x97d)+'中的2.6'+'智能洞察模'+_0x251974(0x282),'mhiOM':_0x251974(0x7fc)+'t_dat'+'a','WgxLR':_0x251974(0x259),'xITno':_0x251974(0x990),'BVXGX':function(_0x1fb70b,_0xadc8e4,_0x527aa2,_0x24d917,_0x86d1a2,_0x1887cf,_0x41e42e,_0x34b2f4,_0x5eb93c){return _0x1fb70b(_0xadc8e4,_0x527aa2,_0x24d917,_0x86d1a2,_0x1887cf,_0x41e42e,_0x34b2f4,_0x5eb93c);},'wLBxU':_0x251974(0xcc)+'feren'+_0x251974(0x555)+'espon'+_0x251974(0x4cd)+_0x251974(0x1b6)+_0x251974(0x97d)+_0x251974(0x9b0)+_0x251974(0x1a8),'GiGxz':function(_0xab2f34,_0x3e7bef){return _0xab2f34!==_0x3e7bef;},'WwsNm':_0x251974(0x93b),'shxUD':'JLMCT','CWzbp':function(_0x31e3f3,_0x13fb07){return _0x31e3f3===_0x13fb07;},'PuWhQ':_0x251974(0x6d6),'cwYpr':function(_0x3d46aa,_0x56872d){return _0x3d46aa!==_0x56872d;},'VNSSy':function(_0x34f54d,_0x2a152e){return _0x34f54d<=_0x2a152e;},'lfsxk':function(_0x53c9a2,_0x211619){return _0x53c9a2!==_0x211619;},'lDnwY':_0x251974(0x5a6),'uCHBh':_0x251974(0x7df)+_0x251974(0x5c8)+_0x251974(0x6ff)+_0x251974(0x1b5),'HfVTP':function(_0x24fca1,_0x30360a,_0x11f806){return _0x24fca1(_0x30360a,_0x11f806);},'EfDVc':function(_0x2450f1,_0x21bc77){return _0x2450f1<_0x21bc77;},'hKwIX':function(_0x6eb500,_0x28e157){return _0x6eb500>_0x28e157;},'lJMMK':_0x251974(0x7df)+_0x251974(0x487)+_0x251974(0x41f)+_0x251974(0x356)+'时间','ckkQY':_0x251974(0xf1)+'incom'+'e','tPUgV':_0x251974(0x3d4)+_0x251974(0x83f),'xkANr':function(_0x26fe60,_0x4426b0){return _0x26fe60||_0x4426b0;},'SgwBJ':function(_0x178416,_0x46dff2){return _0x178416||_0x46dff2;},'DyTyx':_0x251974(0x746)+'arse_'+'promp'+'t','zAqoX':function(_0x3a20e4,_0xb7425,_0x58e068,_0x3d3f05){return _0x3a20e4(_0xb7425,_0x58e068,_0x3d3f05);},'UhNYa':'getPr'+_0x251974(0x579),'PXTIB':_0x251974(0x1c0)+'stemP'+'rompt'+_0x251974(0x5c4)+'ystem'+_0x251974(0xd8)+_0x251974(0x228)+_0x251974(0x65a)+_0x251974(0x37b)+'r\x20mes'+_0x251974(0x273)+_0x251974(0x92f)+_0x251974(0x23d)+'析。解析完'+'成后,调用'+_0x251974(0x233)+_0x251974(0x127)+_0x251974(0x3d1)+'具保存结果'+'。⚠️\x20注意'+':AI解析'+'结果必须包'+_0x251974(0x493)+_0x251974(0x450)+_0x251974(0xb9),'GGLUF':function(_0x30f075,_0x1fae3f){return _0x30f075===_0x1fae3f;},'nGfAl':'ZujRF','pjdmG':_0x251974(0xde)+_0x251974(0x89c)+'arse_'+'promp'+'t','CjIIX':_0x251974(0x3e8)+'xtPar'+'sePro'+_0x251974(0x6b4),'ejeAb':function(_0x2eabd7,_0x5d9468){return _0x2eabd7!==_0x5d9468;},'CsGjh':_0x251974(0x11b),'mOQUc':_0x251974(0x130)+'t_fee'+_0x251974(0x2bc),'NOybb':'other','wHHAk':_0x251974(0x435)+'agent','IcLDb':_0x251974(0x7bd)+_0x251974(0x8c3)+'k','hpcbc':_0x251974(0x787),'YGlag':'问题报告','EUGPC':_0x251974(0x3a4),'KCHhk':function(_0x1ac871){return _0x1ac871();},'tyoJV':_0x251974(0x249)+'t','DxUQV':_0x251974(0x234),'mEJrd':function(_0x594a3a,_0x349fb6){return _0x594a3a===_0x349fb6;},'lWTUF':'mOaZJ','pgCGb':function(_0x51aaf6,_0x558a13){return _0x51aaf6===_0x558a13;},'IUSHy':_0x251974(0x31f),'svIvI':_0x251974(0x909),'gscvj':_0x251974(0x4e7)+'证码','cExXn':_0x251974(0x20e),'WZFbB':_0x251974(0x2e7)+_0x251974(0x1c8),'UyWnG':_0x251974(0x9e3)+_0x251974(0x489)+'t','yLnwm':_0x251974(0x443)+_0x251974(0x5bf)+_0x251974(0x3a2),'hboff':_0x251974(0x510)+_0x251974(0x564)+_0x251974(0x816)+_0x251974(0x617)+':'},{name:_0x31466c,arguments:_0x304152}=_0x3c2936[_0x251974(0x46b)+'s'],_0x72c67=Date[_0x251974(0x104)](),_0x5d5ff0=_0x204ba2[_0x251974(0x8b6)](generateTraceId),_0x49291f=_0x204ba2[_0x251974(0x408)](getOSInfo),_0x38eb5c=_0x304152[_0x251974(0xa06)+_0x251974(0x949)]||process.env.AGENT_TYPE||process.env.MCP_AGENT_TYPE||'',_0x5859c2=_0x304152['apiPr'+_0x251974(0x42c)+'r']||process.env.API_PROVIDER||process.env.MCP_API_PROVIDER||'',_0x50e8d7=_0x204ba2[_0x251974(0x5a1)](checkRateLimit,_0x31466c);if(!_0x50e8d7[_0x251974(0x7f8)+'ed']){const _0x172887=_0x204ba2[_0x251974(0x1d1)](_0x50e8d7['waitS'+_0x251974(0x350)+'s'],0x3c)?_0x50e8d7[_0x251974(0x798)+_0x251974(0x350)+'s']+'\x20秒':Math['ceil'](_0x50e8d7['waitS'+_0x251974(0x350)+'s']/0x3c)+_0x251974(0x160),_0x2c14f8={};return _0x2c14f8[_0x251974(0x8ce)+'ss']=![],_0x2c14f8['error']=_0x251974(0x30e)+_0x251974(0x8cc)+'秒内最多调'+'用\x20'+_0x50e8d7[_0x251974(0x43b)+_0x251974(0x315)+'s']+_0x251974(0x907)+_0x172887+_0x251974(0x69d),_0x2c14f8[_0x251974(0x163)]=0x1ad,{'content':[{'type':_0x204ba2[_0x251974(0x594)],'text':JSON['strin'+_0x251974(0x222)](_0x2c14f8)}],'isError':!![]};}if(_0x204ba2['nhjID'](_0x31466c,_0x204ba2[_0x251974(0x9c7)])||_0x204ba2[_0x251974(0x231)](_0x31466c,_0x204ba2[_0x251974(0x48a)])||_0x31466c===_0x251974(0xf1)+_0x251974(0x17c)+'e'){if(_0x204ba2[_0x251974(0x48e)]('cfFZT',_0x251974(0x67a)))return'trace'+'_'+_0x461732[_0x251974(0x104)]()+'_'+_0x3ee7c1[_0x251974(0x700)+'m']()[_0x251974(0x1f4)+'ing'](0x24)['subst'+'r'](0x2,0x9);else{const _0x23248a=Date[_0x251974(0x104)](),_0x5826bd=getLastSkillReadTime();if(_0x204ba2['RrdBg'](_0x204ba2[_0x251974(0x66b)](_0x23248a,_0x5826bd),SKILL_VALID_DURATION))return{'content':[{'type':_0x204ba2['khdYI'],'text':JSON[_0x251974(0x20c)+_0x251974(0x222)]({'success':![],'error':_0x204ba2[_0x251974(0x1b7)],'message':_0x204ba2[_0x251974(0x421)],'code':0x190})}]};}}const _0x1929be=process.env.AGENT_TYPE||process.env.MCP_AGENT_TYPE||'',_0x30512c=process.env.API_PROVIDER||process.env.MCP_API_PROVIDER||'';!_0x304152[_0x251974(0xa06)+_0x251974(0x949)]&&_0x1929be&&(_0x304152['agent'+'Type']=_0x1929be);!_0x304152['apiPr'+_0x251974(0x42c)+'r']&&_0x30512c&&(_0x304152[_0x251974(0xf2)+_0x251974(0x42c)+'r']=_0x30512c);try{if(_0x204ba2['yWRIG']===_0x204ba2[_0x251974(0x90b)]){const _0x2f4a9f=await _0x204ba2['Odgwl'](getToken),_0x43fee6={..._0x304152};let _0x4698c1=_0x43fee6;if(_0x4698c1[_0x251974(0x5a0)]&&typeof _0x4698c1[_0x251974(0x5a0)]===_0x251974(0x20c)+'g')try{_0x204ba2[_0x251974(0x1c9)]('XlHUi',_0x204ba2[_0x251974(0x659)])?_0x5b65ec[_0x251974(0x617)](KmppVl[_0x251974(0x5ba)],_0x1e5686['messa'+'ge']):_0x4698c1[_0x251974(0x5a0)]=JSON[_0x251974(0x93d)](_0x4698c1[_0x251974(0x5a0)]);}catch(_0x658927){}function _0x35aad7(_0xb7a055,_0x3b8566){const _0x40061f=_0x251974,_0x3a1e42={'VaFqq':_0x204ba2[_0x40061f(0x4d0)],'pDQSF':function(_0x32f243,_0x1fc471){return _0x32f243!==_0x1fc471;},'VUQkp':_0x40061f(0x283)+'r','eluZT':function(_0x323b45,_0x27523d){const _0x2b9c4d=_0x40061f;return _0x204ba2[_0x2b9c4d(0x1f0)](_0x323b45,_0x27523d);}},_0x8fe6e7={};_0x8fe6e7[_0x40061f(0xf1)+_0x40061f(0x5c6)+'se']=[_0x204ba2[_0x40061f(0x5a2)],_0x40061f(0x8ef)],_0x8fe6e7['save_'+_0x40061f(0x625)+'pt']=[_0x204ba2['KgiBD'],_0x204ba2[_0x40061f(0x6b2)],_0x204ba2[_0x40061f(0x804)],_0x204ba2[_0x40061f(0x741)],_0x204ba2[_0x40061f(0x51a)]],_0x8fe6e7[_0x40061f(0xf1)+'incom'+'e']=[_0x204ba2[_0x40061f(0x5a2)],_0x204ba2[_0x40061f(0x51a)]];const _0x574de0=_0x8fe6e7,_0x5046df=_0x574de0[_0xb7a055]||[];for(const _0xd94c4b of _0x5046df){if(_0x204ba2[_0x40061f(0x36a)](_0x204ba2['dCWMr'],_0x204ba2[_0x40061f(0x1d7)])){const _0x344404=_0x45cec5['data']||{};_0x1f6778[_0x40061f(0x2f9)+_0x40061f(0xe5)+_0x40061f(0x658)+'on']='refer'+_0x40061f(0x3b2)+_0x40061f(0x772)+'onse-'+'templ'+_0x40061f(0x757)+'md',_0x39488d[_0x40061f(0x2f9)+_0x40061f(0x263)+'int']=_0x40061f(0xcc)+_0x40061f(0x77c)+_0x40061f(0x555)+_0x40061f(0x2cc)+_0x40061f(0x4cd)+_0x40061f(0x1b6)+'es.md'+_0x40061f(0x9d)+_0x40061f(0x72a)+_0x40061f(0x282);const _0x1ad93f={};_0x1ad93f['perio'+'d']=_0x344404['perio'+_0x40061f(0x21e)+_0x40061f(0x2ee)]||_0x344404[_0x40061f(0x2ed)+'d']||'未知',_0x1ad93f[_0x40061f(0x86e)+_0x40061f(0xa14)+'t']=_0x344404['total'+'Amoun'+'t']||0x0,_0x1ad93f[_0x40061f(0x86e)+'Count']=_0x344404[_0x40061f(0x86e)+_0x40061f(0x407)]||0x0,_0x1ad93f[_0x40061f(0x301)+'re']=_0x344404[_0x40061f(0x301)+'re'],_0x1ad93f['budge'+'t']=_0x344404[_0x40061f(0x46d)+'t'],_0x1ad93f['categ'+_0x40061f(0x217)]=_0x344404[_0x40061f(0x6dc)+_0x40061f(0x217)],_0x1ad93f[_0x40061f(0x747)+'hts']=_0x344404['insig'+_0x40061f(0x995)],_0x105eec['_temp'+_0x40061f(0x941)+'ariab'+_0x40061f(0x361)]=_0x1ad93f;}else{if(_0x204ba2['KfHSq'](_0xd94c4b,_0x3b8566)&&typeof _0x3b8566[_0xd94c4b]!==_0x204ba2[_0x40061f(0x520)]){const _0x1ef2df=_0x204ba2[_0x40061f(0x362)](parseFloat,_0x3b8566[_0xd94c4b]);!isNaN(_0x1ef2df)&&(_0x204ba2['GGVKN'](_0x40061f(0x973),_0x204ba2[_0x40061f(0x293)])?(console[_0x40061f(0x617)]('[Type'+'Conve'+_0x40061f(0x466)+_0xd94c4b+_0x40061f(0x2f2)+_0x3b8566[_0xd94c4b]+'\x22\x20→\x20'+_0x1ef2df),_0x3b8566[_0xd94c4b]=_0x1ef2df):_0x2491a6=_0x35d95a[_0x40061f(0x3db)+_0x40061f(0x81f)+'nc'](_0x35611e,_0x3a1e42[_0x40061f(0x1f3)]));}}}_0x3b8566[_0x40061f(0x5a0)]&&Array[_0x40061f(0x45b)+'ay'](_0x3b8566[_0x40061f(0x5a0)])&&_0x3b8566[_0x40061f(0x5a0)][_0x40061f(0x536)+'ch'](_0x2689b1=>{const _0x5805af=_0x40061f;[_0x204ba2[_0x5805af(0x5a2)],_0x204ba2[_0x5805af(0x627)],_0x204ba2[_0x5805af(0x5af)]]['forEa'+'ch'](_0x22491b=>{const _0x36bbaa=_0x5805af;if(_0x22491b in _0x2689b1&&_0x3a1e42[_0x36bbaa(0x196)](typeof _0x2689b1[_0x22491b],_0x3a1e42[_0x36bbaa(0x934)])){const _0x42dd2e=_0x3a1e42[_0x36bbaa(0x9af)](parseFloat,_0x2689b1[_0x22491b]);if(!_0x3a1e42[_0x36bbaa(0x9af)](isNaN,_0x42dd2e))_0x2689b1[_0x22491b]=_0x42dd2e;}});});}_0x204ba2['tJAzp'](_0x35aad7,_0x31466c,_0x4698c1);let _0x184c32;switch(_0x31466c){case _0x204ba2[_0x251974(0x44c)]:{const _0x4031b4=path['join'](__dirname,_0x251974(0x2e7)+'.md');let _0x2981cc;try{_0x204ba2['xfSJJ'](_0x204ba2[_0x251974(0x364)],_0x204ba2[_0x251974(0x3a8)])?_0x2981cc=fs[_0x251974(0x3db)+_0x251974(0x81f)+'nc'](_0x4031b4,_0x204ba2[_0x251974(0x4d0)]):_0x30c5f2=_0x5dac08[_0x251974(0x93d)](_0x4244a7);}catch(_0x160ce9){_0x2981cc=_0x204ba2[_0x251974(0x9ca)];}_0x204ba2[_0x251974(0x6cd)](recordSkillRead),_0x184c32={'success':!![],'data':{'skill':_0x2981cc,'version':MCP_VERSION,'readAt':new Date()[_0x251974(0x21d)+'Strin'+'g'](),'validFor':_0x251974(0x9e1)},'message':_0x251974(0x809)+_0x251974(0x20a)+_0x251974(0x42e)+_0x251974(0x900)+_0x251974(0x7c0)+_0x251974(0x7d0)+'Skill'+_0x251974(0x250)+_0x251974(0x811)+'ult.d'+_0x251974(0x4dd)+'kill\x20'+_0x251974(0x305)+_0x251974(0xd3)+'严格按照\x20'+'Skill'+'\x20文档执行'+_0x251974(0x87d)},userMessage=_0x184c32[_0x251974(0x715)+'ge'];const _0x414baa=_0x204ba2['MMqyr'](getAndClearUpgradeHint);_0x414baa&&(userMessage=_0x204ba2[_0x251974(0x227)](_0x204ba2[_0x251974(0x3e1)](_0x414baa,'\x0a\x0a'),userMessage));break;}case'save_'+'expen'+'se':{const _0x393aa8=[_0x204ba2[_0x251974(0x69f)],_0x204ba2[_0x251974(0x5a2)],_0x251974(0x6dc)+_0x251974(0x78f),_0x204ba2['YuomN']],_0x96996e=[];for(const _0x4c4881 of _0x393aa8){if(_0x204ba2[_0x251974(0x844)](_0x204ba2['FhQmX'],_0x251974(0x18a))){for(const _0x33b8cb of _0x33ae0d){_0x204ba2[_0x251974(0x939)](_0x9dc827[_0x251974(0x2e6)][_0x33b8cb],_0x1e5fe4)&&_0x204ba2['cTcKa'](_0x53b387[_0x251974(0x2e6)][_0x33b8cb],null)&&_0x11906e[_0x251974(0x2e6)][_0x33b8cb]!==''&&(_0x37a887[_0x33b8cb]=_0x3d14a9[_0x251974(0x2e6)][_0x33b8cb],_0x2c3cd4[_0x251974(0x617)](_0x251974(0x27e)+'段:'+_0x33b8cb+'\x20=\x20'+_0x2d1f1d[_0x33b8cb]));}(!_0x55718a[_0x251974(0x5a0)]||_0x204ba2[_0x251974(0x695)](_0x22186e[_0x251974(0x5a0)][_0x251974(0x26e)+'h'],0x0))&&_0x52e10f['data'][_0x251974(0x5a0)]&&(_0x2b25ce[_0x251974(0x5a0)]=_0x249b5f[_0x251974(0x2e6)]['items'],_0x18b1f2[_0x251974(0x617)](_0x251974(0x27e)+'段:ite'+'ms('+_0x5c7d77[_0x251974(0x5a0)][_0x251974(0x26e)+'h']+_0x251974(0x7e5)));}else(_0x204ba2[_0x251974(0x550)](_0x4698c1[_0x4c4881],undefined)||_0x4698c1[_0x4c4881]===null||_0x204ba2[_0x251974(0x690)](_0x4698c1[_0x4c4881],''))&&_0x96996e['push'](_0x4c4881);}if(_0x204ba2[_0x251974(0x4a7)](_0x96996e[_0x251974(0x26e)+'h'],0x0)){_0x184c32={'success':![],'error':'必填字段缺'+'失:'+_0x96996e[_0x251974(0x449)](',\x20'),'code':0x190,'hint':_0x204ba2['ouBsZ'],'debug':{'missing':_0x96996e,'received':Object[_0x251974(0x918)](_0x4698c1),'docs':_0x251974(0x146)+'t_ski'+_0x251974(0x702)+_0x251974(0x895)+_0x251974(0x3ba)}},userMessage=_0x251974(0x650)+'败\x0a\x0a错误'+_0x251974(0xd1)+_0x251974(0x62e)+_0x96996e[_0x251974(0x449)](',\x20')+(_0x251974(0x2b1)+'决方案:\x0a'+'1.\x20请检'+'查是否从用'+_0x251974(0x680)+_0x251974(0x1e6)+'息\x0a2.\x20'+_0x251974(0x6e9)+_0x251974(0x68a)+_0x251974(0x7ba)+'品名)、a'+_0x251974(0x756)+_0x251974(0x8f2)+'categ'+_0x251974(0x4aa)+_0x251974(0x8e1)+_0x251974(0x85b)+_0x251974(0x3d0)+_0x251974(0x161)+_0x251974(0x8cf)+_0x251974(0x76a)+_0x251974(0x6ea)+'\x22调用前检'+_0x251974(0x36d));break;}if(typeof _0x4698c1[_0x251974(0x5f3)+'t']!=='numbe'+'r'||_0x204ba2[_0x251974(0x85d)](_0x4698c1[_0x251974(0x5f3)+'t'],0x0)){if(_0x251974(0x671)!==_0x251974(0x915)){const _0x2f1089={};_0x2f1089[_0x251974(0x8ce)+'ss']=![],_0x2f1089[_0x251974(0x617)]=_0x204ba2[_0x251974(0x3c0)],_0x2f1089[_0x251974(0x163)]=0x190,_0x184c32=_0x2f1089,userMessage=_0x204ba2[_0x251974(0x1c2)];break;}else _0x44844b[_0x251974(0x9ef)](_0x204ba2[_0x251974(0x80a)]);}let _0x38d397=null;if(_0x4698c1['time_'+_0x251974(0x5d7)+_0x251974(0x1aa)+'n']){const _0x2be345=parseTimeDescription(_0x4698c1['time_'+'descr'+_0x251974(0x1aa)+'n'],Date[_0x251974(0x104)]());_0x4698c1[_0x251974(0x8ef)]=_0x2be345,console[_0x251974(0x503)](_0x251974(0xa1c)+_0x251974(0x8a5)+'nse]\x20'+_0x251974(0x35f)+_0x251974(0x365)+_0x4698c1[_0x251974(0x786)+_0x251974(0x5d7)+_0x251974(0x1aa)+'n']+_0x251974(0x952)+_0x2be345+'\x20('+new Date(_0x2be345)['toLoc'+_0x251974(0x85e)+_0x251974(0x931)](_0x251974(0xe4))+')');}if(_0x4698c1[_0x251974(0x8ef)]){if(_0x204ba2[_0x251974(0x550)](_0x251974(0x1c7),_0x204ba2['UFIuQ']))return _0x251974(0x7df)+'明:记录精'+'确时间为\x20'+_0x419cda;else{const _0x46cf2b=_0x204ba2[_0x251974(0x4a1)](validateDate,_0x4698c1[_0x251974(0x8ef)],_0x204ba2['LBTDJ']);if(!_0x46cf2b[_0x251974(0x67f)]){const _0x3b248a={};_0x3b248a['succe'+'ss']=![],_0x3b248a[_0x251974(0x617)]=_0x46cf2b[_0x251974(0x617)],_0x3b248a[_0x251974(0x163)]=0x190,_0x184c32=_0x3b248a,userMessage=_0x46cf2b['messa'+'ge'];break;}const _0x1ef18d=new Date(_0x4698c1['date']),_0xb245ee=new Date(),_0x20699d=new Date(_0x204ba2[_0x251974(0x961)](_0xb245ee['getFu'+'llYea'+'r'](),0x1),0x0,0x1),_0x8b9534=new Date(_0x204ba2[_0x251974(0x9d5)](_0xb245ee['getFu'+_0x251974(0x153)+'r'](),0x1),0xb,0x1f);(_0x204ba2[_0x251974(0x719)](_0x1ef18d,_0x20699d)||_0x204ba2[_0x251974(0x7b2)](_0x1ef18d,_0x8b9534))&&(console[_0x251974(0x256)]('[save'+_0x251974(0x8a5)+'nse]\x20'+'时间异常:'+_0x4698c1[_0x251974(0x8ef)]+'\x20('+_0x1ef18d[_0x251974(0x886)+_0x251974(0x85e)+_0x251974(0x931)](_0x204ba2[_0x251974(0x1eb)])+(_0x251974(0x5e1)+_0x251974(0x54b))),_0x4698c1['date']=Date[_0x251974(0x104)](),_0x38d397='⏰\x20时间说'+'明:检测到'+_0x251974(0x41f)+_0x251974(0x356)+'时间');}}_0x4698c1['agent'+_0x251974(0x949)]=_0x38eb5c||'',_0x4698c1[_0x251974(0xf2)+_0x251974(0x42c)+'r']=_0x204ba2[_0x251974(0x805)](_0x5859c2,'');const _0xa2e409=_0x204ba2[_0x251974(0x4a1)](convertParams,_0x204ba2['epzOW'],_0x4698c1);_0x184c32=await _0x204ba2[_0x251974(0x51e)](callMcpHubWithLogging,_0x204ba2[_0x251974(0x1cd)],_0xa2e409,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32[_0x251974(0x8ce)+'ss']){const _0x5869d8=_0x4698c1[_0x251974(0x3a1)]||_0x204ba2['kUVSK'],_0x529b0c=_0x4698c1[_0x251974(0x5f3)+'t']||0x0,_0x8a4f8c=_0x4698c1[_0x251974(0x6dc)+'ory']||'其他',_0x1ede1a=_0x4698c1['store']||'',_0x292cc2={};_0x292cc2['餐饮']=_0x204ba2[_0x251974(0x226)],_0x292cc2['食品']=_0x251974(0x698)+'🍎',_0x292cc2['交通']=_0x204ba2[_0x251974(0x4f2)],_0x292cc2['购物']=_0x204ba2[_0x251974(0x972)],_0x292cc2['收入']=_0x251974(0x4b9)+'💰',_0x292cc2['其他']=_0x204ba2[_0x251974(0x950)];const _0x193d5b=_0x292cc2,_0x174b27=_0x193d5b[_0x8a4f8c]||_0x204ba2[_0x251974(0x950)];let _0x2b13b8='';if(_0x184c32[_0x251974(0x747)+_0x251974(0x995)]&&_0x184c32[_0x251974(0x747)+'hts'][_0x251974(0x26e)+'h']>0x0){if(_0x204ba2[_0x251974(0x7cb)]===_0x204ba2[_0x251974(0x7cb)])_0x2b13b8=_0x204ba2[_0x251974(0x9d5)](_0x251974(0x7f1)+'察:',_0x184c32[_0x251974(0x747)+'hts'][_0x251974(0x8e0)](_0x5120e4=>_0x5120e4[_0x251974(0x715)+'ge']||_0x5120e4[_0x251974(0x71a)])['join'](';'));else{if(_0x71a0d1[_0x251974(0x715)+'ge'][_0x251974(0xa05)+_0x251974(0x7a3)](KmppVl[_0x251974(0x7af)])||_0x5d2399[_0x251974(0x715)+'ge'][_0x251974(0xa05)+_0x251974(0x7a3)](KmppVl[_0x251974(0x16f)]))throw _0xacbb6f;_0x3f63e1[_0x251974(0x617)](KmppVl['tnSii'],_0x6128be[_0x251974(0x715)+'ge']);}}let _0x553c40='';_0x184c32['newly'+_0x251974(0x675)+_0x251974(0x6f9)]&&_0x184c32[_0x251974(0x655)+_0x251974(0x675)+_0x251974(0x6f9)][_0x251974(0x26e)+'h']>0x0&&(_0x204ba2['hGdPa'](_0x204ba2['DzGhz'],_0x251974(0x289))?_0x553c40=_0x204ba2[_0x251974(0x6c1)](_0x204ba2[_0x251974(0x532)],_0x184c32[_0x251974(0x655)+_0x251974(0x675)+_0x251974(0x6f9)][_0x251974(0x8e0)](_0x3b564b=>_0x3b564b[_0x251974(0x1b1)]+'\x20'+_0x3b564b[_0x251974(0x71a)]+'(+'+_0x3b564b['point'+'s']+'分)')[_0x251974(0x449)](';')):_0x450c95=_0x204ba2[_0x251974(0x227)](_0x204ba2[_0x251974(0x6e7)],_0x255ac8[_0x251974(0x747)+_0x251974(0x995)][_0x251974(0x8e0)](_0x128f11=>_0x128f11['messa'+'ge']||_0x128f11[_0x251974(0x71a)])[_0x251974(0x449)](';'))),_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x204ba2['YYLfi'],_0x184c32['_temp'+_0x251974(0x941)+_0x251974(0x411)+'les']={'agentName':await _0x204ba2[_0x251974(0x8ee)](getAgentName),'类型':'支出','商品名':_0x5869d8,'商家':_0x204ba2[_0x251974(0x805)](_0x1ede1a,null),'金额':_0x529b0c,'分类':_0x184c32[_0x251974(0x2e6)]?.[_0x251974(0x6dc)+_0x251974(0x8f8)+'me']||_0x8a4f8c,'日期':_0x184c32[_0x251974(0x2e6)]?.['date']?new Date(_0x184c32[_0x251974(0x2e6)][_0x251974(0x8ef)])[_0x251974(0x886)+'aleSt'+_0x251974(0x931)](_0x204ba2[_0x251974(0x1eb)]):new Date()['toLoc'+_0x251974(0x85e)+'ring'](_0x204ba2[_0x251974(0x1eb)]),'正能量祝福语':_0x174b27,'insightsText':_0x2b13b8,'achievementsText':_0x553c40,'timeNote':_0x38d397||null};}break;}case _0x204ba2[_0x251974(0x48a)]:{if(_0x204ba2['hGdPa'](_0x204ba2['BANfi'],_0x204ba2[_0x251974(0x3fb)])){const _0x4d7845=[_0x204ba2[_0x251974(0x303)],_0x204ba2[_0x251974(0xa0c)],_0x204ba2[_0x251974(0x6b2)],_0x204ba2[_0x251974(0x804)],_0x204ba2['NHYFv'],_0x204ba2[_0x251974(0x66e)],_0x204ba2['Sjatc']],_0x3232a0=[];for(const _0x57c149 of _0x4d7845){_0x204ba2[_0x251974(0x93e)](_0x204ba2[_0x251974(0x87c)],_0x204ba2[_0x251974(0x68d)])?(_0x4698c1[_0x57c149]===undefined||_0x204ba2['EzQtH'](_0x4698c1[_0x57c149],null)||_0x204ba2[_0x251974(0x30d)](_0x4698c1[_0x57c149],''))&&_0x3232a0['push'](_0x57c149):_0x3683d2['push'](_0x213f33);}if(_0x204ba2[_0x251974(0x4a7)](_0x3232a0[_0x251974(0x26e)+'h'],0x0)){if(_0x204ba2[_0x251974(0x438)](_0x251974(0x18d),_0x251974(0x138))){const _0x2155f2=_0x204ba2['uIKZq'][_0x251974(0x3b6)]('|');let _0x191ca7=0x0;while(!![]){switch(_0x2155f2[_0x191ca7++]){case'0':_0x3c5792['error']('='[_0x251974(0x10c)+'t'](0x3c));continue;case'1':_0x455594['error'](KmppVl[_0x251974(0x227)]('='['repea'+'t'](0x3c),'\x0a'));continue;case'2':_0x304047[_0x251974(0x617)]('\x0a'+'='[_0x251974(0x10c)+'t'](0x3c));continue;case'3':_0x4901e5[_0x251974(0x617)](KmppVl[_0x251974(0x64f)]);continue;case'4':_0x11a4db[_0x251974(0x617)](KmppVl[_0x251974(0x184)]);continue;case'5':_0x53f5e0[_0x251974(0x617)]('');continue;case'6':_0x269348[_0x251974(0x617)](KmppVl[_0x251974(0x588)]);continue;case'7':_0x7eb3dd[_0x251974(0x617)]('');continue;case'8':_0x4767e3['error'](_0x251974(0x5ff)+_0x251974(0x9c8)+':'+_0x4c32d8[_0x251974(0x302)+_0x251974(0x464)]);continue;case'9':_0x261d83[_0x251974(0x617)]('');continue;case'10':_0x921c4['error']('');continue;case'11':_0x827a18['error'](_0x251974(0x863)+':'+_0x59f5ac['userC'+_0x251974(0x464)]);continue;case'12':_0x3b4eda[_0x251974(0x617)](KmppVl[_0x251974(0x9f0)]);continue;}break;}}else{_0x184c32={'success':![],'error':'必填字段缺'+'失:'+_0x3232a0[_0x251974(0x449)](',\x20'),'code':0x190,'hint':_0x204ba2[_0x251974(0x14b)],'debug':{'missing':_0x3232a0,'received':Object[_0x251974(0x918)](_0x4698c1),'docs':_0x204ba2['roGcG']}},userMessage=_0x251974(0x7b9)+'败\x0a\x0a错误'+_0x251974(0xd1)+_0x251974(0x62e)+_0x3232a0[_0x251974(0x449)](',\x20')+(_0x251974(0x2b1)+_0x251974(0x1f5)+_0x251974(0x5e6)+_0x251974(0x6c4)+_0x251974(0x746)+_0x251974(0x69b)+_0x251974(0x836)+_0x251974(0x89a)+_0x251974(0x954)+_0x251974(0x575)+_0x251974(0x19a)+_0x251974(0x67c)+_0x251974(0x28b)+'ore、t'+'otalA'+_0x251974(0x756)+_0x251974(0x745)+_0x251974(0x95d)+_0x251974(0x212)+_0x251974(0x1d6)+_0x251974(0x95d)+_0x251974(0x152)+_0x251974(0x4e6)+_0x251974(0x207)+_0x251974(0xa1e)+_0x251974(0x44b)+_0x251974(0x8e5)+_0x251974(0x3bc)+'oreSu'+_0x251974(0x852)+_0x251974(0x607)+_0x251974(0x2a7)+_0x251974(0x392)+'L.md\x20'+_0x251974(0x7f5)+_0x251974(0x689));break;}}const _0xb43a3d=[_0x204ba2[_0x251974(0xa0c)],_0x204ba2[_0x251974(0x6b2)],_0x204ba2[_0x251974(0x804)]];for(const _0x5b982d of _0xb43a3d){if(_0x204ba2[_0x251974(0x844)](typeof _0x4698c1[_0x5b982d],_0x251974(0x283)+'r')||_0x204ba2['AMLgR'](_0x4698c1[_0x5b982d],0x0)){if(_0x204ba2['sczVJ']('ljVsq',_0x204ba2[_0x251974(0x28e)])){const _0x408fab={};_0x408fab[_0x251974(0x8ce)+'ss']=![],_0x408fab[_0x251974(0x617)]=_0x5b982d+('\x20必须是正'+'数'),_0x408fab[_0x251974(0x163)]=0x190,_0x184c32=_0x408fab,userMessage='❌\x20保存失'+'败:'+_0x5b982d+('\x20必须是正'+'数');break;}else{const _0x3a7a40={};_0x3a7a40[_0x251974(0x7a0)]=_0x251974(0x830),_0x3a7a40[_0x251974(0x830)]=_0x251974(0x69e)+_0x251974(0x9e6)+_0x251974(0x274)+_0x251974(0x92c)+_0x251974(0x92c)+'━\x0a📱\x20验'+_0x251974(0x4be)+_0x51e681+(_0x251974(0x300)+_0x251974(0x92c)+_0x251974(0x92c)+_0x251974(0x7ab)+_0x251974(0x946)+':\x0a•\x20上'+_0x251974(0xa1a)+'是我为您生'+_0x251974(0xa12)+_0x251974(0x5d6)+_0x251974(0x79b)+_0x251974(0xa20)+'能看到)\x0a'+'•\x20小程序'+_0x251974(0x9a1)+_0x251974(0x8de)+_0x251974(0xa00)+_0x251974(0x5cb)+_0x251974(0x50b)+_0x251974(0x80e)+'小程序中完'+_0x251974(0x9f)+_0x251974(0x7b6)+_0x251974(0x422)+_0x251974(0x9d1)+'记账\x22\x0a\x0a'+'2️⃣\x20点击\x22'+'我的\x22\x20→'+'\x20\x22Age'+_0x251974(0x2e5)+_0x251974(0x25b)+_0x251974(0x9c8)+_0x251974(0x4b1))+_0x4da8df+(_0x251974(0x2c8)+_0x251974(0x6c8)+_0x251974(0x927)+'\x20重要提示'+_0x251974(0x77f)+_0x251974(0x59b)+_0x251974(0x2d7)+'erver'+_0x251974(0xbd)+_0x251974(0x84c)+_0x251974(0xfd)+_0x251974(0x845)+_0x251974(0xa18)+'令,我才能'+_0x251974(0x3f4)+_0x251974(0x445)+_0x251974(0x402)+_0x251974(0xa22)+_0x251974(0x352)+_0x251974(0x7b1)+_0x251974(0x9c3)+_0x251974(0x47c)+'钟');const _0x22d084={};return _0x22d084['conte'+'nt']=[_0x3a7a40],_0x22d084;}}}if(_0x184c32&&!_0x184c32['succe'+'ss'])break;if(_0x204ba2[_0x251974(0x93e)](typeof _0x4698c1[_0x251974(0x5e9)+_0x251974(0x1fd)+_0x251974(0x481)],_0x204ba2[_0x251974(0x520)])||_0x204ba2[_0x251974(0x632)](_0x4698c1[_0x251974(0x5e9)+'untAm'+_0x251974(0x481)],0x0)){if(_0x204ba2['ueHjb'](_0x251974(0x5ed),_0x204ba2['jByDY'])){if(!_0x3e181a||typeof _0x39c872!==_0x204ba2[_0x251974(0x9c0)])return'';if(_0x52c6a4['lengt'+'h']>_0x197c9e*0xa)throw new _0x2c7323(_0x251974(0x175)+_0x251974(0xeb)+_0x3b3b56+_0x251974(0x98d));return _0x15cc9f[_0x251974(0x624)+'ce'](/<[^>]*>/g,'')[_0x251974(0x7f4)+'ring'](0x0,_0x4ba22f);}else{const _0x44c349={};_0x44c349[_0x251974(0x8ce)+'ss']=![],_0x44c349[_0x251974(0x617)]=_0x204ba2['xxrbR'],_0x44c349[_0x251974(0x163)]=0x190,_0x184c32=_0x44c349,userMessage=_0x204ba2['EQWbu'];break;}}if(!_0x4698c1[_0x251974(0x5a0)]||!Array[_0x251974(0x45b)+'ay'](_0x4698c1['items'])||_0x204ba2[_0x251974(0x30d)](_0x4698c1[_0x251974(0x5a0)][_0x251974(0x26e)+'h'],0x0)){const _0x40673f={};_0x40673f[_0x251974(0x8ce)+'ss']=![],_0x40673f[_0x251974(0x617)]=_0x204ba2[_0x251974(0x3cc)],_0x40673f[_0x251974(0x163)]=0x190,_0x184c32=_0x40673f,userMessage=_0x204ba2['NYRaP'];break;}const _0x881a02=[];_0x4698c1[_0x251974(0x5a0)][_0x251974(0x536)+'ch']((_0x3eb214,_0x4e9798)=>{const _0x202cd0=_0x251974,_0x3e918d={};_0x3e918d[_0x202cd0(0x2c7)]=_0x202cd0(0x218),_0x3e918d[_0x202cd0(0x213)]=_0x204ba2[_0x202cd0(0x9ca)];const _0x2c9459=_0x3e918d;if(_0x204ba2[_0x202cd0(0x939)](_0x202cd0(0x639),_0x202cd0(0x639)))_0x3cf7a6=_0x540592[_0x202cd0(0x3db)+_0x202cd0(0x81f)+'nc'](_0x3f0d20,KmppVl[_0x202cd0(0x4d0)])[_0x202cd0(0x36c)]();else{const _0x2d0351=[];if(!_0x3eb214[_0x202cd0(0x5ac)+'nProp'+'erty'](_0x204ba2[_0x202cd0(0x69f)])||_0x204ba2[_0x202cd0(0x5c0)](_0x3eb214[_0x202cd0(0x3a1)],''))_0x2d0351[_0x202cd0(0x9ef)](_0x204ba2['HCiEG']);if(!_0x3eb214[_0x202cd0(0x5ac)+_0x202cd0(0x223)+'erty'](_0x204ba2[_0x202cd0(0x5a2)])||_0x3eb214[_0x202cd0(0x5f3)+'t']===undefined)_0x2d0351[_0x202cd0(0x9ef)]('amoun'+'t');if(!_0x3eb214['hasOw'+'nProp'+_0x202cd0(0x585)](_0x204ba2['ndQnu'])||_0x204ba2[_0x202cd0(0x36a)](_0x3eb214[_0x202cd0(0x11a)],undefined))_0x2d0351[_0x202cd0(0x9ef)](_0x204ba2[_0x202cd0(0x627)]);if(!_0x3eb214[_0x202cd0(0x5ac)+_0x202cd0(0x223)+'erty'](_0x204ba2[_0x202cd0(0x5af)])||_0x3eb214[_0x202cd0(0x1ad)+'ity']===undefined)_0x2d0351[_0x202cd0(0x9ef)](_0x204ba2[_0x202cd0(0x5af)]);(!_0x3eb214[_0x202cd0(0x5ac)+_0x202cd0(0x223)+_0x202cd0(0x585)]('produ'+_0x202cd0(0x324)+_0x202cd0(0x55a))||_0x204ba2[_0x202cd0(0x231)](_0x3eb214[_0x202cd0(0x545)+_0x202cd0(0x324)+'egory'],''))&&_0x2d0351[_0x202cd0(0x9ef)](_0x204ba2['dXwrq']);(!_0x3eb214['hasOw'+_0x202cd0(0x223)+_0x202cd0(0x585)](_0x204ba2['Plqvl'])||_0x3eb214['categ'+'ory']==='')&&_0x2d0351['push'](_0x204ba2['Plqvl']);if(_0x204ba2[_0x202cd0(0x7b2)](_0x2d0351['lengt'+'h'],0x0)){if(_0x204ba2[_0x202cd0(0x939)](_0x204ba2[_0x202cd0(0x932)],_0x202cd0(0x2c3))){const _0x5d58dc=_0xbaa509[_0x202cd0(0x449)](_0x378631,_0x202cd0(0x2e7)+'.md');let _0x37a14c;try{_0x37a14c=_0x5e6630[_0x202cd0(0x3db)+_0x202cd0(0x81f)+'nc'](_0x5d58dc,_0x2c9459[_0x202cd0(0x2c7)]);}catch(_0x4b910e){_0x37a14c=_0x2c9459[_0x202cd0(0x213)];}return _0x1126c1(),{'content':[{'type':'text','text':'✅\x20授权成'+'功!\x0a\x0a━'+_0x202cd0(0x92c)+'━━━━━'+'━━━\x0a🎉'+_0x202cd0(0x571)+_0x202cd0(0x688)+_0x202cd0(0x55c)+_0x202cd0(0x92c)+'━━━━━'+'\x0a\x0a现在可'+'以正常使用'+_0x202cd0(0x9bb)+_0x202cd0(0x189)+'='[_0x202cd0(0x10c)+'t'](0x3c)+(_0x202cd0(0x4e3)+_0x202cd0(0x4ae)+'义文档(请'+_0x202cd0(0x546)+_0x202cd0(0x60a)+_0x202cd0(0x47e)+'):\x0a')+'='[_0x202cd0(0x10c)+'t'](0x3c)+'\x0a\x0a'+_0x37a14c+'\x0a\x0a'+'='[_0x202cd0(0x10c)+'t'](0x3c)+('\x0a\x0a⚠️\x20重'+_0x202cd0(0x587)+_0x202cd0(0x9ff)+_0x202cd0(0x59c)+_0x202cd0(0x3cd)+_0x202cd0(0x4ae)+_0x202cd0(0xae)+_0x202cd0(0x4b5)+_0x202cd0(0xa4b)+'ll\x20文档'+_0x202cd0(0x248)+_0x202cd0(0x119)+_0x202cd0(0x402)+_0x202cd0(0xa22)+_0x202cd0(0x352)+'权')}]};}else _0x881a02[_0x202cd0(0x9ef)]('商品'+_0x204ba2[_0x202cd0(0x227)](_0x4e9798,0x1)+'('+(_0x3eb214[_0x202cd0(0x3a1)]||_0x204ba2['uHghS'])+(_0x202cd0(0x8ff)+':\x20')+_0x2d0351['join'](',\x20'));}}});if(_0x204ba2[_0x251974(0x840)](_0x881a02[_0x251974(0x26e)+'h'],0x0)){_0x184c32={'success':![],'error':'商品数据不'+'完整:'+_0x881a02[_0x251974(0x449)](';\x20')+('。每个商品'+'必须包含:'+'name,'+_0x251974(0x2a5)+_0x251974(0xdc)+_0x251974(0x771)+_0x251974(0x935)+'tity,'+_0x251974(0x792)+_0x251974(0x5d9)+_0x251974(0x731)+_0x251974(0x287)+_0x251974(0x731)+'y'),'code':0x190},userMessage=_0x251974(0x7b9)+_0x251974(0x52e)+_0x251974(0x62c)+'格式不完整'+'\x0a\x0a'+_0x881a02[_0x251974(0x449)]('\x0a')+(_0x251974(0x2b1)+_0x251974(0x1f5)+_0x251974(0xa43)+_0x251974(0x7bf)+_0x251974(0x36f)+'MCP\x20S'+_0x251974(0x75d)+'2.\x20确保'+'每个商品包'+_0x251974(0x782)+_0x251974(0xc4)+_0x251974(0x643)+_0x251974(0x5f3)+_0x251974(0x74c)+_0x251974(0x5a9)+'quant'+_0x251974(0x651)+_0x251974(0x545)+_0x251974(0x324)+'egory'+_0x251974(0x268)+_0x251974(0x55a)+_0x251974(0x9e0)+_0x251974(0x2a6)+_0x251974(0x32e)+_0x251974(0x708)+'是商品分类'+_0x251974(0x80b)+_0x251974(0x708)+_0x251974(0x81c)+_0x251974(0x38e)+'项');break;}if(_0x4698c1[_0x251974(0x4db)+'compo'+_0x251974(0x7c7)]&&!_0x4698c1[_0x251974(0x8ef)]){const {year:_0x2b3b28,month:_0x5b6239,day:_0x985deb,hour:_0x2bdb64,minute:_0x174da3,second:_0x1eb8e4}=_0x4698c1[_0x251974(0x4db)+'compo'+_0x251974(0x7c7)];if(_0x204ba2[_0x251974(0x574)](!_0x2b3b28,!_0x5b6239)||!_0x985deb||_0x204ba2[_0x251974(0x351)](_0x2bdb64,undefined)||_0x174da3===undefined){if(_0x204ba2[_0x251974(0x6d2)](_0x204ba2[_0x251974(0x379)],_0x204ba2['CjAmY'])){const _0x318bf7={};_0x318bf7['succe'+'ss']=![],_0x318bf7[_0x251974(0x617)]=_0x204ba2[_0x251974(0x6da)],_0x318bf7[_0x251974(0x163)]=0x190,_0x318bf7[_0x251974(0x505)]=_0x204ba2[_0x251974(0x1bf)],_0x184c32=_0x318bf7,userMessage=_0x204ba2['gHPbI'];break;}else _0x5d2744=_0xd079b9[_0x251974(0x3db)+_0x251974(0x81f)+'nc'](_0x11b28c,_0x204ba2['kLqQk']);}_0x4698c1[_0x251974(0x8ef)]=new Date(_0x2b3b28,_0x204ba2[_0x251974(0x961)](_0x5b6239,0x1),_0x985deb,_0x2bdb64,_0x174da3,_0x204ba2[_0x251974(0x87e)](_0x1eb8e4,0x0))[_0x251974(0xa0e)+'me'](),console[_0x251974(0x503)](_0x251974(0xa1c)+_0x251974(0x127)+'ipt]\x20'+_0x251974(0xa08)+_0x251974(0x12f)+JSON[_0x251974(0x20c)+_0x251974(0x222)](_0x4698c1['date_'+'compo'+_0x251974(0x7c7)])+'\x20→\x20'+_0x4698c1[_0x251974(0x8ef)]);}if(_0x4698c1['date']){const _0x1bd3e5=_0x204ba2[_0x251974(0x4a1)](validateDate,_0x4698c1[_0x251974(0x8ef)],_0x204ba2[_0x251974(0x4d1)]);if(!_0x1bd3e5[_0x251974(0x67f)]){if(_0x204ba2[_0x251974(0x859)](_0x204ba2['UJsnS'],_0x204ba2[_0x251974(0x95c)]))_0x3ffc22[_0x251974(0x617)](KmppVl[_0x251974(0x2b2)],_0x369545[_0x251974(0x715)+'ge']);else{const _0x2fd80d={};_0x2fd80d[_0x251974(0x8ce)+'ss']=![],_0x2fd80d[_0x251974(0x617)]=_0x1bd3e5['error'],_0x2fd80d[_0x251974(0x163)]=0x190,_0x184c32=_0x2fd80d,userMessage=_0x204ba2[_0x251974(0x227)](_0x1bd3e5['messa'+'ge'],_0x204ba2['zNhrf']);break;}}}const _0x36178a=[],_0x13b100=[_0x204ba2[_0x251974(0x303)],_0x204ba2[_0x251974(0x51a)],_0x251974(0x86e)+_0x251974(0xa14)+'t',_0x204ba2[_0x251974(0x6b2)],'origi'+_0x251974(0x9f2)+'ount',_0x251974(0x5e9)+_0x251974(0x1fd)+_0x251974(0x481),_0x204ba2[_0x251974(0x6de)]];for(const _0x348386 of _0x13b100){if(_0x204ba2[_0x251974(0x991)](_0x251974(0x12a),_0x204ba2[_0x251974(0x5f5)]))(_0x204ba2[_0x251974(0x9c5)](_0x4698c1[_0x348386],undefined)||_0x4698c1[_0x348386]===null||_0x204ba2[_0x251974(0x266)](_0x4698c1[_0x348386],''))&&_0x36178a[_0x251974(0x9ef)](_0x348386);else{const _0x2e1961={};_0x2e1961[_0x251974(0x8ce)+'ss']=![],_0x2e1961[_0x251974(0x617)]=_0x10bf48[_0x251974(0x617)],_0x2c18df=_0x2e1961;}}if(_0x204ba2[_0x251974(0x7b2)](_0x36178a[_0x251974(0x26e)+'h'],0x0)&&_0x4698c1['rawIn'+_0x251974(0x8ca)]){console['error']('⚠️\x20字段缺'+_0x251974(0x6b0)+_0x251974(0x393)+_0x251974(0xa01)+_0x251974(0x86c)+_0x36178a[_0x251974(0x449)](',\x20'));const _0x31c58c=await _0x204ba2[_0x251974(0x172)](callMcpPrompt,_0x204ba2['tXaxp'],{'text':_0x4698c1[_0x251974(0x7ee)+_0x251974(0x8ca)],'type':_0x204ba2[_0x251974(0x558)]},_0x2f4a9f);if(_0x31c58c['succe'+'ss']&&_0x31c58c[_0x251974(0x2e6)]){for(const _0x1c7e7f of _0x36178a){if(_0x204ba2['lfpcQ']===_0x204ba2[_0x251974(0x330)])_0x204ba2[_0x251974(0x5cc)](_0x31c58c['data'][_0x1c7e7f],undefined)&&_0x204ba2[_0x251974(0x389)](_0x31c58c[_0x251974(0x2e6)][_0x1c7e7f],null)&&_0x31c58c[_0x251974(0x2e6)][_0x1c7e7f]!==''&&(_0x4698c1[_0x1c7e7f]=_0x31c58c[_0x251974(0x2e6)][_0x1c7e7f],console[_0x251974(0x617)](_0x251974(0x27e)+'段:'+_0x1c7e7f+_0x251974(0x699)+_0x4698c1[_0x1c7e7f]));else return _0x264cec['now']();}(!_0x4698c1[_0x251974(0x5a0)]||_0x4698c1['items'][_0x251974(0x26e)+'h']===0x0)&&_0x31c58c[_0x251974(0x2e6)][_0x251974(0x5a0)]&&(_0x204ba2[_0x251974(0x48e)](_0x204ba2['tglni'],_0x204ba2[_0x251974(0x30f)])?typeof _0x335e18[_0x2becdb]===_0x204ba2[_0x251974(0x9c0)]&&_0x204ba2[_0x251974(0x7b2)](_0x51a0df[_0x1e697f][_0x251974(0x26e)+'h'],0xc8)?_0x5a83fd[_0x5e3d17]=_0x204ba2[_0x251974(0x3e1)](_0x2bbef4[_0x41170a]['subst'+_0x251974(0x931)](0x0,0xc8),_0x204ba2[_0x251974(0x3a6)]):_0x3756a1[_0xd19028]=_0x407a3a[_0x3ad457]:(_0x4698c1['items']=_0x31c58c[_0x251974(0x2e6)][_0x251974(0x5a0)],console[_0x251974(0x617)](_0x251974(0x27e)+_0x251974(0x953)+'ms('+_0x4698c1['items']['lengt'+'h']+_0x251974(0x7e5))));}else console[_0x251974(0x617)](_0x251974(0x752)+'析失败:'+(_0x31c58c['error']||_0x204ba2[_0x251974(0x908)]));}const _0x318cbe=0.1,_0x450124=_0x4698c1['items'][_0x251974(0x132)+'e']((_0x33c8c0,_0x2a11a3)=>_0x33c8c0+(_0x2a11a3[_0x251974(0x5f3)+'t']||0x0),0x0);if(_0x204ba2['bVERA'](Math[_0x251974(0x3ae)](_0x204ba2['UQpKw'](_0x450124,_0x4698c1[_0x251974(0x86e)+_0x251974(0xa14)+'t'])),_0x318cbe)){_0x184c32={'success':![],'error':_0x251974(0x6ae)+_0x251974(0x164)+_0x450124[_0x251974(0x151)+'ed'](0x2)+(_0x251974(0x90)+_0x251974(0x506))+_0x4698c1[_0x251974(0x86e)+_0x251974(0xa14)+'t']+_0x251974(0x2d9),'code':0x190},userMessage=_0x251974(0x7b9)+_0x251974(0x56a)+'验不通过\x0a'+_0x251974(0x75a)+'总和:'+_0x450124[_0x251974(0x151)+'ed'](0x2)+(_0x251974(0x23f)+'金额:')+_0x4698c1['total'+_0x251974(0xa14)+'t']+('元\x0a\x0a💡\x20'+'请检查:\x0a'+_0x251974(0x974)+_0x251974(0x654)+'mount'+_0x251974(0x90d)+_0x251974(0x5df)+_0x251974(0x5ec)+'price'+_0x251974(0x992)+_0x251974(0x4de)+'y)\x0a2.'+_0x251974(0x1d0)+'漏的商品');break;}const _0x37229e=_0x204ba2['SxVZi'](_0x4698c1[_0x251974(0x821)+_0x251974(0x9f2)+_0x251974(0x481)],_0x4698c1['disco'+'untAm'+_0x251974(0x481)]);if(_0x204ba2[_0x251974(0x4a7)](Math[_0x251974(0x3ae)](_0x37229e-_0x4698c1[_0x251974(0x26b)+_0x251974(0x4df)+'nt']),_0x318cbe)){_0x184c32={'success':![],'error':'优惠计算不'+_0x251974(0x468)+'('+_0x4698c1[_0x251974(0x821)+_0x251974(0x9f2)+_0x251974(0x481)]+(_0x251974(0x7aa)+'惠(')+_0x4698c1[_0x251974(0x5e9)+_0x251974(0x1fd)+_0x251974(0x481)]+_0x251974(0x5be)+_0x37229e[_0x251974(0x151)+'ed'](0x2)+(_0x251974(0x1f2)+'付金额(')+_0x4698c1[_0x251974(0x26b)+_0x251974(0x4df)+'nt']+')','code':0x190},userMessage=_0x251974(0x7b9)+_0x251974(0x56a)+_0x251974(0x2d6)+'\x0a原价:'+_0x4698c1[_0x251974(0x821)+_0x251974(0x9f2)+_0x251974(0x481)]+_0x251974(0x936)+_0x4698c1[_0x251974(0x5e9)+_0x251974(0x1fd)+_0x251974(0x481)]+(_0x251974(0x2a8)+'付:')+_0x37229e[_0x251974(0x151)+'ed'](0x2)+(_0x251974(0x8c8)+'付:')+_0x4698c1['actua'+_0x251974(0x4df)+'nt']+(_0x251974(0x31a)+'请检查优惠'+_0x251974(0xe2)+'确');break;}if(_0x4698c1[_0x251974(0x7ee)+_0x251974(0x8ca)]){if(_0x204ba2[_0x251974(0x85f)]===_0x204ba2[_0x251974(0x85f)]){const _0x325d6c=await callMcpPrompt(_0x204ba2[_0x251974(0x558)],{'text':_0x4698c1[_0x251974(0x7ee)+'put'],'type':_0x204ba2[_0x251974(0x558)]},_0x2f4a9f);_0x325d6c[_0x251974(0x8ce)+'ss']&&_0x325d6c[_0x251974(0x2e6)]&&(_0x4698c1={..._0x4698c1,..._0x325d6c[_0x251974(0x2e6)]});}else return new _0x1a79cd(_0x1db49c)[_0x251974(0xa0e)+'me']();}const _0x66b2bc=await _0x204ba2[_0x251974(0x172)](callMcpPrompt,_0x204ba2['UuMWm'],{'data':_0x4698c1,'type':_0x204ba2[_0x251974(0x558)]},_0x2f4a9f);_0x66b2bc[_0x251974(0x8ce)+'ss']&&(_0x4698c1={..._0x66b2bc['data'],..._0x4698c1});_0x4698c1[_0x251974(0xa06)+_0x251974(0x949)]=_0x204ba2[_0x251974(0x2bb)](_0x38eb5c,''),_0x4698c1[_0x251974(0xf2)+_0x251974(0x42c)+'r']=_0x204ba2['iVSPk'](_0x5859c2,'');const _0x568137=convertParams(_0x204ba2[_0x251974(0x48a)],_0x4698c1);_0x184c32=await callMcpHubWithLogging(_0x204ba2[_0x251974(0x49c)],_0x568137,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32[_0x251974(0x8ce)+'ss']){const _0x19cb59=_0x4698c1[_0x251974(0x86e)+'Amoun'+'t']||_0x4698c1[_0x251974(0x5a0)]?.[_0x251974(0x132)+'e']((_0x7be334,_0x49447f)=>_0x7be334+(_0x49447f[_0x251974(0x5f3)+'t']||0x0),0x0)||0x0,_0x4d11fb=_0x4698c1[_0x251974(0x837)]||'',_0x323753=_0x4698c1[_0x251974(0x5a0)]?.[0x0]?.[_0x251974(0x6dc)+_0x251974(0x78f)]||'购物',_0x23a86c=_0x4698c1[_0x251974(0x5a0)]?.[_0x251974(0x26e)+'h']||0x0,_0x50ebf2={};_0x50ebf2['餐饮']=_0x204ba2['JoJVO'],_0x50ebf2['食品']=_0x251974(0x698)+'🍎',_0x50ebf2['购物']=_0x204ba2[_0x251974(0x972)],_0x50ebf2['其他']=_0x251974(0x9bc)+'继续保持~'+'\x20✨';const _0x1a4203=_0x50ebf2,_0x5e639b=_0x1a4203[_0x323753]||_0x204ba2[_0x251974(0x972)];let _0x5278f2='';_0x184c32[_0x251974(0x747)+_0x251974(0x995)]&&_0x184c32[_0x251974(0x747)+'hts'][_0x251974(0x26e)+'h']>0x0&&(_0x204ba2[_0x251974(0x977)](_0x204ba2[_0x251974(0x53f)],_0x204ba2[_0x251974(0x53f)])?(_0x286bc8[_0x251974(0x617)]=_0x97b6db[_0x251974(0x715)+'ge'],_0x9a60a7[_0x251974(0x58f)+_0x251974(0x29d)]=![],_0x4546bc[_0x251974(0x617)](_0x251974(0x270)+_0x251974(0x744),_0x51e667['messa'+'ge'])):_0x5278f2=_0x204ba2[_0x251974(0x480)](_0x204ba2[_0x251974(0x6e7)],_0x184c32[_0x251974(0x747)+_0x251974(0x995)]['map'](_0x12cd3b=>_0x12cd3b['messa'+'ge']||_0x12cd3b['title'])['join'](';')));let _0x76dcc9='';if(_0x184c32[_0x251974(0x655)+_0x251974(0x675)+'ked']&&_0x204ba2[_0x251974(0x7b2)](_0x184c32[_0x251974(0x655)+_0x251974(0x675)+_0x251974(0x6f9)][_0x251974(0x26e)+'h'],0x0)){if(_0x204ba2[_0x251974(0x358)](_0x204ba2[_0x251974(0x91b)],_0x204ba2[_0x251974(0x91b)]))_0x76dcc9=_0x204ba2[_0x251974(0x97f)](_0x204ba2[_0x251974(0x532)],_0x184c32['newly'+_0x251974(0x675)+_0x251974(0x6f9)][_0x251974(0x8e0)](_0x2e95c4=>_0x2e95c4[_0x251974(0x1b1)]+'\x20'+_0x2e95c4[_0x251974(0x71a)]+'(+'+_0x2e95c4[_0x251974(0x385)+'s']+'分)')[_0x251974(0x449)](';'));else{const _0x1dee42=_0x432bcb[_0x251974(0x534)+_0x251974(0x153)+'r'](),_0x1f8c13=_0x204ba2['LGiTw'](_0x2f598b,_0x2dd0e7[_0x251974(0x3eb)+_0x251974(0x2d8)]()+0x1)[_0x251974(0x8ad)+_0x251974(0x3ac)](0x2,'0'),_0x41ef4b=_0x204ba2[_0x251974(0x362)](_0x696652,_0x50f55b['getDa'+'te']())[_0x251974(0x8ad)+'art'](0x2,'0');return _0x1dee42+'-'+_0x1f8c13+'-'+_0x41ef4b;}}_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x204ba2['oaGOi'],_0x184c32[_0x251974(0x2f9)+_0x251974(0x941)+'ariab'+_0x251974(0x361)]={'agentName':await _0x204ba2['OSjRk'](getAgentName),'store':_0x4d11fb,'totalAmount':_0x19cb59,'category':_0x184c32['data']?.[_0x251974(0x837)+'Categ'+'ory']||_0x323753,'itemCount':_0x23a86c,'date':_0x184c32[_0x251974(0x2e6)]?.[_0x251974(0x8ef)]?new Date(_0x184c32[_0x251974(0x2e6)][_0x251974(0x8ef)])['toLoc'+'aleDa'+_0x251974(0x726)+_0x251974(0x15f)](_0x204ba2[_0x251974(0x1eb)]):new Date()['toLoc'+'aleDa'+_0x251974(0x726)+_0x251974(0x15f)](_0x204ba2['cZPyg']),'正能量祝福语':_0x5e639b,'insightsText':_0x5278f2,'achievementsText':_0x76dcc9,'items':_0x4698c1[_0x251974(0x5a0)]};}break;}else _0x59f299=_0x204ba2[_0x251974(0x3e1)](_0x204ba2[_0x251974(0x532)],_0x479059[_0x251974(0x655)+'Unloc'+_0x251974(0x6f9)]['map'](_0x534138=>_0x534138['icon']+'\x20'+_0x534138['title']+'(+'+_0x534138['point'+'s']+'分)')['join'](';'));}case _0x204ba2[_0x251974(0x397)]:case _0x204ba2[_0x251974(0x8b2)]:{if(_0x204ba2[_0x251974(0x7d3)](_0x251974(0x72f),_0x204ba2[_0x251974(0x51d)]))return KmppVl[_0x251974(0x4a1)](_0x806d12,_0x57bf9d[_0x251974(0x624)+'ce'](KmppVl[_0x251974(0x4bb)],''),_0x1dea6b);else{const _0x63279f=toolMapping[_0x31466c],_0x28d42c=_0x204ba2[_0x251974(0xa15)](convertParams,_0x31466c,_0x4698c1);_0x184c32=await _0x204ba2[_0x251974(0x4ac)](callMcpHubWithLogging,_0x63279f,_0x28d42c,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32['succe'+'ss']){if(_0x204ba2[_0x251974(0x844)](_0x204ba2[_0x251974(0x6be)],_0x204ba2['IPWcH'])){const _0x348ad8=_0x184c32[_0x251974(0x2e6)]?.[_0x251974(0x86e)]||0x0,_0x59202d=_0x184c32['data']?.[_0x251974(0x5a0)]||[],_0x15ba70=_0x184c32[_0x251974(0x2e6)]?.[_0x251974(0x99d)+_0x251974(0x646)]||{};_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x251974(0x502)+'ences'+'/resp'+_0x251974(0x3c8)+_0x251974(0x819)+'ates.'+'md',_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x251974(0xcc)+'feren'+_0x251974(0x555)+_0x251974(0x2cc)+_0x251974(0x4cd)+_0x251974(0x1b6)+_0x251974(0x97d)+_0x251974(0x1f9)+_0x251974(0x499)+'板渲染回复';const _0x41dec0={};_0x41dec0[_0x251974(0x86e)]=_0x348ad8,_0x41dec0[_0x251974(0x5a0)]=_0x59202d,_0x41dec0[_0x251974(0x99d)+_0x251974(0x646)]=_0x15ba70,_0x184c32[_0x251974(0x2f9)+_0x251974(0x941)+_0x251974(0x411)+_0x251974(0x361)]=_0x41dec0;}else{const _0x1359f2={..._0x2795a9};return _0x1359f2[_0x251974(0x2e6)]=_0x204ba2[_0x251974(0x523)],_0x1359f2[_0x251974(0x662)]=_0x251974(0x96f)+'小:'+_0x31fbf5[_0x251974(0x26e)+'h']+'\x20字符',_0x4cdbcd[_0x251974(0x20c)+'gify'](_0x1359f2,null,0x2);}}break;}}case _0x251974(0x806)+'tatis'+'tics':{const _0x556bdc=toolMapping[_0x31466c],_0x13a7ac=_0x204ba2[_0x251974(0x2c1)](convertParams,_0x31466c,_0x4698c1);_0x184c32=await callMcpHubWithLogging(_0x556bdc,_0x13a7ac,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32[_0x251974(0x8ce)+'ss']){if(_0x204ba2['zOVcR']!==_0x251974(0x5fa)){const _0x4d00de={};_0x4d00de[_0x251974(0x42a)+'sive']=!![],_0x5d468a[_0x251974(0x400)+_0x251974(0x16b)](_0x1f935d,_0x4d00de);}else{const _0x35e386=_0x184c32['data']||{};_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+_0x251974(0x521)]=_0x204ba2['iesLn'];const _0x55b9ab={};_0x55b9ab[_0x251974(0x2ed)+'d']=_0x35e386[_0x251974(0x2ed)+_0x251974(0x21e)+_0x251974(0x2ee)]||_0x35e386['perio'+'d']||'未知',_0x55b9ab[_0x251974(0x86e)+_0x251974(0xa14)+'t']=_0x35e386['total'+_0x251974(0xa14)+'t']||0x0,_0x55b9ab[_0x251974(0x86e)+_0x251974(0x407)]=_0x35e386[_0x251974(0x86e)+'Count']||0x0,_0x55b9ab['compa'+'re']=_0x35e386[_0x251974(0x301)+'re'],_0x55b9ab['budge'+'t']=_0x35e386[_0x251974(0x46d)+'t'],_0x55b9ab[_0x251974(0x6dc)+_0x251974(0x217)]=_0x35e386[_0x251974(0x6dc)+_0x251974(0x217)],_0x55b9ab[_0x251974(0x747)+_0x251974(0x995)]=_0x35e386[_0x251974(0x747)+_0x251974(0x995)],_0x184c32['_temp'+'lateV'+_0x251974(0x411)+_0x251974(0x361)]=_0x55b9ab;}}break;}case _0x204ba2[_0x251974(0xb2)]:{const _0x1491ad=toolMapping[_0x31466c],_0x571936=_0x204ba2[_0x251974(0x559)](convertParams,_0x31466c,_0x4698c1);_0x184c32=await _0x204ba2[_0x251974(0x9ac)](callMcpHubWithLogging,_0x1491ad,_0x571936,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32['succe'+'ss']){const _0x457c61=_0x184c32[_0x251974(0x2e6)]||{},_0x21162f=_0x457c61[_0x251974(0x747)+'hts']||[];let _0x37918d=_0x251974(0x306)+_0x251974(0x482)+'\x0a\x0a';_0x37918d+=_0x251974(0x3d6)+(_0x457c61['perio'+_0x251974(0x21e)+_0x251974(0x2ee)]||_0x457c61[_0x251974(0x2ed)+'d']||'未知')+'\x0a',_0x37918d+=_0x251974(0x88d)+'\x20'+_0x21162f[_0x251974(0x26e)+'h']+(_0x251974(0x442)+'索\x0a');if(_0x21162f[_0x251974(0x26e)+'h']>0x0){const _0x185da2=_0x21162f[_0x251974(0x959)+'r'](_0x3a9581=>_0x3a9581[_0x251974(0x49a)+_0x251974(0x8d5)]==='high'),_0x3616e8=_0x21162f[_0x251974(0x959)+'r'](_0x4bf8c8=>_0x4bf8c8[_0x251974(0x49a)+_0x251974(0x8d5)]==='mediu'+'m'),_0x494f74=_0x21162f['filte'+'r'](_0x188357=>_0x188357[_0x251974(0x49a)+_0x251974(0x8d5)]===_0x251974(0x1e5));_0x204ba2['KqJHa'](_0x185da2[_0x251974(0x26e)+'h'],0x0)&&(_0x204ba2[_0x251974(0x5f0)](_0x251974(0x3f5),_0x204ba2['RORVz'])?_0x166963[_0x251974(0x617)](_0x251974(0x752)+_0x251974(0xa21)+(_0x2ad58d['error']||_0x251974(0x316))):(_0x37918d+='\x0a🔴\x20高优'+_0x251974(0x3cf)+_0x185da2[_0x251974(0x26e)+'h']+_0x251974(0x86b),_0x185da2['forEa'+'ch'](_0x13fa18=>{const _0x2fe9a5=_0x251974;_0x204ba2[_0x2fe9a5(0x438)](_0x204ba2[_0x2fe9a5(0x4e2)],_0x204ba2[_0x2fe9a5(0x516)])?(_0x2b02f3['messa'+'ge']['inclu'+_0x2fe9a5(0x7a8)](_0x2fe9a5(0x6bf)+'ed')||_0x813db3['messa'+'ge'][_0x2fe9a5(0x7c9)+_0x2fe9a5(0x7a8)](_0x204ba2[_0x2fe9a5(0x94a)]))&&(_0x337159[_0x2fe9a5(0x617)]=_0x37eb29[_0x2fe9a5(0x715)+'ge'],_0x49561e[_0x2fe9a5(0x58f)+_0x2fe9a5(0x29d)]=![],_0xa21743[_0x2fe9a5(0x617)](_0x204ba2[_0x2fe9a5(0x858)],_0x3a04a5[_0x2fe9a5(0x715)+'ge']),_0x228164[_0x2fe9a5(0x9a5)](0x1)):_0x37918d+='\x20\x20'+(_0x13fa18[_0x2fe9a5(0x3d9)]||'•')+'\x20'+_0x13fa18['title']+':'+_0x13fa18['messa'+'ge']+'\x0a';}))),_0x204ba2['xOWzR'](_0x3616e8[_0x251974(0x26e)+'h'],0x0)&&(_0x37918d+=_0x251974(0x870)+_0x251974(0x3cf)+_0x3616e8['lengt'+'h']+_0x251974(0x86b),_0x3616e8['slice'](0x0,0x2)[_0x251974(0x536)+'ch'](_0x542840=>{const _0x1f2da3=_0x251974;_0x37918d+='\x20\x20'+(_0x542840[_0x1f2da3(0x3d9)]||'•')+'\x20'+_0x542840[_0x1f2da3(0x71a)]+':'+_0x542840[_0x1f2da3(0x715)+'ge']+'\x0a';})),_0x494f74['lengt'+'h']>0x0&&(_0x37918d+=_0x251974(0x35a)+_0x251974(0x3cf)+_0x494f74[_0x251974(0x26e)+'h']+_0x251974(0x24c));}_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+'ocati'+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32[_0x251974(0x2f9)+'lateH'+_0x251974(0x521)]=_0x204ba2[_0x251974(0x6ef)];const _0x257f97={};_0x257f97[_0x251974(0x747)+_0x251974(0x995)]=_0x21162f,_0x184c32['_temp'+_0x251974(0x941)+_0x251974(0x411)+_0x251974(0x361)]=_0x257f97;}break;}case _0x204ba2[_0x251974(0x551)]:{(_0x4698c1['forma'+'t']===_0x204ba2['WgxLR']||!_0x4698c1[_0x251974(0x8e4)+'t'])&&(_0x4698c1[_0x251974(0x8e4)+'t']=_0x204ba2[_0x251974(0x620)]);const _0x2961f2=toolMapping[_0x31466c],_0x4dfe29=_0x204ba2[_0x251974(0x4a1)](convertParams,_0x31466c,_0x4698c1);_0x184c32=await _0x204ba2[_0x251974(0x9dc)](callMcpHubWithLogging,_0x2961f2,_0x4dfe29,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32[_0x251974(0x8ce)+'ss']){const _0x4adc75=_0x184c32[_0x251974(0x2e6)]?.['summa'+'ry']||{},_0x2efa35=_0x4adc75[_0x251974(0x86e)+'Recor'+'ds']||0x0,_0x3bc816=_0x4adc75[_0x251974(0x86e)+_0x251974(0xa14)+'t']||0x0,_0x5227b5=_0x184c32[_0x251974(0x2e6)]?.[_0x251974(0x2ed)+_0x251974(0x21e)+_0x251974(0x2ee)]||'';_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+'ocati'+'on']=_0x251974(0x502)+_0x251974(0x3b2)+_0x251974(0x772)+'onse-'+'templ'+_0x251974(0x757)+'md',_0x184c32['_temp'+'lateH'+_0x251974(0x521)]=_0x204ba2['wLBxU'];const _0x4aeda9={};_0x4aeda9['perio'+'d']=_0x5227b5,_0x4aeda9[_0x251974(0x86e)+_0x251974(0x18c)+'ds']=_0x2efa35,_0x4aeda9[_0x251974(0x86e)+_0x251974(0xa14)+'t']=_0x3bc816,_0x184c32[_0x251974(0x2f9)+_0x251974(0x941)+_0x251974(0x411)+'les']=_0x4aeda9;}break;}case'save_'+_0x251974(0x17c)+'e':{if(_0x204ba2[_0x251974(0x40f)](_0x204ba2['WwsNm'],_0x204ba2['WwsNm'])){if(_0x204ba2[_0x251974(0xec)](_0x515b10,_0x2e5eba)&&_0x204ba2[_0x251974(0x939)](typeof _0x50c56d[_0xe1f228],_0x204ba2[_0x251974(0x520)])){const _0x4745e2=_0x1ea3cd(_0xaae3de[_0x46bbde]);!_0x11f358(_0x4745e2)&&(_0x4d47e4['error']('[Type'+'Conve'+'rt]\x20'+_0x439dba+_0x251974(0x2f2)+_0x52590e[_0x53d394]+_0x251974(0x5d4)+_0x4745e2),_0x4aa2eb[_0x4476a5]=_0x4745e2);}}else{const _0x4039b2=[_0x204ba2[_0x251974(0x69f)],_0x204ba2[_0x251974(0x5a2)],_0x204ba2['Plqvl'],_0x204ba2[_0x251974(0x477)]],_0x457884=[];for(const _0x144df8 of _0x4039b2){_0x204ba2[_0x251974(0x9b6)]!==_0x204ba2[_0x251974(0x9b6)]?_0x4a7b9f['push']('商品'+_0x204ba2[_0x251974(0x3e1)](_0x55e878,0x1)+'('+(_0x3b3d48['name']||_0x204ba2[_0x251974(0x808)])+(_0x251974(0x8ff)+':\x20')+_0x47e310['join'](',\x20')):(_0x204ba2[_0x251974(0x58c)](_0x4698c1[_0x144df8],undefined)||_0x204ba2[_0x251974(0x358)](_0x4698c1[_0x144df8],null)||_0x204ba2['DGDvW'](_0x4698c1[_0x144df8],''))&&_0x457884[_0x251974(0x9ef)](_0x144df8);}if(_0x204ba2['RrdBg'](_0x457884[_0x251974(0x26e)+'h'],0x0)){if(_0x204ba2[_0x251974(0x40f)](_0x204ba2[_0x251974(0x9fc)],'QTaDU')){_0x184c32={'success':![],'error':_0x251974(0x2b4)+'失:'+_0x457884['join'](',\x20'),'code':0x190,'hint':_0x204ba2[_0x251974(0x14b)],'debug':{'missing':_0x457884,'received':Object[_0x251974(0x918)](_0x4698c1),'docs':_0x204ba2[_0x251974(0x885)]}},userMessage='❌\x20收入记'+_0x251974(0x177)+'错误:缺少'+_0x251974(0x1c4)+_0x457884[_0x251974(0x449)](',\x20')+('\x0a\x0a💡\x20解'+'决方案:\x0a'+_0x251974(0x5e6)+_0x251974(0x818)+_0x251974(0x680)+_0x251974(0x1e6)+'息\x0a2.\x20'+'确保传递以'+_0x251974(0x68a)+_0x251974(0x437)+_0x251974(0x848)+_0x251974(0x5f3)+'t(金额)'+'、cate'+'gory('+_0x251974(0x434)+_0x251974(0x462)+'ut(原始'+'输入)\x0a3'+_0x251974(0x77a)+'SKILL'+_0x251974(0x528)+_0x251974(0x57e)+_0x251974(0x32f));break;}else _0x4c50b9[_0x251974(0x617)](KmppVl[_0x251974(0x92b)],_0x19e3b4[_0x251974(0x715)+'ge']);}if(_0x204ba2[_0x251974(0x50a)](typeof _0x4698c1[_0x251974(0x5f3)+'t'],_0x204ba2['Xsfrt'])||_0x204ba2['VNSSy'](_0x4698c1['amoun'+'t'],0x0)){if(_0x204ba2[_0x251974(0x58b)](_0x204ba2[_0x251974(0x6fb)],_0x204ba2[_0x251974(0x6fb)])){const _0x5a40de=_0x204ba2['gutOM'](_0xc59e90,_0x2efc04),_0x2b4497=_0x48d6bc(_0x1e3c46);if(_0x204ba2[_0x251974(0x2fc)](_0x26e38c,_0x5a40de)||_0x5a40de<=0x0||_0x204ba2['AMLgR'](_0x2b4497,0x0))return'';const _0xf67866=_0x204ba2['ZdiwF'](_0x5a40de/_0x2b4497,0x1f4);return _0xf67866[_0x251974(0x151)+'ed'](0x2)+(_0x251974(0x6ce)+'g');}else{const _0x29743d={};_0x29743d[_0x251974(0x8ce)+'ss']=![],_0x29743d['error']=_0x251974(0x5f8)+'正数',_0x29743d['code']=0x190,_0x184c32=_0x29743d,userMessage=_0x251974(0x568)+_0x251974(0x1b3)+_0x251974(0x4cc)+'数';break;}}let _0x23b890=null;if(_0x4698c1['time_'+_0x251974(0x5d7)+'iptio'+'n']){const _0x360893=parseTimeDescription(_0x4698c1[_0x251974(0x786)+'descr'+_0x251974(0x1aa)+'n'],Date[_0x251974(0x104)]());_0x4698c1['date']=_0x360893,console[_0x251974(0x503)](_0x251974(0xa1c)+'_inco'+_0x251974(0x582)+_0x251974(0x742)+':\x20'+_0x4698c1['time_'+_0x251974(0x5d7)+_0x251974(0x1aa)+'n']+_0x251974(0x952)+_0x360893+'\x20('+new Date(_0x360893)[_0x251974(0x886)+_0x251974(0x85e)+_0x251974(0x931)](_0x204ba2[_0x251974(0x1eb)])+')');}else!_0x4698c1[_0x251974(0x8ef)]&&(_0x4698c1[_0x251974(0x8ef)]=Date[_0x251974(0x104)](),_0x23b890=_0x204ba2[_0x251974(0x803)],console['log'](_0x251974(0xa1c)+'_inco'+_0x251974(0x56c)+_0x251974(0x485)+_0x251974(0x89f)+_0x251974(0x185)+_0x4698c1[_0x251974(0x8ef)]));if(_0x4698c1['date']){const _0x15e570=_0x204ba2[_0x251974(0x796)](validateDate,_0x4698c1[_0x251974(0x8ef)],_0x251974(0x8df));if(!_0x15e570['valid']){const _0x3398a7={};_0x3398a7[_0x251974(0x8ce)+'ss']=![],_0x3398a7[_0x251974(0x617)]=_0x15e570[_0x251974(0x617)],_0x3398a7['code']=0x190,_0x184c32=_0x3398a7,userMessage=_0x15e570['messa'+'ge'];break;}const _0x56db20=new Date(_0x4698c1[_0x251974(0x8ef)]),_0x49198b=new Date(),_0x438f3c=new Date(_0x204ba2[_0x251974(0x961)](_0x49198b[_0x251974(0x534)+_0x251974(0x153)+'r'](),0x1),0x0,0x1),_0x1e492=new Date(_0x204ba2[_0x251974(0x97f)](_0x49198b[_0x251974(0x534)+_0x251974(0x153)+'r'](),0x1),0xb,0x1f);(_0x204ba2['EfDVc'](_0x56db20,_0x438f3c)||_0x204ba2['hKwIX'](_0x56db20,_0x1e492))&&(console['warn'](_0x251974(0xa1c)+'_inco'+'me]\x20时'+'间异常:'+_0x4698c1[_0x251974(0x8ef)]+'\x20('+_0x56db20[_0x251974(0x886)+'aleSt'+_0x251974(0x931)](_0x204ba2[_0x251974(0x1eb)])+(_0x251974(0x5e1)+_0x251974(0x54b))),_0x4698c1[_0x251974(0x8ef)]=Date['now'](),_0x23b890=_0x204ba2[_0x251974(0x56d)]);}_0x4698c1[_0x251974(0xa06)+_0x251974(0x949)]=_0x204ba2[_0x251974(0x87e)](_0x38eb5c,''),_0x4698c1[_0x251974(0xf2)+'ovide'+'r']=_0x204ba2['vjAfx'](_0x5859c2,'');const _0x2eca4a=_0x204ba2['IcnPK'](convertParams,_0x204ba2['ckkQY'],_0x4698c1);_0x184c32=await callMcpHubWithLogging(_0x204ba2['tPUgV'],_0x2eca4a,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32[_0x251974(0x8ce)+'ss']){const _0x14e19a=_0x4698c1['name']||_0x251974(0x729),_0x462d59=_0x4698c1[_0x251974(0x5f3)+'t']||0x0,_0x209484=_0x4698c1[_0x251974(0x6dc)+_0x251974(0x78f)]||'其他',_0x89799f=_0x4698c1[_0x251974(0x837)]||'';_0x184c32['_temp'+_0x251974(0xe5)+'ocati'+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x204ba2[_0x251974(0x66a)],_0x184c32['_temp'+_0x251974(0x941)+'ariab'+_0x251974(0x361)]={'agentName':await getAgentName(),'类型':'收入','商品名':_0x14e19a,'商家':_0x204ba2['xkANr'](_0x89799f,null),'金额':_0x462d59,'分类':_0x184c32[_0x251974(0x2e6)]?.[_0x251974(0x6dc)+_0x251974(0x8f8)+'me']||_0x209484,'日期':_0x184c32[_0x251974(0x2e6)]?.['date']?new Date(_0x184c32['data'][_0x251974(0x8ef)])['toLoc'+_0x251974(0x85e)+_0x251974(0x931)](_0x204ba2[_0x251974(0x1eb)]):new Date()['toLoc'+'aleSt'+_0x251974(0x931)](_0x204ba2[_0x251974(0x1eb)]),'正能量祝福语':_0x251974(0x4b9)+'💰','timeNote':_0x204ba2['SgwBJ'](_0x23b890,null)};}break;}}case _0x204ba2[_0x251974(0x37d)]:{const _0x418865=_0x304152[_0x251974(0x7a0)]||_0x204ba2['tXaxp'],_0x1311da={};_0x1311da['type']=_0x418865;const _0x1cb53e=await _0x204ba2[_0x251974(0x68f)](callMcpPrompt,_0x204ba2[_0x251974(0x148)],_0x1311da,_0x2f4a9f);if(_0x1cb53e[_0x251974(0x8ce)+'ss']){const _0x1662b7={};_0x1662b7[_0x251974(0x7a0)]=_0x418865,_0x1662b7[_0x251974(0x5c1)+'on']=_0x1cb53e[_0x251974(0x2e6)][_0x251974(0x5c1)+'on'],_0x1662b7[_0x251974(0x8be)+'mProm'+'pt']=_0x1cb53e[_0x251974(0x2e6)]['syste'+_0x251974(0x49f)+'pt'],_0x1662b7[_0x251974(0x7ff)+_0x251974(0x7d1)+_0x251974(0x6e5)+'ate']=_0x1cb53e[_0x251974(0x2e6)][_0x251974(0x7ff)+_0x251974(0x7d1)+_0x251974(0x6e5)+_0x251974(0x612)],_0x1662b7[_0x251974(0x337)+_0x251974(0x361)]=_0x1cb53e['data'][_0x251974(0x337)+_0x251974(0x361)],_0x1662b7[_0x251974(0xc5)+_0x251974(0x137)]=_0x1cb53e['data'][_0x251974(0xc5)+_0x251974(0x137)],_0x1662b7[_0x251974(0x4b2)+'uctio'+'ns']=_0x204ba2['PXTIB'];const _0x2f4dbc={};_0x2f4dbc['succe'+'ss']=!![],_0x2f4dbc[_0x251974(0x2e6)]=_0x1662b7,_0x184c32=_0x2f4dbc,_0x184c32[_0x251974(0x2f9)+'lateL'+_0x251974(0x658)+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32['_temp'+_0x251974(0x263)+_0x251974(0x521)]=_0x251974(0xcc)+_0x251974(0x77c)+_0x251974(0x555)+_0x251974(0x2cc)+_0x251974(0x4cd)+_0x251974(0x1b6)+_0x251974(0x97d)+_0x251974(0x7f9)+_0x251974(0x512)+'板渲染回复';const _0x51d03b={};_0x51d03b[_0x251974(0x5c1)+'on']=_0x1cb53e['data']['versi'+'on'],_0x51d03b[_0x251974(0x337)+_0x251974(0x361)]=_0x1cb53e['data'][_0x251974(0x337)+'les'],_0x184c32[_0x251974(0x2f9)+_0x251974(0x941)+_0x251974(0x411)+'les']=_0x51d03b;}else{if(_0x204ba2['GGLUF'](_0x204ba2['nGfAl'],_0x204ba2[_0x251974(0x616)])){const _0x2e072d={};_0x2e072d[_0x251974(0x8ce)+'ss']=![],_0x2e072d['error']=_0x1cb53e[_0x251974(0x617)],_0x184c32=_0x2e072d;}else _0xc03fd3[_0x251974(0x9ef)](_0x435c7d);}break;}case _0x204ba2[_0x251974(0x63f)]:{const _0x363578=await callMcpPrompt(_0x204ba2['CjIIX'],{},_0x2f4a9f);if(_0x363578[_0x251974(0x8ce)+'ss']){if(_0x204ba2[_0x251974(0x292)](_0x204ba2[_0x251974(0x37a)],_0x204ba2[_0x251974(0x37a)])){const _0x33e7c3=_0x1d0a79||_0x251974(0x65c)+_0x251974(0x529)+_0x251974(0x55f)+'2024',_0x5f2150=_0x167160[_0x251974(0x624)+'ce'](KmppVl[_0x251974(0x32d)],'');let _0x91062f='';for(let _0xc9283a=0x0;KmppVl[_0x251974(0x7b7)](_0xc9283a,_0x5f2150['lengt'+'h']);_0xc9283a+=0x2){const _0x150d9f=_0x36ff2c(_0x5f2150['subst'+'r'](_0xc9283a,0x2),0x10);_0x91062f+=_0x58cede['fromC'+_0x251974(0x319)+'de'](KmppVl[_0x251974(0x873)](_0x150d9f,_0x33e7c3[_0x251974(0x4d7)+_0x251974(0x738)](KmppVl['aLCRe'](KmppVl['FcHUb'](_0xc9283a,0x2),_0x33e7c3[_0x251974(0x26e)+'h']))));}return _0x91062f;}else{const _0x3eef58={};_0x3eef58['promp'+'t']=_0x363578[_0x251974(0x2e6)]['promp'+'t'],_0x3eef58['curre'+'ntDat'+'e']=_0x363578['data']['curre'+_0x251974(0x208)+'e'],_0x3eef58['curre'+_0x251974(0x1b8)+'e']=_0x363578[_0x251974(0x2e6)][_0x251974(0x5e3)+_0x251974(0x1b8)+'e'],_0x3eef58[_0x251974(0xc5)+_0x251974(0x137)]=_0x363578[_0x251974(0x2e6)][_0x251974(0xc5)+_0x251974(0x137)],_0x3eef58[_0x251974(0x4b2)+_0x251974(0x179)+'ns']=_0x363578[_0x251974(0x2e6)][_0x251974(0x4b2)+_0x251974(0x179)+'ns'];const _0x5850df={};_0x5850df[_0x251974(0x8ce)+'ss']=!![],_0x5850df[_0x251974(0x2e6)]=_0x3eef58,_0x184c32=_0x5850df,_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x251974(0x502)+_0x251974(0x3b2)+'/resp'+_0x251974(0x3c8)+_0x251974(0x819)+_0x251974(0x757)+'md',_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x251974(0xcc)+_0x251974(0x77c)+'ces/r'+_0x251974(0x2cc)+_0x251974(0x4cd)+_0x251974(0x1b6)+_0x251974(0x97d)+_0x251974(0x7f9)+_0x251974(0x512)+_0x251974(0x282);const _0x4e7414={};_0x4e7414[_0x251974(0x5e3)+_0x251974(0x208)+'e']=_0x363578['data'][_0x251974(0x5e3)+'ntDat'+'e'],_0x4e7414[_0x251974(0x5e3)+'ntTim'+'e']=_0x363578['data'][_0x251974(0x5e3)+_0x251974(0x1b8)+'e'],_0x184c32[_0x251974(0x2f9)+_0x251974(0x941)+'ariab'+_0x251974(0x361)]=_0x4e7414;}}else{const _0x478996={};_0x478996[_0x251974(0x8ce)+'ss']=![],_0x478996[_0x251974(0x617)]=_0x363578[_0x251974(0x617)],_0x184c32=_0x478996;}break;}case _0x204ba2[_0x251974(0x10b)]:{const _0x4a13a3={};_0x4a13a3[_0x251974(0x9cc)+'nt']=_0x4698c1[_0x251974(0x9cc)+'nt'],_0x4a13a3[_0x251974(0x25e)+_0x251974(0x73b)]=_0x4698c1[_0x251974(0x7a0)]||_0x204ba2[_0x251974(0x866)],_0x4a13a3[_0x251974(0x6a9)+'ct']=_0x4698c1['conta'+'ct']||'',_0x4a13a3['conte'+'xt']=_0x4698c1[_0x251974(0x9cc)+'xt']||'',_0x4a13a3[_0x251974(0xa06)+'Type']=_0x4698c1[_0x251974(0xa06)+_0x251974(0x949)]||'',_0x4a13a3[_0x251974(0xf2)+_0x251974(0x42c)+'r']=_0x4698c1['apiPr'+_0x251974(0x42c)+'r']||'',_0x4a13a3[_0x251974(0x25a)+_0x251974(0x371)]=MCP_VERSION,_0x4a13a3[_0x251974(0x16c)+_0x251974(0x96b)]=_0x3c2936['heade'+'rs']?.[_0x204ba2['wHHAk']]||'';const _0x554392=_0x4a13a3;_0x184c32=await callMcpHubWithLogging(_0x204ba2['IcLDb'],_0x554392,_0x2f4a9f,_0x5d5ff0,_0x72c67,_0x49291f,_0x38eb5c,_0x5859c2);if(_0x184c32[_0x251974(0x8ce)+'ss']){if(_0x204ba2[_0x251974(0x640)](_0x204ba2[_0x251974(0x409)],_0x251974(0x7e7))){const _0x139488=_0x143b3c[_0x4227db][0x0],_0x380ebc=KmppVl[_0x251974(0x13c)](_0x139488,_0x4fddc3['windo'+_0x251974(0x9d6)]),_0x27747c=_0x1b4486['ceil'](KmppVl[_0x251974(0x765)](KmppVl['ahYgT'](_0x380ebc,_0x2ea7b2),0x3e8)),_0x5a34bc={};return _0x5a34bc[_0x251974(0x7f8)+'ed']=![],_0x5a34bc['limit'+_0x251974(0x949)]=_0x4ab8d7,_0x5a34bc['maxRe'+_0x251974(0x315)+'s']=_0x3b79c1[_0x251974(0x43b)+_0x251974(0x315)+'s'],_0x5a34bc['windo'+_0x251974(0x9d6)]=_0x3c16e7['windo'+_0x251974(0x9d6)],_0x5a34bc['reset'+_0x251974(0x3e2)]=_0x380ebc,_0x5a34bc[_0x251974(0x798)+'econd'+'s']=_0x27747c,_0x5a34bc;}else{const _0x199dfe={};_0x199dfe[_0x251974(0x9dd)]=_0x204ba2['YGlag'],_0x199dfe[_0x251974(0x9f8)+'re']='功能建议',_0x199dfe[_0x251974(0x6c6)+'vemen'+'t']='优化建议',_0x199dfe[_0x251974(0xfb)]=_0x204ba2[_0x251974(0x39b)];const _0x2f8369=_0x199dfe[_0x554392['feedT'+'ype']]||_0x251974(0x3a4);_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32['_temp'+_0x251974(0x263)+_0x251974(0x521)]=_0x251974(0xcc)+_0x251974(0x77c)+_0x251974(0x555)+_0x251974(0x2cc)+_0x251974(0x4cd)+_0x251974(0x1b6)+'es.md'+_0x251974(0x9b0)+'染回复',_0x184c32[_0x251974(0x2f9)+'lateV'+_0x251974(0x411)+_0x251974(0x361)]={'feedbackId':_0x184c32['data'][_0x251974(0x1b2)+_0x251974(0xa19)],'type':_0x2f8369,'time':new Date()[_0x251974(0x886)+_0x251974(0x85e)+_0x251974(0x931)](_0x251974(0xe4))};}}else{if(_0x251974(0x72e)!==_0x251974(0x72e)){_0x37b1c2[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x204ba2['VUSCc'],_0x556a72[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x251974(0xcc)+'feren'+'ces/r'+_0x251974(0x2cc)+_0x251974(0x4cd)+'mplat'+_0x251974(0x97d)+'中的模板渲'+'染回复';const _0x271c3d={};_0x271c3d[_0x251974(0x617)]=_0x63ce41[_0x251974(0x617)]||_0x204ba2['uqCSf'],_0x41c9c0[_0x251974(0x2f9)+_0x251974(0x941)+_0x251974(0x411)+_0x251974(0x361)]=_0x271c3d;}else _0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on']=_0x204ba2[_0x251974(0x999)],_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x204ba2[_0x251974(0x692)],_0x184c32[_0x251974(0x2f9)+_0x251974(0x941)+_0x251974(0x411)+_0x251974(0x361)]={'error':_0x184c32['error']||_0x251974(0x316)};}break;}default:throw new Error(_0x251974(0x549)+'\x20'+_0x31466c);}const _0x59c6fa=await _0x204ba2['KCHhk'](getAgentName);_0x184c32&&typeof _0x184c32===_0x204ba2[_0x251974(0x728)]&&(_0x204ba2[_0x251974(0x48e)](_0x204ba2[_0x251974(0x48b)],_0x204ba2[_0x251974(0x48b)])?_0x184c32[_0x251974(0xa06)+'Name']=_0x59c6fa:(_0x6a3475['error']=_0x59e47e[_0x251974(0x715)+'ge'],_0x1975e7[_0x251974(0x58f)+_0x251974(0x29d)]=![],_0x41b113[_0x251974(0x617)](_0x204ba2[_0x251974(0x858)],_0x3a7ec2[_0x251974(0x715)+'ge']),_0x145e32[_0x251974(0x9a5)](0x1)));const _0x55c4db={};_0x55c4db[_0x251974(0x8ce)+'ss']=_0x184c32[_0x251974(0x8ce)+'ss'],_0x55c4db[_0x251974(0x2e6)]=_0x184c32[_0x251974(0x2e6)],_0x55c4db[_0x251974(0x617)]=_0x184c32['error'],_0x55c4db[_0x251974(0x2f9)+_0x251974(0xe5)+'ocati'+'on']=_0x184c32[_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on'],_0x55c4db[_0x251974(0x2f9)+_0x251974(0x263)+'int']=_0x184c32[_0x251974(0x2f9)+_0x251974(0x263)+_0x251974(0x521)],_0x55c4db[_0x251974(0x2f9)+_0x251974(0x941)+_0x251974(0x411)+_0x251974(0x361)]=_0x184c32['_temp'+'lateV'+_0x251974(0x411)+'les'],_0x55c4db[_0x251974(0xa06)+'Name']=_0x59c6fa;const _0x4d53d8=_0x55c4db;return{'content':[{'type':_0x204ba2[_0x251974(0x594)],'text':_0x251974(0x664)+_0x251974(0x35c)+_0x251974(0x9df)+'回原始数据'+_0x251974(0x2fa)+'式化消息。'+'\x0a请使用\x20'+_0x251974(0x2f9)+_0x251974(0xe5)+_0x251974(0x658)+'on\x20指定'+'的模板自行'+'渲染回复。'+_0x251974(0x789)+_0x251974(0x3b0)+_0x251974(0x36f)+_0x251974(0x24b)+MCP_VERSION+(_0x251974(0x595)+_0x251974(0x1a9)+_0x251974(0x584)+_0x251974(0x987))+_0x204ba2[_0x251974(0x6ca)](safeStringify,_0x4d53d8)+_0x251974(0x41e)}]};}else{const _0x2121fc=_0xf0f3d7(_0x48df52[_0x251974(0x7f4)+'r'](_0x209147,0x2),0x10);_0x389515+=_0x34faec['fromC'+_0x251974(0x319)+'de'](KmppVl[_0x251974(0x873)](_0x2121fc,_0x3b8887[_0x251974(0x4d7)+'odeAt'](KmppVl['aLCRe'](KmppVl[_0x251974(0x765)](_0x3230b2,0x2),_0x5d8364[_0x251974(0x26e)+'h']))));}}catch(_0x1e12af){if(_0x204ba2[_0x251974(0x235)](_0x251974(0x938),_0x204ba2[_0x251974(0x91c)])){if(_0x1e12af[_0x251974(0x715)+'ge'][_0x251974(0xa05)+_0x251974(0x7a3)](_0x204ba2[_0x251974(0x7af)])){if(_0x204ba2[_0x251974(0x202)](_0x204ba2[_0x251974(0x4cf)],_0x204ba2[_0x251974(0x8a2)]))_0xf73d70[_0x3c8b73]=_0x204ba2[_0x251974(0x9d5)](_0x1a52cf[_0x581eca][_0x251974(0x7f4)+_0x251974(0x931)](0x0,0xc8),'...');else{const _0x289a9c=_0x1e12af[_0x251974(0x715)+'ge'][_0x251974(0x624)+'ce'](_0x204ba2[_0x251974(0x7af)],'');if(_0x289a9c&&_0x204ba2['cTcKa'](_0x289a9c,_0x204ba2[_0x251974(0xa24)])){const _0x3752ff={};_0x3752ff[_0x251974(0x7a0)]=_0x204ba2[_0x251974(0x594)],_0x3752ff['text']=_0x251974(0x69e)+'用需要授权'+_0x251974(0x274)+_0x251974(0x92c)+_0x251974(0x92c)+'━\x0a📱\x20验'+_0x251974(0x4be)+_0x289a9c+(_0x251974(0x300)+'━━━━━'+'━━━━━'+_0x251974(0x7ab)+_0x251974(0x946)+':\x0a•\x20上'+_0x251974(0xa1a)+'是我为您生'+_0x251974(0xa12)+_0x251974(0x5d6)+'ent/M'+_0x251974(0xa20)+_0x251974(0x3ab)+_0x251974(0x9c4)+_0x251974(0x9a1)+_0x251974(0x8de)+_0x251974(0xa00)+_0x251974(0x5cb)+_0x251974(0x50b)+'AI记账\x22'+'小程序中完'+_0x251974(0x9f)+_0x251974(0x7b6)+'微信小程序'+_0x251974(0x9d1)+_0x251974(0x2d1)+_0x251974(0x6e8)+_0x251974(0x7de)+_0x251974(0x8d4)+_0x251974(0x2e5)+'\x22\x0a\x0a3️⃣\x20'+'输入验证码'+_0x251974(0x4b1))+_0x289a9c+(_0x251974(0x2c8)+_0x251974(0x6c8)+_0x251974(0x927)+_0x251974(0xa0f)+_0x251974(0x77f)+'权完成后,'+_0x251974(0x2d7)+_0x251974(0x1b4)+_0x251974(0xbd)+_0x251974(0x84c)+_0x251974(0xfd)+_0x251974(0x845)+'您的记账指'+_0x251974(0x965)+'为您完成记'+'账\x0a•\x20首'+_0x251974(0x402)+_0x251974(0xa22)+_0x251974(0x352)+'权\x0a\x0a⏳\x20'+_0x251974(0x9c3)+_0x251974(0x47c)+'钟');const _0x140343={};return _0x140343[_0x251974(0x9cc)+'nt']=[_0x3752ff],_0x140343;}else{const _0x104c29={};_0x104c29[_0x251974(0x7a0)]=_0x251974(0x830),_0x104c29[_0x251974(0x830)]='⏳\x20正在准'+_0x251974(0x514)+'稍等几秒后'+_0x251974(0x767);const _0x4249e8={};return _0x4249e8['conte'+'nt']=[_0x104c29],_0x4249e8;}}}if(_0x1e12af[_0x251974(0x715)+'ge']['start'+_0x251974(0x7a3)](_0x204ba2[_0x251974(0x16f)])){if(_0x204ba2[_0x251974(0x84b)](_0x204ba2[_0x251974(0x6ee)],_0x204ba2[_0x251974(0x6ee)]))_0x583d33[_0x251974(0xa06)+_0x251974(0x880)]=_0x4bcacc;else{const _0x3f0b4f=path[_0x251974(0x449)](__dirname,_0x204ba2['WZFbB']);let _0x593e11;try{_0x593e11=fs[_0x251974(0x3db)+_0x251974(0x81f)+'nc'](_0x3f0b4f,_0x204ba2[_0x251974(0x4d0)]);}catch(_0x38e07f){if(_0x251974(0x8a1)!==_0x251974(0x53d))_0x593e11=_0x251974(0x388)+_0x251974(0x373)+'\x20文件,请'+_0x251974(0x27a)+_0x251974(0x877);else try{_0x526fc3[_0x251974(0x5a0)]=_0x38d78d[_0x251974(0x93d)](_0x2b573e[_0x251974(0x5a0)]);}catch(_0x34cec9){}}return _0x204ba2['OSjRk'](recordSkillRead),{'content':[{'type':_0x204ba2[_0x251974(0x594)],'text':_0x251974(0x714)+_0x251974(0x214)+_0x251974(0x92c)+'━━━━━'+'━━━\x0a🎉'+_0x251974(0x571)+_0x251974(0x688)+_0x251974(0x55c)+'━━━━━'+_0x251974(0x92c)+_0x251974(0x8ec)+'以正常使用'+_0x251974(0x9bb)+_0x251974(0x189)+'='[_0x251974(0x10c)+'t'](0x3c)+(_0x251974(0x4e3)+_0x251974(0x4ae)+_0x251974(0x6b3)+'仔细阅读并'+'严格按照以'+_0x251974(0x47e)+_0x251974(0x825))+'='['repea'+'t'](0x3c)+'\x0a\x0a'+_0x593e11+'\x0a\x0a'+'='['repea'+'t'](0x3c)+(_0x251974(0xd2)+_0x251974(0x587)+'•\x20授权完'+'成后已自动'+_0x251974(0x3cd)+_0x251974(0x4ae)+_0x251974(0xae)+'严格按照上'+_0x251974(0xa4b)+_0x251974(0x6eb)+_0x251974(0x248)+'作\x0a•\x20首'+_0x251974(0x402)+_0x251974(0xa22)+_0x251974(0x352)+'权')}]};}}const _0x98edc9=_0x204ba2[_0x251974(0x351)](process.env.NODE_ENV,_0x204ba2['UyWnG'])?_0x251974(0x62d)+':\x20'+_0x1e12af[_0x251974(0x715)+'ge']:_0x204ba2[_0x251974(0xe1)];console[_0x251974(0x617)](_0x204ba2[_0x251974(0x3cb)],{'tool':_0x3c2936[_0x251974(0x46b)+'s'][_0x251974(0x3a1)],'error':_0x1e12af[_0x251974(0x715)+'ge'],'stack':_0x1e12af[_0x251974(0x653)],'timestamp':new Date()[_0x251974(0x21d)+_0x251974(0x9e9)+'g']()});const _0x5a9f99={};_0x5a9f99[_0x251974(0x7a0)]=_0x204ba2[_0x251974(0x594)],_0x5a9f99[_0x251974(0x830)]=_0x98edc9;const _0x591c54={};return _0x591c54[_0x251974(0x9cc)+'nt']=[_0x5a9f99],_0x591c54['isErr'+'or']=!![],_0x591c54;}else try{const _0xe27175=_0x311f75[_0x251974(0x20c)+_0x251974(0x222)](_0x1390e0,null,0x2);if(_0x204ba2[_0x251974(0x4a7)](_0xe27175[_0x251974(0x26e)+'h'],_0x2684dc)){const _0x55acd5={..._0x2bea15};return _0x55acd5[_0x251974(0x2e6)]=_0x251974(0x3d8)+_0x251974(0x328),_0x55acd5['_note']=_0x251974(0x96f)+'小:'+_0xe27175[_0x251974(0x26e)+'h']+'\x20字符',_0xdfe40d[_0x251974(0x20c)+_0x251974(0x222)](_0x55acd5,null,0x2);}return _0xe27175;}catch(_0x3caf0c){const _0x57db51={};return _0x57db51['error']=_0x204ba2[_0x251974(0x733)],_0x4f32f1['strin'+'gify'](_0x57db51);}}});function safeStringify(_0x4f0a46,_0x56f02f=0x186a0){const _0x174422=_0x2dbe2,_0x5ef2e6={};_0x5ef2e6[_0x174422(0x74f)]=function(_0xbf947a,_0x40e12e){return _0xbf947a>_0x40e12e;},_0x5ef2e6[_0x174422(0x59f)]='tpbdg',_0x5ef2e6['HkIgJ']=_0x174422(0x610),_0x5ef2e6[_0x174422(0x2a0)]=_0x174422(0x88a)+'失败';const _0x5494a6=_0x5ef2e6;try{const _0x272161=JSON[_0x174422(0x20c)+_0x174422(0x222)](_0x4f0a46,null,0x2);if(_0x5494a6[_0x174422(0x74f)](_0x272161[_0x174422(0x26e)+'h'],_0x56f02f)){const _0x2dc64b={..._0x4f0a46};return _0x2dc64b[_0x174422(0x2e6)]=_0x174422(0x3d8)+_0x174422(0x328),_0x2dc64b[_0x174422(0x662)]='完整数据大'+'小:'+_0x272161[_0x174422(0x26e)+'h']+_0x174422(0x98d),JSON['strin'+_0x174422(0x222)](_0x2dc64b,null,0x2);}return _0x272161;}catch(_0x5eb74c){if(_0x5494a6[_0x174422(0x59f)]!==_0x5494a6[_0x174422(0x1c3)]){const _0xa49d8={};return _0xa49d8['error']=_0x5494a6[_0x174422(0x2a0)],JSON[_0x174422(0x20c)+_0x174422(0x222)](_0xa49d8);}else _0x353638['items'+_0x174422(0x407)]=_0xb2f7d6['items']['lengt'+'h'],_0x212c8e['items']=_0x3c2b44[_0x174422(0x5a0)][_0x174422(0x3ff)](0x0,0x3)['map'](_0x13dce3=>({'name':_0x13dce3['name'],'amount':_0x13dce3[_0x174422(0x5f3)+'t'],'category':_0x13dce3[_0x174422(0x6dc)+_0x174422(0x78f)]}));}}function sanitizeString(_0x471882,_0x516257=0xc8){const _0x46822b=_0x2dbe2,_0x339e50={'SCMrN':function(_0x66c996,_0x37432c){return _0x66c996(_0x37432c);},'GvJqE':function(_0x2a4bd3,_0x1eb6fb){return _0x2a4bd3!==_0x1eb6fb;},'XqqNL':function(_0x19eacb,_0x54287e){return _0x19eacb>_0x54287e;},'cCUMg':function(_0x392def,_0x2af5e1){return _0x392def*_0x2af5e1;},'hhuAk':function(_0x430a2d,_0x2a404f){return _0x430a2d===_0x2a404f;},'bZLGa':'dOQFj'};if(!_0x471882||_0x339e50[_0x46822b(0x84a)](typeof _0x471882,_0x46822b(0x20c)+'g'))return'';if(_0x339e50[_0x46822b(0x872)](_0x471882[_0x46822b(0x26e)+'h'],_0x339e50['cCUMg'](_0x516257,0xa))){if(_0x339e50['hhuAk'](_0x46822b(0x629),_0x339e50[_0x46822b(0x8d1)]))throw new Error(_0x46822b(0x175)+_0x46822b(0xeb)+_0x516257+'\x20字符');else{const _0x5e8ccf=azKKXz[_0x46822b(0x7ef)](_0x4c4276,_0x25a514[_0x55c627]);!_0xa4acfa(_0x5e8ccf)&&(_0xceaad[_0x46822b(0x617)](_0x46822b(0x74e)+_0x46822b(0x5da)+'rt]\x20'+_0x4d55b6+_0x46822b(0x2f2)+_0x3429ed[_0x1f8b7a]+_0x46822b(0x5d4)+_0x5e8ccf),_0x3ce1f9[_0x50e39e]=_0x5e8ccf);}}return _0x471882[_0x46822b(0x624)+'ce'](/<[^>]*>/g,'')['subst'+_0x46822b(0x931)](0x0,_0x516257);}function validateAmount(_0x1ab07e){const _0x50907d=parseFloat(_0x1ab07e);return isNaN(_0x50907d)||_0x50907d<0x0?0x0:_0x50907d;}function validateQuantity(_0x50f40c){const _0x352526=_0x2dbe2,_0x47fc71={'RCbfk':function(_0x31e8bf,_0xf8ecfe){return _0x31e8bf(_0xf8ecfe);},'JBwPE':function(_0x37348b,_0x2fcdc3){return _0x37348b<=_0x2fcdc3;}},_0x36b2f4=_0x47fc71[_0x352526(0x6d3)](parseFloat,_0x50f40c);return isNaN(_0x36b2f4)||_0x47fc71[_0x352526(0xa32)](_0x36b2f4,0x0)?0x1:_0x36b2f4;}function formatDateWithTimezone(_0x2df4a8){const _0x1022e1=_0x2dbe2,_0x2f5333={'ZKTGn':_0x1022e1(0x854)+_0x1022e1(0x8b3)+'3','ClSHb':function(_0x39fb99,_0x412850,_0x24bbbd){return _0x39fb99(_0x412850,_0x24bbbd);},'ICmWB':_0x1022e1(0xd5),'ladHG':_0x1022e1(0xf0),'wtEpT':function(_0x4d1d27,_0x546b20){return _0x4d1d27===_0x546b20;},'auhYn':function(_0x561fa9,_0x4add89){return _0x561fa9===_0x4add89;},'NiIfs':_0x1022e1(0x2cf),'CHhsB':function(_0x4e622c,_0x338bfc){return _0x4e622c===_0x338bfc;},'WTOGL':_0x1022e1(0x7b4),'teQLr':_0x1022e1(0x52b),'Qvexo':function(_0x91b10c,_0x17d14f){return _0x91b10c+_0x17d14f;},'oqKiB':function(_0x3313a9,_0x2ebd54){return _0x3313a9(_0x2ebd54);},'VUUAn':function(_0x1abf20,_0x97a2f8){return _0x1abf20!==_0x97a2f8;},'mmOJM':_0x1022e1(0x9ae),'YMTfy':'日期格式化'+_0x1022e1(0x22b)};if(!_0x2df4a8)return Date[_0x1022e1(0x104)]();try{if(_0x2f5333[_0x1022e1(0x4f5)]!==_0x2f5333[_0x1022e1(0x541)]){let _0x529406;if(_0x2f5333['wtEpT'](typeof _0x2df4a8,_0x1022e1(0x283)+'r')){if(_0x2f5333['auhYn'](_0x2f5333[_0x1022e1(0x3fd)],_0x2f5333[_0x1022e1(0x3fd)]))_0x529406=_0x2df4a8;else{if(_0x28df55[_0x1022e1(0x104)]()-_0x37e689<_0x564181)return _0xe6d047;}}else/^\d+$/[_0x1022e1(0x975)](_0x2df4a8)&&(_0x529406=parseInt(_0x2df4a8,0xa));if(_0x529406)return _0x529406;if(_0x2df4a8[_0x1022e1(0x27c)+_0x1022e1(0x98b)]('Z'))return new Date(_0x2df4a8)[_0x1022e1(0xa0e)+'me']();if(_0x2df4a8['match'](/[+-]\d{2}:\d{2}$/))return new Date(_0x2df4a8)[_0x1022e1(0xa0e)+'me']();if(_0x2df4a8[_0x1022e1(0x9d0)](/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/)){if(_0x2f5333['CHhsB'](_0x2f5333[_0x1022e1(0x4a8)],_0x2f5333[_0x1022e1(0x147)])){const _0x5cc802=_0x255c4c;return _0xa7a7d2=null,_0x5cc802;}else return new Date(_0x2f5333[_0x1022e1(0x39c)](_0x2df4a8,_0x1022e1(0x72d)+'0'))[_0x1022e1(0xa0e)+'me']();}if(_0x2df4a8[_0x1022e1(0x9d0)](/^\d{4}-\d{2}-\d{2}$/))return new Date(_0x2df4a8+(_0x1022e1(0xd9)+_0x1022e1(0xa49)+_0x1022e1(0x34c)))[_0x1022e1(0xa0e)+'me']();const _0x12529d=new Date(_0x2df4a8)[_0x1022e1(0xa0e)+'me']();if(_0x2f5333['oqKiB'](isNaN,_0x12529d)){if(_0x2f5333[_0x1022e1(0x1cc)](_0x1022e1(0x9ae),_0x2f5333[_0x1022e1(0x11f)])){const _0x419b31=_0x2f5333[_0x1022e1(0x7cc)][_0x1022e1(0x3b6)]('|');let _0x2eba2c=0x0;while(!![]){switch(_0x419b31[_0x2eba2c++]){case'0':_0x3444bf['userC'+_0x1022e1(0x464)]=_0x5ef4f5[_0x1022e1(0x302)+'ode'];continue;case'1':_0x42f8dd['error'](_0x1022e1(0x5f9)+'保存的验证'+'码:'+_0x3fd745[_0x1022e1(0x302)+'ode']);continue;case'2':_0x32073f[_0x1022e1(0x24a)+_0x1022e1(0x3c2)]=_0x46b84b[_0x1022e1(0x24a)+'eCode'];continue;case'3':return;case'4':_0x4b906d(_0x1a4679['devic'+_0x1022e1(0x3c2)],0x1388);continue;case'5':_0x4c71ae[_0x1022e1(0x58f)+_0x1022e1(0x29d)]=!![];continue;}break;}}else return Date[_0x1022e1(0x104)]();}return _0x12529d;}else return cwNHhe[_0x1022e1(0x732)](_0x4159ec,_0x4d83f4,_0x52faab);}catch(_0x59ef4f){return console[_0x1022e1(0x617)](_0x2f5333[_0x1022e1(0x981)],_0x59ef4f),Date[_0x1022e1(0x104)]();}}function parseTimeDescription(_0x3b4841,_0x462db2){const _0x2ce28b=_0x2dbe2,_0x44edc5={'HPAyM':function(_0x3fc44a,_0xe92aba){return _0x3fc44a||_0xe92aba;},'zPRLs':function(_0x4f47c5,_0x5bb1f5,_0xb3d95e){return _0x4f47c5(_0x5bb1f5,_0xb3d95e);},'TFBII':'just_'+_0x2ce28b(0x104),'rmLgg':'yeste'+'rday','oOoCj':function(_0x4713f1,_0x2f5245){return _0x4713f1-_0x2f5245;},'FAxya':_0x2ce28b(0x412)+_0x2ce28b(0x75b)+_0x2ce28b(0x1a1)+'ng','AGNjl':_0x2ce28b(0x8af)+_0x2ce28b(0x68e)+'ng','kNMVF':_0x2ce28b(0x8af)+'noon','xnMDI':_0x2ce28b(0x8af)+_0x2ce28b(0x7d2)+_0x2ce28b(0x1df),'Tftjz':function(_0x35ea55,_0x584279){return _0x35ea55!==_0x584279;},'RngFt':'llVWd','mGovB':_0x2ce28b(0xb7),'qUwIm':function(_0x5a6631,_0x14763b){return _0x5a6631-_0x14763b;},'ZXciz':function(_0x93eca,_0x13b317){return _0x93eca===_0x13b317;},'hGgkN':_0x2ce28b(0x2ca)},_0x3f64d7=new Date(_0x462db2),_0x3e906f=_0x3f64d7[_0x2ce28b(0x534)+_0x2ce28b(0x153)+'r'](),_0x3a1fb9=_0x3f64d7[_0x2ce28b(0x3eb)+_0x2ce28b(0x2d8)](),_0x3573c2=_0x3f64d7[_0x2ce28b(0x7ca)+'te']();switch(_0x3b4841){case _0x44edc5['TFBII']:case _0x2ce28b(0x737):return _0x462db2;case _0x44edc5[_0x2ce28b(0x6fd)]:return new Date(_0x3e906f,_0x3a1fb9,_0x44edc5[_0x2ce28b(0x1e1)](_0x3573c2,0x1),0xc,0x0,0x0)['getTi'+'me']();case _0x44edc5[_0x2ce28b(0x257)]:return new Date(_0x3e906f,_0x3a1fb9,_0x44edc5[_0x2ce28b(0x1e1)](_0x3573c2,0x1),0x13,0x0,0x0)['getTi'+'me']();case _0x44edc5[_0x2ce28b(0x5bc)]:return new Date(_0x3e906f,_0x3a1fb9,_0x3573c2,0x8,0x0,0x0)[_0x2ce28b(0xa0e)+'me']();case _0x44edc5[_0x2ce28b(0x432)]:return new Date(_0x3e906f,_0x3a1fb9,_0x3573c2,0xc,0x0,0x0)[_0x2ce28b(0xa0e)+'me']();case _0x44edc5['xnMDI']:return new Date(_0x3e906f,_0x3a1fb9,_0x3573c2,0xe,0x0,0x0)[_0x2ce28b(0xa0e)+'me']();case _0x2ce28b(0x8af)+'eveni'+'ng':return new Date(_0x3e906f,_0x3a1fb9,_0x3573c2,0x13,0x0,0x0)[_0x2ce28b(0xa0e)+'me']();default:if(/^\d{4}-\d{2}-\d{2}$/[_0x2ce28b(0x975)](_0x3b4841)){if(_0x44edc5['Tftjz'](_0x44edc5[_0x2ce28b(0x524)],_0x44edc5[_0x2ce28b(0x8c7)])){const [_0x3f2fd2,_0x1a3473,_0x4da020]=_0x3b4841[_0x2ce28b(0x3b6)]('-')[_0x2ce28b(0x8e0)](Number);return new Date(_0x3f2fd2,_0x44edc5[_0x2ce28b(0x878)](_0x1a3473,0x1),_0x4da020,0xc,0x0,0x0)[_0x2ce28b(0xa0e)+'me']();}else _0x421902[_0x2ce28b(0xa06)+_0x2ce28b(0x949)]=_0x32d6f0;}if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/[_0x2ce28b(0x975)](_0x3b4841)){if(_0x44edc5[_0x2ce28b(0x638)](_0x44edc5[_0x2ce28b(0x922)],_0x44edc5[_0x2ce28b(0x922)]))return new Date(_0x3b4841)[_0x2ce28b(0xa0e)+'me']();else{if(ctEDTG[_0x2ce28b(0x82e)](!_0x480f9d,!_0x131c01))return null;try{return ctEDTG[_0x2ce28b(0x3f1)](_0x4de9c8,_0x5a8be7,_0x36bc18);}catch(_0x2b9e31){return null;}}}return _0x462db2;}}function getTimeNote(_0x120f95){const _0x3d7907=_0x2dbe2,_0x351691={};_0x351691['KDimT']=_0x3d7907(0x502)+'ences'+_0x3d7907(0x772)+'onse-'+_0x3d7907(0x819)+'ates.'+'md',_0x351691[_0x3d7907(0x440)]=_0x3d7907(0xcc)+_0x3d7907(0x77c)+_0x3d7907(0x555)+_0x3d7907(0x2cc)+_0x3d7907(0x4cd)+_0x3d7907(0x1b6)+_0x3d7907(0x97d)+_0x3d7907(0x7f9)+_0x3d7907(0x512)+'板渲染回复',_0x351691['tBRes']=_0x3d7907(0x6dd)+_0x3d7907(0x2ac)+_0x3d7907(0x7b8),_0x351691[_0x3d7907(0x88c)]=function(_0x4b2387,_0x1e9340){return _0x4b2387!==_0x1e9340;},_0x351691[_0x3d7907(0x298)]='utf8',_0x351691[_0x3d7907(0x960)]=_0x3d7907(0x3dd),_0x351691[_0x3d7907(0x917)]=function(_0x153cef,_0x51d161){return _0x153cef===_0x51d161;},_0x351691[_0x3d7907(0x334)]='yrUKf',_0x351691[_0x3d7907(0x712)]=_0x3d7907(0x360);const _0xc99bc8=_0x351691,_0x18a293={};_0x18a293[_0x3d7907(0x15e)+_0x3d7907(0x104)]='刚刚',_0x18a293[_0x3d7907(0x737)]='今天',_0x18a293[_0x3d7907(0x412)+_0x3d7907(0xf9)]='昨天',_0x18a293['yeste'+'rday_'+_0x3d7907(0x1a1)+'ng']='昨晚',_0x18a293[_0x3d7907(0x8af)+'morni'+'ng']='今早',_0x18a293['this_'+_0x3d7907(0x1df)]=_0x3d7907(0x621),_0x18a293[_0x3d7907(0x8af)+_0x3d7907(0x7d2)+_0x3d7907(0x1df)]=_0xc99bc8[_0x3d7907(0x960)],_0x18a293['this_'+_0x3d7907(0x1a1)+'ng']='今晚';const _0x5e6b80=_0x18a293;if(_0x5e6b80[_0x120f95]){if(_0xc99bc8[_0x3d7907(0x917)](_0x3d7907(0x4e4),_0xc99bc8[_0x3d7907(0x334)])){const _0xf8c421={};_0xf8c421['promp'+'t']=_0x4c83ca['data'][_0x3d7907(0x836)+'t'],_0xf8c421[_0x3d7907(0x5e3)+_0x3d7907(0x208)+'e']=_0x256646['data'][_0x3d7907(0x5e3)+_0x3d7907(0x208)+'e'],_0xf8c421[_0x3d7907(0x5e3)+_0x3d7907(0x1b8)+'e']=_0x380a99['data'][_0x3d7907(0x5e3)+_0x3d7907(0x1b8)+'e'],_0xf8c421['myflo'+_0x3d7907(0x137)]=_0x427a7c[_0x3d7907(0x2e6)]['myflo'+'wmate'],_0xf8c421['instr'+_0x3d7907(0x179)+'ns']=_0x159982[_0x3d7907(0x2e6)][_0x3d7907(0x4b2)+_0x3d7907(0x179)+'ns'];const _0x54aae7={};_0x54aae7[_0x3d7907(0x8ce)+'ss']=!![],_0x54aae7['data']=_0xf8c421,_0xf63e6c=_0x54aae7,_0x196bfe[_0x3d7907(0x2f9)+_0x3d7907(0xe5)+_0x3d7907(0x658)+'on']=SdcZIR[_0x3d7907(0x3f2)],_0x571e8d[_0x3d7907(0x2f9)+_0x3d7907(0x263)+_0x3d7907(0x521)]=SdcZIR['TKwig'];const _0x4f8d14={};_0x4f8d14[_0x3d7907(0x5e3)+_0x3d7907(0x208)+'e']=_0x2b7e04[_0x3d7907(0x2e6)][_0x3d7907(0x5e3)+_0x3d7907(0x208)+'e'],_0x4f8d14[_0x3d7907(0x5e3)+'ntTim'+'e']=_0xaaec19['data']['curre'+_0x3d7907(0x1b8)+'e'],_0x4d29a7[_0x3d7907(0x2f9)+_0x3d7907(0x941)+'ariab'+_0x3d7907(0x361)]=_0x4f8d14;}else return _0x3d7907(0x7df)+_0x3d7907(0x5a5)+'用\x22'+_0x5e6b80[_0x120f95]+(_0x3d7907(0x478)+'时间');}if(_0x120f95&&_0x120f95[_0x3d7907(0x9d0)](/^\d{4}-\d{2}-\d{2}$/)){if(_0xc99bc8['Akgly'](_0xc99bc8[_0x3d7907(0x712)],_0xc99bc8[_0x3d7907(0x712)]))_0x2ce92b[_0x3d7907(0x617)](SdcZIR[_0x3d7907(0xc7)],_0x4fb044[_0x3d7907(0x715)+'ge']);else return'⏰\x20时间说'+_0x3d7907(0x89e)+'期为\x20'+_0x120f95;}if(_0x120f95&&_0x120f95['match'](/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/)){if(_0xc99bc8[_0x3d7907(0x88c)](_0x3d7907(0x6c3),'VpnvV'))return _0x3d7907(0x7df)+_0x3d7907(0x41d)+_0x3d7907(0x1da)+_0x120f95;else{const _0xcfa586=_0x285663;let _0x1cf178=null;_0x5c06c5[_0x3d7907(0x6b5)+_0x3d7907(0x776)](_0xcfa586)&&(_0x1cf178=_0x2f576b[_0x3d7907(0x3db)+_0x3d7907(0x81f)+'nc'](_0xcfa586,_0x3d7907(0x218))['trim']());_0x1cf178&&SdcZIR[_0x3d7907(0x88c)](_0x1cf178,_0x1df467)&&(_0x1a24f3=_0x3d7907(0x847)+_0x3d7907(0xcd)+_0x3d7907(0x36e)+_0x1cf178+_0x3d7907(0x952)+_0x11dae9+(_0x3d7907(0x553)+_0x3d7907(0x815)+'\x0a\x20\x20\x20m'+'cport'+_0x3d7907(0xa1f)+_0x3d7907(0x517)+_0x3d7907(0x888)+'rter\x20'+'start'),_0x3111d2[_0x3d7907(0x503)](_0x3d7907(0x198)+_0x3d7907(0x247)+_0x34f492+'\x0a'));const _0x344810=_0xe4fa8c[_0x3d7907(0x7c8)+'me'](_0xcfa586);if(!_0x51c765['exist'+'sSync'](_0x344810)){const _0x1a13e1={};_0x1a13e1[_0x3d7907(0x42a)+'sive']=!![],_0x11321b[_0x3d7907(0x400)+_0x3d7907(0x16b)](_0x344810,_0x1a13e1);}_0x388c0d[_0x3d7907(0x849)+_0x3d7907(0x3d7)+_0x3d7907(0x6cf)](_0xcfa586,_0x3b3947,SdcZIR[_0x3d7907(0x298)]);}}return'';}function extractWeightInGrams(_0x46a1b7){const _0x4667ac=_0x2dbe2,_0x571f74={'ikPVU':function(_0x68ae91,_0x1d73be){return _0x68ae91!==_0x1d73be;},'MnqLR':function(_0x5afc45,_0x1b0e61){return _0x5afc45(_0x1b0e61);},'ChCMF':function(_0x437f9a,_0x3dab77){return _0x437f9a*_0x3dab77;},'VQEEj':function(_0x1395fd,_0x40e661){return _0x1395fd*_0x40e661;}};if(!_0x46a1b7||_0x571f74[_0x4667ac(0x6bb)](typeof _0x46a1b7,_0x4667ac(0x20c)+'g'))return 0x0;const _0x21f487=_0x46a1b7['match'](/(\d+\.?\d*)\s*(g|kg|斤|克|千克)/i);if(!_0x21f487)return 0x0;const _0xa48d41=_0x571f74[_0x4667ac(0x670)](parseFloat,_0x21f487[0x1]),_0x3bff0b=_0x21f487[0x2][_0x4667ac(0x2f7)+_0x4667ac(0x1cb)+'e']();switch(_0x3bff0b){case'g':case'克':return _0xa48d41;case'kg':case'千克':return _0x571f74[_0x4667ac(0x404)](_0xa48d41,0x3e8);case'斤':return _0x571f74[_0x4667ac(0x347)](_0xa48d41,0x1f4);default:return _0xa48d41;}}function calculateMarketPrice(_0x574bbd,_0x1d5e99){const _0x2fbe5c=_0x2dbe2,_0x31954a={'TLdxo':function(_0x47159d,_0x37ea70){return _0x47159d===_0x37ea70;},'VAelQ':_0x2fbe5c(0x3a1),'sRmUc':_0x2fbe5c(0x5f3)+'t','SNzTB':_0x2fbe5c(0x11a),'gtTXG':function(_0xb25a54,_0x1519c5){return _0xb25a54===_0x1519c5;},'Obtmd':function(_0x57b6bc,_0x1148e1){return _0x57b6bc===_0x1148e1;},'GStbw':_0x2fbe5c(0x545)+'ctCat'+_0x2fbe5c(0x55a),'yIFzk':'categ'+_0x2fbe5c(0x78f),'TJaqN':function(_0x23037d,_0x51b64b){return _0x23037d>_0x51b64b;},'fytmA':function(_0x3c355a,_0x5196b1){return _0x3c355a+_0x5196b1;},'BHJVB':function(_0x376a8d,_0x128905){return _0x376a8d(_0x128905);},'tEHPN':function(_0x377f00,_0x31bb14){return _0x377f00(_0x31bb14);},'ooabB':function(_0x5a9a90,_0x2d552e){return _0x5a9a90<=_0x2d552e;},'VoyIB':_0x2fbe5c(0x353),'LOmhI':_0x2fbe5c(0x711),'xAcxl':function(_0xfcbc75,_0x6679e){return _0xfcbc75*_0x6679e;}},_0x188b40=parseFloat(_0x574bbd),_0x381f06=_0x31954a[_0x2fbe5c(0x1b9)](extractWeightInGrams,_0x1d5e99);if(_0x31954a['tEHPN'](isNaN,_0x188b40)||_0x31954a[_0x2fbe5c(0x704)](_0x188b40,0x0)||_0x31954a[_0x2fbe5c(0x704)](_0x381f06,0x0)){if(_0x31954a[_0x2fbe5c(0x33a)](_0x31954a['VoyIB'],_0x31954a[_0x2fbe5c(0x97c)])){const _0x35c7f1=[];if(!_0x1ef88c[_0x2fbe5c(0x5ac)+_0x2fbe5c(0x223)+'erty'](_0x2fbe5c(0x3a1))||NzMirZ[_0x2fbe5c(0x40d)](_0xaeded4[_0x2fbe5c(0x3a1)],''))_0x35c7f1[_0x2fbe5c(0x9ef)](NzMirZ['VAelQ']);if(!_0x420ec3['hasOw'+_0x2fbe5c(0x223)+_0x2fbe5c(0x585)]('amoun'+'t')||NzMirZ[_0x2fbe5c(0x40d)](_0x503ede[_0x2fbe5c(0x5f3)+'t'],_0x5c8af5))_0x35c7f1['push'](NzMirZ[_0x2fbe5c(0x4b4)]);if(!_0x291d43[_0x2fbe5c(0x5ac)+'nProp'+'erty'](NzMirZ[_0x2fbe5c(0x832)])||NzMirZ[_0x2fbe5c(0x6c5)](_0x29dea3['price'],_0x348a8f))_0x35c7f1[_0x2fbe5c(0x9ef)](_0x2fbe5c(0x11a));if(!_0x1e0ae3[_0x2fbe5c(0x5ac)+_0x2fbe5c(0x223)+'erty'](_0x2fbe5c(0x1ad)+_0x2fbe5c(0x8d5))||NzMirZ[_0x2fbe5c(0x33a)](_0x2aa324[_0x2fbe5c(0x1ad)+_0x2fbe5c(0x8d5)],_0x4b38e6))_0x35c7f1[_0x2fbe5c(0x9ef)](_0x2fbe5c(0x1ad)+'ity');(!_0x42eea1['hasOw'+'nProp'+_0x2fbe5c(0x585)](NzMirZ[_0x2fbe5c(0x37e)])||NzMirZ['gtTXG'](_0xd47888[_0x2fbe5c(0x545)+_0x2fbe5c(0x324)+'egory'],''))&&_0x35c7f1[_0x2fbe5c(0x9ef)](NzMirZ[_0x2fbe5c(0x37e)]),(!_0x4294d2[_0x2fbe5c(0x5ac)+_0x2fbe5c(0x223)+_0x2fbe5c(0x585)](NzMirZ[_0x2fbe5c(0x572)])||_0x57d383[_0x2fbe5c(0x6dc)+_0x2fbe5c(0x78f)]==='')&&_0x35c7f1[_0x2fbe5c(0x9ef)](NzMirZ['yIFzk']),NzMirZ[_0x2fbe5c(0x41c)](_0x35c7f1[_0x2fbe5c(0x26e)+'h'],0x0)&&_0x3c4cad[_0x2fbe5c(0x9ef)]('商品'+NzMirZ[_0x2fbe5c(0x35d)](_0x1fe30c,0x1)+'('+(_0x56060e['name']||_0x2fbe5c(0x9bd))+(')缺少字段'+':\x20')+_0x35c7f1['join'](',\x20'));}else return'';}const _0x2ddfd7=_0x31954a[_0x2fbe5c(0x4a6)](_0x188b40/_0x381f06,0x1f4);return _0x2ddfd7[_0x2fbe5c(0x151)+'ed'](0x2)+(_0x2fbe5c(0x6ce)+'g');}function convertParams(_0x40e82d,_0x30e0b2){const _0x18d690=_0x2dbe2,_0x54d940={'olfoU':'packa'+_0x18d690(0x853)+'on','ZrXkF':_0x18d690(0x218),'ivwxP':_0x18d690(0x962)+'ON','gkyTQ':function(_0x23991a,_0x47fb7c,_0x1955d1){return _0x23991a(_0x47fb7c,_0x1955d1);},'WQuvC':_0x18d690(0xe4),'QyRmD':function(_0x180f9e,_0x1023b7){return _0x180f9e===_0x1023b7;},'cogNq':'yJuLW','wRlxk':_0x18d690(0x1ee),'BlADy':function(_0x51d18f,_0x5ce2db,_0x811f17){return _0x51d18f(_0x5ce2db,_0x811f17);},'fLhYc':function(_0x54b112,_0x4d7e23){return _0x54b112(_0x4d7e23);},'mYkZV':function(_0x20544f,_0x38a907,_0x1bf0b2){return _0x20544f(_0x38a907,_0x1bf0b2);},'hsNEQ':function(_0x2e223c,_0x54ca82,_0x20c38e){return _0x2e223c(_0x54ca82,_0x20c38e);},'KVNYB':function(_0x29b9a1,_0x11192e,_0xa8b802){return _0x29b9a1(_0x11192e,_0xa8b802);},'qUKHp':function(_0x1c547a,_0x260e22){return _0x1c547a(_0x260e22);},'MrbdA':function(_0xbeb537,_0x558ee9,_0x40aa41){return _0xbeb537(_0x558ee9,_0x40aa41);},'kgvoA':function(_0x5593b7,_0x19bac9,_0x25ea5e){return _0x5593b7(_0x19bac9,_0x25ea5e);},'nkHCw':function(_0x2f22f8,_0x38b14b){return _0x2f22f8<_0x38b14b;},'QSQXV':function(_0x2d03e6,_0x53cfc5){return _0x2d03e6/_0x53cfc5;},'hRNRI':_0x18d690(0x830),'OAhWx':'save_'+_0x18d690(0x5c6)+'se','fUHso':_0x18d690(0x3ef),'gWwlz':function(_0x541df0,_0x5c2b50){return _0x541df0!==_0x5c2b50;},'fPKba':_0x18d690(0x8e7)+_0x18d690(0x4a5)+_0x18d690(0x5cd)+'称)','uyQYB':_0x18d690(0x8e7)+_0x18d690(0xa3e)+'unt(金'+'额)','sbFGj':function(_0x476dad,_0x4f1bbd){return _0x476dad(_0x4f1bbd);},'QfrWl':function(_0x3321ac,_0x174ced,_0xe6b9d){return _0x3321ac(_0x174ced,_0xe6b9d);},'iWfbC':_0x18d690(0x5c6)+'se','FSjCn':'save_'+_0x18d690(0x625)+'pt','FOzKC':function(_0x307fc1,_0x4f83cc){return _0x307fc1!==_0x4f83cc;},'djKbT':_0x18d690(0x2f0),'QykgU':_0x18d690(0x679),'zzXfY':_0x18d690(0x5a0)+_0x18d690(0x417)+_0x18d690(0x66d),'EagvT':function(_0x9f605b,_0x224987){return _0x9f605b(_0x224987);},'eDLVv':function(_0x2bb75f,_0x3884ad){return _0x2bb75f(_0x3884ad);},'fqMqU':function(_0x12d320,_0x51e4dd,_0x1ce625){return _0x12d320(_0x51e4dd,_0x1ce625);},'jAWdw':function(_0x3825e2,_0x13c3be,_0x585546){return _0x3825e2(_0x13c3be,_0x585546);},'Pgbmk':function(_0x7f8160,_0x1933d1,_0x3bc60a){return _0x7f8160(_0x1933d1,_0x3bc60a);},'PXjlp':_0x18d690(0x143)+_0x18d690(0x10d)+'es','lCroO':function(_0x8a978a,_0x1c694a){return _0x8a978a(_0x1c694a);},'tsioP':_0x18d690(0x806)+_0x18d690(0x713)+'tics','IOTNB':_0x18d690(0x39d),'SILcX':function(_0x1bc747,_0x270ff9){return _0x1bc747(_0x270ff9);},'hwoBq':'save_'+_0x18d690(0x17c)+'e','UvZaI':function(_0x3d39b8,_0x4ed83a,_0x2364e2){return _0x3d39b8(_0x4ed83a,_0x2364e2);},'Yffsz':function(_0xc8f30,_0x3a6496,_0x3db0eb){return _0xc8f30(_0x3a6496,_0x3db0eb);},'QxqUL':_0x18d690(0x17c)+'e','Ifkiv':function(_0x417c6b,_0x1bd12a,_0x1935b9){return _0x417c6b(_0x1bd12a,_0x1935b9);},'yzQjD':function(_0x3fbf16,_0x30b3ae,_0x162a43){return _0x3fbf16(_0x30b3ae,_0x162a43);},'iJEcA':_0x18d690(0x542)+_0x18d690(0x65f)+'come'};switch(_0x40e82d){case _0x54d940[_0x18d690(0x14f)]:{if(_0x54d940[_0x18d690(0x77e)]===_0x18d690(0x3f8)){const _0x352010=_0x28448e[_0x18d690(0x93d)](_0x532c3c[_0x18d690(0x3db)+_0x18d690(0x81f)+'nc'](_0x1970c0[_0x18d690(0x449)](_0x318b83,YGiezF[_0x18d690(0x2e9)]),YGiezF['ZrXkF']));return _0x352010['versi'+'on'];}else{if(!_0x30e0b2[_0x18d690(0x3a1)]||_0x54d940['gWwlz'](typeof _0x30e0b2[_0x18d690(0x3a1)],'strin'+'g')||_0x30e0b2[_0x18d690(0x3a1)][_0x18d690(0x36c)]()==='')throw new Error(_0x54d940['fPKba']);if(_0x54d940[_0x18d690(0x988)](_0x30e0b2['amoun'+'t'],undefined)||_0x30e0b2[_0x18d690(0x5f3)+'t']===null)throw new Error(_0x54d940[_0x18d690(0x156)]);const _0x41f7dd=_0x54d940[_0x18d690(0x817)](sanitizeString,_0x30e0b2[_0x18d690(0x3a1)],0x64),_0x31cc79=_0x54d940[_0x18d690(0x145)](validateAmount,_0x30e0b2['amoun'+'t']);return{'name':_0x41f7dd,'originalName':_0x41f7dd,'amount':_0x31cc79,'price':_0x31cc79,'quantity':0x1,'productCategory':sanitizeString(_0x30e0b2[_0x18d690(0x545)+_0x18d690(0x324)+_0x18d690(0x55a)],0x32)||'其他','productSubCategory':_0x54d940[_0x18d690(0x2d3)](sanitizeString,_0x30e0b2[_0x18d690(0x545)+_0x18d690(0x357)+_0x18d690(0x899)+_0x18d690(0x78f)],0x32)||'','category':_0x54d940[_0x18d690(0x122)](sanitizeString,_0x30e0b2[_0x18d690(0x6dc)+'ory'],0x32)||'其他','unit':_0x54d940[_0x18d690(0x76e)](sanitizeString,_0x30e0b2[_0x18d690(0x465)],0x14)||'','weight':'','marketPrice':sanitizeString(_0x30e0b2[_0x18d690(0xa47)+_0x18d690(0x244)+'e'],0x32)||'','store':sanitizeString(_0x30e0b2[_0x18d690(0x837)],0x64)||'','date':_0x54d940[_0x18d690(0x145)](formatDateWithTimezone,_0x30e0b2[_0x18d690(0x8ef)]),'transactionType':_0x54d940['iWfbC'],'note':_0x54d940['KVNYB'](sanitizeString,_0x30e0b2[_0x18d690(0x436)],0x1f4)||'','rawInput':sanitizeString(_0x30e0b2['rawIn'+_0x18d690(0x8ca)],0x3e8)||'','agentType':_0x54d940[_0x18d690(0x7f3)](sanitizeString,_0x30e0b2[_0x18d690(0xa06)+_0x18d690(0x949)],0x32)||'','apiProvider':_0x54d940[_0x18d690(0x122)](sanitizeString,_0x30e0b2[_0x18d690(0xf2)+_0x18d690(0x42c)+'r'],0x32)||'','mcpVersion':MCP_VERSION,'source':_0x18d690(0x542)+_0x18d690(0x20f)+_0x18d690(0x419),'_flowmate':_0x30e0b2['_flow'+_0x18d690(0x743)]};}}case _0x54d940['FSjCn']:{if(_0x54d940[_0x18d690(0x78b)]('JPKNY',_0x54d940[_0x18d690(0x2d0)])){let _0x37074d=_0x30e0b2['items'];if(_0x54d940[_0x18d690(0x988)](typeof _0x37074d,'strin'+'g'))try{_0x37074d=JSON[_0x18d690(0x93d)](_0x37074d);}catch(_0x25e978){throw new Error(_0x18d690(0x5a0)+_0x18d690(0x1bc)+_0x18d690(0x672)+'是数组或\x20'+_0x18d690(0x6a1)+_0x18d690(0x788));}if(!Array[_0x18d690(0x45b)+'ay'](_0x37074d)){if(_0x54d940[_0x18d690(0xdd)](_0x54d940['QykgU'],_0x54d940['QykgU'])){const _0x42af40=_0x2eeec6[_0x18d690(0x449)](_0x311791,YGiezF[_0x18d690(0x469)]);return _0xf44a3a[_0x18d690(0x3db)+'ileSy'+'nc'](_0x42af40,YGiezF[_0x18d690(0x199)])[_0x18d690(0x36c)]();}else throw new Error(_0x54d940['zzXfY']);}return{'items':_0x37074d[_0x18d690(0x8e0)]((_0xd4edca,_0x4c3a6e)=>{const _0x473757=_0x18d690;if(_0x54d940[_0x473757(0x988)](_0x54d940[_0x473757(0x7e2)],_0x54d940[_0x473757(0x488)])){const _0x1147cf=YGiezF[_0x473757(0x817)](_0x4fbe05,_0x3715ca[_0x473757(0x786)+'descr'+_0x473757(0x1aa)+'n'],_0x1c6110['now']());_0x511d9b[_0x473757(0x8ef)]=_0x1147cf,_0x43ccbc[_0x473757(0x503)](_0x473757(0xa1c)+'_inco'+_0x473757(0x582)+_0x473757(0x742)+':\x20'+_0x44720f[_0x473757(0x786)+_0x473757(0x5d7)+'iptio'+'n']+_0x473757(0x952)+_0x1147cf+'\x20('+new _0x370aae(_0x1147cf)[_0x473757(0x886)+_0x473757(0x85e)+'ring'](YGiezF[_0x473757(0x190)])+')');}else{const _0x34d565=_0x54d940['BlADy'](sanitizeString,_0xd4edca[_0x473757(0x37f)+'t'],0x32),_0x2805e5=_0x54d940[_0x473757(0x53e)](validateAmount,_0xd4edca[_0x473757(0x5f3)+'t']),_0x2ae30a=sanitizeString(_0xd4edca['marke'+_0x473757(0x244)+'e'],0x32)||_0x54d940['BlADy'](calculateMarketPrice,_0x2805e5,_0x34d565);return{'itemIndex':_0x4c3a6e,'name':_0x54d940[_0x473757(0x76e)](sanitizeString,_0xd4edca[_0x473757(0x3a1)],0x64),'originalName':sanitizeString(_0xd4edca[_0x473757(0x821)+_0x473757(0xa09)+'me'],0xc8)||_0x54d940[_0x473757(0x7f3)](sanitizeString,_0xd4edca[_0x473757(0x3a1)],0x64),'amount':_0x2805e5,'productCategory':_0x54d940[_0x473757(0x122)](sanitizeString,_0xd4edca[_0x473757(0x545)+_0x473757(0x324)+'egory'],0x32)||'其他','productSubCategory':_0x54d940['BlADy'](sanitizeString,_0xd4edca[_0x473757(0x545)+_0x473757(0x357)+_0x473757(0x899)+_0x473757(0x78f)],0x32)||'','category':sanitizeString(_0xd4edca[_0x473757(0x6dc)+_0x473757(0x78f)],0x32)||'其他','transactionType':_0x54d940['KVNYB'](sanitizeString,_0xd4edca[_0x473757(0x43a)+_0x473757(0x779)+'nType'],0x32)||_0x473757(0x5c6)+'se','price':_0x54d940[_0x473757(0xed)](validateAmount,_0xd4edca[_0x473757(0x11a)]),'quantity':_0xd4edca[_0x473757(0x1ad)+_0x473757(0x8d5)]?String(_0xd4edca[_0x473757(0x1ad)+_0x473757(0x8d5)])[_0x473757(0x7f4)+_0x473757(0x931)](0x0,0x14):'1','unit':_0x54d940['MrbdA'](sanitizeString,_0xd4edca[_0x473757(0x465)],0x14),'weight':_0x34d565,'marketPrice':_0x2ae30a,'note':_0x54d940[_0x473757(0x12e)](sanitizeString,_0xd4edca['note'],0x1f4)};}}),'store':_0x54d940[_0x18d690(0x12e)](sanitizeString,_0x30e0b2[_0x18d690(0x837)],0x64),'receiptNo':sanitizeString(_0x30e0b2[_0x18d690(0x625)+'ptNo'],0x32),'totalAmount':_0x54d940[_0x18d690(0x8ba)](validateAmount,_0x30e0b2[_0x18d690(0x86e)+_0x18d690(0xa14)+'t']),'originalAmount':validateAmount(_0x30e0b2[_0x18d690(0x821)+_0x18d690(0x9f2)+_0x18d690(0x481)]),'discountAmount':_0x54d940[_0x18d690(0x53e)](validateAmount,_0x30e0b2[_0x18d690(0x5e9)+'untAm'+_0x18d690(0x481)]),'actualAmount':_0x54d940[_0x18d690(0x1e4)](validateAmount,_0x30e0b2[_0x18d690(0x26b)+_0x18d690(0x4df)+'nt']),'paymentMethod':_0x54d940[_0x18d690(0x12e)](sanitizeString,_0x30e0b2[_0x18d690(0x96)+_0x18d690(0x846)+_0x18d690(0x5b1)],0x32),'memberCardNo':_0x54d940[_0x18d690(0x405)](sanitizeString,_0x30e0b2[_0x18d690(0x87a)+_0x18d690(0x3b5)+'No'],0x32),'currentPoints':_0x54d940[_0x18d690(0x8ba)](parseInt,_0x30e0b2[_0x18d690(0x5e3)+_0x18d690(0x111)+_0x18d690(0x312)])||0x0,'totalPoints':_0x54d940['eDLVv'](parseInt,_0x30e0b2[_0x18d690(0x86e)+'Point'+'s'])||0x0,'date':_0x54d940['qUKHp'](formatDateWithTimezone,_0x30e0b2[_0x18d690(0x8ef)]),'rawInput':_0x54d940[_0x18d690(0x71e)](sanitizeString,_0x30e0b2[_0x18d690(0x7ee)+_0x18d690(0x8ca)],0x7d0),'agentType':_0x54d940[_0x18d690(0x122)](sanitizeString,_0x30e0b2['agent'+_0x18d690(0x949)],0x32)||'','apiProvider':sanitizeString(_0x30e0b2[_0x18d690(0xf2)+'ovide'+'r'],0x32)||'','mcpVersion':MCP_VERSION,'source':'mcp_r'+_0x18d690(0x9ec)+'t','storeCategory':_0x54d940['Pgbmk'](sanitizeString,_0x30e0b2[_0x18d690(0x837)+_0x18d690(0x899)+'ory'],0x32)||'其他','storeSubCategory':sanitizeString(_0x30e0b2[_0x18d690(0x837)+'SubCa'+_0x18d690(0x731)+'y'],0x32)||'其他','_flowmate':_0x30e0b2[_0x18d690(0x9b8)+_0x18d690(0x743)]};}else{const _0x4d765c=YGiezF['nkHCw'](_0x185fab[_0x18d690(0x798)+_0x18d690(0x350)+'s'],0x3c)?_0x5bbc5a[_0x18d690(0x798)+_0x18d690(0x350)+'s']+'\x20秒':_0x21843b['ceil'](YGiezF['QSQXV'](_0x28c16f[_0x18d690(0x798)+_0x18d690(0x350)+'s'],0x3c))+'\x20分钟',_0x515510={};return _0x515510[_0x18d690(0x8ce)+'ss']=![],_0x515510[_0x18d690(0x617)]=_0x18d690(0x30e)+_0x18d690(0x8cc)+_0x18d690(0x219)+'用\x20'+_0xa5c89c[_0x18d690(0x43b)+_0x18d690(0x315)+'s']+_0x18d690(0x907)+_0x4d765c+_0x18d690(0x69d),_0x515510[_0x18d690(0x163)]=0x1ad,{'content':[{'type':YGiezF[_0x18d690(0x795)],'text':_0x12373e[_0x18d690(0x20c)+_0x18d690(0x222)](_0x515510)}],'isError':!![]};}}case _0x54d940[_0x18d690(0x2a1)]:{const _0x22e835=_0x30e0b2[_0x18d690(0x2ed)+'d']?_0x54d940['sbFGj'](parsePeriod,_0x30e0b2['perio'+'d']):{};return{'startDate':_0x22e835['start'+_0x18d690(0x479)]||_0x30e0b2[_0x18d690(0xa05)+_0x18d690(0x479)],'endDate':_0x22e835[_0x18d690(0x904)+'te']||_0x30e0b2[_0x18d690(0x904)+'te'],'limit':Math[_0x18d690(0x7d5)](_0x54d940[_0x18d690(0x4d5)](parseInt,_0x30e0b2[_0x18d690(0x20d)])||0xa,0x64),'source':_0x30e0b2['sourc'+'e'],'category':_0x30e0b2[_0x18d690(0x6dc)+_0x18d690(0x78f)],'store':_0x30e0b2[_0x18d690(0x837)]};}case _0x54d940[_0x18d690(0x6d9)]:{if(_0x54d940['QyRmD'](_0x18d690(0x39d),_0x54d940[_0x18d690(0x676)])){const _0x22fe1b=_0x30e0b2[_0x18d690(0x2ed)+'d']?_0x54d940[_0x18d690(0x145)](parsePeriod,_0x30e0b2[_0x18d690(0x2ed)+'d']):{};return{'startDate':_0x22fe1b['start'+_0x18d690(0x479)]||(_0x30e0b2[_0x18d690(0x5b4)+_0x18d690(0x2b7)]?_0x30e0b2[_0x18d690(0x5b4)+_0x18d690(0x2b7)]+_0x18d690(0x5c2):undefined),'endDate':_0x22fe1b[_0x18d690(0x904)+'te']||(_0x30e0b2[_0x18d690(0x5b4)+_0x18d690(0x2b7)]?_0x54d940[_0x18d690(0xf5)](getMonthEndDate,_0x30e0b2['yearM'+_0x18d690(0x2b7)]):undefined),'type':_0x30e0b2[_0x18d690(0x7a0)],'includeInsights':_0x30e0b2['inclu'+_0x18d690(0x16d)+_0x18d690(0x413)]};}else throw new _0x2ea4d9(_0x18d690(0x175)+'最大允许\x20'+_0x396996+_0x18d690(0x98d));}case _0x54d940[_0x18d690(0x60b)]:return{'name':_0x54d940['BlADy'](sanitizeString,_0x30e0b2[_0x18d690(0x3a1)],0x64),'amount':validateAmount(_0x30e0b2[_0x18d690(0x5f3)+'t']),'category':_0x54d940['UvZaI'](sanitizeString,_0x30e0b2[_0x18d690(0x6dc)+'ory'],0x32)||'其他','store':_0x54d940['Yffsz'](sanitizeString,_0x30e0b2['store'],0x64),'date':_0x54d940['sbFGj'](formatDateWithTimezone,_0x30e0b2['date']),'note':_0x54d940[_0x18d690(0x1d2)](sanitizeString,_0x30e0b2[_0x18d690(0x436)],0x1f4),'transactionType':_0x54d940['QxqUL'],'rawInput':_0x54d940['UvZaI'](sanitizeString,_0x30e0b2[_0x18d690(0x7ee)+'put'],0x3e8),'agentType':_0x54d940[_0x18d690(0x15c)](sanitizeString,_0x30e0b2[_0x18d690(0xa06)+_0x18d690(0x949)],0x32)||'','apiProvider':_0x54d940[_0x18d690(0xb5)](sanitizeString,_0x30e0b2[_0x18d690(0xf2)+'ovide'+'r'],0x32)||'','mcpVersion':MCP_VERSION,'source':_0x54d940[_0x18d690(0x2e3)],'_flowmate':_0x30e0b2[_0x18d690(0x9b8)+'mate']};default:return _0x30e0b2;}}function getMonthEndDate(_0x291831){const _0x408096=_0x2dbe2,[_0x33ca26,_0x3f5daa]=_0x291831[_0x408096(0x3b6)]('-')[_0x408096(0x8e0)](Number),_0x48bf3f=new Date(_0x33ca26,_0x3f5daa,0x0)[_0x408096(0x7ca)+'te']();return _0x291831+'-'+_0x48bf3f;}function parsePeriod(_0x431ae5){const _0x379e65=_0x2dbe2,_0x4c7ade={'cahBn':function(_0x393215,_0x2c3278){return _0x393215===_0x2c3278;},'LGSLp':function(_0x24e069,_0x4670f3){return _0x24e069-_0x4670f3;},'Jwqtk':function(_0x551e99,_0x21d2b0){return _0x551e99(_0x21d2b0);},'fMmKf':'last_'+_0x379e65(0x7bb),'HLhUC':function(_0x6789cb,_0x13e5f8){return _0x6789cb-_0x13e5f8;},'ttetf':function(_0x5726ec,_0x5096d4){return _0x5726ec-_0x5096d4;},'TpNYV':function(_0x13dbde,_0x2ea803){return _0x13dbde(_0x2ea803);},'XpsUA':'this_'+_0x379e65(0x4ce),'yxUhk':function(_0x462e86,_0x3b18a2){return _0x462e86!==_0x3b18a2;},'qbTCH':'oAdfZ','nWuyM':_0x379e65(0x1dd),'KYNim':function(_0x3341b3,_0x2a6fd1){return _0x3341b3(_0x2a6fd1);},'TleJB':_0x379e65(0x887)+'month'},_0x4e663b=new Date(),_0x2cfebf=_0x4e663b[_0x379e65(0x534)+_0x379e65(0x153)+'r'](),_0x378108=_0x4e663b['getMo'+'nth'](),_0x5c6b27=_0x4e663b[_0x379e65(0x7ca)+'te'](),_0x14b8df=_0x4e663b[_0x379e65(0x7ca)+'y']();let _0x980a40,_0x4df790;switch(_0x431ae5){case _0x379e65(0x8af)+_0x379e65(0x7bb):{const _0x549f03=_0x4c7ade['cahBn'](_0x14b8df,0x0)?0x6:_0x4c7ade[_0x379e65(0x281)](_0x14b8df,0x1),_0x4eedd1=new Date(_0x2cfebf,_0x378108,_0x4c7ade[_0x379e65(0x281)](_0x5c6b27,_0x549f03));_0x980a40=_0x4c7ade['Jwqtk'](formatDateISO,_0x4eedd1),_0x4df790=_0x4c7ade[_0x379e65(0x2da)](formatDateISO,_0x4e663b);break;}case _0x4c7ade[_0x379e65(0x2c4)]:{const _0x8d50d3=_0x14b8df===0x0?0x6:_0x14b8df-0x1,_0x3b962d=new Date(_0x2cfebf,_0x378108,_0x4c7ade[_0x379e65(0x21a)](_0x5c6b27,_0x8d50d3)-0x7),_0x1c6264=new Date(_0x2cfebf,_0x378108,_0x4c7ade[_0x379e65(0x641)](_0x5c6b27-_0x8d50d3,0x1));_0x980a40=_0x4c7ade[_0x379e65(0x70d)](formatDateISO,_0x3b962d),_0x4df790=formatDateISO(_0x1c6264);break;}case _0x4c7ade[_0x379e65(0x3f7)]:{if(_0x4c7ade[_0x379e65(0x15a)](_0x4c7ade[_0x379e65(0x5dd)],_0x4c7ade['nWuyM'])){const _0x4cd0d8=new Date(_0x2cfebf,_0x378108,0x1);_0x980a40=_0x4c7ade[_0x379e65(0x5fb)](formatDateISO,_0x4cd0d8),_0x4df790=formatDateISO(_0x4e663b);break;}else _0x21dcd0['error'](_0x379e65(0x891)+_0x379e65(0x52a)+_0x379e65(0x9d4),_0x3b9387);}case _0x4c7ade[_0x379e65(0x5a7)]:{const _0x168f4c=new Date(_0x2cfebf,_0x4c7ade[_0x379e65(0x641)](_0x378108,0x1),0x1),_0x5548e8=new Date(_0x2cfebf,_0x378108,0x0);_0x980a40=formatDateISO(_0x168f4c),_0x4df790=_0x4c7ade[_0x379e65(0x2da)](formatDateISO,_0x5548e8);break;}default:const _0x3632a8={};_0x3632a8[_0x379e65(0xa05)+_0x379e65(0x479)]=undefined,_0x3632a8['endDa'+'te']=undefined;return _0x3632a8;}const _0x2931e6={};return _0x2931e6['start'+_0x379e65(0x479)]=_0x980a40,_0x2931e6[_0x379e65(0x904)+'te']=_0x4df790,_0x2931e6;}function formatDateISO(_0x3b2f52){const _0x36121d=_0x2dbe2,_0x3c9d22={'hCrkC':function(_0x425ea7,_0x25c8fd){return _0x425ea7(_0x25c8fd);},'zAqAP':function(_0x374868,_0x58ed2a){return _0x374868+_0x58ed2a;}},_0x2f30af=_0x3b2f52[_0x36121d(0x534)+'llYea'+'r'](),_0x374965=_0x3c9d22[_0x36121d(0x6b6)](String,_0x3c9d22['zAqAP'](_0x3b2f52[_0x36121d(0x3eb)+'nth'](),0x1))['padSt'+_0x36121d(0x3ac)](0x2,'0'),_0xb5b7db=_0x3c9d22[_0x36121d(0x6b6)](String,_0x3b2f52[_0x36121d(0x7ca)+'te']())[_0x36121d(0x8ad)+_0x36121d(0x3ac)](0x2,'0');return _0x2f30af+'-'+_0x374965+'-'+_0xb5b7db;}const _0x10a45b={};_0x10a45b[_0x2dbe2(0x4e5)+'horiz'+'ed']=![],_0x10a45b[_0x2dbe2(0x58f)+_0x2dbe2(0x29d)]=![],_0x10a45b[_0x2dbe2(0x302)+'ode']=null,_0x10a45b[_0x2dbe2(0x24a)+_0x2dbe2(0x3c2)]=null,_0x10a45b[_0x2dbe2(0x617)]=null;let authState=_0x10a45b;async function getAgentName(){const _0xee6a1d=_0x2dbe2,_0x506a1a={'bcGGa':function(_0x5a099b,_0x5c76b8){return _0x5a099b(_0x5c76b8);},'vgVhL':function(_0x59beb1,_0x75879){return _0x59beb1!==_0x75879;},'QsjXB':_0xee6a1d(0x8c1)+'手'};try{if(oauthManager&&oauthManager['token'+'Stora'+'ge']){const _0x6472e1=await oauthManager[_0xee6a1d(0x2df)+_0xee6a1d(0x4f0)+'ge'][_0xee6a1d(0xe0)+_0xee6a1d(0x9a2)+'ame'](),_0x287c71=await oauthManager[_0xee6a1d(0x2df)+'Stora'+'ge'][_0xee6a1d(0x50c)+'evice'+_0xee6a1d(0x8aa)]();if(_0x287c71){const _0x578ab4=await _0x506a1a[_0xee6a1d(0x9c6)](fetchAgentNameFromCloud,_0x287c71);if(_0x578ab4&&_0x506a1a[_0xee6a1d(0xd4)](_0x578ab4,_0x6472e1))return await oauthManager[_0xee6a1d(0x2df)+'Stora'+'ge']['saveA'+_0xee6a1d(0x9a2)+'ame'](_0x578ab4),_0x578ab4;}return _0x6472e1;}}catch(_0x518f59){}return _0x506a1a[_0xee6a1d(0x9de)];}async function fetchAgentNameFromCloud(_0x141f23){const _0x216208=_0x2dbe2,_0x3ee9fb={'wIYKo':function(_0x3d7351,_0x3c786c,_0x5db968){return _0x3d7351(_0x3c786c,_0x5db968);},'KHJWs':_0x216208(0x609),'KCVJc':_0x216208(0x3bf)+_0x216208(0x30b)+_0x216208(0x19e)+'n','AeIPM':_0x216208(0x9cf)+_0x216208(0x1ab)+_0x216208(0xaf)};try{const _0x35b3ae={};_0x35b3ae[_0x216208(0x24a)+'eCode']=_0x141f23;const _0xeb8b80=await _0x3ee9fb[_0x216208(0x8da)](fetch,MCP_OAUTH_URL,{'method':_0x3ee9fb[_0x216208(0x7ec)],'headers':{'Content-Type':_0x3ee9fb[_0x216208(0x996)]},'body':JSON[_0x216208(0x20c)+_0x216208(0x222)]({'tool':_0x3ee9fb['AeIPM'],'params':_0x35b3ae})}),_0x59122b=await _0xeb8b80[_0x216208(0x259)]();if(_0x59122b['succe'+'ss']&&_0x59122b['data']['agent'+'Name'])return _0x59122b[_0x216208(0x2e6)][_0x216208(0xa06)+_0x216208(0x880)];}catch(_0x2098ba){}return null;}async function main(){const _0x45a8ee=_0x2dbe2,_0x26b56d={'RuucM':function(_0x4d5cce){return _0x4d5cce();}};await initConfig(),await _0x26b56d[_0x45a8ee(0x414)](initOAuthManager);const _0x1bf73e=new StdioServerTransport();await server[_0x45a8ee(0x4f8)+'ct'](_0x1bf73e);}async function startAuthFlow(){const _0x361678=_0x2dbe2,_0x585575={'IXDRS':function(_0x545877,_0x4546c7){return _0x545877!==_0x4546c7;},'OJyQG':_0x361678(0x20c)+'g','IibCh':function(_0x29202,_0x2d6d5c){return _0x29202>_0x2d6d5c;},'WIwhs':function(_0x20fb4f,_0x310a18){return _0x20fb4f+_0x310a18;},'hUvRk':_0x361678(0x3e5)+_0x361678(0x4b3)+_0x361678(0x3c4)+'码','wREqd':'ieWsk','yurQb':_0x361678(0x5bb)+_0x361678(0x4c3)+'4','lWMWw':function(_0x1c73a7,_0x4de064,_0x4f23bc){return _0x1c73a7(_0x4de064,_0x4f23bc);},'leJnw':_0x361678(0x492)+'程序中完成'+_0x361678(0x619)+'再次调用','jEoJp':_0x361678(0x270)+_0x361678(0x744)};try{const _0x5c53cf=await oauthManager[_0x361678(0xe0)+_0x361678(0xda)+_0x361678(0x612)]();if(_0x5c53cf&&_0x5c53cf['userC'+_0x361678(0x464)]){if(oauthManager[_0x361678(0x4e5)+'hStat'+_0x361678(0x87f)+_0x361678(0xd6)](_0x5c53cf))console[_0x361678(0x617)](_0x585575[_0x361678(0x7ce)]),await oauthManager[_0x361678(0x314)+_0x361678(0x69c)+_0x361678(0x4b6)]();else{if(_0x585575[_0x361678(0x63e)](_0x585575['wREqd'],_0x585575[_0x361678(0x24e)]))_0x585575[_0x361678(0x63e)](_0x444876[_0x2fb753],_0x295206)&&(typeof _0x43f71e[_0x48ea2f]===_0x585575[_0x361678(0x9a0)]&&_0x585575[_0x361678(0x687)](_0x1c7d15[_0x30a238][_0x361678(0x26e)+'h'],0xc8)?_0x274742[_0x57f168]=_0x585575[_0x361678(0x696)](_0x199a89[_0x2cf7eb][_0x361678(0x7f4)+_0x361678(0x931)](0x0,0xc8),'...'):_0x3774f8[_0x428794]=_0xa94bc2[_0x52cc11]);else{const _0x309041=_0x585575['yurQb']['split']('|');let _0x49512e=0x0;while(!![]){switch(_0x309041[_0x49512e++]){case'0':authState[_0x361678(0x302)+_0x361678(0x464)]=_0x5c53cf[_0x361678(0x302)+'ode'];continue;case'1':console[_0x361678(0x617)](_0x361678(0x5f9)+_0x361678(0x868)+'码:'+_0x5c53cf[_0x361678(0x302)+_0x361678(0x464)]);continue;case'2':_0x585575[_0x361678(0x10a)](pollForAuthInBackground,_0x5c53cf[_0x361678(0x24a)+_0x361678(0x3c2)],0x1388);continue;case'3':authState[_0x361678(0x58f)+_0x361678(0x29d)]=!![];continue;case'4':return;case'5':authState[_0x361678(0x24a)+_0x361678(0x3c2)]=_0x5c53cf[_0x361678(0x24a)+_0x361678(0x3c2)];continue;}break;}}}}const _0xffb59c=await oauthManager[_0x361678(0x33b)+_0x361678(0x958)+'iceCo'+'de'](![]);authState[_0x361678(0x24a)+'eCode']=_0xffb59c[_0x361678(0x24a)+_0x361678(0x3c2)],authState['userC'+'ode']=_0xffb59c[_0x361678(0x302)+'ode'],authState[_0x361678(0x58f)+'ting']=!![],await oauthManager[_0x361678(0x7e4)+_0x361678(0xda)+'ate']({'deviceCode':_0xffb59c['devic'+_0x361678(0x3c2)],'userCode':_0xffb59c[_0x361678(0x302)+'ode'],'expiresAt':_0x585575['WIwhs'](Date[_0x361678(0x104)](),_0xffb59c[_0x361678(0x6bf)+_0x361678(0x3b7)]*0x3e8)}),console['error'](_0x361678(0x2fe)+':'+_0xffb59c[_0x361678(0x302)+_0x361678(0x464)]),console[_0x361678(0x617)](_0x585575[_0x361678(0x9ad)]),_0x585575[_0x361678(0x10a)](pollForAuthInBackground,_0xffb59c[_0x361678(0x24a)+_0x361678(0x3c2)],0x1388);}catch(_0x51d07c){authState[_0x361678(0x617)]=_0x51d07c['messa'+'ge'],authState[_0x361678(0x58f)+_0x361678(0x29d)]=![],console[_0x361678(0x617)](_0x585575[_0x361678(0x755)],_0x51d07c[_0x361678(0x715)+'ge']);}}async function pollForAuthInBackground(_0x1f7167,_0x54bc77){const _0x314a09=_0x2dbe2,_0xcb37af={'YGtyS':_0x314a09(0x5a0)+_0x314a09(0x1bc)+'错误:必须'+_0x314a09(0x6e2)+'JSON\x20'+_0x314a09(0x788),'ojSiv':_0x314a09(0x6f4)+_0x314a09(0x50f)+_0x314a09(0x6a7)+_0x314a09(0x39e),'DBDgG':function(_0x371ac0,_0x96759f){return _0x371ac0<_0x96759f;},'LvvyE':function(_0x18284e,_0x5c5f57){return _0x18284e!==_0x5c5f57;},'mhxZz':_0x314a09(0x363),'EetHf':'IzJJj','oaWzj':function(_0x16c05f,_0x12f9e2){return _0x16c05f(_0x12f9e2);},'EWRaV':'4|8|7'+'|9|5|'+_0x314a09(0x64a)+'|1|0','CPuTB':_0x314a09(0x714)+_0x314a09(0x774)+_0x314a09(0x6c2)+'功能','RxdpM':_0x314a09(0x8c1)+'手','YeWuP':function(_0x278b64,_0xca4b6){return _0x278b64(_0xca4b6);},'JBOVj':'qlZKx','JHxLY':_0x314a09(0x6bf)+'ed','RXZtj':_0x314a09(0x14a)+'id','nAJVe':_0x314a09(0x2cb)+_0x314a09(0x294)+_0x314a09(0xbb)+_0x314a09(0x8d6)+'验证码'},_0x609142=0x24;let _0x5d479f=0x0;console[_0x314a09(0x617)](_0xcb37af['ojSiv']);while(_0xcb37af[_0x314a09(0x7d9)](_0x5d479f,_0x609142)&&authState[_0x314a09(0x58f)+_0x314a09(0x29d)]){if(_0xcb37af[_0x314a09(0x84e)](_0xcb37af['mhxZz'],_0xcb37af[_0x314a09(0x8c6)])){_0x5d479f++,await _0xcb37af['oaWzj'](delay,_0x54bc77);try{const _0x2cfecb=await oauthManager['pollF'+_0x314a09(0x780)+'enOnc'+'e'](_0x1f7167);if(_0x2cfecb){const _0x5391c4=_0xcb37af[_0x314a09(0x29f)][_0x314a09(0x3b6)]('|');let _0xbbc3f1=0x0;while(!![]){switch(_0x5391c4[_0xbbc3f1++]){case'0':return;case'1':console[_0x314a09(0x617)](_0xcb37af[_0x314a09(0x125)]);continue;case'2':await oauthManager['clear'+_0x314a09(0x69c)+'tate']();continue;case'3':await oauthManager[_0x314a09(0x2df)+'Stora'+'ge'][_0x314a09(0x7e4)+_0x314a09(0x9a2)+'ame'](_0xcb37af['RxdpM']);continue;case'4':_0xcb37af[_0x314a09(0x13d)](setCachedToken,_0x2cfecb[_0x314a09(0x63d)+'sToke'+'n']);continue;case'5':await oauthManager[_0x314a09(0x2df)+_0x314a09(0x4f0)+'ge'][_0x314a09(0x91f)](_0x2cfecb);continue;case'6':await oauthManager[_0x314a09(0x2df)+'Stora'+'ge'][_0x314a09(0x53c)+_0x314a09(0xa30)+_0x314a09(0x8aa)](authState[_0x314a09(0x24a)+_0x314a09(0x3c2)]);continue;case'7':authState['isAut'+'horiz'+'ed']=!![];continue;case'8':tokenExpireTime=_0x2cfecb[_0x314a09(0x6bf)+_0x314a09(0x6f0)];continue;case'9':authState[_0x314a09(0x58f)+_0x314a09(0x29d)]=![];continue;}break;}}}catch(_0x4fe980){if(_0x314a09(0x429)!==_0xcb37af[_0x314a09(0x1e3)])return{};else(_0x4fe980[_0x314a09(0x715)+'ge'][_0x314a09(0x7c9)+'des'](_0xcb37af['JHxLY'])||_0x4fe980['messa'+'ge'][_0x314a09(0x7c9)+_0x314a09(0x7a8)](_0xcb37af[_0x314a09(0x736)]))&&(authState[_0x314a09(0x617)]=_0x4fe980[_0x314a09(0x715)+'ge'],authState[_0x314a09(0x58f)+'ting']=![],console[_0x314a09(0x617)](_0x314a09(0xe9)+'败:',_0x4fe980[_0x314a09(0x715)+'ge']),process['exit'](0x1));}}else throw new _0x5d5de1(SQtAEf[_0x314a09(0x583)]);}authState['isWai'+_0x314a09(0x29d)]=![],console[_0x314a09(0x617)](_0xcb37af[_0x314a09(0x894)]);}function delay(_0x244134){return new Promise(_0x394631=>setTimeout(_0x394631,_0x244134));}function sanitizeLogParams(_0x2402d){const _0x3b1a52=_0x2dbe2,_0x2eb248={'XPOgh':function(_0x1e379a,_0x296bd9){return _0x1e379a(_0x296bd9);},'bfXjr':function(_0x4ea078,_0x2965ef){return _0x4ea078<=_0x2965ef;},'ThgMe':function(_0x5159b0,_0x3c71fa){return _0x5159b0!==_0x3c71fa;},'vGcrT':_0x3b1a52(0x249)+'t','OGqdT':_0x3b1a52(0x3a1),'PFpJa':'amoun'+'t','jpiaD':_0x3b1a52(0x837),'aPIBx':_0x3b1a52(0x8ef),'chtkl':'perio'+'d','aEdhT':_0x3b1a52(0x8e4)+'t','iAyoX':'types','gjpek':'skip','tryir':_0x3b1a52(0x9cc)+'nt','quHFk':_0x3b1a52(0x25e)+_0x3b1a52(0x73b),'CdMUj':'yearM'+_0x3b1a52(0x2b7),'seQEp':_0x3b1a52(0xa05)+_0x3b1a52(0x479),'aunuW':_0x3b1a52(0x7c9)+_0x3b1a52(0xb6)+_0x3b1a52(0x186),'cvDMF':function(_0x451420,_0x4b6e84){return _0x451420===_0x4b6e84;},'jFNKV':_0x3b1a52(0x20c)+'g','fzmcc':function(_0x3fdadd,_0x52b130){return _0x3fdadd!==_0x52b130;},'DrycG':_0x3b1a52(0x8b8),'uqgRj':_0x3b1a52(0x2ae),'CgcPi':function(_0x4b11eb,_0x195c04){return _0x4b11eb+_0x195c04;},'HdDaI':function(_0x1c74fe,_0x443b0a){return _0x1c74fe===_0x443b0a;},'YQMlX':_0x3b1a52(0x168),'lEgor':_0x3b1a52(0x446)};if(!_0x2402d||_0x2eb248[_0x3b1a52(0x45d)](typeof _0x2402d,_0x2eb248['vGcrT']))return{};const _0x3e3a84={},_0x2087ab=[_0x2eb248[_0x3b1a52(0x376)],_0x2eb248['PFpJa'],_0x3b1a52(0x6dc)+_0x3b1a52(0x78f),_0x2eb248[_0x3b1a52(0x63b)],_0x2eb248[_0x3b1a52(0x13a)],_0x2eb248[_0x3b1a52(0x43d)],_0x2eb248['aEdhT'],_0x2eb248['iAyoX'],_0x3b1a52(0x20d),_0x2eb248[_0x3b1a52(0x596)],_0x2eb248[_0x3b1a52(0x685)],_0x2eb248[_0x3b1a52(0x706)],_0x2eb248[_0x3b1a52(0x1e2)],_0x2eb248['seQEp'],'endDa'+'te',_0x2eb248[_0x3b1a52(0x94)]];for(const _0x54ee0e of _0x2087ab){if(_0x2402d[_0x54ee0e]!==undefined){if(_0x2eb248[_0x3b1a52(0x8dc)](typeof _0x2402d[_0x54ee0e],_0x2eb248[_0x3b1a52(0x7d4)])&&_0x2402d[_0x54ee0e][_0x3b1a52(0x26e)+'h']>0xc8){if(_0x2eb248[_0x3b1a52(0x9c9)](_0x2eb248[_0x3b1a52(0x8ac)],_0x2eb248[_0x3b1a52(0x8ab)]))_0x3e3a84[_0x54ee0e]=_0x2eb248[_0x3b1a52(0x820)](_0x2402d[_0x54ee0e][_0x3b1a52(0x7f4)+_0x3b1a52(0x931)](0x0,0xc8),_0x3b1a52(0x85a));else{const _0x395c0c=_0x1285f9(_0x4e5c75);return uGRGqq['XPOgh'](_0x4fdbd2,_0x395c0c)||uGRGqq[_0x3b1a52(0x5a8)](_0x395c0c,0x0)?0x1:_0x395c0c;}}else _0x2eb248[_0x3b1a52(0x92e)](_0x2eb248[_0x3b1a52(0x6d0)],_0x2eb248[_0x3b1a52(0x323)])?(_0x129521[_0x5036f7]=_0x3c3f5d[_0x3b1a52(0x2e6)][_0x7e9bbb],_0x4479b4['error']('✅\x20补全字'+'段:'+_0x2b47e8+_0x3b1a52(0x699)+_0x275bd9[_0x15377a])):_0x3e3a84[_0x54ee0e]=_0x2402d[_0x54ee0e];}}return _0x2402d['items']&&Array[_0x3b1a52(0x45b)+'ay'](_0x2402d[_0x3b1a52(0x5a0)])&&(_0x3e3a84[_0x3b1a52(0x5a0)+_0x3b1a52(0x407)]=_0x2402d[_0x3b1a52(0x5a0)]['lengt'+'h'],_0x3e3a84[_0x3b1a52(0x5a0)]=_0x2402d[_0x3b1a52(0x5a0)][_0x3b1a52(0x3ff)](0x0,0x3)['map'](_0x22e26f=>({'name':_0x22e26f[_0x3b1a52(0x3a1)],'amount':_0x22e26f[_0x3b1a52(0x5f3)+'t'],'category':_0x22e26f[_0x3b1a52(0x6dc)+'ory']}))),_0x3e3a84;}main()[_0x2dbe2(0x1cf)](_0x531201=>{const _0x4cfb2a=_0x2dbe2,_0x5b4a87={};_0x5b4a87['VojJl']='堆栈:';const _0x25f90c=_0x5b4a87;console[_0x4cfb2a(0x617)](_0x4cfb2a(0x87b)+'\x20Serv'+'er\x20启动'+_0x4cfb2a(0x3d3),_0x531201[_0x4cfb2a(0x715)+'ge']),console[_0x4cfb2a(0x617)](_0x25f90c[_0x4cfb2a(0x45c)],_0x531201['stack']),process['exit'](0x1);});
|