codifx 0.1.9 → 0.1.11

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.
Files changed (43) hide show
  1. package/dist/cli/commands/explain.js +1 -179
  2. package/dist/cli/commands/profile.js +1 -55
  3. package/dist/cli/commands/scan.js +1 -300
  4. package/dist/cli/commands/simulate.js +1 -109
  5. package/dist/cli/commands/validate.js +1 -26
  6. package/dist/cli/index.js +1 -94
  7. package/dist/config/loader.js +1 -124
  8. package/dist/config/schema.js +1 -49
  9. package/dist/core/engine.js +1 -169
  10. package/dist/core/filters.js +1 -70
  11. package/dist/core/oscillator-engine.js +1 -224
  12. package/dist/core/scoring.js +1 -101
  13. package/dist/core/timeframe.js +1 -52
  14. package/dist/core/trend-engine.js +1 -137
  15. package/dist/data/mock.js +1 -111
  16. package/dist/data/provider.js +1 -29
  17. package/dist/data/yahoo.js +1 -200
  18. package/dist/index.js +1 -19
  19. package/dist/indicators/oscillator/adx.js +1 -118
  20. package/dist/indicators/oscillator/atr.js +1 -31
  21. package/dist/indicators/oscillator/cci.js +1 -39
  22. package/dist/indicators/oscillator/macd.js +1 -73
  23. package/dist/indicators/oscillator/momentum.js +1 -35
  24. package/dist/indicators/oscillator/rsi.js +1 -93
  25. package/dist/indicators/oscillator/stochastic.js +1 -89
  26. package/dist/indicators/oscillator/williams.js +1 -44
  27. package/dist/indicators/trend/ema.js +1 -36
  28. package/dist/indicators/trend/hma.js +1 -48
  29. package/dist/indicators/trend/sma.js +1 -30
  30. package/dist/indicators/trend/vwma.js +1 -23
  31. package/dist/types/index.js +1 -5
  32. package/dist/utils/constants.js +1 -105
  33. package/dist/utils/explain.js +1 -83
  34. package/dist/utils/formatter.js +1 -104
  35. package/dist/utils/html-generator.js +1 -107
  36. package/dist/utils/indicators.js +1 -106
  37. package/dist/utils/levels.js +1 -82
  38. package/dist/utils/logger.js +1 -238
  39. package/dist/utils/paths.js +1 -32
  40. package/dist/utils/symbols.js +1 -44
  41. package/dist/utils/trading-type-config.js +1 -96
  42. package/dist/utils/version-checker.js +1 -76
  43. package/package.json +1 -2
@@ -1,300 +1 @@
1
- /**
2
- * Scan command - Scan live market data
3
- */
4
- import { loadProfile, getProfilePathByType } from "../../config/loader.js";
5
- import { YahooFinanceProvider } from "../../data/yahoo.js";
6
- import { ScannerEngine } from "../../core/engine.js";
7
- import { TimeframeManager } from "../../core/timeframe.js";
8
- import { ExplainEngine } from "../../utils/explain.js";
9
- import { Formatter } from "../../utils/formatter.js";
10
- import { normalizeSymbols } from "../../utils/symbols.js";
11
- import { ScanLogger } from "../../utils/logger.js";
12
- import { getDefaultLogPath } from "../../utils/paths.js";
13
- import ora from "ora";
14
- import { HTMLGenerator } from "../../utils/html-generator.js";
15
- export async function scanCommand(options) {
16
- const spinner = ora("Initializing scanner").start();
17
- try {
18
- // Validate and parse date parameter
19
- let targetDate;
20
- if (options.date) {
21
- targetDate = new Date(options.date);
22
- // Validate date format
23
- if (isNaN(targetDate.getTime())) {
24
- throw new Error("Invalid date format. Use YYYY-MM-DD (e.g., 2025-12-22)");
25
- }
26
- // Validate max 7 days back
27
- const today = new Date();
28
- today.setHours(0, 0, 0, 0); // Reset to start of day
29
- targetDate.setHours(23, 59, 59, 999); // Set to end of day
30
- const daysDiff = Math.floor((today.getTime() - targetDate.getTime()) / (1000 * 60 * 60 * 24));
31
- if (daysDiff < 0) {
32
- throw new Error("Date cannot be in the future");
33
- }
34
- if (daysDiff > 7) {
35
- throw new Error("Date cannot be more than 7 days back");
36
- }
37
- spinner.info(`Historical scan for date: ${options.date}`);
38
- }
39
- // Validate direction parameter
40
- const directionFilter = options.direction?.toLowerCase() || "both";
41
- if (!["buy", "sell", "both"].includes(directionFilter)) {
42
- throw new Error(`Invalid direction: ${options.direction}. Must be 'buy', 'sell', or 'both'`);
43
- }
44
- // Load profile
45
- let profilePath;
46
- if (options.profile) {
47
- profilePath = options.profile;
48
- }
49
- else if (options.tradeType) {
50
- profilePath = getProfilePathByType(options.tradeType);
51
- }
52
- spinner.text = "Loading profile";
53
- const profile = await loadProfile(profilePath);
54
- spinner.succeed(`Loaded profile: ${profile.tradingType}`);
55
- // Initialize data provider
56
- const provider = new YahooFinanceProvider();
57
- spinner.start("Checking data provider availability");
58
- const available = await provider.isAvailable();
59
- if (!available) {
60
- throw new Error("Yahoo Finance API is not available");
61
- }
62
- spinner.succeed("Data provider ready");
63
- // Get symbols to scan
64
- // Priority: --symbol > --symbols > --watchlist > profile.dataSource
65
- let symbols = [];
66
- let market = options.market || profile.dataSource?.market || "NASDAQ";
67
- if (options.symbol) {
68
- symbols = [options.symbol];
69
- }
70
- else if (options.symbols) {
71
- symbols = options.symbols;
72
- }
73
- else if (options.watchlist) {
74
- // Load from watchlist file
75
- const { loadWatchlist } = await import("../../config/loader.js");
76
- const watchlist = await loadWatchlist(options.watchlist);
77
- symbols = watchlist.symbols;
78
- // Use market from watchlist if not specified via --market
79
- if (!options.market && watchlist.market) {
80
- market = watchlist.market;
81
- }
82
- if (watchlist.name) {
83
- spinner.info(`Loaded watchlist: ${watchlist.name} (${symbols.length} symbols)`);
84
- }
85
- }
86
- else {
87
- // Use default symbols from profile or fallback
88
- symbols = profile.dataSource?.defaultSymbols || [
89
- "AAPL",
90
- "MSFT",
91
- "GOOGL",
92
- ];
93
- }
94
- // Use default symbols if none specified
95
- if (!symbols || symbols.length === 0) {
96
- symbols = ["AAPL", "MSFT", "GOOGL", "AMZN", "TSLA"];
97
- }
98
- // Normalize symbols with market suffix
99
- symbols = normalizeSymbols(symbols, market);
100
- if (market !== "NASDAQ") {
101
- console.log(Formatter.info(`Market: ${market}`));
102
- }
103
- // Get timeframe configuration
104
- const primaryTF = TimeframeManager.getPrimaryTimeframe(profile.tradingType);
105
- const confirmationTF = TimeframeManager.getConfirmationTimeframe(profile.tradingType);
106
- console.log(Formatter.info(`Primary timeframe: ${primaryTF}`));
107
- console.log(Formatter.info(`Confirmation timeframe: ${confirmationTF}`));
108
- console.log("");
109
- // Initialize logger if requested
110
- let logger = null;
111
- let logPath = null;
112
- if (options.log) {
113
- logger = new ScanLogger();
114
- logPath =
115
- typeof options.log === "string"
116
- ? options.log
117
- : getDefaultLogPath();
118
- if (logger) {
119
- logger.logStart(profile.tradingType, {
120
- primary: profile.timeframes.primary,
121
- confirmation: profile.timeframes.confirmation,
122
- }, symbols);
123
- }
124
- }
125
- // Scan symbols with visual progress bar
126
- const signals = [];
127
- const dataCount = TimeframeManager.getDataPointCount(primaryTF);
128
- const totalSymbols = symbols.length;
129
- let signalCount = 0;
130
- const scanStartTime = Date.now();
131
- // Import progress bar
132
- const cliProgress = await import("cli-progress");
133
- const progressBar = new cliProgress.SingleBar({
134
- format: "🔍 Scanning |{bar}| {percentage}% | {value}/{total} symbols | {status}",
135
- barCompleteChar: "\u2588",
136
- barIncompleteChar: "\u2591",
137
- hideCursor: true,
138
- });
139
- console.log("");
140
- progressBar.start(totalSymbols, 0, { status: "Starting..." });
141
- for (let i = 0; i < symbols.length; i++) {
142
- const symbol = symbols[i];
143
- progressBar.update(i, { status: `Analyzing ${symbol}...` });
144
- try {
145
- // Fetch data
146
- const primaryData = await provider.fetchOHLCV(symbol, primaryTF, dataCount, targetDate);
147
- const confirmationData = await provider.fetchOHLCV(symbol, confirmationTF, dataCount, targetDate);
148
- // Analyze
149
- const analysis = await ScannerEngine.analyze(symbol, primaryData, confirmationData, profile);
150
- if (analysis.signal) {
151
- // Filter by direction if specified
152
- const shouldInclude = directionFilter === "both" ||
153
- analysis.signal.direction.toLowerCase() ===
154
- directionFilter;
155
- if (shouldInclude) {
156
- signalCount++;
157
- progressBar.update(i + 1, {
158
- status: `✨ ${symbol}: ${analysis.signal.direction} signal found!`,
159
- });
160
- signals.push(analysis.signal);
161
- if (logger) {
162
- logger.logSignal(analysis.signal);
163
- }
164
- }
165
- else {
166
- progressBar.update(i + 1, {
167
- status: `${symbol}: ${analysis.signal.direction} (filtered)`,
168
- });
169
- }
170
- }
171
- else {
172
- progressBar.update(i + 1, {
173
- status: `${symbol}: No signal`,
174
- });
175
- if (logger) {
176
- logger.logNoSignal(symbol, analysis.failureReasons.join("; ") ||
177
- "No signal detected", {
178
- trendScore: analysis.trendScore,
179
- oscillatorScore: analysis.oscillatorScore,
180
- finalScore: analysis.finalScore,
181
- minScoreThreshold: analysis.minScoreThreshold,
182
- volumeBonus: analysis.volumeBonus,
183
- volatilityBonus: analysis.volatilityBonus,
184
- confirmationBonus: analysis.confirmationBonus,
185
- liquidityPass: analysis.liquidityPass,
186
- volatilityPass: analysis.volatilityPass,
187
- });
188
- }
189
- }
190
- }
191
- catch (error) {
192
- if (error instanceof Error) {
193
- progressBar.update(i + 1, {
194
- status: `⚠ ${symbol}: ${error.message}`,
195
- });
196
- if (logger) {
197
- logger.logError(symbol, error.message);
198
- }
199
- }
200
- }
201
- }
202
- // Update to completed status
203
- progressBar.update(totalSymbols, { status: "Completed!" });
204
- progressBar.stop();
205
- // Show scan summary
206
- const totalElapsedMs = Date.now() - scanStartTime;
207
- const totalElapsedSec = (totalElapsedMs / 1000).toFixed(2);
208
- console.log(`\n📊 Scan Summary`);
209
- console.log(` ⏱ Duration: ${totalElapsedSec}s`);
210
- console.log(` 📈 Signals found: ${signalCount}/${totalSymbols}`);
211
- if (signalCount > 0) {
212
- console.log(` ✅ Success rate: ${((signalCount / totalSymbols) *
213
- 100).toFixed(1)}%`);
214
- }
215
- // Display results
216
- if (signals.length === 0) {
217
- console.log("\n⚠ No signals found meeting criteria\n");
218
- if (logger) {
219
- await logger.saveToFile(typeof options.log === "string"
220
- ? options.log
221
- : getDefaultLogPath());
222
- }
223
- return;
224
- }
225
- console.log("\n");
226
- console.log("═".repeat(114));
227
- console.log("TRADING SIGNALS FOUND".padStart(67).padEnd(114));
228
- console.log("═".repeat(114));
229
- // Table header - all trading levels
230
- const col1 = "SYMBOL".padEnd(10);
231
- const col2 = "DIR".padEnd(8);
232
- const col3 = "SCORE".padEnd(7);
233
- const col4 = "RATING".padEnd(13);
234
- const col5 = "ENTRY".padEnd(11);
235
- const col6 = "SUPPORT".padEnd(11);
236
- const col7 = "RESIST".padEnd(11);
237
- const col8 = "SL".padEnd(11);
238
- const col9 = "TP".padEnd(11);
239
- const col10 = "RR".padEnd(7);
240
- const col11 = "WIN%".padEnd(6);
241
- console.log(`${col1} ${col2} ${col3} ${col4} ${col5} ${col6} ${col7} ${col8} ${col9} ${col10} ${col11}`);
242
- console.log("─".repeat(114));
243
- // Table rows - all trading data
244
- for (const signal of signals) {
245
- const symbol = signal.symbol.padEnd(10);
246
- const direction = (signal.direction === "BUY" ? "▲ BUY" : "▼ SELL").padEnd(8);
247
- const score = signal.score.toString().padEnd(7);
248
- const rating = signal.rating.padEnd(13);
249
- // Format prices
250
- const formatPrice = (price) => {
251
- if (price >= 1000) {
252
- return `Rp ${Math.round(price).toLocaleString("id-ID")}`;
253
- }
254
- return `Rp ${price.toFixed(0)}`;
255
- };
256
- const entry = formatPrice(signal.entry).padEnd(11);
257
- const support = formatPrice(signal.support).padEnd(11);
258
- const resistance = formatPrice(signal.resistance).padEnd(11);
259
- const sl = formatPrice(signal.stopLoss).padEnd(11);
260
- const tp = formatPrice(signal.takeProfit).padEnd(11);
261
- const rr = signal.riskRewardRatio.toFixed(1).padEnd(7);
262
- const winRate = `${signal.winRate}%`.padEnd(6);
263
- console.log(`${symbol} ${direction} ${score} ${rating} ${entry} ${support} ${resistance} ${sl} ${tp} ${rr} ${winRate}`);
264
- }
265
- console.log("═".repeat(114));
266
- console.log(`\n✨ Total signals: ${signals.length}`);
267
- console.log();
268
- // Show detailed explanation in verbose mode
269
- if (options.verbose && signals.length > 0) {
270
- console.log(Formatter.section("DETAILED SIGNAL EXPLANATION"));
271
- console.log(ExplainEngine.generateExplanation(signals[0]));
272
- }
273
- // Generate HTML dashboard if --html flag is present
274
- if (options.html !== undefined && signals.length > 0) {
275
- try {
276
- const htmlPath = typeof options.html === "string" && options.html !== ""
277
- ? options.html
278
- : undefined;
279
- const outputPath = await HTMLGenerator.generateDashboard(signals, htmlPath);
280
- await HTMLGenerator.openInBrowser(outputPath);
281
- }
282
- catch (error) {
283
- // Silent fail - HTML generation is optional
284
- }
285
- }
286
- // Save log if enabled
287
- if (logger && logPath) {
288
- logger.logSummary(symbols.length, signals.length);
289
- await logger.saveToFile(logPath);
290
- }
291
- }
292
- catch (error) {
293
- spinner.fail("Scan failed");
294
- if (error instanceof Error) {
295
- console.error(Formatter.error(error.message));
296
- }
297
- process.exit(1);
298
- }
299
- }
300
- //# sourceMappingURL=scan.js.map
1
+ (function(_0x232e6d,_0xec9557){const _0x36813a=a0_0x2109,_0xac98f4=_0x232e6d();while(!![]){try{const _0x454de8=-parseInt(_0x36813a(0x22d))/0x1*(parseInt(_0x36813a(0x1fa))/0x2)+-parseInt(_0x36813a(0x246))/0x3+-parseInt(_0x36813a(0x23e))/0x4+parseInt(_0x36813a(0x21b))/0x5+-parseInt(_0x36813a(0x1e7))/0x6*(parseInt(_0x36813a(0x205))/0x7)+parseInt(_0x36813a(0x1c9))/0x8*(parseInt(_0x36813a(0x1ea))/0x9)+parseInt(_0x36813a(0x280))/0xa;if(_0x454de8===_0xec9557)break;else _0xac98f4['push'](_0xac98f4['shift']());}catch(_0x3eaa3b){_0xac98f4['push'](_0xac98f4['shift']());}}}(a0_0x2083,0x6b55d));const a0_0x191507=(function(){const _0x246c20=a0_0x2109,_0x4ccd5d={'hexVn':function(_0x5112b6,_0x250051){return _0x5112b6!==_0x250051;},'lKtIj':_0x246c20(0x1f2),'THjWk':'Date\x20cannot\x20be\x20more\x20than\x207\x20days\x20back','GesYp':_0x246c20(0x238)};let _0x433e29=!![];return function(_0x3fbb27,_0x51f35c){const _0x431534=_0x246c20;if(_0x4ccd5d['GesYp']===_0x4ccd5d[_0x431534(0x293)]){const _0x2d7065=_0x433e29?function(){const _0x36dbaa=_0x431534;if(_0x51f35c){if(_0x4ccd5d[_0x36dbaa(0x1d7)](_0x4ccd5d[_0x36dbaa(0x1dd)],_0x36dbaa(0x230))){const _0x56cb7c=_0x51f35c['apply'](_0x3fbb27,arguments);return _0x51f35c=null,_0x56cb7c;}else throw new _0x536ddd(_0x36dbaa(0x216));}}:function(){};return _0x433e29=![],_0x2d7065;}else throw new _0x22ab24(_0x4ccd5d[_0x431534(0x25d)]);};}()),a0_0x1d713f=a0_0x191507(this,function(){const _0x36c174=a0_0x2109,_0x3ea684={'mVSMT':_0x36c174(0x1d1)};return a0_0x1d713f[_0x36c174(0x1cc)]()[_0x36c174(0x261)](_0x3ea684[_0x36c174(0x21f)])[_0x36c174(0x1cc)]()[_0x36c174(0x21a)](a0_0x1d713f)[_0x36c174(0x261)](_0x3ea684[_0x36c174(0x21f)]);});a0_0x1d713f();import{loadProfile,getProfilePathByType}from'../../config/loader.js';import{YahooFinanceProvider}from'../../data/yahoo.js';import{ScannerEngine}from'../../core/engine.js';import{TimeframeManager}from'../../core/timeframe.js';import{ExplainEngine}from'../../utils/explain.js';import{Formatter}from'../../utils/formatter.js';import{normalizeSymbols}from'../../utils/symbols.js';function a0_0x2109(_0xd604d3,_0x5dec30){_0xd604d3=_0xd604d3-0x1c9;const _0x5bc499=a0_0x2083();let _0x1d713f=_0x5bc499[_0xd604d3];if(a0_0x2109['CKLUKl']===undefined){var _0x191507=function(_0x2ecf0b){const _0x4f60f9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x250a4a='',_0x2dd28d='',_0x417558=_0x250a4a+_0x191507;for(let _0x4f43e2=0x0,_0x1a4082,_0x5e6d84,_0x23e9c9=0x0;_0x5e6d84=_0x2ecf0b['charAt'](_0x23e9c9++);~_0x5e6d84&&(_0x1a4082=_0x4f43e2%0x4?_0x1a4082*0x40+_0x5e6d84:_0x5e6d84,_0x4f43e2++%0x4)?_0x250a4a+=_0x417558['charCodeAt'](_0x23e9c9+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x1a4082>>(-0x2*_0x4f43e2&0x6)):_0x4f43e2:0x0){_0x5e6d84=_0x4f60f9['indexOf'](_0x5e6d84);}for(let _0x36ae38=0x0,_0x237c18=_0x250a4a['length'];_0x36ae38<_0x237c18;_0x36ae38++){_0x2dd28d+='%'+('00'+_0x250a4a['charCodeAt'](_0x36ae38)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2dd28d);};a0_0x2109['Jbipxj']=_0x191507,a0_0x2109['fbkPxn']={},a0_0x2109['CKLUKl']=!![];}const _0x208393=_0x5bc499[0x0],_0x21096b=_0xd604d3+_0x208393,_0x5b387f=a0_0x2109['fbkPxn'][_0x21096b];if(!_0x5b387f){const _0x197b6e=function(_0x36eec7){this['cuaclR']=_0x36eec7,this['RoKngX']=[0x1,0x0,0x0],this['UXehGS']=function(){return'newState';},this['SuMNar']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['fBMYuR']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x197b6e['prototype']['TxDEzM']=function(){const _0x541db9=new RegExp(this['SuMNar']+this['fBMYuR']),_0x282201=_0x541db9['test'](this['UXehGS']['toString']())?--this['RoKngX'][0x1]:--this['RoKngX'][0x0];return this['PfOJxz'](_0x282201);},_0x197b6e['prototype']['PfOJxz']=function(_0x4a2523){if(!Boolean(~_0x4a2523))return _0x4a2523;return this['yULWNB'](this['cuaclR']);},_0x197b6e['prototype']['yULWNB']=function(_0x5ba8ad){for(let _0x2a66f4=0x0,_0x31a6a9=this['RoKngX']['length'];_0x2a66f4<_0x31a6a9;_0x2a66f4++){this['RoKngX']['push'](Math['round'](Math['random']())),_0x31a6a9=this['RoKngX']['length'];}return _0x5ba8ad(this['RoKngX'][0x0]);},new _0x197b6e(a0_0x2109)['TxDEzM'](),_0x1d713f=a0_0x2109['Jbipxj'](_0x1d713f),a0_0x2109['fbkPxn'][_0x21096b]=_0x1d713f;}else _0x1d713f=_0x5b387f;return _0x1d713f;}import{ScanLogger}from'../../utils/logger.js';function a0_0x2083(){const _0x37841c=['nJm1mJHZvMHUtKK','zgL6qKS','C3rHCNq','t0Xlv3G','BgvUz3rO','y29UzMLYBwf0Aw9U','zxHryLu','q2rnAuq','cVcFK4OGu2nHBIbtDw1Tyxj5','t2njvum','z2Try3C','vvLmuMO','vu5fAwK','sw52ywXPzcbKAxjLy3rPB246ia','zKHyv3m','EKz3B2O','zgf0yvnVDxjJzq','mte1ode2me1PBKzxyW','ANPNqvC','Dg9gAxHLza','CMf0Aw5N','D3rmBhO','lIbnDxn0igjLicDIDxKNlcaNC2vSBcCSig9YicDIB3rOjW','wwfOB28GrMLUyw5JzsbbueKGAxmGBM90igf2ywLSywjSzq','wwvpCM8','mte4nda2mw13BenuCW','C3LTyM9S','s2PKsKq','CgvRAfG','q1vcCwW','C2f2zvrVrMLSzq','uKTZuxe','v0Lojq','tg9HzgLUzYbWCM9MAwXL','Awjct08','tgnArMW','BM93','CNDSAe8','DM9SyxrPBgL0EvbHC3m','AuHVyui','uhr4Bxy','oIboBYbZAwDUywW','ChvZAa','zgvMyxvSDfn5BwjVBhm','DMvYyM9Zzq','EezpvvG','tg9HzgvKihDHDgnOBgLZDdOG','ru5uuLK','veHQv2S','CMvWzwf0','BgXSrKi','BwvZC2fNzq','C2vHCMnO','uKfusu5h','DMfMzuG','DgfRzvbYB2zPDa','vfjbreLorYbtsuDoquXtiezpvu5e','D3LbsLu','DhjHzgLUz1r5Cgu','rgf0zsbJyw5UB3qGyMuGBw9Yzsb0AgfUidCGzgf5CYbIywnR','uhjPBwfYEsb0Aw1LzNjHBwu6ia','icaG4O+XicbeDxjHDgLVBJOG','zMXVB3i','AKryA2e','ALnyBLm','wvf4Dva','CM91BMq','uxvdDMS','ugnMEwi','C3rVCeXVC3m','B3bLBKLUqNjVD3nLCG','rgf0ysbWCM92AwrLCIbYzwfKEq','yM90Aa','icHMAwX0zxjLzcK','Bg9N','ihn5BwjVBhmP','vwLAu00','C3rYAw5N','v01LCfG','Bg9Nu3rHCNq','C3LTyM9SCW','zw50CNK','cUkAOcboBYbZAwDUywXZigzVDw5Kig1LzxrPBMCGy3jPDgvYAwek','mtC3ndiZnJbQExbergS','z2v0rgf0yvbVAw50q291BNq','DMfJquu','qKj6vhC','Aw5MBW','z2v0vgLTzq','A1jswvq','te1ezgS','Bg9Nu3vTBwfYEq','zMn6uui','uMPeDLK','rNvtzfG','q2HLy2TPBMCGzgf0ysbWCM92AwrLCIbHDMfPBgfIAwXPDhK','C2v0sg91CNm','q0rkDeS','C3vJy2vLza','z2vUzxjHDgveyxnOyM9HCMq','uxzbC0K','C2LNBMfS','r2vZwxa','yxbWBhK','yNv5','vwnxBum','qu1AtG','wxfHz3e','sgLZDg9YAwnHBcbZy2fUigzVCIbKyxrLoIa','BwfYA2v0','y29UzMLYBwf0Aw9UqM9UDxm','DMHhAge','wejYy0q','DKDmwNm','wuTQAMe','uNaG','v1nevNm','DgLTzwzYyw1LCW','zgLYzwn0Aw9U','icaG8j+tIcbtAwDUywXZigzVDw5KoIa','AKzXt2S','zuv2Cei','mtC3nZeYBKrdBMfz','4PA8ifnfteW','u2HtzhC','Dg9tDhjPBMC','C3rVCa','ExzRque','tvngva','whv0rgm','kcGOlISPkYKRksSK','DhjHzgvuExbL','Bg9NtM9tAwDUywW','z2vUzxjHDgvfEhbSyw5HDgLVBG','AM9PBG','wgLcyuu','Agv4vM4','uKLZvhe','BwLUu2nVCMvuAhjLC2HVBgq','Dg9mB2nHBgvtDhjPBMC','D2LUuMf0zq','s3LUwxG','BeT0swO','C053B0q','u3rHCNrPBMCUlI4','quPkwNK','tKftrefr','CNLLuNO','v251yK4','CMLZA1jLD2fYzfjHDgLV','DM9SyxrPBgL0EujVBNvZ','u0npuKu','mZu4ndy0vePnt0zZ','reLs','DuvOC0m','mtuZzvHlshjN','zKLjreO','BxjSCxe','qLvz','Dgv4Da','D1PUuuS','C2vSBa','sfLVu2q','v1rZzwK','BgLXDwLKAxr5ugfZCW','qufqta','z1nZyu4','ChjPBwfYEq','yujvtxG','u2nHBIbMywLSzwq','sfLJsw4','mJrlqKzHsxO','CMvZAxn0yw5Jzq','sw52ywXPzcbKyxrLigzVCM1HDc4GvxnLifLzwvKTtu0TreqGkguUzY4SidiWmJuTmtiTmJiP','u1vque9sva','revuquLmruqGu0LhtKfmievyueXbtKfusu9o','v2XNzvG','C2nVCMu','r09pr0W','B3nJAwXSyxrVCLnJB3jL','AhrTBa','DxbKyxrL','mZvhwu1ND2G','zMfPBhvYzvjLyxnVBNm','yNHWC00','C3vWCg9YDa','zeDZDfy','lI4U','q29TCgXLDgvKiq','DhjLBMrty29Yzq','EejwBM4','tM8GC2LNBMfSigrLDgvJDgvK','Cw95zLm','CgfKu3rHCNq','v0vSrLi','zgf0zq','CgfKrw5K','BMfTzq','C3rzwMi','rgf0zsbJyw5UB3qGyMuGAw4GDgHLigz1DhvYzq','AhzbuvK','zxHPDa','zMLUywXty29Yzq','y29UC3rYDwn0B3i','mty1mJCWrxrNsLjl','ihnPz25HBcbMB3vUzce','tgLywg0','Bg9Nu2LNBMfS','Bvzttvq','u2LUz2XLqMfY','BhDvCKG','zMv0y2HpseXdvG','BKH6seS','ywjZuxK','sw5PDgLHBgL6Aw5NihnJyw5Uzxi','Dg9mB3DLCKnHC2u','z1nWDgG','u1LIuMy','qw5HBhL6Aw5Nia','u1LnqK9m','C1zTy2C','cUkCQcbuB3rHBcbZAwDUywXZoIa'];a0_0x2083=function(){return _0x37841c;};return a0_0x2083();}import{getDefaultLogPath}from'../../utils/paths.js';import a0_0x56b304 from'ora';import{HTMLGenerator}from'../../utils/html-generator.js';export async function scanCommand(_0x3f888d){const _0x98565c=a0_0x2109,_0x463c4b={'hvAQY':_0x98565c(0x1fe),'fczQB':function(_0x50d00a,_0x5124d5){return _0x50d00a>=_0x5124d5;},'xFOUX':'id-ID','kRRYT':'▲\x20BUY','WMepX':_0x98565c(0x1ca),'nHzHK':function(_0x341ea7,_0x113fc5){return _0x341ea7(_0x113fc5);},'Pcfyb':function(_0x5d077c,_0x29e356){return _0x5d077c(_0x29e356);},'yvkAA':function(_0x3067ff,_0x7734b7){return _0x3067ff(_0x7734b7);},'nXyrF':_0x98565c(0x1f4),'LcZFl':_0x98565c(0x1cf),'XutDc':_0x98565c(0x201),'stYZb':function(_0x3ed255,_0x13e931){return _0x3ed255===_0x13e931;},'fIIDJ':function(_0x7926ce,_0x10304){return _0x7926ce+_0x10304;},'lllFB':'gbVcD','XiBaE':_0x98565c(0x225),'WlgeX':_0x98565c(0x1fc),'WElFR':function(_0x372171,_0x5e759a){return _0x372171/_0x5e759a;},'dGstV':function(_0x30338a,_0x190b34){return _0x30338a-_0x190b34;},'UNEii':function(_0x48ac02,_0x304f6c){return _0x48ac02*_0x304f6c;},'zFwoj':function(_0x38a8b5,_0x155d51){return _0x38a8b5*_0x155d51;},'exQbU':function(_0x4d4a9b,_0x4cf5d6){return _0x4d4a9b*_0x4cf5d6;},'gkQcw':function(_0x472252,_0x49d372){return _0x472252<_0x49d372;},'RIsTq':function(_0x549612,_0x35b922){return _0x549612>_0x35b922;},'jzgAW':_0x98565c(0x24c),'jFqOk':'GfWPR','aBUMx':_0x98565c(0x268),'wZnQK':_0x98565c(0x275),'rDvOh':_0x98565c(0x295),'XBrcD':function(_0x5e40e8,_0x404f35){return _0x5e40e8!==_0x404f35;},'OcIUC':'XxJOG','UiZSM':function(_0x43dfcb,_0x44c9cb){return _0x43dfcb===_0x44c9cb;},'eEvpB':_0x98565c(0x28b),'KvPkN':_0x98565c(0x1e3),'dizBK':_0x98565c(0x24e),'CDJtK':function(_0x45100c,_0x34a3de){return _0x45100c(_0x34a3de);},'wyAJU':_0x98565c(0x28c),'YKjja':_0x98565c(0x24a),'sNwoD':_0x98565c(0x254),'lwUrH':_0x98565c(0x244),'SYbRf':_0x98565c(0x274),'Yqagq':_0x98565c(0x1e1),'MhepX':'../../config/loader.js','vafeH':'FhfvV','mrlqq':'KlnYa','HYoSd':_0x98565c(0x296),'QuCvk':_0x98565c(0x297),'CdMiD':function(_0x419ffd,_0x418aa0,_0x5149bc){return _0x419ffd(_0x418aa0,_0x5149bc);},'WSDVs':function(_0x404883,_0x3cbc86){return _0x404883===_0x3cbc86;},'KynYx':_0x98565c(0x224),'HYcIn':_0x98565c(0x245),'LiXXm':_0x98565c(0x27a),'sVmcg':'🔍\x20Scanning\x20|{bar}|\x20{percentage}%\x20|\x20{value}/{total}\x20symbols\x20|\x20{status}','QvAsI':_0x98565c(0x1df),'tXmwh':function(_0xdf3187,_0x45ab54){return _0xdf3187<_0x45ab54;},'RjDvY':function(_0x5b44ef,_0xdd30c4){return _0x5b44ef===_0xdd30c4;},'jSXnS':_0x98565c(0x20e),'ShSdw':_0x98565c(0x20b),'JauKe':function(_0x13b099,_0x5cb2f5){return _0x13b099-_0x5cb2f5;},'AJJZy':function(_0x5cb1b0,_0x465322){return _0x5cb1b0>_0x465322;},'rwlhO':function(_0x183954,_0x4e1e22){return _0x183954/_0x4e1e22;},'vhGha':function(_0x19dfa0,_0x59b515){return _0x19dfa0===_0x59b515;},'DvYum':function(_0x4f13a5){return _0x4f13a5();},'jDXka':_0x98565c(0x265),'qoyfS':_0x98565c(0x22a),'Ptxmv':_0x98565c(0x1e8),'vacAE':_0x98565c(0x1e6),'KjdJD':_0x98565c(0x262),'vGLZs':_0x98565c(0x1fd),'dZWKv':'RESIST','ibBOO':_0x98565c(0x24d),'ryeRz':_0x98565c(0x287),'wtLlz':function(_0x117b17,_0x1c13ea){return _0x117b17(_0x1c13ea);},'fHXWs':function(_0x2ef3f3,_0x399a89){return _0x2ef3f3(_0x399a89);},'YQxuP':function(_0x3fc8d3,_0x508eab){return _0x3fc8d3(_0x508eab);},'nLYnK':function(_0xd828d8,_0x35ae66){return _0xd828d8>_0x35ae66;},'pekhX':'ojNqe','gSsaN':function(_0x72d4ff,_0x666ec0){return _0x72d4ff===_0x666ec0;},'xBVnn':function(_0x14a26c,_0x2f7b7c){return _0x14a26c&&_0x2f7b7c;},'uEhsC':function(_0x1f1d0d,_0x242e54){return _0x1f1d0d instanceof _0x242e54;}},_0x56c112=a0_0x56b304(_0x463c4b[_0x98565c(0x1d6)])[_0x98565c(0x22f)]();try{let _0x132d90;if(_0x3f888d[_0x98565c(0x212)]){_0x132d90=new Date(_0x3f888d['date']);if(_0x463c4b['Pcfyb'](isNaN,_0x132d90[_0x98565c(0x285)]()))throw new Error(_0x463c4b[_0x98565c(0x1ff)]);const _0x4f93b8=new Date();_0x4f93b8[_0x98565c(0x28d)](0x0,0x0,0x0,0x0),_0x132d90['setHours'](0x17,0x3b,0x3b,0x3e7);const _0x4a254b=Math[_0x98565c(0x26b)](_0x463c4b[_0x98565c(0x211)](_0x463c4b[_0x98565c(0x209)](_0x4f93b8[_0x98565c(0x285)](),_0x132d90[_0x98565c(0x285)]()),_0x463c4b[_0x98565c(0x239)](_0x463c4b[_0x98565c(0x23c)](_0x463c4b[_0x98565c(0x233)](0x3e8,0x3c),0x3c),0x18)));if(_0x463c4b[_0x98565c(0x237)](_0x4a254b,0x0))throw new Error(_0x98565c(0x216));if(_0x463c4b['RIsTq'](_0x4a254b,0x7)){if(_0x463c4b[_0x98565c(0x23f)]===_0x463c4b[_0x98565c(0x2a5)])_0x2dbcbd[_0x98565c(0x277)](_0x36c68a['section'](_0x463c4b[_0x98565c(0x217)])),_0x1fe8b0[_0x98565c(0x277)](_0x1446bd[_0x98565c(0x1d4)](_0x18dea8[0x0]));else throw new Error(_0x463c4b[_0x98565c(0x1f7)]);}_0x56c112[_0x98565c(0x284)](_0x98565c(0x299)+_0x3f888d[_0x98565c(0x212)]);}const _0x158d00=_0x3f888d[_0x98565c(0x2a3)]?.[_0x98565c(0x226)]()||_0x463c4b[_0x98565c(0x1ef)];if(![_0x463c4b['rDvOh'],_0x98565c(0x1f0),'both']['includes'](_0x158d00)){if(_0x463c4b['XBrcD'](_0x463c4b[_0x98565c(0x236)],_0x98565c(0x207)))throw new Error(_0x98565c(0x23a)+_0x3f888d[_0x98565c(0x2a3)]+_0x98565c(0x243));else{const _0x485334=_0x58cdfd[_0x98565c(0x247)][_0x98565c(0x213)](0xa),_0x53223e=(_0xe282de[_0x98565c(0x2a3)]===_0x98565c(0x1ed)?_0x463c4b[_0x98565c(0x286)]:_0x463c4b[_0x98565c(0x27b)])[_0x98565c(0x213)](0x8),_0x4b549f=_0x3a67a5[_0x98565c(0x200)][_0x98565c(0x1cc)]()[_0x98565c(0x213)](0x7),_0x541c83=_0x5962b8[_0x98565c(0x241)][_0x98565c(0x213)](0xd),_0x20764a=_0x3d815c=>{const _0x1cfd3c=_0x98565c;if(_0x463c4b[_0x1cfd3c(0x289)](_0x3d815c,0x3e8))return _0x1cfd3c(0x2a0)+_0x105178['round'](_0x3d815c)[_0x1cfd3c(0x1da)](_0x463c4b[_0x1cfd3c(0x25a)]);return'Rp\x20'+_0x3d815c[_0x1cfd3c(0x240)](0x0);},_0x269ad1=_0x463c4b[_0x98565c(0x223)](_0x20764a,_0x5980b1[_0x98565c(0x27e)])['padEnd'](0xb),_0x5a8158=_0x20764a(_0x42394d['support'])[_0x98565c(0x213)](0xb),_0x186d51=_0x463c4b[_0x98565c(0x271)](_0x20764a,_0x54c1f5[_0x98565c(0x1fb)])[_0x98565c(0x213)](0xb),_0x7cc436=_0x463c4b[_0x98565c(0x1ce)](_0x20764a,_0x1319d2[_0x98565c(0x272)])[_0x98565c(0x213)](0xb),_0x169485=_0x463c4b[_0x98565c(0x271)](_0x20764a,_0x1b4121[_0x98565c(0x264)])[_0x98565c(0x213)](0xb),_0xfe9010=_0x4f92ad[_0x98565c(0x1e4)]['toFixed'](0x1)[_0x98565c(0x213)](0x7),_0x215cff=(_0x28bb84['winRate']+'%')['padEnd'](0x6);_0x2b70bf[_0x98565c(0x277)](_0x485334+'\x20'+_0x53223e+'\x20'+_0x4b549f+'\x20'+_0x541c83+'\x20'+_0x269ad1+'\x20'+_0x5a8158+'\x20'+_0x186d51+'\x20'+_0x7cc436+'\x20'+_0x169485+'\x20'+_0xfe9010+'\x20'+_0x215cff);}}let _0x3c452d;if(_0x3f888d['profile'])_0x463c4b[_0x98565c(0x279)](_0x463c4b[_0x98565c(0x2a6)],_0x463c4b['KvPkN'])?_0x57f71d=_0x338d42['market']:_0x3c452d=_0x3f888d['profile'];else _0x3f888d[_0x98565c(0x1d2)]&&(_0x3c452d=_0x463c4b[_0x98565c(0x223)](getProfilePathByType,_0x3f888d[_0x98565c(0x1d2)]));_0x56c112[_0x98565c(0x1ee)]=_0x463c4b[_0x98565c(0x22e)];const _0x167d6e=await _0x463c4b[_0x98565c(0x28e)](loadProfile,_0x3c452d);_0x56c112[_0x98565c(0x28f)]('Loaded\x20profile:\x20'+_0x167d6e['tradingType']);const _0x5e67f8=new YahooFinanceProvider();_0x56c112[_0x98565c(0x22f)](_0x463c4b[_0x98565c(0x266)]);const _0x754d40=await _0x5e67f8['isAvailable']();if(!_0x754d40){if(_0x463c4b[_0x98565c(0x29f)]!==_0x463c4b[_0x98565c(0x1de)])throw new Error(_0x463c4b[_0x98565c(0x221)]);else{if(_0x58a10b){const _0x42c0df=_0x55d79b['apply'](_0x3cd79c,arguments);return _0x543323=null,_0x42c0df;}}}_0x56c112[_0x98565c(0x28f)](_0x463c4b[_0x98565c(0x228)]);let _0x568970=[],_0x50d9f2=_0x3f888d['market']||_0x167d6e[_0x98565c(0x23d)]?.[_0x98565c(0x29a)]||_0x463c4b[_0x98565c(0x298)];if(_0x3f888d[_0x98565c(0x247)])_0x568970=[_0x3f888d[_0x98565c(0x247)]];else{if(_0x3f888d[_0x98565c(0x27d)])_0x568970=_0x3f888d[_0x98565c(0x27d)];else{if(_0x3f888d['watchlist']){const {loadWatchlist:_0x2c476a}=await import(_0x463c4b['MhepX']),_0xce3aa3=await _0x463c4b[_0x98565c(0x28e)](_0x2c476a,_0x3f888d['watchlist']);_0x568970=_0xce3aa3['symbols'],!_0x3f888d[_0x98565c(0x29a)]&&_0xce3aa3[_0x98565c(0x29a)]&&(_0x463c4b[_0x98565c(0x29d)](_0x463c4b[_0x98565c(0x263)],_0x463c4b[_0x98565c(0x1ec)])?_0x50d9f2=_0xce3aa3[_0x98565c(0x29a)]:_0x65ffbe=_0x40647e[_0x98565c(0x23d)]?.[_0x98565c(0x258)]||[_0x463c4b['nXyrF'],_0x463c4b['LcZFl'],_0x463c4b[_0x98565c(0x1d0)]]),_0xce3aa3[_0x98565c(0x214)]&&_0x56c112[_0x98565c(0x284)](_0x98565c(0x25b)+_0xce3aa3[_0x98565c(0x214)]+'\x20('+_0x568970[_0x98565c(0x231)]+_0x98565c(0x278));}else{if(_0x463c4b[_0x98565c(0x215)](_0x463c4b['HYoSd'],_0x463c4b[_0x98565c(0x1f1)]))_0x568970=_0x167d6e[_0x98565c(0x23d)]?.[_0x98565c(0x258)]||[_0x98565c(0x1f4),_0x463c4b[_0x98565c(0x250)],_0x463c4b[_0x98565c(0x1d0)]];else{const _0x5a06bc=_0x12a1a4[_0x98565c(0x294)](_0x3a18b0,arguments);return _0x3e1045=null,_0x5a06bc;}}}}(!_0x568970||_0x568970[_0x98565c(0x231)]===0x0)&&(_0x568970=[_0x463c4b['nXyrF'],_0x463c4b[_0x98565c(0x250)],_0x463c4b[_0x98565c(0x1d0)],_0x463c4b[_0x98565c(0x270)],'TSLA']);_0x568970=_0x463c4b[_0x98565c(0x234)](normalizeSymbols,_0x568970,_0x50d9f2);if(_0x463c4b[_0x98565c(0x29d)](_0x50d9f2,_0x98565c(0x1e1))){if(_0x463c4b[_0x98565c(0x2a1)](_0x463c4b[_0x98565c(0x1dc)],_0x463c4b[_0x98565c(0x1dc)]))console['log'](Formatter[_0x98565c(0x284)]('Market:\x20'+_0x50d9f2));else{const _0x34af88=_0x463c4b[_0x98565c(0x215)](_0x356416,_0x98565c(0x275))||_0x23ac41[_0x98565c(0x292)]['direction']['toLowerCase']()===_0x5b701f;_0x34af88?(_0x145800++,_0x4f9099[_0x98565c(0x204)](_0x463c4b[_0x98565c(0x1eb)](_0x1a8d2c,0x1),{'status':'✨\x20'+_0x3ad2ab+':\x20'+_0x4167d['signal'][_0x98565c(0x2a3)]+'\x20signal\x20found!'}),_0x423f3e[_0x98565c(0x257)](_0x451d7e[_0x98565c(0x292)]),_0x62b42b&&_0x613e20['logSignal'](_0x251a4d[_0x98565c(0x292)])):_0x2a572c[_0x98565c(0x204)](_0x463c4b[_0x98565c(0x1eb)](_0x564922,0x1),{'status':_0xef698c+':\x20'+_0x27b3c6[_0x98565c(0x292)][_0x98565c(0x2a3)]+_0x98565c(0x276)});}}const _0x3d36c9=TimeframeManager['getPrimaryTimeframe'](_0x167d6e[_0x98565c(0x267)]),_0x486b10=TimeframeManager['getConfirmationTimeframe'](_0x167d6e[_0x98565c(0x267)]);console[_0x98565c(0x277)](Formatter[_0x98565c(0x284)](_0x98565c(0x269)+_0x3d36c9)),console['log'](Formatter['info']('Confirmation\x20timeframe:\x20'+_0x486b10)),console[_0x98565c(0x277)]('');let _0x57b64f=null,_0x2ead08=null;_0x3f888d[_0x98565c(0x277)]&&(_0x463c4b[_0x98565c(0x29d)](_0x98565c(0x227),_0x463c4b[_0x98565c(0x1f9)])?(_0x57b64f=new ScanLogger(),_0x2ead08=typeof _0x3f888d['log']===_0x463c4b[_0x98565c(0x21d)]?_0x3f888d[_0x98565c(0x277)]:getDefaultLogPath(),_0x57b64f&&_0x57b64f[_0x98565c(0x27c)](_0x167d6e[_0x98565c(0x267)],{'primary':_0x167d6e[_0x98565c(0x2a2)][_0x98565c(0x1f6)],'confirmation':_0x167d6e[_0x98565c(0x2a2)][_0x98565c(0x232)]},_0x568970)):_0x345f9e['logError'](_0x504808,_0x344c64[_0x98565c(0x260)]));const _0x595835=[],_0x27ce31=TimeframeManager[_0x98565c(0x281)](_0x3d36c9),_0x3dacb8=_0x568970[_0x98565c(0x231)];let _0x3bc74c=0x0;const _0x48dd86=Date['now'](),_0x3569c3=await import('cli-progress'),_0xfdf2ba=new _0x3569c3[(_0x98565c(0x220))]({'format':_0x463c4b[_0x98565c(0x22b)],'barCompleteChar':'█','barIncompleteChar':'░','hideCursor':!![]});console[_0x98565c(0x277)](''),_0xfdf2ba[_0x98565c(0x22f)](_0x3dacb8,0x0,{'status':_0x463c4b[_0x98565c(0x291)]});for(let _0xe3518e=0x0;_0x463c4b['tXmwh'](_0xe3518e,_0x568970[_0x98565c(0x231)]);_0xe3518e++){const _0x20dcf8=_0x568970[_0xe3518e];_0xfdf2ba[_0x98565c(0x204)](_0xe3518e,{'status':_0x98565c(0x229)+_0x20dcf8+_0x98565c(0x20a)});try{const _0x3b3aa9=await _0x5e67f8[_0x98565c(0x222)](_0x20dcf8,_0x3d36c9,_0x27ce31,_0x132d90),_0xf5ff1b=await _0x5e67f8[_0x98565c(0x222)](_0x20dcf8,_0x486b10,_0x27ce31,_0x132d90),_0x37a685=await ScannerEngine['analyze'](_0x20dcf8,_0x3b3aa9,_0xf5ff1b,_0x167d6e);if(_0x37a685[_0x98565c(0x292)]){const _0x4c3e25=_0x463c4b[_0x98565c(0x215)](_0x158d00,_0x463c4b['wZnQK'])||_0x463c4b[_0x98565c(0x28a)](_0x37a685[_0x98565c(0x292)][_0x98565c(0x2a3)][_0x98565c(0x226)](),_0x158d00);_0x4c3e25?(_0x3bc74c++,_0xfdf2ba[_0x98565c(0x204)](_0x463c4b[_0x98565c(0x1eb)](_0xe3518e,0x1),{'status':'✨\x20'+_0x20dcf8+':\x20'+_0x37a685[_0x98565c(0x292)]['direction']+_0x98565c(0x21c)}),_0x595835['push'](_0x37a685[_0x98565c(0x292)]),_0x57b64f&&_0x57b64f[_0x98565c(0x21e)](_0x37a685[_0x98565c(0x292)])):_0xfdf2ba[_0x98565c(0x204)](_0xe3518e+0x1,{'status':_0x20dcf8+':\x20'+_0x37a685[_0x98565c(0x292)][_0x98565c(0x2a3)]+_0x98565c(0x276)});}else _0xfdf2ba[_0x98565c(0x204)](_0x463c4b[_0x98565c(0x1eb)](_0xe3518e,0x1),{'status':_0x20dcf8+_0x98565c(0x256)}),_0x57b64f&&_0x57b64f[_0x98565c(0x1d3)](_0x20dcf8,_0x37a685[_0x98565c(0x206)][_0x98565c(0x1d5)](';\x20')||_0x463c4b[_0x98565c(0x26d)],{'trendScore':_0x37a685[_0x98565c(0x20c)],'oscillatorScore':_0x37a685[_0x98565c(0x202)],'finalScore':_0x37a685[_0x98565c(0x219)],'minScoreThreshold':_0x37a685[_0x98565c(0x1d9)],'volumeBonus':_0x37a685['volumeBonus'],'volatilityBonus':_0x37a685[_0x98565c(0x1e5)],'confirmationBonus':_0x37a685[_0x98565c(0x29b)],'liquidityPass':_0x37a685[_0x98565c(0x1f3)],'volatilityPass':_0x37a685[_0x98565c(0x253)]});}catch(_0x229b4e){_0x229b4e instanceof Error&&(_0xfdf2ba[_0x98565c(0x204)](_0xe3518e+0x1,{'status':'⚠\x20'+_0x20dcf8+':\x20'+_0x229b4e[_0x98565c(0x260)]}),_0x57b64f&&_0x57b64f['logError'](_0x20dcf8,_0x229b4e[_0x98565c(0x260)]));}}_0xfdf2ba[_0x98565c(0x204)](_0x3dacb8,{'status':_0x463c4b[_0x98565c(0x1cb)]}),_0xfdf2ba[_0x98565c(0x1cd)]();const _0x52f75d=_0x463c4b['JauKe'](Date[_0x98565c(0x251)](),_0x48dd86),_0x5bb1dd=_0x463c4b['WElFR'](_0x52f75d,0x3e8)['toFixed'](0x2);console[_0x98565c(0x277)](_0x98565c(0x235)),console[_0x98565c(0x277)](_0x98565c(0x26a)+_0x5bb1dd+'s'),console['log'](_0x98565c(0x2a4)+_0x3bc74c+'/'+_0x3dacb8);_0x463c4b[_0x98565c(0x1e0)](_0x3bc74c,0x0)&&console[_0x98565c(0x277)]('\x20\x20\x20✅\x20Success\x20rate:\x20'+_0x463c4b[_0x98565c(0x233)](_0x463c4b[_0x98565c(0x252)](_0x3bc74c,_0x3dacb8),0x64)[_0x98565c(0x240)](0x1)+'%');if(_0x463c4b[_0x98565c(0x29c)](_0x595835[_0x98565c(0x231)],0x0)){console[_0x98565c(0x277)](_0x98565c(0x27f));_0x57b64f&&await _0x57b64f[_0x98565c(0x24b)](typeof _0x3f888d[_0x98565c(0x277)]===_0x463c4b[_0x98565c(0x21d)]?_0x3f888d[_0x98565c(0x277)]:_0x463c4b['DvYum'](getDefaultLogPath));return;}console[_0x98565c(0x277)]('\x0a'),console['log']('═'['repeat'](0x72)),console['log'](_0x463c4b[_0x98565c(0x26c)][_0x98565c(0x210)](0x43)[_0x98565c(0x213)](0x72)),console[_0x98565c(0x277)]('═'[_0x98565c(0x25e)](0x72));const _0x4d4d72=_0x463c4b[_0x98565c(0x20f)][_0x98565c(0x213)](0xa),_0x15e2ba=_0x463c4b[_0x98565c(0x255)][_0x98565c(0x213)](0x8),_0x125a8d=_0x463c4b[_0x98565c(0x282)][_0x98565c(0x213)](0x7),_0x18150d=_0x463c4b[_0x98565c(0x248)][_0x98565c(0x213)](0xd),_0xb3ec03=_0x98565c(0x25c)['padEnd'](0xb),_0x2651b3=_0x463c4b[_0x98565c(0x29e)][_0x98565c(0x213)](0xb),_0x53f59f=_0x463c4b['dZWKv'][_0x98565c(0x213)](0xb),_0x4984eb='SL'[_0x98565c(0x213)](0xb),_0x53ba78='TP'[_0x98565c(0x213)](0xb),_0xc41e53='RR'[_0x98565c(0x213)](0x7),_0x343575=_0x463c4b[_0x98565c(0x24f)][_0x98565c(0x213)](0x6);console[_0x98565c(0x277)](_0x4d4d72+'\x20'+_0x15e2ba+'\x20'+_0x125a8d+'\x20'+_0x18150d+'\x20'+_0xb3ec03+'\x20'+_0x2651b3+'\x20'+_0x53f59f+'\x20'+_0x4984eb+'\x20'+_0x53ba78+'\x20'+_0xc41e53+'\x20'+_0x343575),console[_0x98565c(0x277)]('─'[_0x98565c(0x25e)](0x72));for(const _0x2bdddf of _0x595835){if(_0x463c4b['WSDVs'](_0x98565c(0x287),_0x463c4b[_0x98565c(0x1e2)])){const _0x445af9=_0x2bdddf[_0x98565c(0x247)][_0x98565c(0x213)](0xa),_0x71e17f=(_0x463c4b['UiZSM'](_0x2bdddf[_0x98565c(0x2a3)],_0x98565c(0x1ed))?_0x463c4b[_0x98565c(0x286)]:'▼\x20SELL')['padEnd'](0x8),_0xe068e4=_0x2bdddf[_0x98565c(0x200)][_0x98565c(0x1cc)]()[_0x98565c(0x213)](0x7),_0x234f2f=_0x2bdddf['rating'][_0x98565c(0x213)](0xd),_0x10f709=_0xf426d0=>{const _0x4ba2e1=_0x98565c;if(_0x463c4b[_0x4ba2e1(0x215)](_0x4ba2e1(0x283),_0x463c4b[_0x4ba2e1(0x25f)]))_0x5d06e3=[_0x31ab37['symbol']];else{if(_0x463c4b[_0x4ba2e1(0x289)](_0xf426d0,0x3e8))return'Rp\x20'+Math[_0x4ba2e1(0x26f)](_0xf426d0)[_0x4ba2e1(0x1da)](_0x463c4b[_0x4ba2e1(0x25a)]);return _0x4ba2e1(0x2a0)+_0xf426d0[_0x4ba2e1(0x240)](0x0);}},_0x3a99cb=_0x463c4b[_0x98565c(0x242)](_0x10f709,_0x2bdddf[_0x98565c(0x27e)])['padEnd'](0xb),_0x3df1f6=_0x463c4b[_0x98565c(0x23b)](_0x10f709,_0x2bdddf[_0x98565c(0x208)])[_0x98565c(0x213)](0xb),_0x41fd34=_0x463c4b[_0x98565c(0x1ce)](_0x10f709,_0x2bdddf[_0x98565c(0x1fb)])[_0x98565c(0x213)](0xb),_0x2fb104=_0x463c4b[_0x98565c(0x26e)](_0x10f709,_0x2bdddf['stopLoss'])['padEnd'](0xb),_0x25d398=_0x463c4b[_0x98565c(0x28e)](_0x10f709,_0x2bdddf['takeProfit'])[_0x98565c(0x213)](0xb),_0x37d19a=_0x2bdddf[_0x98565c(0x1e4)][_0x98565c(0x240)](0x1)[_0x98565c(0x213)](0x7),_0x2c5b90=(_0x2bdddf[_0x98565c(0x1db)]+'%')['padEnd'](0x6);console[_0x98565c(0x277)](_0x445af9+'\x20'+_0x71e17f+'\x20'+_0xe068e4+'\x20'+_0x234f2f+'\x20'+_0x3a99cb+'\x20'+_0x3df1f6+'\x20'+_0x41fd34+'\x20'+_0x2fb104+'\x20'+_0x25d398+'\x20'+_0x37d19a+'\x20'+_0x2c5b90);}else _0x197cf4=new _0x96df47(),_0x3b858b=typeof _0xcdcbb5['log']==='string'?_0x39c8ff['log']:_0x3cd0a4(),_0x515646&&_0x2adcd2[_0x98565c(0x27c)](_0x1d803a['tradingType'],{'primary':_0x499dda[_0x98565c(0x2a2)][_0x98565c(0x1f6)],'confirmation':_0x4a85d8[_0x98565c(0x2a2)][_0x98565c(0x232)]},_0x20d90f);}console[_0x98565c(0x277)]('═'[_0x98565c(0x25e)](0x72)),console[_0x98565c(0x277)](_0x98565c(0x22c)+_0x595835[_0x98565c(0x231)]),console['log']();_0x3f888d[_0x98565c(0x259)]&&_0x463c4b[_0x98565c(0x1d8)](_0x595835['length'],0x0)&&(console[_0x98565c(0x277)](Formatter['section'](_0x463c4b['hvAQY'])),console[_0x98565c(0x277)](ExplainEngine[_0x98565c(0x1d4)](_0x595835[0x0])));if(_0x463c4b[_0x98565c(0x29d)](_0x3f888d[_0x98565c(0x203)],undefined)&&_0x463c4b['nLYnK'](_0x595835[_0x98565c(0x231)],0x0)){if(_0x463c4b[_0x98565c(0x249)]===_0x463c4b[_0x98565c(0x249)])try{const _0x2f29cc=_0x463c4b[_0x98565c(0x1f5)](typeof _0x3f888d['html'],_0x463c4b[_0x98565c(0x21d)])&&_0x463c4b[_0x98565c(0x29d)](_0x3f888d[_0x98565c(0x203)],'')?_0x3f888d[_0x98565c(0x203)]:undefined,_0x4995e5=await HTMLGenerator[_0x98565c(0x290)](_0x595835,_0x2f29cc);await HTMLGenerator[_0x98565c(0x273)](_0x4995e5);}catch(_0xd3b7ae){}else{const _0x2d0450=_0x197b6e?function(){const _0x267101=_0x98565c;if(_0x2a66f4){const _0xb60095=_0x2c659d[_0x267101(0x294)](_0x2971bf,arguments);return _0x592c17=null,_0xb60095;}}:function(){};return _0x5ba8ad=![],_0x2d0450;}}_0x463c4b[_0x98565c(0x20d)](_0x57b64f,_0x2ead08)&&(_0x57b64f[_0x98565c(0x288)](_0x568970[_0x98565c(0x231)],_0x595835[_0x98565c(0x231)]),await _0x57b64f[_0x98565c(0x24b)](_0x2ead08));}catch(_0x820f50){_0x56c112['fail'](_0x98565c(0x1f8)),_0x463c4b[_0x98565c(0x1e9)](_0x820f50,Error)&&console['error'](Formatter['error'](_0x820f50['message'])),process[_0x98565c(0x218)](0x1);}}
@@ -1,109 +1 @@
1
- /**
2
- * Simulate command - Run scanner with mock data
3
- */
4
- import { loadProfile, getProfilePathByType } from "../../config/loader.js";
5
- import { generatePatternedData } from "../../data/mock.js";
6
- import { ScannerEngine } from "../../core/engine.js";
7
- import { TimeframeManager } from "../../core/timeframe.js";
8
- import { ExplainEngine } from "../../utils/explain.js";
9
- import { Formatter } from "../../utils/formatter.js";
10
- import ora from "ora";
11
- export async function simulateCommand(options) {
12
- const spinner = ora("Initializing simulation").start();
13
- try {
14
- // Load profile
15
- let profilePath;
16
- if (options.profile) {
17
- profilePath = options.profile;
18
- }
19
- else if (options.tradeType) {
20
- profilePath = getProfilePathByType(options.tradeType);
21
- }
22
- spinner.text = "Loading profile";
23
- const profile = await loadProfile(profilePath);
24
- spinner.succeed(`Loaded profile: ${profile.tradingType}`);
25
- // Get timeframe configuration
26
- const primaryTF = TimeframeManager.getPrimaryTimeframe(profile.tradingType);
27
- const confirmationTF = TimeframeManager.getConfirmationTimeframe(profile.tradingType);
28
- console.log(Formatter.info(`Primary timeframe: ${primaryTF}`));
29
- console.log(Formatter.info(`Confirmation timeframe: ${confirmationTF}`));
30
- console.log("");
31
- // Generate mock data
32
- spinner.start("Generating mock market data");
33
- const symbols = ["BBRI.JK", "ICBP.JK", "TLKM.JK"];
34
- const signals = [];
35
- for (const symbol of symbols) {
36
- spinner.text = `Analyzing ${symbol}`;
37
- // Generate data with oversold reversal pattern
38
- const primaryData = generatePatternedData("oversold-reversal", 200);
39
- const confirmationData = generatePatternedData("strong-trend", 200);
40
- // Analyze
41
- const analysis = await ScannerEngine.analyze(symbol, primaryData, confirmationData, profile);
42
- if (analysis.signal) {
43
- signals.push(analysis.signal);
44
- }
45
- }
46
- spinner.succeed("Analysis complete");
47
- // Display results
48
- if (signals.length === 0) {
49
- console.log("\n⚠ No signals found meeting criteria\n");
50
- return;
51
- }
52
- console.log("\n");
53
- console.log("═".repeat(110));
54
- console.log(" 🎯 TRADING SIGNALS FOUND");
55
- console.log("═".repeat(110));
56
- // Table header - all trading levels
57
- const col1 = "SYMBOL".padEnd(10);
58
- const col2 = "DIR".padEnd(6);
59
- const col3 = "SCORE".padEnd(7);
60
- const col4 = "RATING".padEnd(13);
61
- const col5 = "ENTRY".padEnd(11);
62
- const col6 = "SUPPORT".padEnd(11);
63
- const col7 = "RESIST".padEnd(11);
64
- const col8 = "SL".padEnd(11);
65
- const col9 = "TP".padEnd(11);
66
- const col10 = "RR".padEnd(5);
67
- const col11 = "WIN%".padEnd(6);
68
- console.log(`${col1} ${col2} ${col3} ${col4} ${col5} ${col6} ${col7} ${col8} ${col9} ${col10} ${col11}`);
69
- console.log("─".repeat(110));
70
- // Table rows - all trading data
71
- for (const signal of signals) {
72
- const symbol = signal.symbol.padEnd(10);
73
- const direction = (signal.direction === "BUY" ? "▲BUY" : "▼SELL").padEnd(6);
74
- const score = signal.score.toString().padEnd(7);
75
- const rating = signal.rating.padEnd(13);
76
- // Format prices
77
- const formatPrice = (price) => {
78
- if (price >= 1000) {
79
- return `Rp ${Math.round(price).toLocaleString("id-ID")}`;
80
- }
81
- return `Rp ${price.toFixed(0)}`;
82
- };
83
- const entry = formatPrice(signal.entry).padEnd(11);
84
- const support = formatPrice(signal.support).padEnd(11);
85
- const resistance = formatPrice(signal.resistance).padEnd(11);
86
- const sl = formatPrice(signal.stopLoss).padEnd(11);
87
- const tp = formatPrice(signal.takeProfit).padEnd(11);
88
- const rr = signal.riskRewardRatio.toFixed(1).padEnd(5);
89
- const winRate = `${signal.winRate}%`.padEnd(6);
90
- console.log(`${symbol} ${direction} ${score} ${rating} ${entry} ${support} ${resistance} ${sl} ${tp} ${rr} ${winRate}`);
91
- }
92
- console.log("═".repeat(110));
93
- console.log(`\n✨ Total signals: ${signals.length}`);
94
- console.log();
95
- // Show detailed explanation in verbose mode
96
- if (options.verbose && signals.length > 0) {
97
- console.log(Formatter.section("DETAILED SIGNAL EXPLANATION"));
98
- console.log(ExplainEngine.generateExplanation(signals[0]));
99
- }
100
- }
101
- catch (error) {
102
- spinner.fail("Simulation failed");
103
- if (error instanceof Error) {
104
- console.error(Formatter.error(error.message));
105
- }
106
- process.exit(1);
107
- }
108
- }
109
- //# sourceMappingURL=simulate.js.map
1
+ (function(_0x420c39,_0x50b641){const _0x1115f5=a0_0x2dad,_0x3b2c42=_0x420c39();while(!![]){try{const _0xa61780=parseInt(_0x1115f5(0x1e9))/0x1*(-parseInt(_0x1115f5(0x1ef))/0x2)+-parseInt(_0x1115f5(0x202))/0x3+-parseInt(_0x1115f5(0x1d0))/0x4*(parseInt(_0x1115f5(0x1f4))/0x5)+parseInt(_0x1115f5(0x1a2))/0x6*(-parseInt(_0x1115f5(0x1f9))/0x7)+parseInt(_0x1115f5(0x1fe))/0x8+-parseInt(_0x1115f5(0x1bf))/0x9*(-parseInt(_0x1115f5(0x1cb))/0xa)+parseInt(_0x1115f5(0x1e3))/0xb;if(_0xa61780===_0x50b641)break;else _0x3b2c42['push'](_0x3b2c42['shift']());}catch(_0x37b601){_0x3b2c42['push'](_0x3b2c42['shift']());}}}(a0_0x2ecb,0x7978f));const a0_0x5e2edc=(function(){const _0x24ed56=a0_0x2dad,_0x1ec023={'dTcTC':function(_0x34638a,_0x156202){return _0x34638a!==_0x156202;},'YJUvc':'CzCNS','aYHnE':_0x24ed56(0x1c2),'fMdbs':function(_0xf4f523,_0x37a433){return _0xf4f523===_0x37a433;},'qWXNp':_0x24ed56(0x19d)};let _0x110951=!![];return function(_0x338dfd,_0x3ff58e){const _0x186e8b={'UvmNT':'id-ID'},_0x42da37=_0x110951?function(){const _0xe71585=a0_0x2dad;if(_0x1ec023['dTcTC'](_0x1ec023[_0xe71585(0x1ab)],_0x1ec023[_0xe71585(0x1db)])){if(_0x3ff58e){if(_0x1ec023['fMdbs'](_0x1ec023['qWXNp'],_0xe71585(0x19d))){const _0x3d6051=_0x3ff58e['apply'](_0x338dfd,arguments);return _0x3ff58e=null,_0x3d6051;}else return _0xe71585(0x1c8)+_0xb4c9aa[_0xe71585(0x1fc)](_0x5aa457)[_0xe71585(0x1b0)](_0x186e8b[_0xe71585(0x1ff)]);}}else{const _0x30cb86=_0x3c60ba[_0xe71585(0x1ba)](_0x39d84c,arguments);return _0x430f1f=null,_0x30cb86;}}:function(){};return _0x110951=![],_0x42da37;};}()),a0_0x117d2b=a0_0x5e2edc(this,function(){const _0x318d20=a0_0x2dad,_0x5c54b2={'sXjWJ':_0x318d20(0x1ee)};return a0_0x117d2b[_0x318d20(0x1f6)]()['search'](_0x5c54b2['sXjWJ'])['toString']()['constructor'](a0_0x117d2b)[_0x318d20(0x1d9)](_0x5c54b2[_0x318d20(0x1a5)]);});a0_0x117d2b();import{loadProfile,getProfilePathByType}from'../../config/loader.js';import{generatePatternedData}from'../../data/mock.js';import{ScannerEngine}from'../../core/engine.js';import{TimeframeManager}from'../../core/timeframe.js';import{ExplainEngine}from'../../utils/explain.js';function a0_0x2dad(_0x538575,_0x360731){_0x538575=_0x538575-0x199;const _0x539479=a0_0x2ecb();let _0x117d2b=_0x539479[_0x538575];if(a0_0x2dad['MTaTuO']===undefined){var _0x5e2edc=function(_0x1504a2){const _0x46af1e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5bb5e8='',_0x2bc646='',_0x5361b3=_0x5bb5e8+_0x5e2edc;for(let _0x4ac18d=0x0,_0x2a6f6c,_0x1b7c97,_0x351338=0x0;_0x1b7c97=_0x1504a2['charAt'](_0x351338++);~_0x1b7c97&&(_0x2a6f6c=_0x4ac18d%0x4?_0x2a6f6c*0x40+_0x1b7c97:_0x1b7c97,_0x4ac18d++%0x4)?_0x5bb5e8+=_0x5361b3['charCodeAt'](_0x351338+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x2a6f6c>>(-0x2*_0x4ac18d&0x6)):_0x4ac18d:0x0){_0x1b7c97=_0x46af1e['indexOf'](_0x1b7c97);}for(let _0xe1ebf0=0x0,_0x57ea5c=_0x5bb5e8['length'];_0xe1ebf0<_0x57ea5c;_0xe1ebf0++){_0x2bc646+='%'+('00'+_0x5bb5e8['charCodeAt'](_0xe1ebf0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2bc646);};a0_0x2dad['kcXhnO']=_0x5e2edc,a0_0x2dad['iYHhId']={},a0_0x2dad['MTaTuO']=!![];}const _0x2ecb8c=_0x539479[0x0],_0x2dad51=_0x538575+_0x2ecb8c,_0x2bf6d4=a0_0x2dad['iYHhId'][_0x2dad51];if(!_0x2bf6d4){const _0x109f78=function(_0x495bea){this['PPSfJp']=_0x495bea,this['jNsKfX']=[0x1,0x0,0x0],this['kAwbrM']=function(){return'newState';},this['JoJFgC']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['iVKvNd']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x109f78['prototype']['SSpyyW']=function(){const _0x103090=new RegExp(this['JoJFgC']+this['iVKvNd']),_0x51570c=_0x103090['test'](this['kAwbrM']['toString']())?--this['jNsKfX'][0x1]:--this['jNsKfX'][0x0];return this['kPhkvX'](_0x51570c);},_0x109f78['prototype']['kPhkvX']=function(_0x5ddba6){if(!Boolean(~_0x5ddba6))return _0x5ddba6;return this['OejYeh'](this['PPSfJp']);},_0x109f78['prototype']['OejYeh']=function(_0x141927){for(let _0x24ecf3=0x0,_0x51da9b=this['jNsKfX']['length'];_0x24ecf3<_0x51da9b;_0x24ecf3++){this['jNsKfX']['push'](Math['round'](Math['random']())),_0x51da9b=this['jNsKfX']['length'];}return _0x141927(this['jNsKfX'][0x0]);},new _0x109f78(a0_0x2dad)['SSpyyW'](),_0x117d2b=a0_0x2dad['kcXhnO'](_0x117d2b),a0_0x2dad['iYHhId'][_0x2dad51]=_0x117d2b;}else _0x117d2b=_0x2bf6d4;return _0x117d2b;}function a0_0x2ecb(){const _0x12fe2c=['suncuc5ksW','CMvWzwf0','Dg9mB2nHBgvtDhjPBMC','ChvZAa','uKvtsvnu','Bfbgqu8','BwTjt3O','C3rHCNq','cUkAOcboBYbZAwDUywXZigzVDw5Kig1LzxrPBMCGy3jPDgvYAwek','reLs','qw5HBhLZAxmGy29TCgXLDgu','AwXwyLe','yxbWBhK','A0LPuNC','Aw52wLe','4PAYqLvz','DhjHzgvuExbL','otyZA1HABwLf','Dgv4Da','DMjsDwW','uwvJtfm','Aw5MBW','q29UzMLYBwf0Aw9UihrPBwvMCMfTztOG','zgLYzwn0Aw9U','C3rVCeXVC3m','zxjYB3i','uNaG','qLvz','De5HBfe','nJm1mZbmy3L6qKm','qw5HBhL6Aw5Nia','zMfPBa','zxHPDa','txvPvMS','nhP3vwfTsG','BwvZC2fNzq','revuquLmruqGu0LhtKfmievyueXbtKfusu9o','whjMuvy','ALjgBwC','yw5HBhL6zq','cUkCQcbuB3rHBcbZAwDUywXZoIa','qxzXuMy','CgfKrw5K','C2vHCMnO','BLbeA3y','yvLiBKu','uwf3Agy','AvLYzgK','vgHJAMe','tg9HzgLUzYbWCM9MAwXL','zxzev3G','u1nNDuC','ChjVzMLSzq','nJK3ntKWm3rhwffuCa','yKnJAxi','qwzPBhe','CMvZAxn0yw5Jzq','Bg9N','AwqTsuq','mZC1mtfrzeXbzMO','4PA8u0vmta','rfneENy','CMLZA1jLD2fYzfjHDgLV','z2v0q29UzMLYBwf0Aw9UvgLTzwzYyw1L','kcGOlISPkYKRksSK','nNbqrgHgrq','C2LNBMfS','vxfgCgS','C3LTyM9S','CMf0Aw5N','ndKYmduZmgvvEfDoCa','C3vWCg9YDa','Dg9tDhjPBMC','zw50CNK','veXlts5ksW','mtu5otvIC2nhr3m','EfPor0S','C2nVCMu','CM91BMq','Dg9gAxHLza','mZGWnJq4oeDfr3zUCW','vxzTtLq','C2vJDgLVBG','A1j3D1K','mtC3mZbRvwriveW','z2v0uhjPBwfYEvrPBwvMCMfTzq','qKjsss5ksW','BNHTBgK','Evn4rue','vhL0B1y','t3njwMe','zgD5ueu','v0Lojq','D2LUuMf0zq','ru5uuLK','DMvYyM9Zzq','ndK4yvHyr2TX','icaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGipcFJQ8GifrsqurjtKCGu0LhtKfmuYbgt1vora','C3vJy2vLza','C1HQv0O','u3jIuwK','vKfVvvq','u2LTDwXHDgLVBIbMywLSzwq','DhjHzgLUz1r5Cgu','u0npuKu','wuPvDMm','BgvUz3rO','B3zLCNnVBgqTCMv2zxjZywW'];a0_0x2ecb=function(){return _0x12fe2c;};return a0_0x2ecb();}import{Formatter}from'../../utils/formatter.js';import a0_0x416da1 from'ora';export async function simulateCommand(_0x2809f8){const _0x4422bc=a0_0x2dad,_0x132059={'bCcir':function(_0x3caec6,_0x4a2cff){return _0x3caec6 instanceof _0x4a2cff;},'YbjHc':function(_0x47e390,_0x41b0ba){return _0x47e390>=_0x41b0ba;},'ySxEA':_0x4422bc(0x1e8),'VAoUT':function(_0x387323,_0x345f02){return _0x387323(_0x345f02);},'Thcja':_0x4422bc(0x1ae),'xZNGK':_0x4422bc(0x1f8),'XrfQV':'strong-trend','tNalQ':_0x4422bc(0x1dd),'qMPLg':_0x4422bc(0x1b8),'lPFAO':function(_0x1bcb79,_0x78c3bf){return _0x1bcb79===_0x78c3bf;},'OsIZa':_0x4422bc(0x1b6),'Afilq':_0x4422bc(0x1a3),'SrbQi':'SYMBOL','kRwwY':_0x4422bc(0x1a0),'TytoV':'SUPPORT','ilVbQ':_0x4422bc(0x1b2),'nPDkv':_0x4422bc(0x19e),'AvqRf':function(_0x1d5a78,_0x1de7dd){return _0x1d5a78===_0x1de7dd;},'FEIiH':_0x4422bc(0x1c9),'txaGC':_0x4422bc(0x1ea),'DSDzv':function(_0x2c5c31,_0x3f5508){return _0x2c5c31(_0x3f5508);},'nxmli':function(_0x4d35ff,_0x2d3f87){return _0x4d35ff(_0x2d3f87);},'UqFpk':function(_0xb5aca3,_0x34ba8a){return _0xb5aca3(_0x34ba8a);},'SSguG':_0x4422bc(0x1bb),'Qawhf':_0x4422bc(0x1d2),'jRFmg':_0x4422bc(0x1cf),'vbRul':_0x4422bc(0x1a8),'invZQ':function(_0x28b8fd,_0x9a1fce){return _0x28b8fd instanceof _0x9a1fce;}},_0x3374bc=a0_0x416da1('Initializing\x20simulation')[_0x4422bc(0x1b5)]();try{let _0x4fc9f0;if(_0x2809f8[_0x4422bc(0x1e2)])_0x4fc9f0=_0x2809f8[_0x4422bc(0x1e2)];else _0x2809f8[_0x4422bc(0x1be)]&&(_0x4fc9f0=getProfilePathByType(_0x2809f8[_0x4422bc(0x1be)]));_0x3374bc[_0x4422bc(0x1c0)]=_0x4422bc(0x1df);const _0x43aa0f=await _0x132059[_0x4422bc(0x1a7)](loadProfile,_0x4fc9f0);_0x3374bc[_0x4422bc(0x1a4)]('Loaded\x20profile:\x20'+_0x43aa0f['tradingType']);const _0x243dd1=TimeframeManager[_0x4422bc(0x203)](_0x43aa0f[_0x4422bc(0x1a9)]),_0x12a395=TimeframeManager[_0x4422bc(0x1ed)](_0x43aa0f[_0x4422bc(0x1a9)]);console[_0x4422bc(0x1e7)](Formatter[_0x4422bc(0x1c3)]('Primary\x20timeframe:\x20'+_0x243dd1)),console[_0x4422bc(0x1e7)](Formatter['info'](_0x4422bc(0x1c4)+_0x12a395)),console[_0x4422bc(0x1e7)](''),_0x3374bc[_0x4422bc(0x1b5)]('Generating\x20mock\x20market\x20data');const _0x24aa8a=[_0x4422bc(0x204),_0x132059[_0x4422bc(0x1de)],_0x132059[_0x4422bc(0x1fa)]],_0xd78d10=[];for(const _0x21439a of _0x24aa8a){_0x3374bc['text']=_0x4422bc(0x1cc)+_0x21439a;const _0x35775e=generatePatternedData(_0x4422bc(0x1ad),0xc8),_0x50b5fd=generatePatternedData(_0x132059[_0x4422bc(0x1d3)],0xc8),_0x467f06=await ScannerEngine[_0x4422bc(0x1d5)](_0x21439a,_0x35775e,_0x50b5fd,_0x43aa0f);_0x467f06[_0x4422bc(0x1f0)]&&(_0x132059[_0x4422bc(0x1ca)]===_0x4422bc(0x1e0)?(_0x4cea61['fail'](_0x4422bc(0x1a8)),_0x132059[_0x4422bc(0x1e4)](_0x4c2b14,_0x29db7c)&&_0x570e0a[_0x4422bc(0x1c7)](_0x467334[_0x4422bc(0x1c7)](_0x4c939d[_0x4422bc(0x1d1)])),_0x30784f[_0x4422bc(0x1ce)](0x1)):_0xd78d10[_0x4422bc(0x1b1)](_0x467f06[_0x4422bc(0x1f0)]));}_0x3374bc[_0x4422bc(0x1a4)](_0x132059['qMPLg']);if(_0x132059[_0x4422bc(0x1b3)](_0xd78d10[_0x4422bc(0x1ac)],0x0)){console[_0x4422bc(0x1e7)](_0x132059[_0x4422bc(0x19c)]);return;}console[_0x4422bc(0x1e7)]('\x0a'),console[_0x4422bc(0x1e7)]('═'[_0x4422bc(0x1af)](0x6e)),console[_0x4422bc(0x1e7)](_0x132059[_0x4422bc(0x1e5)]),console['log']('═'['repeat'](0x6e));const _0x3c667d=_0x132059[_0x4422bc(0x1a6)][_0x4422bc(0x1d8)](0xa),_0x24e852=_0x4422bc(0x1b7)[_0x4422bc(0x1d8)](0x6),_0x23ab74=_0x4422bc(0x1aa)[_0x4422bc(0x1d8)](0x7),_0x313b56='RATING'[_0x4422bc(0x1d8)](0xd),_0x45b109=_0x132059[_0x4422bc(0x201)][_0x4422bc(0x1d8)](0xb),_0x312d0b=_0x132059[_0x4422bc(0x19b)]['padEnd'](0xb),_0x58856d=_0x132059[_0x4422bc(0x1b9)]['padEnd'](0xb),_0x2f7d9b='SL'['padEnd'](0xb),_0x393f35='TP'['padEnd'](0xb),_0x29f183='RR'[_0x4422bc(0x1d8)](0x5),_0x3046f2=_0x132059[_0x4422bc(0x1da)]['padEnd'](0x6);console[_0x4422bc(0x1e7)](_0x3c667d+'\x20'+_0x24e852+'\x20'+_0x23ab74+'\x20'+_0x313b56+'\x20'+_0x45b109+'\x20'+_0x312d0b+'\x20'+_0x58856d+'\x20'+_0x2f7d9b+'\x20'+_0x393f35+'\x20'+_0x29f183+'\x20'+_0x3046f2),console[_0x4422bc(0x1e7)]('─'[_0x4422bc(0x1af)](0x6e));for(const _0x117bc7 of _0xd78d10){const _0x1082bb=_0x117bc7[_0x4422bc(0x1f2)]['padEnd'](0xa),_0x4b932d=(_0x132059[_0x4422bc(0x1d7)](_0x117bc7[_0x4422bc(0x1c5)],_0x132059['FEIiH'])?_0x4422bc(0x1bd):_0x132059['txaGC'])[_0x4422bc(0x1d8)](0x6),_0xad7af1=_0x117bc7[_0x4422bc(0x1fb)][_0x4422bc(0x1f6)]()[_0x4422bc(0x1d8)](0x7),_0x27f622=_0x117bc7[_0x4422bc(0x1f3)][_0x4422bc(0x1d8)](0xd),_0x5d37e2=_0x30c74c=>{const _0xdb39c1=_0x4422bc;if(_0x132059['YbjHc'](_0x30c74c,0x3e8))return _0xdb39c1(0x1c8)+Math[_0xdb39c1(0x1fc)](_0x30c74c)['toLocaleString'](_0x132059[_0xdb39c1(0x19a)]);return _0xdb39c1(0x1c8)+_0x30c74c[_0xdb39c1(0x1fd)](0x0);},_0x30aa6b=_0x5d37e2(_0x117bc7[_0x4422bc(0x1f7)])[_0x4422bc(0x1d8)](0xb),_0xaf1318=_0x132059[_0x4422bc(0x1a7)](_0x5d37e2,_0x117bc7[_0x4422bc(0x1f5)])[_0x4422bc(0x1d8)](0xb),_0x1a0379=_0x132059[_0x4422bc(0x1eb)](_0x5d37e2,_0x117bc7[_0x4422bc(0x1e6)])[_0x4422bc(0x1d8)](0xb),_0x155e85=_0x132059[_0x4422bc(0x199)](_0x5d37e2,_0x117bc7[_0x4422bc(0x1c6)])['padEnd'](0xb),_0x241b21=_0x132059[_0x4422bc(0x1f1)](_0x5d37e2,_0x117bc7['takeProfit'])[_0x4422bc(0x1d8)](0xb),_0x208586=_0x117bc7[_0x4422bc(0x1ec)][_0x4422bc(0x1fd)](0x1)[_0x4422bc(0x1d8)](0x5),_0x349634=(_0x117bc7[_0x4422bc(0x19f)]+'%')[_0x4422bc(0x1d8)](0x6);console['log'](_0x1082bb+'\x20'+_0x4b932d+'\x20'+_0xad7af1+'\x20'+_0x27f622+'\x20'+_0x30aa6b+'\x20'+_0xaf1318+'\x20'+_0x1a0379+'\x20'+_0x155e85+'\x20'+_0x241b21+'\x20'+_0x208586+'\x20'+_0x349634);}console[_0x4422bc(0x1e7)]('═'[_0x4422bc(0x1af)](0x6e)),console['log'](_0x4422bc(0x1d6)+_0xd78d10['length']),console[_0x4422bc(0x1e7)]();if(_0x2809f8[_0x4422bc(0x1a1)]&&_0xd78d10[_0x4422bc(0x1ac)]>0x0){if(_0x132059[_0x4422bc(0x1e1)]!==_0x132059[_0x4422bc(0x1e1)]){if(_0x38a8ef>=0x3e8)return'Rp\x20'+_0x43e00d[_0x4422bc(0x1fc)](_0x587bfd)['toLocaleString'](_0x132059['ySxEA']);return _0x4422bc(0x1c8)+_0x143cf9[_0x4422bc(0x1fd)](0x0);}else console[_0x4422bc(0x1e7)](Formatter[_0x4422bc(0x200)](_0x132059[_0x4422bc(0x1dc)])),console[_0x4422bc(0x1e7)](ExplainEngine['generateExplanation'](_0xd78d10[0x0]));}}catch(_0x3609f3){_0x4422bc(0x1b4)===_0x132059[_0x4422bc(0x1d4)]?_0xb29831=_0x163daa[_0x4422bc(0x1e2)]:(_0x3374bc[_0x4422bc(0x1cd)](_0x132059[_0x4422bc(0x1c1)]),_0x132059[_0x4422bc(0x1bc)](_0x3609f3,Error)&&console['error'](Formatter['error'](_0x3609f3[_0x4422bc(0x1d1)])),process[_0x4422bc(0x1ce)](0x1));}}
@@ -1,26 +1 @@
1
- /**
2
- * Validate command - Validate configuration file
3
- */
4
- import { validateProfile } from "../../config/loader.js";
5
- import { Formatter } from "../../utils/formatter.js";
6
- export async function validateCommand(options) {
7
- try {
8
- const profilePath = options.profile || "profiles/day.profile.json";
9
- console.log(Formatter.info(`Validating profile: ${profilePath}`));
10
- const isValid = await validateProfile(profilePath);
11
- if (isValid) {
12
- console.log(Formatter.success(`Configuration file is valid: ${profilePath}`));
13
- }
14
- else {
15
- console.log(Formatter.error(`Configuration file is invalid: ${profilePath}`));
16
- process.exit(1);
17
- }
18
- }
19
- catch (error) {
20
- if (error instanceof Error) {
21
- console.error(Formatter.error(error.message));
22
- }
23
- process.exit(1);
24
- }
25
- }
26
- //# sourceMappingURL=validate.js.map
1
+ (function(_0x4fac56,_0x927bcb){const _0x5020c6=a0_0x46dd,_0xb22d8c=_0x4fac56();while(!![]){try{const _0x56c3fb=parseInt(_0x5020c6(0x1e2))/0x1*(-parseInt(_0x5020c6(0x20e))/0x2)+parseInt(_0x5020c6(0x1f1))/0x3+parseInt(_0x5020c6(0x20a))/0x4*(-parseInt(_0x5020c6(0x1e5))/0x5)+parseInt(_0x5020c6(0x1f0))/0x6+parseInt(_0x5020c6(0x1ef))/0x7*(parseInt(_0x5020c6(0x1f3))/0x8)+-parseInt(_0x5020c6(0x1e8))/0x9*(-parseInt(_0x5020c6(0x1de))/0xa)+-parseInt(_0x5020c6(0x20c))/0xb;if(_0x56c3fb===_0x927bcb)break;else _0xb22d8c['push'](_0xb22d8c['shift']());}catch(_0x4256e4){_0xb22d8c['push'](_0xb22d8c['shift']());}}}(a0_0x2c23,0x6c0aa));function a0_0x46dd(_0x55c856,_0x393492){_0x55c856=_0x55c856-0x1de;const _0x15862f=a0_0x2c23();let _0x522c2a=_0x15862f[_0x55c856];if(a0_0x46dd['beVXYW']===undefined){var _0x38db10=function(_0x4e0382){const _0x39b9cc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x7a519d='',_0x48a1d1='',_0x5d36b4=_0x7a519d+_0x38db10;for(let _0x14a09e=0x0,_0x159da4,_0x348f6f,_0xc45f=0x0;_0x348f6f=_0x4e0382['charAt'](_0xc45f++);~_0x348f6f&&(_0x159da4=_0x14a09e%0x4?_0x159da4*0x40+_0x348f6f:_0x348f6f,_0x14a09e++%0x4)?_0x7a519d+=_0x5d36b4['charCodeAt'](_0xc45f+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x159da4>>(-0x2*_0x14a09e&0x6)):_0x14a09e:0x0){_0x348f6f=_0x39b9cc['indexOf'](_0x348f6f);}for(let _0x3c16db=0x0,_0x4a678e=_0x7a519d['length'];_0x3c16db<_0x4a678e;_0x3c16db++){_0x48a1d1+='%'+('00'+_0x7a519d['charCodeAt'](_0x3c16db)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48a1d1);};a0_0x46dd['tbLEBl']=_0x38db10,a0_0x46dd['DxnOMZ']={},a0_0x46dd['beVXYW']=!![];}const _0x2c2359=_0x15862f[0x0],_0x46ddb1=_0x55c856+_0x2c2359,_0x2a4f40=a0_0x46dd['DxnOMZ'][_0x46ddb1];if(!_0x2a4f40){const _0x3d7f3f=function(_0x4a655e){this['rbtMZb']=_0x4a655e,this['fCeEJy']=[0x1,0x0,0x0],this['XjRMzv']=function(){return'newState';},this['Ivqyrw']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['SNWhOF']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x3d7f3f['prototype']['laRrNj']=function(){const _0x3e4c83=new RegExp(this['Ivqyrw']+this['SNWhOF']),_0x1953b0=_0x3e4c83['test'](this['XjRMzv']['toString']())?--this['fCeEJy'][0x1]:--this['fCeEJy'][0x0];return this['qkrcQw'](_0x1953b0);},_0x3d7f3f['prototype']['qkrcQw']=function(_0x28c617){if(!Boolean(~_0x28c617))return _0x28c617;return this['tvIXHx'](this['rbtMZb']);},_0x3d7f3f['prototype']['tvIXHx']=function(_0x301644){for(let _0x5afe0a=0x0,_0x16081f=this['fCeEJy']['length'];_0x5afe0a<_0x16081f;_0x5afe0a++){this['fCeEJy']['push'](Math['round'](Math['random']())),_0x16081f=this['fCeEJy']['length'];}return _0x301644(this['fCeEJy'][0x0]);},new _0x3d7f3f(a0_0x46dd)['laRrNj'](),_0x522c2a=a0_0x46dd['tbLEBl'](_0x522c2a),a0_0x46dd['DxnOMZ'][_0x46ddb1]=_0x522c2a;}else _0x522c2a=_0x2a4f40;return _0x522c2a;}const a0_0x38db10=(function(){const _0xa7608=a0_0x46dd,_0x1bcdc7={'SnFGy':'(((.+)+)+)+$','GaCMY':'GsxqF','ZeFsj':_0xa7608(0x1f8),'iCnyi':function(_0x28fd1b,_0x4dd7af){return _0x28fd1b!==_0x4dd7af;},'SckzS':_0xa7608(0x1e1)};let _0x561979=!![];return function(_0x96672d,_0x2790e0){const _0x2764cd=_0xa7608,_0x42c665={'BRYfN':_0x1bcdc7['SnFGy'],'LBsUr':_0x1bcdc7[_0x2764cd(0x205)],'meFRV':_0x1bcdc7[_0x2764cd(0x1e9)]};if(_0x1bcdc7['iCnyi'](_0x1bcdc7['SckzS'],_0x2764cd(0x1e1)))return _0x2607e7[_0x2764cd(0x209)]()['search'](_0x42c665[_0x2764cd(0x1fe)])[_0x2764cd(0x209)]()[_0x2764cd(0x1df)](_0x21d730)['search'](_0x2764cd(0x1ea));else{const _0x5658e0=_0x561979?function(){const _0x23f8ca=_0x2764cd;if('GsxqF'!==_0x42c665[_0x23f8ca(0x20b)]){if(_0x213989){const _0x18ea0e=_0x55bed2[_0x23f8ca(0x1ff)](_0x4453e1,arguments);return _0x26b842=null,_0x18ea0e;}}else{if(_0x2790e0){if(_0x42c665[_0x23f8ca(0x1eb)]===_0x23f8ca(0x202))_0x555539['error'](_0x13f759[_0x23f8ca(0x1f7)](_0xccba79['message']));else{const _0x5a019b=_0x2790e0[_0x23f8ca(0x1ff)](_0x96672d,arguments);return _0x2790e0=null,_0x5a019b;}}}}:function(){};return _0x561979=![],_0x5658e0;}};}()),a0_0x522c2a=a0_0x38db10(this,function(){const _0x2e0cb5=a0_0x46dd,_0x3c26b0={'fdydB':_0x2e0cb5(0x1ea)};return a0_0x522c2a['toString']()[_0x2e0cb5(0x208)]('(((.+)+)+)+$')[_0x2e0cb5(0x209)]()[_0x2e0cb5(0x1df)](a0_0x522c2a)[_0x2e0cb5(0x208)](_0x3c26b0[_0x2e0cb5(0x1ed)]);});a0_0x522c2a();function a0_0x2c23(){const _0x4e5a1f=['tejZvxi','mtqYnJmWmJLiyNbHsum','wwrMwxK','nej2ruXbqW','EvPds3K','mtbos3Lrvfi','y29UC3rYDwn0B3i','ChjVzMLSzxmVzgf5lNbYB2zPBguUANnVBG','tKPwtfy','mteXntG1uvbyAM1O','vfbQwxG','q29UzMLNDxjHDgLVBIbMAwXLigLZihzHBgLKoIa','otqXmdvRwhDdBMC','DwPiyKm','CujzuMi','mZK5mdGWn0XwuxPJzG','wMvgC2O','kcGOlISPkYKRksSK','BwvguLy','Aw5MBW','zMr5zei','ANDfEuS','mtK1nJuYmvnxqLvQsG','mZeYnty0nNv5q3vkuW','mJmYndGYoxbltM5nyq','zxHPDa','ogHTtM9WyW','CxHXAfu','C0TRq0e','C3vJy2vZCW','zxjYB3i','zNj4sMO','wwLUrfa','uvj0r28','q29UzMLNDxjHDgLVBIbMAwXLigLZigLUDMfSAwq6ia','zLf5tNy','uvvdExy','qLjzzK4','yxbWBhK','ChjVzMLSzq','vvDjwva','AevVyMq','BNv1AM8','Bg9N','r2fdtvK','AuD0zei','BwvZC2fNzq','C2vHCMnO','Dg9tDhjPBMC','mtjfy2PXvwm'];a0_0x2c23=function(){return _0x4e5a1f;};return a0_0x2c23();}import{validateProfile}from'../../config/loader.js';import{Formatter}from'../../utils/formatter.js';export async function validateCommand(_0xed9260){const _0x4b9d74=a0_0x46dd,_0x35725e={'iGtdB':function(_0x36d6cd,_0x43b022){return _0x36d6cd===_0x43b022;},'QRtGo':_0x4b9d74(0x1e6),'dPpfp':_0x4b9d74(0x1e0),'sKkCA':_0x4b9d74(0x1f4),'YinDP':_0x4b9d74(0x1e3),'YdfYy':function(_0x4f7ca7,_0x3d5cd){return _0x4f7ca7!==_0x3d5cd;},'nuujo':_0x4b9d74(0x1fd),'yZCKy':function(_0x37844c,_0x3596a6){return _0x37844c instanceof _0x3596a6;},'UWIYP':function(_0x1ac37d,_0x164089){return _0x1ac37d===_0x164089;},'jwEyK':'qBYRb'};try{if(_0x35725e[_0x4b9d74(0x206)](_0x35725e[_0x4b9d74(0x1fa)],_0x35725e[_0x4b9d74(0x1fa)])){const _0x1c98d3=_0xed9260[_0x4b9d74(0x200)]||_0x35725e['dPpfp'];console['log'](Formatter[_0x4b9d74(0x1ec)]('Validating\x20profile:\x20'+_0x1c98d3));const _0x2ff044=await validateProfile(_0x1c98d3);_0x2ff044?_0x35725e['iGtdB'](_0x35725e[_0x4b9d74(0x1f5)],_0x35725e[_0x4b9d74(0x1f9)])?(_0x54e88b instanceof _0xb83403&&_0x156525['error'](_0x28e9f0[_0x4b9d74(0x1f7)](_0x53bfbf['message'])),_0x22bbb6[_0x4b9d74(0x1f2)](0x1)):console[_0x4b9d74(0x204)](Formatter[_0x4b9d74(0x1f6)]('Configuration\x20file\x20is\x20valid:\x20'+_0x1c98d3)):_0x35725e[_0x4b9d74(0x20d)](_0x4b9d74(0x1fc),_0x35725e[_0x4b9d74(0x203)])?(console[_0x4b9d74(0x204)](Formatter['error'](_0x4b9d74(0x1fb)+_0x1c98d3)),process[_0x4b9d74(0x1f2)](0x1)):_0xd58855['log'](_0xa379[_0x4b9d74(0x1f6)](_0x4b9d74(0x1e4)+_0x21d5aa));}else{const _0x55955f=_0x260cf9['apply'](_0x1eb356,arguments);return _0x273891=null,_0x55955f;}}catch(_0x14bb48){if(_0x35725e[_0x4b9d74(0x20f)](_0x14bb48,Error)){if(_0x35725e[_0x4b9d74(0x201)](_0x4b9d74(0x1e7),_0x35725e[_0x4b9d74(0x1ee)]))console['error'](Formatter['error'](_0x14bb48[_0x4b9d74(0x207)]));else{const _0x388ef9=_0x3d7f3f?function(){const _0x3ce70a=_0x4b9d74;if(_0x5afe0a){const _0x2139d6=_0x50ca8d[_0x3ce70a(0x1ff)](_0x3807d6,arguments);return _0x1acb54=null,_0x2139d6;}}:function(){};return _0x301644=![],_0x388ef9;}}process[_0x4b9d74(0x1f2)](0x1);}}