iq-option-client 1.3.5 โ 1.3.7
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/LICENSE +3 -0
- package/README.md +70 -4
- package/dist/bin/OrderExample.d.ts +1 -0
- package/dist/bin/OrderExample.js +98 -0
- package/dist/lib/Service/IQOptionService/Helper/MarketHelper.d.ts +29 -0
- package/dist/lib/Service/IQOptionService/Helper/MarketHelper.js +44 -0
- package/dist/lib/Service/IQOptionService/Helper/index.d.ts +1 -0
- package/dist/lib/Service/IQOptionService/Helper/index.js +2 -1
- package/dist/lib/Service/IQOptionService/IQOptionApi.d.ts +2 -1
- package/dist/lib/Service/IQOptionService/IQOptionApi.js +83 -29
- package/package.json +1 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -11,12 +11,13 @@ A robust TypeScript client library for interacting with the **IQ Option WebSocke
|
|
|
11
11
|
- ๐ **Secure Authentication** - Environment-based credential management
|
|
12
12
|
- ๐ **Real-time Data Streaming** - WebSocket-based candle data, trader sentiment, and option events
|
|
13
13
|
- ๐ **Order Management** - Binary and digital option order execution
|
|
14
|
-
- ๐ **Historical Data** - Retrieve historical candles for backtesting and analysis
|
|
14
|
+
- ๐ **Historical Data** - Retrieve historical candles for backtesting and analysis (with configurable timeout)
|
|
15
15
|
- ๐ฏ **Type-Safe** - Full TypeScript support with comprehensive type definitions
|
|
16
16
|
- ๐๏ธ **SOLID Architecture** - Clean code with design patterns (Strategy, Repository, Factory, Command, Builder)
|
|
17
17
|
- ๐ **Error Handling** - Comprehensive error handling with retry logic
|
|
18
18
|
- ๐ **Structured Logging** - Winston-based logging with context and metadata
|
|
19
19
|
- โ
**Input Validation** - Built-in validation for all API methods
|
|
20
|
+
- ๐ง **Helper Utilities** - Market symbol helpers, request ID generators, and validators
|
|
20
21
|
- ๐งช **Well Tested** - Comprehensive test suite
|
|
21
22
|
|
|
22
23
|
## ๐ฆ Installation
|
|
@@ -99,7 +100,7 @@ const initData = await api.getInitializationData();
|
|
|
99
100
|
// Get digital option instruments
|
|
100
101
|
const instruments = await api.getDigitalOptionInstruments(IQOptionMarket.EURUSD);
|
|
101
102
|
|
|
102
|
-
// Get historical candles
|
|
103
|
+
// Get historical candles with default timeout (15 seconds)
|
|
103
104
|
const historicalCandles = await api.getCandles(
|
|
104
105
|
activeId, // Market/Active ID (e.g., 1 for EURUSD)
|
|
105
106
|
size, // Candle size in seconds (60 = 1 min, 120 = 2 min)
|
|
@@ -109,6 +110,17 @@ const historicalCandles = await api.getCandles(
|
|
|
109
110
|
true // only_closed (optional, default: true)
|
|
110
111
|
);
|
|
111
112
|
|
|
113
|
+
// Get historical candles with custom timeout (30 seconds)
|
|
114
|
+
const historicalCandlesWithTimeout = await api.getCandles(
|
|
115
|
+
activeId,
|
|
116
|
+
size,
|
|
117
|
+
fromId,
|
|
118
|
+
toId,
|
|
119
|
+
true,
|
|
120
|
+
true,
|
|
121
|
+
30000 // timeoutMs (optional, default: 15000)
|
|
122
|
+
);
|
|
123
|
+
|
|
112
124
|
// Send binary order
|
|
113
125
|
await api.sendOrderBinary(
|
|
114
126
|
market,
|
|
@@ -213,7 +225,7 @@ alertsStream.on('data', (alert) => {
|
|
|
213
225
|
```typescript
|
|
214
226
|
import { IQOptionApi } from 'iq-option-client';
|
|
215
227
|
|
|
216
|
-
// Get historical candles
|
|
228
|
+
// Get historical candles with default timeout (15 seconds)
|
|
217
229
|
const candles = await api.getCandles(
|
|
218
230
|
activeId, // Market/Active ID (e.g., 1 for EURUSD, 76, 1874, etc.)
|
|
219
231
|
size, // Candle size in seconds (60 = 1 min, 120 = 2 min)
|
|
@@ -223,6 +235,17 @@ const candles = await api.getCandles(
|
|
|
223
235
|
true // only_closed (optional, default: true)
|
|
224
236
|
);
|
|
225
237
|
|
|
238
|
+
// Get historical candles with custom timeout (30 seconds)
|
|
239
|
+
const candlesWithTimeout = await api.getCandles(
|
|
240
|
+
activeId,
|
|
241
|
+
size,
|
|
242
|
+
fromId,
|
|
243
|
+
toId,
|
|
244
|
+
true,
|
|
245
|
+
true,
|
|
246
|
+
30000 // timeoutMs (optional, default: 15000)
|
|
247
|
+
);
|
|
248
|
+
|
|
226
249
|
console.log(`Received ${candles.length} historical candles`);
|
|
227
250
|
candles.forEach(candle => {
|
|
228
251
|
console.log('Candle:', {
|
|
@@ -376,6 +399,44 @@ await api.sendOrderBinary(
|
|
|
376
399
|
);
|
|
377
400
|
```
|
|
378
401
|
|
|
402
|
+
### Market Helper
|
|
403
|
+
|
|
404
|
+
Get market symbol/name from market ID for logging and error messages:
|
|
405
|
+
|
|
406
|
+
```typescript
|
|
407
|
+
import { MarketHelper, IQOptionMarket } from 'iq-option-client';
|
|
408
|
+
|
|
409
|
+
// Get market symbol
|
|
410
|
+
const symbol = MarketHelper.getMarketSymbol(IQOptionMarket.EURUSD);
|
|
411
|
+
console.log(symbol); // "EURUSD"
|
|
412
|
+
|
|
413
|
+
// Get market symbol with fallback
|
|
414
|
+
const symbolWithFallback = MarketHelper.getMarketSymbolWithFallback(
|
|
415
|
+
IQOptionMarket.USDJPY,
|
|
416
|
+
"UNKNOWN"
|
|
417
|
+
);
|
|
418
|
+
console.log(symbolWithFallback); // "USDJPY"
|
|
419
|
+
|
|
420
|
+
// Check if market exists
|
|
421
|
+
const exists = MarketHelper.hasMarketSymbol(IQOptionMarket.GBPUSD);
|
|
422
|
+
console.log(exists); // true
|
|
423
|
+
|
|
424
|
+
// Example: Use in error handling
|
|
425
|
+
try {
|
|
426
|
+
await api.sendOrderBinary(
|
|
427
|
+
IQOptionMarket.EURUSD_OTC,
|
|
428
|
+
IQOptionModel.BUY,
|
|
429
|
+
iqOptionExpired(1),
|
|
430
|
+
balanceId,
|
|
431
|
+
90,
|
|
432
|
+
10
|
|
433
|
+
);
|
|
434
|
+
} catch (error) {
|
|
435
|
+
const symbol = MarketHelper.getMarketSymbol(IQOptionMarket.EURUSD_OTC);
|
|
436
|
+
console.error(`[โ] Erro ao enviar ordem: ${symbol}`, error);
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
379
440
|
## ๐ฏ API Reference
|
|
380
441
|
|
|
381
442
|
### Enums
|
|
@@ -407,6 +468,7 @@ await api.sendOrderBinary(
|
|
|
407
468
|
- `InputValidator` - Validate input parameters
|
|
408
469
|
- `CandleValidator` - Validate candle data structure
|
|
409
470
|
- `CurrencyValidator` - Validate currency update messages
|
|
471
|
+
- `MarketHelper` - Get market symbol/name from market ID
|
|
410
472
|
|
|
411
473
|
## ๐ง Configuration
|
|
412
474
|
|
|
@@ -448,6 +510,9 @@ npm run sample:quick
|
|
|
448
510
|
|
|
449
511
|
# Test historical candles functionality
|
|
450
512
|
npm run test:candles
|
|
513
|
+
|
|
514
|
+
# Test fetching 200 candles
|
|
515
|
+
npm run test:200candles
|
|
451
516
|
```
|
|
452
517
|
|
|
453
518
|
**Note:** Tests require valid IQ Option credentials set in environment variables:
|
|
@@ -556,7 +621,8 @@ candleStream.on('data', async (candle) => {
|
|
|
556
621
|
candle.id - 100, // Last 100 candles
|
|
557
622
|
candle.id,
|
|
558
623
|
true,
|
|
559
|
-
true
|
|
624
|
+
true,
|
|
625
|
+
30000 // Custom timeout for large requests
|
|
560
626
|
);
|
|
561
627
|
|
|
562
628
|
logger.info(`Retrieved ${historicalCandles.length} historical candles for analysis`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (C) 2020 Wellington Rocha
|
|
5
|
+
* All Rights Reserved.
|
|
6
|
+
*
|
|
7
|
+
* Unauthorized copying of this file, via any medium is strictly prohibited.
|
|
8
|
+
*
|
|
9
|
+
* Proprietary and confidential.
|
|
10
|
+
*/
|
|
11
|
+
// Load environment variables from .env file if it exists
|
|
12
|
+
try {
|
|
13
|
+
require("dotenv").config();
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
// dotenv is optional, continue without it
|
|
17
|
+
}
|
|
18
|
+
const Core = require("../lib");
|
|
19
|
+
const Logger_1 = require("../lib/Helper/Logger");
|
|
20
|
+
const Helper_1 = require("../lib/Service/IQOptionService/Helper");
|
|
21
|
+
const IQOptionExpired_1 = require("../lib/Service/IQOptionService/IQOptionExpired");
|
|
22
|
+
// Get credentials from environment variables
|
|
23
|
+
const email = process.env.IQ_OPTION_EMAIL;
|
|
24
|
+
const password = process.env.IQ_OPTION_PASSWORD;
|
|
25
|
+
if (!email || !password) {
|
|
26
|
+
// eslint-disable-next-line no-console
|
|
27
|
+
console.error("Error: IQ_OPTION_EMAIL and IQ_OPTION_PASSWORD environment variables are required");
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const logger = Logger_1.LoggerFactory.getDefault();
|
|
31
|
+
const iqOptionApi = new Core.IQOptionApi(email, password);
|
|
32
|
+
// Lista de mercados para testar
|
|
33
|
+
const markets = [
|
|
34
|
+
Core.IQOptionMarket.USDJPY,
|
|
35
|
+
Core.IQOptionMarket.GBPJPY,
|
|
36
|
+
Core.IQOptionMarket.EURGBP,
|
|
37
|
+
Core.IQOptionMarket.USDCHF,
|
|
38
|
+
Core.IQOptionMarket.EURAUD,
|
|
39
|
+
Core.IQOptionMarket.GBPUSD,
|
|
40
|
+
Core.IQOptionMarket.AUDUSD,
|
|
41
|
+
];
|
|
42
|
+
iqOptionApi
|
|
43
|
+
.connectAsync()
|
|
44
|
+
.then(async (profile) => {
|
|
45
|
+
logger.info("Connected successfully", { operation: "connect", userId: profile.user_id });
|
|
46
|
+
const testBalance = profile.balances.find(b => b.type === Core.IQOptionCurrencyType.TEST);
|
|
47
|
+
if (!testBalance) {
|
|
48
|
+
throw new Error("Test balance not found");
|
|
49
|
+
}
|
|
50
|
+
// Funรงรฃo para enviar ordem com retry e tratamento de erro correto
|
|
51
|
+
const sendOrderWithRetry = async (market, attempt = 1, maxAttempts = 3) => {
|
|
52
|
+
// โ
CORRETO: Usar MarketHelper para obter o sรญmbolo do mercado
|
|
53
|
+
const symbol = Helper_1.MarketHelper.getMarketSymbol(market);
|
|
54
|
+
logger.info(`${symbol} | Tentativa ${attempt}...`, {
|
|
55
|
+
operation: "sendOrder",
|
|
56
|
+
market,
|
|
57
|
+
metadata: { symbol, attempt },
|
|
58
|
+
});
|
|
59
|
+
try {
|
|
60
|
+
const result = await iqOptionApi.sendOrderBinary(market, Core.IQOptionModel.BUY, (0, IQOptionExpired_1.iqOptionExpired)(1), testBalance.id, 90, 10);
|
|
61
|
+
logger.info(`โ
Ordem enviada com sucesso: ${symbol}`, {
|
|
62
|
+
operation: "sendOrder",
|
|
63
|
+
market,
|
|
64
|
+
metadata: { symbol, optionId: result.option_id },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
69
|
+
// โ
CORRETO: Usar a variรกvel symbol que foi definida acima
|
|
70
|
+
logger.error(`[โ] Erro ao enviar ordem: ${symbol}`, {
|
|
71
|
+
operation: "sendOrder",
|
|
72
|
+
market,
|
|
73
|
+
metadata: { symbol, attempt, errorMessage: err.message },
|
|
74
|
+
}, err);
|
|
75
|
+
// Retry logic
|
|
76
|
+
if (attempt < maxAttempts) {
|
|
77
|
+
await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second
|
|
78
|
+
return sendOrderWithRetry(market, attempt + 1, maxAttempts);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
// Enviar ordens para todos os mercados
|
|
83
|
+
for (const market of markets) {
|
|
84
|
+
await sendOrderWithRetry(market);
|
|
85
|
+
// Pequeno delay entre ordens
|
|
86
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
87
|
+
}
|
|
88
|
+
logger.info("Todas as ordens processadas", {
|
|
89
|
+
operation: "main",
|
|
90
|
+
metadata: { marketsCount: markets.length },
|
|
91
|
+
});
|
|
92
|
+
})
|
|
93
|
+
.catch((e) => {
|
|
94
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
95
|
+
logger.error("Application error", { operation: "main" }, error);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJFeGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9PcmRlckV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7OztHQU9HO0FBQ0gseURBQXlEO0FBQ3pELElBQUksQ0FBQztJQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMvQixDQUFDO0FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNULDBDQUEwQztBQUM5QyxDQUFDO0FBRUQsK0JBQStCO0FBQy9CLGlEQUFxRDtBQUNyRCxrRUFBcUU7QUFDckUsb0ZBQWlGO0FBRWpGLDZDQUE2QztBQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztBQUMxQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO0FBRWhELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QixzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO0lBQ2xHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFHLHNCQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxRCxnQ0FBZ0M7QUFDaEMsTUFBTSxPQUFPLEdBQUc7SUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07SUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO0lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtJQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07SUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO0lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtJQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07Q0FDN0IsQ0FBQztBQUVGLFdBQVc7S0FDTixZQUFZLEVBQUU7S0FDZCxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUV6RixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDckMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ2pELENBQUM7SUFFRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxNQUFNLGtCQUFrQixHQUFHLEtBQUssRUFDNUIsTUFBMkIsRUFDM0IsVUFBa0IsQ0FBQyxFQUNuQixjQUFzQixDQUFDLEVBQ1YsRUFBRTtRQUNmLCtEQUErRDtRQUMvRCxNQUFNLE1BQU0sR0FBRyxxQkFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxnQkFBZ0IsT0FBTyxLQUFLLEVBQUU7WUFDL0MsU0FBUyxFQUFFLFdBQVc7WUFDdEIsTUFBTTtZQUNOLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDO1lBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsZUFBZSxDQUM1QyxNQUFNLEVBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQ3RCLElBQUEsaUNBQWUsRUFBQyxDQUFDLENBQUMsRUFDbEIsV0FBVyxDQUFDLEVBQUUsRUFDZCxFQUFFLEVBQ0YsRUFBRSxDQUNMLENBQUM7WUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxNQUFNLEVBQUUsRUFBRTtnQkFDbEQsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLE1BQU07Z0JBQ04sUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFO2FBQ25ELENBQUMsQ0FBQztRQUNQLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxHQUFHLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUV0RSwyREFBMkQ7WUFDM0QsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxFQUFFLEVBQUU7Z0JBQ2hELFNBQVMsRUFBRSxXQUFXO2dCQUN0QixNQUFNO2dCQUNOLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUU7YUFDM0QsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVSLGNBQWM7WUFDZCxJQUFJLE9BQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtnQkFDekUsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGLHVDQUF1QztJQUN2QyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzNCLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsNkJBQTZCO1FBQzdCLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7UUFDdkMsU0FBUyxFQUFFLE1BQU07UUFDakIsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUU7S0FDN0MsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0tBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7SUFDZCxNQUFNLEtBQUssR0FBRyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IQOptionMarket } from "../Model/IQOptionMarket";
|
|
2
|
+
/**
|
|
3
|
+
* Helper functions for market operations.
|
|
4
|
+
*/
|
|
5
|
+
export declare class MarketHelper {
|
|
6
|
+
/**
|
|
7
|
+
* Get market symbol/name from market ID.
|
|
8
|
+
* Returns the symbol name if found, otherwise returns the market ID as string.
|
|
9
|
+
*
|
|
10
|
+
* @param market Market ID (IQOptionMarket enum value)
|
|
11
|
+
* @returns Market symbol name (e.g., "EURUSD", "GBPUSD") or market ID as string
|
|
12
|
+
*/
|
|
13
|
+
static getMarketSymbol(market: IQOptionMarket | number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get market symbol/name from market ID with fallback.
|
|
16
|
+
*
|
|
17
|
+
* @param market Market ID (IQOptionMarket enum value)
|
|
18
|
+
* @param fallback Fallback string if market not found
|
|
19
|
+
* @returns Market symbol name or fallback
|
|
20
|
+
*/
|
|
21
|
+
static getMarketSymbolWithFallback(market: IQOptionMarket | number, fallback?: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Check if market exists in the invert map.
|
|
24
|
+
*
|
|
25
|
+
* @param market Market ID (IQOptionMarket enum value)
|
|
26
|
+
* @returns True if market exists, false otherwise
|
|
27
|
+
*/
|
|
28
|
+
static hasMarketSymbol(market: IQOptionMarket | number): boolean;
|
|
29
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MarketHelper = void 0;
|
|
4
|
+
const IQOptionMarketInvert_1 = require("../Model/IQOptionMarketInvert");
|
|
5
|
+
/**
|
|
6
|
+
* Helper functions for market operations.
|
|
7
|
+
*/
|
|
8
|
+
class MarketHelper {
|
|
9
|
+
/**
|
|
10
|
+
* Get market symbol/name from market ID.
|
|
11
|
+
* Returns the symbol name if found, otherwise returns the market ID as string.
|
|
12
|
+
*
|
|
13
|
+
* @param market Market ID (IQOptionMarket enum value)
|
|
14
|
+
* @returns Market symbol name (e.g., "EURUSD", "GBPUSD") or market ID as string
|
|
15
|
+
*/
|
|
16
|
+
static getMarketSymbol(market) {
|
|
17
|
+
const marketId = typeof market === "number" ? market : market;
|
|
18
|
+
const symbol = IQOptionMarketInvert_1.IQOptionMarketInvert[marketId];
|
|
19
|
+
return symbol || `MARKET_${marketId}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get market symbol/name from market ID with fallback.
|
|
23
|
+
*
|
|
24
|
+
* @param market Market ID (IQOptionMarket enum value)
|
|
25
|
+
* @param fallback Fallback string if market not found
|
|
26
|
+
* @returns Market symbol name or fallback
|
|
27
|
+
*/
|
|
28
|
+
static getMarketSymbolWithFallback(market, fallback = "UNKNOWN") {
|
|
29
|
+
const marketId = typeof market === "number" ? market : market;
|
|
30
|
+
return IQOptionMarketInvert_1.IQOptionMarketInvert[marketId] || fallback;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if market exists in the invert map.
|
|
34
|
+
*
|
|
35
|
+
* @param market Market ID (IQOptionMarket enum value)
|
|
36
|
+
* @returns True if market exists, false otherwise
|
|
37
|
+
*/
|
|
38
|
+
static hasMarketSymbol(market) {
|
|
39
|
+
const marketId = typeof market === "number" ? market : market;
|
|
40
|
+
return marketId in IQOptionMarketInvert_1.IQOptionMarketInvert;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.MarketHelper = MarketHelper;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2V0SGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9TZXJ2aWNlL0lRT3B0aW9uU2VydmljZS9IZWxwZXIvTWFya2V0SGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBLHdFQUFxRTtBQUVyRTs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNyQjs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQStCO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUFpQixDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLDJDQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sTUFBTSxJQUFJLFVBQVUsUUFBUSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQywyQkFBMkIsQ0FDckMsTUFBK0IsRUFDL0IsV0FBbUIsU0FBUztRQUU1QixNQUFNLFFBQVEsR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsTUFBaUIsQ0FBQztRQUMxRSxPQUFPLDJDQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQStCO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUFpQixDQUFDO1FBQzFFLE9BQU8sUUFBUSxJQUFJLDJDQUFvQixDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXZDRCxvQ0F1Q0MifQ==
|
|
@@ -26,4 +26,5 @@ __exportStar(require("./RequestIdGenerator"), exports);
|
|
|
26
26
|
__exportStar(require("./InputValidator"), exports);
|
|
27
27
|
__exportStar(require("./CandleValidator"), exports);
|
|
28
28
|
__exportStar(require("./CurrencyValidator"), exports);
|
|
29
|
-
|
|
29
|
+
__exportStar(require("./MarketHelper"), exports);
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0hlbHBlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILHVEQUFxQztBQUNyQyxtREFBaUM7QUFDakMsb0RBQWtDO0FBQ2xDLHNEQUFvQztBQUNwQyxpREFBK0IifQ==
|
|
@@ -97,9 +97,10 @@ export declare class IQOptionApi {
|
|
|
97
97
|
* @param toId Ending candle ID
|
|
98
98
|
* @param splitNormalization Normalize split (default: true)
|
|
99
99
|
* @param onlyClosed Only get closed candles (default: true)
|
|
100
|
+
* @param timeoutMs Optional timeout in milliseconds (default: 15000)
|
|
100
101
|
* @returns Array of historical candles
|
|
101
102
|
*/
|
|
102
|
-
getCandles(activeId: number, size: number, fromId: number, toId: number, splitNormalization?: boolean, onlyClosed?: boolean): Promise<Core.IQOptionCandle[]>;
|
|
103
|
+
getCandles(activeId: number, size: number, fromId: number, toId: number, splitNormalization?: boolean, onlyClosed?: boolean, timeoutMs?: number): Promise<Core.IQOptionCandle[]>;
|
|
103
104
|
/**
|
|
104
105
|
* Get next request id.
|
|
105
106
|
* @deprecated Use RequestIdGenerator.getNext() instead
|
|
@@ -42,7 +42,7 @@ class IQOptionApi {
|
|
|
42
42
|
/**
|
|
43
43
|
* Max wait profile response.
|
|
44
44
|
*/
|
|
45
|
-
this.maxWaitToGetDigitalInstrumentData =
|
|
45
|
+
this.maxWaitToGetDigitalInstrumentData = 15000;
|
|
46
46
|
/**
|
|
47
47
|
* Queue order send.
|
|
48
48
|
*/
|
|
@@ -338,9 +338,10 @@ class IQOptionApi {
|
|
|
338
338
|
* @param toId Ending candle ID
|
|
339
339
|
* @param splitNormalization Normalize split (default: true)
|
|
340
340
|
* @param onlyClosed Only get closed candles (default: true)
|
|
341
|
+
* @param timeoutMs Optional timeout in milliseconds (default: 15000)
|
|
341
342
|
* @returns Array of historical candles
|
|
342
343
|
*/
|
|
343
|
-
getCandles(activeId, size, fromId, toId, splitNormalization = true, onlyClosed = true) {
|
|
344
|
+
getCandles(activeId, size, fromId, toId, splitNormalization = true, onlyClosed = true, timeoutMs) {
|
|
344
345
|
// Validate inputs
|
|
345
346
|
if (activeId <= 0) {
|
|
346
347
|
throw new Error("activeId must be greater than 0");
|
|
@@ -354,12 +355,15 @@ class IQOptionApi {
|
|
|
354
355
|
if (fromId > toId) {
|
|
355
356
|
throw new Error("fromId must be less than or equal to toId");
|
|
356
357
|
}
|
|
358
|
+
// Usar timeout customizado ou padrรฃo
|
|
359
|
+
const timeout = timeoutMs || this.maxWaitToGetDigitalInstrumentData;
|
|
357
360
|
return this.orderPlacementQueue.schedule(async () => {
|
|
358
361
|
Core.logger().silly(`IQOptionApi::getCandles`, {
|
|
359
362
|
activeId,
|
|
360
363
|
size,
|
|
361
364
|
fromId,
|
|
362
365
|
toId,
|
|
366
|
+
timeout,
|
|
363
367
|
});
|
|
364
368
|
const requestID = RequestIdGenerator_1.RequestIdGenerator.getNext();
|
|
365
369
|
return this.iqOptionWs
|
|
@@ -377,13 +381,44 @@ class IQOptionApi {
|
|
|
377
381
|
}, requestID)
|
|
378
382
|
.then(() => {
|
|
379
383
|
return new Promise((resolve, reject) => {
|
|
384
|
+
let resolved = false;
|
|
385
|
+
const receivedMessages = [];
|
|
386
|
+
let timeoutId = null;
|
|
387
|
+
const cleanup = () => {
|
|
388
|
+
if (timeoutId) {
|
|
389
|
+
clearTimeout(timeoutId);
|
|
390
|
+
timeoutId = null;
|
|
391
|
+
}
|
|
392
|
+
this.iqOptionWs.socket().off("message", listener);
|
|
393
|
+
};
|
|
394
|
+
const doResolve = (candles) => {
|
|
395
|
+
if (resolved)
|
|
396
|
+
return;
|
|
397
|
+
resolved = true;
|
|
398
|
+
cleanup();
|
|
399
|
+
resolve(candles);
|
|
400
|
+
};
|
|
401
|
+
const doReject = (error) => {
|
|
402
|
+
if (resolved)
|
|
403
|
+
return;
|
|
404
|
+
resolved = true;
|
|
405
|
+
cleanup();
|
|
406
|
+
reject(error);
|
|
407
|
+
};
|
|
380
408
|
const listener = (message) => {
|
|
381
|
-
var _a, _b, _c;
|
|
409
|
+
var _a, _b, _c, _d;
|
|
382
410
|
try {
|
|
383
411
|
const messageJSON = JSON.parse(message.toString());
|
|
412
|
+
// Store all messages for debugging
|
|
413
|
+
receivedMessages.push({
|
|
414
|
+
name: messageJSON.name,
|
|
415
|
+
request_id: messageJSON.request_id,
|
|
416
|
+
hasMsg: !!messageJSON.msg,
|
|
417
|
+
timestamp: Date.now(),
|
|
418
|
+
});
|
|
384
419
|
// Log all messages with matching request_id for debugging
|
|
385
420
|
if (messageJSON.request_id === String(requestID)) {
|
|
386
|
-
Core.logger().
|
|
421
|
+
Core.logger().debug("IQOptionApi::getCandles - Received message with matching request_id", {
|
|
387
422
|
operation: "getCandles",
|
|
388
423
|
metadata: {
|
|
389
424
|
name: messageJSON.name,
|
|
@@ -391,19 +426,23 @@ class IQOptionApi {
|
|
|
391
426
|
hasMsg: !!messageJSON.msg,
|
|
392
427
|
msgType: typeof messageJSON.msg,
|
|
393
428
|
isArray: Array.isArray(messageJSON.msg),
|
|
429
|
+
fullMessage: JSON.stringify(messageJSON).substring(0, 1000),
|
|
394
430
|
},
|
|
395
431
|
});
|
|
396
432
|
}
|
|
397
433
|
// Check if this is the candles response
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
434
|
+
// First check by request_id, then by name
|
|
435
|
+
const hasMatchingRequestId = messageJSON.request_id === String(requestID);
|
|
436
|
+
const isCandlesResponse = messageJSON.name === Core.IQOptionAction.CANDLES ||
|
|
437
|
+
messageJSON.name === "candles" ||
|
|
438
|
+
messageJSON.name === "get-candles-result" ||
|
|
439
|
+
messageJSON.name === "get-candles";
|
|
440
|
+
if (hasMatchingRequestId && isCandlesResponse) {
|
|
441
|
+
Core.logger().debug("IQOptionApi::getCandles - Processing candles response", {
|
|
404
442
|
operation: "getCandles",
|
|
405
443
|
metadata: {
|
|
406
444
|
name: messageJSON.name,
|
|
445
|
+
request_id: messageJSON.request_id,
|
|
407
446
|
msgType: typeof messageJSON.msg,
|
|
408
447
|
isArray: Array.isArray(messageJSON.msg),
|
|
409
448
|
},
|
|
@@ -414,9 +453,6 @@ class IQOptionApi {
|
|
|
414
453
|
if (Array.isArray(messageJSON.msg)) {
|
|
415
454
|
candles = messageJSON.msg;
|
|
416
455
|
}
|
|
417
|
-
else if (messageJSON.msg && Array.isArray(messageJSON.msg)) {
|
|
418
|
-
candles = messageJSON.msg;
|
|
419
|
-
}
|
|
420
456
|
else if (((_a = messageJSON.msg) === null || _a === void 0 ? void 0 : _a.candles) && Array.isArray(messageJSON.msg.candles)) {
|
|
421
457
|
candles = messageJSON.msg.candles;
|
|
422
458
|
}
|
|
@@ -426,6 +462,9 @@ class IQOptionApi {
|
|
|
426
462
|
else if (((_c = messageJSON.msg) === null || _c === void 0 ? void 0 : _c.result) && Array.isArray(messageJSON.msg.result)) {
|
|
427
463
|
candles = messageJSON.msg.result;
|
|
428
464
|
}
|
|
465
|
+
else if (((_d = messageJSON.msg) === null || _d === void 0 ? void 0 : _d.body) && Array.isArray(messageJSON.msg.body)) {
|
|
466
|
+
candles = messageJSON.msg.body;
|
|
467
|
+
}
|
|
429
468
|
else if (Array.isArray(messageJSON)) {
|
|
430
469
|
// Response might be directly an array
|
|
431
470
|
candles = messageJSON;
|
|
@@ -434,7 +473,7 @@ class IQOptionApi {
|
|
|
434
473
|
Core.logger().warn("IQOptionApi::getCandles - Unknown response format", {
|
|
435
474
|
operation: "getCandles",
|
|
436
475
|
metadata: {
|
|
437
|
-
response: JSON.stringify(messageJSON).substring(0,
|
|
476
|
+
response: JSON.stringify(messageJSON).substring(0, 1000),
|
|
438
477
|
},
|
|
439
478
|
});
|
|
440
479
|
}
|
|
@@ -442,32 +481,47 @@ class IQOptionApi {
|
|
|
442
481
|
operation: "getCandles",
|
|
443
482
|
metadata: {
|
|
444
483
|
count: candles.length,
|
|
484
|
+
requestID,
|
|
485
|
+
},
|
|
486
|
+
});
|
|
487
|
+
doResolve(candles);
|
|
488
|
+
}
|
|
489
|
+
else if (hasMatchingRequestId) {
|
|
490
|
+
// Log messages with matching request_id but different name
|
|
491
|
+
Core.logger().debug("IQOptionApi::getCandles - Message with matching request_id but different name", {
|
|
492
|
+
operation: "getCandles",
|
|
493
|
+
metadata: {
|
|
494
|
+
name: messageJSON.name,
|
|
495
|
+
request_id: messageJSON.request_id,
|
|
496
|
+
expectedName: Core.IQOptionAction.CANDLES,
|
|
445
497
|
},
|
|
446
498
|
});
|
|
447
|
-
resolve(candles);
|
|
448
499
|
}
|
|
449
500
|
}
|
|
450
501
|
catch (error) {
|
|
451
502
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
452
503
|
Core.logger().error("IQOptionApi::getCandles - Error parsing response", {
|
|
453
504
|
operation: "getCandles",
|
|
505
|
+
metadata: { requestID },
|
|
454
506
|
}, err);
|
|
455
|
-
|
|
456
|
-
reject(err);
|
|
507
|
+
doReject(err);
|
|
457
508
|
}
|
|
458
509
|
};
|
|
459
510
|
this.iqOptionWs.socket().on("message", listener);
|
|
460
|
-
setTimeout(() => {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
511
|
+
timeoutId = setTimeout(() => {
|
|
512
|
+
if (!resolved) {
|
|
513
|
+
Core.logger().error("IQOptionApi::getCandles - Timeout waiting for response", {
|
|
514
|
+
operation: "getCandles",
|
|
515
|
+
metadata: {
|
|
516
|
+
requestID,
|
|
517
|
+
timeout: timeout,
|
|
518
|
+
receivedMessagesCount: receivedMessages.length,
|
|
519
|
+
receivedMessages: receivedMessages.slice(-10), // Last 10 messages
|
|
520
|
+
},
|
|
521
|
+
});
|
|
522
|
+
doReject(new Error(`Timeout waiting for candles response. Received ${receivedMessages.length} messages, but none matched the expected response.`));
|
|
523
|
+
}
|
|
524
|
+
}, timeout);
|
|
471
525
|
});
|
|
472
526
|
});
|
|
473
527
|
});
|
|
@@ -483,4 +537,4 @@ class IQOptionApi {
|
|
|
483
537
|
}
|
|
484
538
|
}
|
|
485
539
|
exports.IQOptionApi = IQOptionApi;
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25BcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0lRT3B0aW9uQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCwyQ0FBb0M7QUFDcEMsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5Qix1REFBb0Q7QUFDcEQsNkNBQTBDO0FBQzFDLDREQUF5RDtBQUN6RCxvRUFBaUU7QUFFakU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUErQ3BCOzs7OztPQUtHO0lBQ0gsWUFBWSxLQUFhLEVBQUUsUUFBZ0I7UUFwRDNDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFFL0M7O1dBRUc7UUFDYyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFFbkQ7O1dBRUc7UUFDYyxnQ0FBMkIsR0FBVyxJQUFJLENBQUM7UUFFNUQ7O1dBRUc7UUFDYyxzQ0FBaUMsR0FBVyxJQUFJLENBQUM7UUFhbEU7O1dBRUc7UUFDYyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFVLENBQUM7WUFDbEQsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksb0JBQVUsQ0FBQztZQUNqRCxhQUFhLEVBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFTQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEQsa0JBQWtCO1FBQ2xCLCtCQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGlDQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUks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
|
|
540
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25BcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0lRT3B0aW9uQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCwyQ0FBb0M7QUFDcEMsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5Qix1REFBb0Q7QUFDcEQsNkNBQTBDO0FBQzFDLDREQUF5RDtBQUN6RCxvRUFBaUU7QUFFakU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUErQ3BCOzs7OztPQUtHO0lBQ0gsWUFBWSxLQUFhLEVBQUUsUUFBZ0I7UUFwRDNDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFFL0M7O1dBRUc7UUFDYyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFFbkQ7O1dBRUc7UUFDYyxnQ0FBMkIsR0FBVyxJQUFJLENBQUM7UUFFNUQ7O1dBRUc7UUFDYyxzQ0FBaUMsR0FBVyxLQUFLLENBQUM7UUFhbkU7O1dBRUc7UUFDYyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFVLENBQUM7WUFDbEQsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksb0JBQVUsQ0FBQztZQUNqRCxhQUFhLEVBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFTQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEQsa0JBQWtCO1FBQ2xCLCtCQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGlDQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx1QkFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3RCLElBQUksRUFBRTthQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsVUFBVTtpQkFDakIsT0FBTyxFQUFFO2lCQUNULElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFDdEIsS0FBSyxFQUNMLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQ2hDLENBQ0o7aUJBQ0EsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDL0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ2xELE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7WUFDTCxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzFELENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLGVBQWUsQ0FDeEIsTUFBMkIsRUFDM0IsSUFBd0IsRUFDeEIsSUFBWSxFQUNaLGFBQXFCLEVBQ3JCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxPQUFnQjtRQUVoQixrQkFBa0I7UUFDbEIsK0JBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsK0JBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsK0JBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCwrQkFBYyxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELCtCQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFO2dCQUMxQyxNQUFNO2dCQUNOLElBQUk7Z0JBQ0osSUFBSTtnQkFDSixNQUFNO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksdUNBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsVUFBVTtpQkFDakIsSUFBSSxDQUNELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUM5QjtnQkFDSSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7Z0JBQzVDLE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRTtvQkFDRixTQUFTLEVBQUUsTUFBTTtvQkFDakIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsY0FBYyxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sRUFBRSxJQUFJO29CQUNiLEtBQUssRUFBRSxNQUFNO29CQUNiLGVBQWUsRUFBRSxhQUFhO29CQUM5QixZQUFZLEVBQUUsQ0FBQyxFQUFFLDhDQUE4QztvQkFDL0QsY0FBYyxFQUFFLGFBQWE7aUJBQ2hDO2FBQ0osRUFDRCxTQUFTLENBQ1o7aUJBQ0EsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO29CQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQVksRUFBRSxFQUFFOzt3QkFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzt3QkFDbkQsSUFDSSxXQUFXLENBQUMsSUFBSTs0QkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFDMUMsQ0FBQzs0QkFDQyxJQUNJLFdBQVcsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUM5QyxDQUFDO2dDQUNDLElBQUksTUFBQSxXQUFXLENBQUMsR0FBRywwQ0FBRSxPQUFPLEVBQUUsQ0FBQztvQ0FDM0IsSUFBSSxDQUFDLFVBQVU7eUNBQ1YsTUFBTSxFQUFFO3lDQUNSLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7b0NBQzlCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQzVCLENBQUM7Z0NBQ0QsSUFBSSxDQUFDLFVBQVU7cUNBQ1YsTUFBTSxFQUFFO3FDQUNSLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0NBQzlCLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQzdCLENBQUM7d0JBQ0wsQ0FBQzt3QkFDRCxJQUNJLFdBQVcsQ0FBQyxJQUFJOzRCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUMxQyxDQUFDOzRCQUNDLElBQ0ksV0FBVyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQzlDLENBQUM7NEJBQ0gsQ0FBQzt3QkFDTCxDQUFDO29CQUNMLENBQUMsQ0FBQztvQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNsRCxNQUFNLENBQUMsb0NBQW9DLENBQUMsQ0FBQztvQkFDakQsQ0FBQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDekIsTUFBMkIsRUFDM0IsSUFBd0IsRUFDeEIsUUFBZ0IsRUFDaEIsYUFBcUIsRUFDckIsTUFBYyxFQUNkLGVBQXVCLEVBQ3ZCLE9BQWdCO1FBRWhCLGtCQUFrQjtRQUNsQiwrQkFBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QywrQkFBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QywrQkFBYyxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELCtCQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLElBQUksZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRTtZQUMxQyxNQUFNO1lBQ04sSUFBSTtZQUNKLFFBQVE7WUFDUixNQUFNO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksdUNBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxLQUFLLENBQ04sUUFBUSxDQUNKLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDeEQsU0FBUyxDQUNaLEdBQUcsUUFBUSxDQUNmLEdBQUcsUUFBUSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLE1BQU07YUFDZCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEtBQUssQ0FBQzthQUMzRCxHQUFHLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQzthQUM5QixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDakIsSUFBSSxDQUNELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUM5QjtZQUNJLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQjtZQUM3QyxPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRTtnQkFDRixlQUFlLEVBQUUsYUFBYTtnQkFDOUIsYUFBYSxFQUFFLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLFdBQVcsS0FBSztnQkFDMUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixnQkFBZ0IsRUFBRSxlQUFlO2FBQ3BDO1NBQ0osRUFDRCxTQUFTLENBQ1o7YUFDQSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRTtvQkFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDbkQsSUFDSSxXQUFXLENBQUMsSUFBSTt3QkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQjt3QkFDM0MsV0FBVyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUM1QyxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksRUFDN0IsQ0FBQzt3QkFDQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2xELE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzdCLENBQUM7b0JBQ0QsSUFDSSxXQUFXLENBQUMsSUFBSTt3QkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQjt3QkFDM0MsV0FBVyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUM1QyxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksRUFDN0IsQ0FBQzt3QkFDQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ2xELE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLE1BQU07SUFDVixDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUMxRCxNQUFNLFNBQVMsR0FBRyx1Q0FBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQyxVQUFVO2lCQUNqQixJQUFJLENBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQzlCO2dCQUNJLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QjtnQkFDakQsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLEVBQUU7YUFDWCxFQUNELFNBQVMsQ0FDWjtpQkFDQSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNQLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0JBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBWSxFQUFFLEVBQUU7d0JBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQ25ELElBQ0ksV0FBVyxDQUFDLElBQUk7NEJBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQ3pDLENBQUM7NEJBQ0MsSUFBSSxDQUFDLFVBQVU7aUNBQ1YsTUFBTSxFQUFFO2lDQUNSLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7NEJBQzlCLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzdCLENBQUM7b0JBQ0wsQ0FBQyxDQUFDO29CQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29CQUN0QyxDQUFDLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksMkJBQTJCLENBQzlCLE1BQTJCO1FBRTNCLGtCQUFrQjtRQUNsQiwrQkFBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sU0FBUyxHQUFHLHVDQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLFVBQVU7aUJBQ2pCLElBQUksQ0FDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFDOUI7Z0JBQ0ksSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjO3FCQUNwQiw4QkFBOEI7Z0JBQ25DLE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRTtvQkFDRixlQUFlLEVBQUUsZ0JBQWdCO29CQUNqQyxRQUFRLEVBQUUsTUFBTTtpQkFDbkI7YUFDSixFQUNELFNBQVMsQ0FDWjtpQkFDQSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNQLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0JBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBWSxFQUFFLEVBQUU7d0JBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQ25ELElBQUksV0FBVyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzs0QkFDL0MsSUFBSSxDQUFDLFVBQVU7aUNBQ1YsTUFBTSxFQUFFO2lDQUNSLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7NEJBQzlCLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzdCLENBQUM7b0JBQ0wsQ0FBQyxDQUFDO29CQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO29CQUMzQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLFVBQVUsQ0FDYixRQUFnQixFQUNoQixJQUFZLEVBQ1osTUFBYyxFQUNkLElBQVksRUFDWixxQkFBOEIsSUFBSSxFQUNsQyxhQUFzQixJQUFJLEVBQzFCLFNBQWtCO1FBRWxCLGtCQUFrQjtRQUNsQixJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRTtnQkFDM0MsUUFBUTtnQkFDUixJQUFJO2dCQUNKLE1BQU07Z0JBQ04sSUFBSTtnQkFDSixPQUFPO2FBQ1YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsdUNBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsVUFBVTtpQkFDakIsSUFBSSxDQUNELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUM5QjtnQkFDSSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXO2dCQUNyQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxJQUFJLEVBQUU7b0JBQ0YsU0FBUyxFQUFFLFFBQVE7b0JBQ25CLElBQUksRUFBRSxJQUFJO29CQUNWLE9BQU8sRUFBRSxNQUFNO29CQUNmLEtBQUssRUFBRSxJQUFJO29CQUNYLG1CQUFtQixFQUFFLGtCQUFrQjtvQkFDdkMsV0FBVyxFQUFFLFVBQVU7aUJBQzFCO2FBQ0osRUFDRCxTQUFTLENBQ1o7aUJBQ0EsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUCxPQUFPLElBQUksT0FBTyxDQUF3QixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtvQkFDMUQsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUNyQixNQUFNLGdCQUFnQixHQUFVLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxTQUFTLEdBQTBCLElBQUksQ0FBQztvQkFFNUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO3dCQUNqQixJQUFJLFNBQVMsRUFBRSxDQUFDOzRCQUNaLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDeEIsU0FBUyxHQUFHLElBQUksQ0FBQzt3QkFDckIsQ0FBQzt3QkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ3RELENBQUMsQ0FBQztvQkFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQThCLEVBQUUsRUFBRTt3QkFDakQsSUFBSSxRQUFROzRCQUFFLE9BQU87d0JBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQ2hCLE9BQU8sRUFBRSxDQUFDO3dCQUNWLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckIsQ0FBQyxDQUFDO29CQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7d0JBQzlCLElBQUksUUFBUTs0QkFBRSxPQUFPO3dCQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDO3dCQUNoQixPQUFPLEVBQUUsQ0FBQzt3QkFDVixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xCLENBQUMsQ0FBQztvQkFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQVksRUFBRSxFQUFFOzt3QkFDOUIsSUFBSSxDQUFDOzRCQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBRW5ELG1DQUFtQzs0QkFDbkMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dDQUNsQixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7Z0NBQ3RCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtnQ0FDbEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRztnQ0FDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7NkJBQ3hCLENBQUMsQ0FBQzs0QkFFSCwwREFBMEQ7NEJBQzFELElBQUksV0FBVyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQ0FDL0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxxRUFBcUUsRUFBRTtvQ0FDdkYsU0FBUyxFQUFFLFlBQVk7b0NBQ3ZCLFFBQVEsRUFBRTt3Q0FDTixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7d0NBQ3RCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTt3Q0FDbEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRzt3Q0FDekIsT0FBTyxFQUFFLE9BQU8sV0FBVyxDQUFDLEdBQUc7d0NBQy9CLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7d0NBQ3ZDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO3FDQUM5RDtpQ0FDSixDQUFDLENBQUM7NEJBQ1AsQ0FBQzs0QkFFRCx3Q0FBd0M7NEJBQ3hDLDBDQUEwQzs0QkFDMUMsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDMUUsTUFBTSxpQkFBaUIsR0FDbkIsV0FBVyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87Z0NBQ2hELFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUztnQ0FDOUIsV0FBVyxDQUFDLElBQUksS0FBSyxvQkFBb0I7Z0NBQ3pDLFdBQVcsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDOzRCQUV2QyxJQUFJLG9CQUFvQixJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0NBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsdURBQXVELEVBQUU7b0NBQ3pFLFNBQVMsRUFBRSxZQUFZO29DQUN2QixRQUFRLEVBQUU7d0NBQ04sSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO3dDQUN0QixVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVU7d0NBQ2xDLE9BQU8sRUFBRSxPQUFPLFdBQVcsQ0FBQyxHQUFHO3dDQUMvQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO3FDQUMxQztpQ0FDSixDQUFDLENBQUM7Z0NBRUgsc0VBQXNFO2dDQUN0RSxJQUFJLE9BQU8sR0FBMEIsRUFBRSxDQUFDO2dDQUV4QyxpQ0FBaUM7Z0NBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQ0FDakMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0NBQzlCLENBQUM7cUNBQU0sSUFBSSxDQUFBLE1BQUEsV0FBVyxDQUFDLEdBQUcsMENBQUUsT0FBTyxLQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29DQUM1RSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0NBQ3RDLENBQUM7cUNBQU0sSUFBSSxDQUFBLE1BQUEsV0FBVyxDQUFDLEdBQUcsMENBQUUsSUFBSSxLQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29DQUN0RSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0NBQ25DLENBQUM7cUNBQU0sSUFBSSxDQUFBLE1BQUEsV0FBVyxDQUFDLEdBQUcsMENBQUUsTUFBTSxLQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29DQUMxRSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7Z0NBQ3JDLENBQUM7cUNBQU0sSUFBSSxDQUFBLE1BQUEsV0FBVyxDQUFDLEdBQUcsMENBQUUsSUFBSSxLQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29DQUN0RSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0NBQ25DLENBQUM7cUNBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0NBQ3BDLHNDQUFzQztvQ0FDdEMsT0FBTyxHQUFHLFdBQVcsQ0FBQztnQ0FDMUIsQ0FBQztxQ0FBTSxDQUFDO29DQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsbURBQW1ELEVBQUU7d0NBQ3BFLFNBQVMsRUFBRSxZQUFZO3dDQUN2QixRQUFRLEVBQUU7NENBQ04sUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7eUNBQzNEO3FDQUNKLENBQUMsQ0FBQztnQ0FDUCxDQUFDO2dDQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsMkNBQTJDLE9BQU8sQ0FBQyxNQUFNLFVBQVUsRUFBRTtvQ0FDcEYsU0FBUyxFQUFFLFlBQVk7b0NBQ3ZCLFFBQVEsRUFBRTt3Q0FDTixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07d0NBQ3JCLFNBQVM7cUNBQ1o7aUNBQ0osQ0FBQyxDQUFDO2dDQUVILFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDdkIsQ0FBQztpQ0FBTSxJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0NBQzlCLDJEQUEyRDtnQ0FDM0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQywrRUFBK0UsRUFBRTtvQ0FDakcsU0FBUyxFQUFFLFlBQVk7b0NBQ3ZCLFFBQVEsRUFBRTt3Q0FDTixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7d0NBQ3RCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTt3Q0FDbEMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTztxQ0FDNUM7aUNBQ0osQ0FBQyxDQUFDOzRCQUNQLENBQUM7d0JBQ0wsQ0FBQzt3QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDOzRCQUNiLE1BQU0sR0FBRyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NEJBQ3RFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0RBQWtELEVBQUU7Z0NBQ3BFLFNBQVMsRUFBRSxZQUFZO2dDQUN2QixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUU7NkJBQzFCLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQ1IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixDQUFDO29CQUNMLENBQUMsQ0FBQztvQkFFRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRWpELFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ1osSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsRUFBRTtnQ0FDMUUsU0FBUyxFQUFFLFlBQVk7Z0NBQ3ZCLFFBQVEsRUFBRTtvQ0FDTixTQUFTO29DQUNULE9BQU8sRUFBRSxPQUFPO29DQUNoQixxQkFBcUIsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO29DQUM5QyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxtQkFBbUI7aUNBQ3JFOzZCQUNKLENBQUMsQ0FBQzs0QkFDSCxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsa0RBQWtELGdCQUFnQixDQUFDLE1BQU0sb0RBQW9ELENBQUMsQ0FBQyxDQUFDO3dCQUN2SixDQUFDO29CQUNMLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx1Q0FBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBOW1CRCxrQ0E4bUJDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iq-option-client",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.7",
|
|
4
4
|
"description": "A robust TypeScript client library for interacting with the IQ Option WebSocket API. Features real-time trading, market data streaming, and order management with SOLID principles.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|