ccxt 4.1.96 → 4.1.98

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 (187) hide show
  1. package/README.md +3 -3
  2. package/build.sh +1 -1
  3. package/dist/ccxt.browser.js +1275 -1208
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/ace.js +1 -1
  7. package/dist/cjs/src/ascendex.js +1 -1
  8. package/dist/cjs/src/base/Exchange.js +6 -5
  9. package/dist/cjs/src/base/errors.js +8 -1
  10. package/dist/cjs/src/bigone.js +2 -2
  11. package/dist/cjs/src/binance.js +29 -32
  12. package/dist/cjs/src/bingx.js +76 -3
  13. package/dist/cjs/src/bitfinex.js +1 -1
  14. package/dist/cjs/src/bitfinex2.js +1 -1
  15. package/dist/cjs/src/bitflyer.js +2 -2
  16. package/dist/cjs/src/bitget.js +13 -13
  17. package/dist/cjs/src/bitmart.js +1 -1
  18. package/dist/cjs/src/bitmex.js +2 -2
  19. package/dist/cjs/src/bitopro.js +1 -1
  20. package/dist/cjs/src/bitpanda.js +1 -1
  21. package/dist/cjs/src/bitvavo.js +1 -1
  22. package/dist/cjs/src/blockchaincom.js +1 -1
  23. package/dist/cjs/src/btcalpha.js +2 -2
  24. package/dist/cjs/src/btcbox.js +1 -1
  25. package/dist/cjs/src/btcmarkets.js +2 -2
  26. package/dist/cjs/src/btcturk.js +1 -1
  27. package/dist/cjs/src/bybit.js +2 -2
  28. package/dist/cjs/src/cex.js +1 -1
  29. package/dist/cjs/src/coinbasepro.js +2 -2
  30. package/dist/cjs/src/coinex.js +1 -1
  31. package/dist/cjs/src/coinlist.js +1 -1
  32. package/dist/cjs/src/deribit.js +1 -1
  33. package/dist/cjs/src/digifinex.js +1 -1
  34. package/dist/cjs/src/gate.js +1 -1
  35. package/dist/cjs/src/hitbtc.js +1 -1
  36. package/dist/cjs/src/hollaex.js +2 -2
  37. package/dist/cjs/src/htx.js +1 -1
  38. package/dist/cjs/src/huobijp.js +2 -2
  39. package/dist/cjs/src/idex.js +1 -1
  40. package/dist/cjs/src/independentreserve.js +1 -1
  41. package/dist/cjs/src/kraken.js +1 -1
  42. package/dist/cjs/src/kucoin.js +4 -4
  43. package/dist/cjs/src/kucoinfutures.js +1 -1
  44. package/dist/cjs/src/kuna.js +1 -1
  45. package/dist/cjs/src/latoken.js +1 -1
  46. package/dist/cjs/src/luno.js +2 -2
  47. package/dist/cjs/src/lykke.js +1 -1
  48. package/dist/cjs/src/mexc.js +2 -2
  49. package/dist/cjs/src/ndax.js +1 -1
  50. package/dist/cjs/src/novadax.js +2 -2
  51. package/dist/cjs/src/oceanex.js +1 -1
  52. package/dist/cjs/src/okcoin.js +1 -1
  53. package/dist/cjs/src/okx.js +1 -1
  54. package/dist/cjs/src/phemex.js +3 -3
  55. package/dist/cjs/src/poloniexfutures.js +1 -1
  56. package/dist/cjs/src/pro/alpaca.js +1 -1
  57. package/dist/cjs/src/pro/ascendex.js +1 -1
  58. package/dist/cjs/src/pro/binance.js +2 -2
  59. package/dist/cjs/src/pro/bingx.js +12 -6
  60. package/dist/cjs/src/pro/bitfinex.js +1 -1
  61. package/dist/cjs/src/pro/bitfinex2.js +1 -1
  62. package/dist/cjs/src/pro/bitmart.js +1 -1
  63. package/dist/cjs/src/pro/bitmex.js +1 -1
  64. package/dist/cjs/src/pro/bitpanda.js +1 -1
  65. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  66. package/dist/cjs/src/pro/bybit.js +2 -2
  67. package/dist/cjs/src/pro/coinbase.js +1 -1
  68. package/dist/cjs/src/pro/coinbasepro.js +1 -1
  69. package/dist/cjs/src/pro/deribit.js +1 -1
  70. package/dist/cjs/src/pro/gate.js +1 -1
  71. package/dist/cjs/src/pro/gemini.js +1 -1
  72. package/dist/cjs/src/pro/hollaex.js +1 -1
  73. package/dist/cjs/src/pro/htx.js +1 -1
  74. package/dist/cjs/src/pro/idex.js +1 -1
  75. package/dist/cjs/src/pro/kraken.js +1 -1
  76. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  77. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  78. package/dist/cjs/src/pro/mexc.js +1 -1
  79. package/dist/cjs/src/pro/okcoin.js +1 -1
  80. package/dist/cjs/src/pro/okx.js +1 -1
  81. package/dist/cjs/src/pro/phemex.js +1 -1
  82. package/dist/cjs/src/pro/poloniexfutures.js +1 -1
  83. package/dist/cjs/src/probit.js +1 -1
  84. package/dist/cjs/src/timex.js +1 -1
  85. package/dist/cjs/src/tokocrypto.js +1 -1
  86. package/dist/cjs/src/upbit.js +1 -1
  87. package/dist/cjs/src/wavesexchange.js +1 -1
  88. package/dist/cjs/src/whitebit.js +1 -1
  89. package/dist/cjs/src/woo.js +1 -1
  90. package/dist/cjs/src/zaif.js +1 -1
  91. package/js/ccxt.d.ts +1 -1
  92. package/js/ccxt.js +1 -1
  93. package/js/src/abstract/bingx.d.ts +2 -0
  94. package/js/src/ace.js +1 -1
  95. package/js/src/ascendex.js +1 -1
  96. package/js/src/base/Exchange.d.ts +1 -1
  97. package/js/src/base/Exchange.js +7 -6
  98. package/js/src/base/errorHierarchy.d.ts +1 -0
  99. package/js/src/base/errorHierarchy.js +1 -0
  100. package/js/src/base/errors.d.ts +5 -1
  101. package/js/src/base/errors.js +8 -2
  102. package/js/src/bigone.js +2 -2
  103. package/js/src/binance.js +29 -32
  104. package/js/src/bingx.d.ts +2 -0
  105. package/js/src/bingx.js +76 -3
  106. package/js/src/bitfinex.js +1 -1
  107. package/js/src/bitfinex2.js +1 -1
  108. package/js/src/bitflyer.js +2 -2
  109. package/js/src/bitget.js +13 -13
  110. package/js/src/bitmart.js +1 -1
  111. package/js/src/bitmex.js +2 -2
  112. package/js/src/bitopro.js +1 -1
  113. package/js/src/bitpanda.js +1 -1
  114. package/js/src/bitso.d.ts +1 -1
  115. package/js/src/bitvavo.js +1 -1
  116. package/js/src/blockchaincom.js +1 -1
  117. package/js/src/btcalpha.js +2 -2
  118. package/js/src/btcbox.js +1 -1
  119. package/js/src/btcmarkets.js +2 -2
  120. package/js/src/btcturk.js +1 -1
  121. package/js/src/bybit.js +2 -2
  122. package/js/src/cex.js +1 -1
  123. package/js/src/coinbasepro.js +2 -2
  124. package/js/src/coinex.js +1 -1
  125. package/js/src/coinlist.js +1 -1
  126. package/js/src/deribit.js +1 -1
  127. package/js/src/digifinex.js +1 -1
  128. package/js/src/gate.js +1 -1
  129. package/js/src/hitbtc.js +1 -1
  130. package/js/src/hollaex.js +2 -2
  131. package/js/src/htx.js +1 -1
  132. package/js/src/huobijp.js +2 -2
  133. package/js/src/idex.js +1 -1
  134. package/js/src/independentreserve.js +1 -1
  135. package/js/src/kraken.js +1 -1
  136. package/js/src/kucoin.js +4 -4
  137. package/js/src/kucoinfutures.js +1 -1
  138. package/js/src/kuna.js +1 -1
  139. package/js/src/latoken.js +1 -1
  140. package/js/src/luno.js +2 -2
  141. package/js/src/lykke.js +1 -1
  142. package/js/src/mexc.js +2 -2
  143. package/js/src/ndax.js +1 -1
  144. package/js/src/novadax.js +2 -2
  145. package/js/src/oceanex.js +1 -1
  146. package/js/src/okcoin.js +1 -1
  147. package/js/src/okx.js +1 -1
  148. package/js/src/phemex.js +3 -3
  149. package/js/src/poloniexfutures.js +1 -1
  150. package/js/src/pro/alpaca.js +1 -1
  151. package/js/src/pro/ascendex.js +1 -1
  152. package/js/src/pro/binance.js +2 -2
  153. package/js/src/pro/bingx.js +12 -6
  154. package/js/src/pro/bitfinex.js +1 -1
  155. package/js/src/pro/bitfinex2.js +1 -1
  156. package/js/src/pro/bitmart.js +1 -1
  157. package/js/src/pro/bitmex.js +1 -1
  158. package/js/src/pro/bitpanda.js +1 -1
  159. package/js/src/pro/blockchaincom.js +1 -1
  160. package/js/src/pro/bybit.js +2 -2
  161. package/js/src/pro/coinbase.js +1 -1
  162. package/js/src/pro/coinbasepro.js +1 -1
  163. package/js/src/pro/deribit.js +1 -1
  164. package/js/src/pro/gate.js +1 -1
  165. package/js/src/pro/gemini.js +1 -1
  166. package/js/src/pro/hollaex.js +1 -1
  167. package/js/src/pro/htx.js +1 -1
  168. package/js/src/pro/idex.js +1 -1
  169. package/js/src/pro/kraken.js +1 -1
  170. package/js/src/pro/krakenfutures.js +1 -1
  171. package/js/src/pro/kucoinfutures.js +1 -1
  172. package/js/src/pro/mexc.js +1 -1
  173. package/js/src/pro/okcoin.js +1 -1
  174. package/js/src/pro/okx.js +1 -1
  175. package/js/src/pro/phemex.js +1 -1
  176. package/js/src/pro/poloniexfutures.js +1 -1
  177. package/js/src/probit.js +1 -1
  178. package/js/src/timex.js +1 -1
  179. package/js/src/tokocrypto.js +1 -1
  180. package/js/src/upbit.js +1 -1
  181. package/js/src/wavesexchange.js +1 -1
  182. package/js/src/whitebit.js +1 -1
  183. package/js/src/woo.js +1 -1
  184. package/js/src/zaif.js +1 -1
  185. package/package.json +13 -13
  186. package/skip-tests.json +120 -71
  187. package/run-tests-ws.js +0 -290
@@ -1360,22 +1360,6 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
1360
1360
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
1361
1361
 
1362
1362
 
1363
- /***/ }),
1364
-
1365
- /***/ 5224:
1366
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1367
-
1368
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1369
- /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
1370
- /* harmony export */ });
1371
- /* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
1372
- // -------------------------------------------------------------------------------
1373
-
1374
- class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
1375
- }
1376
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
1377
-
1378
-
1379
1363
  /***/ }),
1380
1364
 
1381
1365
  /***/ 3565:
@@ -2101,7 +2085,7 @@ class ace extends _abstract_ace_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
2101
2085
  * @see https://github.com/ace-exchange/ace-official-api-docs/blob/master/api_v2.md#open-api---order-list
2102
2086
  * @param {string} symbol unified market symbol of the market orders were made in
2103
2087
  * @param {int} [since] the earliest time in ms to fetch orders for
2104
- * @param {int} [limit] the maximum number of orde structures to retrieve
2088
+ * @param {int} [limit] the maximum number of order structures to retrieve
2105
2089
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2106
2090
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2107
2091
  */
@@ -5588,7 +5572,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
5588
5572
  * @see https://ascendex.github.io/ascendex-futures-pro-api-v2/#list-current-history-orders
5589
5573
  * @param {string} symbol unified market symbol of the market orders were made in
5590
5574
  * @param {int} [since] the earliest time in ms to fetch orders for
5591
- * @param {int} [limit] the maximum number of orde structures to retrieve
5575
+ * @param {int} [limit] the maximum number of order structures to retrieve
5592
5576
  * @param {object} [params] extra parameters specific to the exchange API endpoint
5593
5577
  * @param {int} [params.until] the latest time in ms to fetch orders for
5594
5578
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -8349,7 +8333,7 @@ class Exchange {
8349
8333
  const length = usedProxies.length;
8350
8334
  if (length > 1) {
8351
8335
  const joinedProxyNames = usedProxies.join(',');
8352
- throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ExchangeError(this.id + ' you have multiple conflicting proxy_url settings (' + joinedProxyNames + '), please use only one from : proxyUrl, proxy_url, proxyUrlCallback, proxy_url_callback');
8336
+ throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from : proxyUrl, proxy_url, proxyUrlCallback, proxy_url_callback');
8353
8337
  }
8354
8338
  return proxyUrl;
8355
8339
  }
@@ -8413,7 +8397,7 @@ class Exchange {
8413
8397
  const length = usedProxies.length;
8414
8398
  if (length > 1) {
8415
8399
  const joinedProxyNames = usedProxies.join(',');
8416
- throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ExchangeError(this.id + ' you have multiple conflicting settings (' + joinedProxyNames + '), please use only one from: httpProxy, httpsProxy, httpProxyCallback, httpsProxyCallback, socksProxy, socksProxyCallback');
8400
+ throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from: httpProxy, httpsProxy, httpProxyCallback, httpsProxyCallback, socksProxy, socksProxyCallback');
8417
8401
  }
8418
8402
  return [httpProxy, httpsProxy, socksProxy];
8419
8403
  }
@@ -8453,13 +8437,13 @@ class Exchange {
8453
8437
  const length = usedProxies.length;
8454
8438
  if (length > 1) {
8455
8439
  const joinedProxyNames = usedProxies.join(',');
8456
- throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ExchangeError(this.id + ' you have multiple conflicting settings (' + joinedProxyNames + '), please use only one from: wsProxy, wssProxy, wsSocksProxy');
8440
+ throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from: wsProxy, wssProxy, wsSocksProxy');
8457
8441
  }
8458
8442
  return [wsProxy, wssProxy, wsSocksProxy];
8459
8443
  }
8460
8444
  checkConflictingProxies(proxyAgentSet, proxyUrlSet) {
8461
8445
  if (proxyAgentSet && proxyUrlSet) {
8462
- throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ExchangeError(this.id + ' you have multiple conflicting proxy settings, please use only one from : proxyUrl, httpProxy, httpsProxy, socksProxy');
8446
+ throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings, please use only one from : proxyUrl, httpProxy, httpsProxy, socksProxy');
8463
8447
  }
8464
8448
  }
8465
8449
  findMessageHashes(client, element) {
@@ -8776,6 +8760,7 @@ class Exchange {
8776
8760
  fee['cost'] = this.safeNumber(fee, 'cost');
8777
8761
  }
8778
8762
  const timestamp = this.safeInteger(entry, 'timestamp');
8763
+ const info = this.safeValue(entry, 'info', {});
8779
8764
  return {
8780
8765
  'id': this.safeString(entry, 'id'),
8781
8766
  'timestamp': timestamp,
@@ -8791,7 +8776,7 @@ class Exchange {
8791
8776
  'after': this.parseNumber(after),
8792
8777
  'status': this.safeString(entry, 'status'),
8793
8778
  'fee': fee,
8794
- 'info': entry,
8779
+ 'info': info,
8795
8780
  };
8796
8781
  }
8797
8782
  safeCurrencyStructure(currency) {
@@ -12214,6 +12199,7 @@ __webpack_require__.r(__webpack_exports__);
12214
12199
  /* harmony export */ OrderNotFillable: () => (/* binding */ OrderNotFillable),
12215
12200
  /* harmony export */ OrderNotFound: () => (/* binding */ OrderNotFound),
12216
12201
  /* harmony export */ PermissionDenied: () => (/* binding */ PermissionDenied),
12202
+ /* harmony export */ ProxyError: () => (/* binding */ ProxyError),
12217
12203
  /* harmony export */ RateLimitExceeded: () => (/* binding */ RateLimitExceeded),
12218
12204
  /* harmony export */ RequestTimeout: () => (/* binding */ RequestTimeout),
12219
12205
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
@@ -12412,6 +12398,12 @@ class OperationFailed extends BaseError {
12412
12398
  this.name = 'OperationFailed';
12413
12399
  }
12414
12400
  }
12401
+ class ProxyError extends ExchangeError {
12402
+ constructor(message) {
12403
+ super(message);
12404
+ this.name = 'OperationFailed';
12405
+ }
12406
+ }
12415
12407
  // Network error
12416
12408
  class NetworkError extends OperationFailed {
12417
12409
  constructor(message) {
@@ -12462,7 +12454,7 @@ class RequestTimeout extends NetworkError {
12462
12454
  // // Derived class hierarchy
12463
12455
  // errorHierarchy
12464
12456
  // )
12465
- const errors = { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, ContractUnavailable, NoChange, OperationRejected, OperationFailed };
12457
+ const errors = { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, ContractUnavailable, NoChange, OperationRejected, OperationFailed, ProxyError };
12466
12458
 
12467
12459
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (errors);
12468
12460
 
@@ -16485,7 +16477,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
16485
16477
  * @description fetches information on multiple orders made by the user
16486
16478
  * @param {string} symbol unified market symbol of the market orders were made in
16487
16479
  * @param {int} [since] the earliest time in ms to fetch orders for
16488
- * @param {int} [limit] the maximum number of orde structures to retrieve
16480
+ * @param {int} [limit] the maximum number of order structures to retrieve
16489
16481
  * @param {object} [params] extra parameters specific to the exchange API endpoint
16490
16482
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
16491
16483
  */
@@ -16620,7 +16612,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
16620
16612
  * @description fetches information on multiple closed orders made by the user
16621
16613
  * @param {string} symbol unified market symbol of the market orders were made in
16622
16614
  * @param {int} [since] the earliest time in ms to fetch orders for
16623
- * @param {int} [limit] the maximum number of orde structures to retrieve
16615
+ * @param {int} [limit] the maximum number of order structures to retrieve
16624
16616
  * @param {object} [params] extra parameters specific to the exchange API endpoint
16625
16617
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
16626
16618
  */
@@ -23158,7 +23150,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23158
23150
  'amount': this.currencyToPrecision(code, amount),
23159
23151
  };
23160
23152
  request['type'] = this.safeString(params, 'type');
23161
- let method = 'sapiPostAssetTransfer';
23153
+ params = this.omit(params, 'type');
23154
+ let response = undefined;
23162
23155
  if (request['type'] === undefined) {
23163
23156
  const symbol = this.safeString(params, 'symbol');
23164
23157
  if (symbol !== undefined) {
@@ -23198,16 +23191,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23198
23191
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' transfer () does not allow transfers between ' + fromAccount + ' and ' + toAccount);
23199
23192
  }
23200
23193
  else if (toSpot && fromIsolated) {
23201
- method = 'sapiPostMarginIsolatedTransfer';
23202
23194
  request['transFrom'] = 'ISOLATED_MARGIN';
23203
23195
  request['transTo'] = 'SPOT';
23204
23196
  request['symbol'] = fromId;
23197
+ response = await this.sapiPostMarginIsolatedTransfer(this.extend(request, params));
23205
23198
  }
23206
23199
  else if (fromSpot && toIsolated) {
23207
- method = 'sapiPostMarginIsolatedTransfer';
23208
23200
  request['transFrom'] = 'SPOT';
23209
23201
  request['transTo'] = 'ISOLATED_MARGIN';
23210
23202
  request['symbol'] = toId;
23203
+ response = await this.sapiPostMarginIsolatedTransfer(this.extend(request, params));
23211
23204
  }
23212
23205
  else {
23213
23206
  if (fromIsolated) {
@@ -23225,8 +23218,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23225
23218
  request['type'] = fromId + '_' + toId;
23226
23219
  }
23227
23220
  }
23228
- params = this.omit(params, 'type');
23229
- const response = await this[method](this.extend(request, params));
23221
+ if (response === undefined) {
23222
+ response = await this.sapiPostAssetTransfer(this.extend(request, params));
23223
+ }
23230
23224
  //
23231
23225
  // {
23232
23226
  // "tranId":13526853623
@@ -24019,7 +24013,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
24019
24013
  */
24020
24014
  await this.loadMarkets();
24021
24015
  const request = {};
24022
- let method = undefined;
24023
24016
  let paginate = false;
24024
24017
  [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
24025
24018
  if (paginate) {
@@ -24036,15 +24029,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
24036
24029
  let subType = undefined;
24037
24030
  [subType, params] = this.handleSubTypeAndParams('fetchFundingRateHistory', market, params, 'linear');
24038
24031
  params = this.omit(params, 'type');
24039
- if (this.isLinear(type, subType)) {
24040
- method = 'fapiPublicGetFundingRate';
24041
- }
24042
- else if (this.isInverse(type, subType)) {
24043
- method = 'dapiPublicGetFundingRate';
24044
- }
24045
- if (method === undefined) {
24046
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchFundingRateHistory() is not supported for ' + type + ' markets');
24047
- }
24048
24032
  if (since !== undefined) {
24049
24033
  request['startTime'] = since;
24050
24034
  }
@@ -24057,7 +24041,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
24057
24041
  if (limit !== undefined) {
24058
24042
  request['limit'] = limit;
24059
24043
  }
24060
- const response = await this[method](this.extend(request, params));
24044
+ let response = undefined;
24045
+ if (this.isLinear(type, subType)) {
24046
+ response = await this.fapiPublicGetFundingRate(this.extend(request, params));
24047
+ }
24048
+ else if (this.isInverse(type, subType)) {
24049
+ response = await this.dapiPublicGetFundingRate(this.extend(request, params));
24050
+ }
24051
+ else {
24052
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchFundingRateHistory() is not supported for ' + type + ' markets');
24053
+ }
24061
24054
  //
24062
24055
  // {
24063
24056
  // "symbol": "BTCUSDT",
@@ -24093,22 +24086,21 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
24093
24086
  */
24094
24087
  await this.loadMarkets();
24095
24088
  symbols = this.marketSymbols(symbols);
24096
- let method = undefined;
24097
24089
  const defaultType = this.safeString2(this.options, 'fetchFundingRates', 'defaultType', 'future');
24098
24090
  const type = this.safeString(params, 'type', defaultType);
24099
24091
  let subType = undefined;
24100
24092
  [subType, params] = this.handleSubTypeAndParams('fetchFundingRates', undefined, params, 'linear');
24101
24093
  const query = this.omit(params, 'type');
24094
+ let response = undefined;
24102
24095
  if (this.isLinear(type, subType)) {
24103
- method = 'fapiPublicGetPremiumIndex';
24096
+ response = await this.fapiPublicGetPremiumIndex(query);
24104
24097
  }
24105
24098
  else if (this.isInverse(type, subType)) {
24106
- method = 'dapiPublicGetPremiumIndex';
24099
+ response = await this.dapiPublicGetPremiumIndex(query);
24107
24100
  }
24108
24101
  else {
24109
24102
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchFundingRates() supports linear and inverse contracts only');
24110
24103
  }
24111
- const response = await this[method](query);
24112
24104
  const result = [];
24113
24105
  for (let i = 0; i < response.length; i++) {
24114
24106
  const entry = response[i];
@@ -24576,22 +24568,21 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
24576
24568
  // it contains useful stuff like the maintenance margin and initial margin for positions
24577
24569
  const leverageBrackets = this.safeValue(this.options, 'leverageBrackets');
24578
24570
  if ((leverageBrackets === undefined) || (reload)) {
24579
- let method = undefined;
24580
24571
  const defaultType = this.safeString(this.options, 'defaultType', 'future');
24581
24572
  const type = this.safeString(params, 'type', defaultType);
24582
24573
  const query = this.omit(params, 'type');
24583
24574
  let subType = undefined;
24584
24575
  [subType, params] = this.handleSubTypeAndParams('loadLeverageBrackets', undefined, params, 'linear');
24576
+ let response = undefined;
24585
24577
  if (this.isLinear(type, subType)) {
24586
- method = 'fapiPrivateGetLeverageBracket';
24578
+ response = await this.fapiPrivateGetLeverageBracket(query);
24587
24579
  }
24588
24580
  else if (this.isInverse(type, subType)) {
24589
- method = 'dapiPrivateV2GetLeverageBracket';
24581
+ response = await this.dapiPrivateV2GetLeverageBracket(query);
24590
24582
  }
24591
24583
  else {
24592
24584
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' loadLeverageBrackets() supports linear and inverse contracts only');
24593
24585
  }
24594
- const response = await this[method](query);
24595
24586
  this.options['leverageBrackets'] = {};
24596
24587
  for (let i = 0; i < response.length; i++) {
24597
24588
  const entry = response[i];
@@ -25053,7 +25044,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
25053
25044
  */
25054
25045
  await this.loadMarkets();
25055
25046
  let market = undefined;
25056
- let method = undefined;
25057
25047
  const request = {
25058
25048
  'incomeType': 'FUNDING_FEE', // "TRANSFER","WELCOME_BONUS", "REALIZED_PNL","FUNDING_FEE", "COMMISSION" and "INSURANCE_CLEAR"
25059
25049
  };
@@ -25075,16 +25065,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
25075
25065
  const defaultType = this.safeString2(this.options, 'fetchFundingHistory', 'defaultType', 'future');
25076
25066
  const type = this.safeString(params, 'type', defaultType);
25077
25067
  params = this.omit(params, 'type');
25068
+ let response = undefined;
25078
25069
  if (this.isLinear(type, subType)) {
25079
- method = 'fapiPrivateGetIncome';
25070
+ response = await this.fapiPrivateGetIncome(this.extend(request, params));
25080
25071
  }
25081
25072
  else if (this.isInverse(type, subType)) {
25082
- method = 'dapiPrivateGetIncome';
25073
+ response = await this.dapiPrivateGetIncome(this.extend(request, params));
25083
25074
  }
25084
25075
  else {
25085
25076
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchFundingHistory() supports linear and inverse contracts only');
25086
25077
  }
25087
- const response = await this[method](this.extend(request, params));
25088
25078
  return this.parseIncomes(response, market, since, limit);
25089
25079
  }
25090
25080
  async setLeverage(leverage, symbol = undefined, params = {}) {
@@ -25838,17 +25828,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
25838
25828
  'symbol': market['id'],
25839
25829
  'amount': amount,
25840
25830
  };
25841
- let method = undefined;
25831
+ let response = undefined;
25842
25832
  let code = undefined;
25843
25833
  if (market['linear']) {
25844
- method = 'fapiPrivatePostPositionMargin';
25845
25834
  code = market['quote'];
25835
+ response = await this.fapiPrivatePostPositionMargin(this.extend(request, params));
25846
25836
  }
25847
25837
  else {
25848
- method = 'dapiPrivatePostPositionMargin';
25849
25838
  code = market['base'];
25839
+ response = await this.dapiPrivatePostPositionMargin(this.extend(request, params));
25850
25840
  }
25851
- const response = await this[method](this.extend(request, params));
25852
25841
  //
25853
25842
  // {
25854
25843
  // "code": 200,
@@ -27009,7 +26998,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
27009
26998
  'cancelOrder': true,
27010
26999
  'cancelOrders': true,
27011
27000
  'closeAllPositions': true,
27012
- 'closePosition': false,
27001
+ 'closePosition': true,
27013
27002
  'createMarketBuyOrderWithCost': true,
27014
27003
  'createMarketOrderWithCost': true,
27015
27004
  'createMarketSellOrderWithCost': true,
@@ -27121,6 +27110,16 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
27121
27110
  },
27122
27111
  },
27123
27112
  'swap': {
27113
+ 'v1': {
27114
+ 'private': {
27115
+ 'get': {
27116
+ 'positionSide/dual': 1,
27117
+ },
27118
+ 'post': {
27119
+ 'positionSide/dual': 1,
27120
+ },
27121
+ },
27122
+ },
27124
27123
  'v2': {
27125
27124
  'public': {
27126
27125
  'get': {
@@ -29449,7 +29448,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
29449
29448
  * @see https://bingx-api.github.io/docs/#/standard/contract-interface.html#Historical%20order
29450
29449
  * @param {string} [symbol] unified market symbol of the market orders were made in
29451
29450
  * @param {int} [since] the earliest time in ms to fetch orders for
29452
- * @param {int} [limit] the maximum number of orde structures to retrieve
29451
+ * @param {int} [limit] the maximum number of order structures to retrieve
29453
29452
  * @param {object} [params] extra parameters specific to the exchange API endpoint
29454
29453
  * @param {int} [params.until] the latest time in ms to fetch orders for
29455
29454
  * @param {boolean} [params.standard] whether to fetch standard contract orders
@@ -30348,12 +30347,44 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
30348
30347
  'datetime': this.iso8601(timestamp),
30349
30348
  });
30350
30349
  }
30350
+ async closePosition(symbol, side = undefined, params = {}) {
30351
+ /**
30352
+ * @method
30353
+ * @name bingx#closePosition
30354
+ * @description closes open positions for a market
30355
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#One-Click%20Close%20All%20Positions
30356
+ * @param {string} symbol Unified CCXT market symbol
30357
+ * @param {string} [side] not used by bingx
30358
+ * @param {object} [params] extra parameters specific to the bingx api endpoint
30359
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
30360
+ */
30361
+ await this.loadMarkets();
30362
+ const market = this.market(symbol);
30363
+ const request = {
30364
+ 'symbol': market['id'],
30365
+ };
30366
+ const response = await this.swapV2PrivatePostTradeCloseAllPositions(this.extend(request, params));
30367
+ //
30368
+ // {
30369
+ // "code": 0,
30370
+ // "msg": "",
30371
+ // "data": {
30372
+ // "success": [
30373
+ // 1727686766700486656,
30374
+ // ],
30375
+ // "failed": null
30376
+ // }
30377
+ // }
30378
+ //
30379
+ const data = this.safeValue(response, 'data');
30380
+ return this.parseOrder(data);
30381
+ }
30351
30382
  async closeAllPositions(params = {}) {
30352
30383
  /**
30353
30384
  * @method
30354
30385
  * @name bitget#closePositions
30355
30386
  * @description closes open positions for a market
30356
- * @see https://bitgetlimited.github.io/apidoc/en/mix/#close-all-position
30387
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#One-Click%20Close%20All%20Positions
30357
30388
  * @param {object} [params] extra parameters specific to the okx api endpoint
30358
30389
  * @param {string} [params.recvWindow] request valid time window value
30359
30390
  * @returns {object[]} [A list of position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
@@ -30392,6 +30423,37 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
30392
30423
  }
30393
30424
  return positions;
30394
30425
  }
30426
+ async setPositionMode(hedged, symbol = undefined, params = {}) {
30427
+ /**
30428
+ * @method
30429
+ * @name bingx#setPositionMode
30430
+ * @description set hedged to true or false for a market
30431
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Set%20Position%20Mode
30432
+ * @param {bool} hedged set to true to use dualSidePosition
30433
+ * @param {string} symbol not used by bingx setPositionMode ()
30434
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
30435
+ * @returns {object} response from the exchange
30436
+ */
30437
+ let dualSidePosition = undefined;
30438
+ if (hedged) {
30439
+ dualSidePosition = 'true';
30440
+ }
30441
+ else {
30442
+ dualSidePosition = 'false';
30443
+ }
30444
+ const request = {
30445
+ 'dualSidePosition': dualSidePosition,
30446
+ };
30447
+ //
30448
+ // {
30449
+ // code: '0',
30450
+ // msg: '',
30451
+ // timeStamp: '1703327432734',
30452
+ // data: { dualSidePosition: 'false' }
30453
+ // }
30454
+ //
30455
+ return await this.swapV1PrivatePostPositionSideDual(this.extend(request, params));
30456
+ }
30395
30457
  sign(path, section = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
30396
30458
  const type = section[0];
30397
30459
  const version = section[1];
@@ -34925,7 +34987,7 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
34925
34987
  * @description fetches information on multiple closed orders made by the user
34926
34988
  * @param {string} symbol unified market symbol of the market orders were made in
34927
34989
  * @param {int} [since] the earliest time in ms to fetch orders for
34928
- * @param {int} [limit] the maximum number of orde structures to retrieve
34990
+ * @param {int} [limit] the maximum number of order structures to retrieve
34929
34991
  * @param {object} [params] extra parameters specific to the exchange API endpoint
34930
34992
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
34931
34993
  */
@@ -37181,7 +37243,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
37181
37243
  * @see https://docs.bitfinex.com/reference/rest-auth-retrieve-orders-by-symbol
37182
37244
  * @param {string} symbol unified market symbol of the market orders were made in
37183
37245
  * @param {int} [since] the earliest time in ms to fetch orders for
37184
- * @param {int} [limit] the maximum number of orde structures to retrieve
37246
+ * @param {int} [limit] the maximum number of order structures to retrieve
37185
37247
  * @param {object} [params] extra parameters specific to the exchange API endpoint
37186
37248
  * @param {int} [params.until] the latest time in ms to fetch entries for
37187
37249
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
@@ -39019,7 +39081,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
39019
39081
  * @see https://lightning.bitflyer.com/docs?lang=en#list-orders
39020
39082
  * @param {string} symbol unified market symbol of the market orders were made in
39021
39083
  * @param {int} [since] the earliest time in ms to fetch orders for
39022
- * @param {int} [limit] the maximum number of orde structures to retrieve
39084
+ * @param {int} [limit] the maximum number of order structures to retrieve
39023
39085
  * @param {object} [params] extra parameters specific to the exchange API endpoint
39024
39086
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
39025
39087
  */
@@ -39064,7 +39126,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
39064
39126
  * @see https://lightning.bitflyer.com/docs?lang=en#list-orders
39065
39127
  * @param {string} symbol unified market symbol of the market orders were made in
39066
39128
  * @param {int} [since] the earliest time in ms to fetch orders for
39067
- * @param {int} [limit] the maximum number of orde structures to retrieve
39129
+ * @param {int} [limit] the maximum number of order structures to retrieve
39068
39130
  * @param {object} [params] extra parameters specific to the exchange API endpoint
39069
39131
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
39070
39132
  */
@@ -41562,12 +41624,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41562
41624
  '30m': '30min',
41563
41625
  '1h': '1h',
41564
41626
  '4h': '4h',
41565
- '6h': '6h',
41566
- '12h': '12h',
41567
- '1d': '1day',
41568
- '3d': '3day',
41569
- '1w': '1week',
41570
- '1M': '1M',
41627
+ '6h': '6Hutc',
41628
+ '12h': '12Hutc',
41629
+ '1d': '1Dutc',
41630
+ '3d': '3Dutc',
41631
+ '1w': '1Wutc',
41632
+ '1M': '1Mutc',
41571
41633
  },
41572
41634
  'swap': {
41573
41635
  '1m': '1m',
@@ -41578,12 +41640,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41578
41640
  '1h': '1H',
41579
41641
  '2h': '2H',
41580
41642
  '4h': '4H',
41581
- '6h': '6H',
41582
- '12h': '12H',
41583
- '1d': '1D',
41584
- '3d': '3D',
41585
- '1w': '1W',
41586
- '1M': '1M',
41643
+ '6h': '6Hutc',
41644
+ '12h': '12Hutc',
41645
+ '1d': '1Dutc',
41646
+ '3d': '3Dutc',
41647
+ '1w': '1Wutc',
41648
+ '1M': '1Mutc',
41587
41649
  },
41588
41650
  },
41589
41651
  'fetchMarkets': [
@@ -43185,7 +43247,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
43185
43247
  const currencyCode = this.safeCurrencyCode(this.safeString(feeStructure, 'feeCoin'));
43186
43248
  fee = {
43187
43249
  'currency': currencyCode,
43188
- 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringNeg(this.safeString(feeStructure, 'totalFee')),
43250
+ 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringAbs(this.safeString(feeStructure, 'totalFee')),
43189
43251
  };
43190
43252
  }
43191
43253
  return this.safeTrade({
@@ -52343,7 +52405,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
52343
52405
  * @description fetches information on multiple closed orders made by the user
52344
52406
  * @param {string} symbol unified market symbol of the market orders were made in
52345
52407
  * @param {int} [since] the earliest time in ms to fetch orders for
52346
- * @param {int} [limit] the maximum number of orde structures to retrieve
52408
+ * @param {int} [limit] the maximum number of order structures to retrieve
52347
52409
  * @param {object} [params] extra parameters specific to the exchange API endpoint
52348
52410
  * @param {int} [params.until] timestamp in ms of the latest entry
52349
52411
  * @param {string} [params.marginMode] *spot only* 'cross' or 'isolated', for margin trading
@@ -54784,7 +54846,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
54784
54846
  * @description fetches information on multiple orders made by the user
54785
54847
  * @param {string} symbol unified market symbol of the market orders were made in
54786
54848
  * @param {int} [since] the earliest time in ms to fetch orders for
54787
- * @param {int} [limit] the maximum number of orde structures to retrieve
54849
+ * @param {int} [limit] the maximum number of order structures to retrieve
54788
54850
  * @param {object} [params] extra parameters specific to the exchange API endpoint
54789
54851
  * @param {int} [params.until] the earliest time in ms to fetch orders for
54790
54852
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
@@ -54848,7 +54910,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
54848
54910
  * @description fetches information on multiple closed orders made by the user
54849
54911
  * @param {string} symbol unified market symbol of the market orders were made in
54850
54912
  * @param {int} [since] the earliest time in ms to fetch orders for
54851
- * @param {int} [limit] the maximum number of orde structures to retrieve
54913
+ * @param {int} [limit] the maximum number of order structures to retrieve
54852
54914
  * @param {object} [params] extra parameters specific to the exchange API endpoint
54853
54915
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
54854
54916
  */
@@ -58010,7 +58072,7 @@ class bitopro extends _abstract_bitopro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
58010
58072
  * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
58011
58073
  * @param {string} symbol unified market symbol of the market orders were made in
58012
58074
  * @param {int} [since] the earliest time in ms to fetch orders for
58013
- * @param {int} [limit] the maximum number of orde structures to retrieve
58075
+ * @param {int} [limit] the maximum number of order structures to retrieve
58014
58076
  * @param {object} [params] extra parameters specific to the exchange API endpoint
58015
58077
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
58016
58078
  */
@@ -60293,7 +60355,7 @@ class bitpanda extends _abstract_bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
60293
60355
  * @description fetches information on multiple closed orders made by the user
60294
60356
  * @param {string} symbol unified market symbol of the market orders were made in
60295
60357
  * @param {int} [since] the earliest time in ms to fetch orders for
60296
- * @param {int} [limit] the maximum number of orde structures to retrieve
60358
+ * @param {int} [limit] the maximum number of order structures to retrieve
60297
60359
  * @param {object} [params] extra parameters specific to the exchange API endpoint
60298
60360
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
60299
60361
  */
@@ -68946,7 +69008,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
68946
69008
  * @description fetches information on multiple orders made by the user
68947
69009
  * @param {string} symbol unified market symbol of the market orders were made in
68948
69010
  * @param {int} [since] the earliest time in ms to fetch orders for
68949
- * @param {int} [limit] the maximum number of orde structures to retrieve
69011
+ * @param {int} [limit] the maximum number of order structures to retrieve
68950
69012
  * @param {object} [params] extra parameters specific to the exchange API endpoint
68951
69013
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
68952
69014
  * @param {int} [params.until] the latest time in ms to fetch entries for
@@ -70771,7 +70833,7 @@ class blockchaincom extends _abstract_blockchaincom_js__WEBPACK_IMPORTED_MODULE_
70771
70833
  * @description fetches information on multiple closed orders made by the user
70772
70834
  * @param {string} symbol unified market symbol of the market orders were made in
70773
70835
  * @param {int} [since] the earliest time in ms to fetch orders for
70774
- * @param {int} [limit] the maximum number of orde structures to retrieve
70836
+ * @param {int} [limit] the maximum number of order structures to retrieve
70775
70837
  * @param {object} [params] extra parameters specific to the exchange API endpoint
70776
70838
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
70777
70839
  */
@@ -72048,7 +72110,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
72048
72110
  * @description fetches information on multiple orders made by the user
72049
72111
  * @param {string} symbol unified market symbol of the market orders were made in
72050
72112
  * @param {int} [since] the earliest time in ms to fetch orders for
72051
- * @param {int} [limit] the maximum number of orde structures to retrieve
72113
+ * @param {int} [limit] the maximum number of order structures to retrieve
72052
72114
  * @param {object} [params] extra parameters specific to the exchange API endpoint
72053
72115
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
72054
72116
  */
@@ -72088,7 +72150,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
72088
72150
  * @description fetches information on multiple closed orders made by the user
72089
72151
  * @param {string} symbol unified market symbol of the market orders were made in
72090
72152
  * @param {int} [since] the earliest time in ms to fetch orders for
72091
- * @param {int} [limit] the maximum number of orde structures to retrieve
72153
+ * @param {int} [limit] the maximum number of order structures to retrieve
72092
72154
  * @param {object} [params] extra parameters specific to the exchange API endpoint
72093
72155
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
72094
72156
  */
@@ -72677,7 +72739,7 @@ class btcbox extends _abstract_btcbox_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
72677
72739
  * @description fetches information on multiple orders made by the user
72678
72740
  * @param {string} symbol unified market symbol of the market orders were made in
72679
72741
  * @param {int} [since] the earliest time in ms to fetch orders for
72680
- * @param {int} [limit] the maximum number of orde structures to retrieve
72742
+ * @param {int} [limit] the maximum number of order structures to retrieve
72681
72743
  * @param {object} [params] extra parameters specific to the exchange API endpoint
72682
72744
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
72683
72745
  */
@@ -73789,7 +73851,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
73789
73851
  * @description fetches information on multiple orders made by the user
73790
73852
  * @param {string} symbol unified market symbol of the market orders were made in
73791
73853
  * @param {int} [since] the earliest time in ms to fetch orders for
73792
- * @param {int} [limit] the maximum number of orde structures to retrieve
73854
+ * @param {int} [limit] the maximum number of order structures to retrieve
73793
73855
  * @param {object} [params] extra parameters specific to the exchange API endpoint
73794
73856
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
73795
73857
  */
@@ -73832,7 +73894,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
73832
73894
  * @description fetches information on multiple closed orders made by the user
73833
73895
  * @param {string} symbol unified market symbol of the market orders were made in
73834
73896
  * @param {int} [since] the earliest time in ms to fetch orders for
73835
- * @param {int} [limit] the maximum number of orde structures to retrieve
73897
+ * @param {int} [limit] the maximum number of order structures to retrieve
73836
73898
  * @param {object} [params] extra parameters specific to the exchange API endpoint
73837
73899
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
73838
73900
  */
@@ -74742,7 +74804,7 @@ class btcturk extends _abstract_btcturk_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
74742
74804
  * @description fetches information on multiple orders made by the user
74743
74805
  * @param {string} symbol unified market symbol of the market orders were made in
74744
74806
  * @param {int} [since] the earliest time in ms to fetch orders for
74745
- * @param {int} [limit] the maximum number of orde structures to retrieve
74807
+ * @param {int} [limit] the maximum number of order structures to retrieve
74746
74808
  * @param {object} [params] extra parameters specific to the exchange API endpoint
74747
74809
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
74748
74810
  */
@@ -79387,7 +79449,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
79387
79449
  * @see https://bybit-exchange.github.io/docs/v5/order/order-list
79388
79450
  * @param {string} symbol unified market symbol of the market orders were made in
79389
79451
  * @param {int} [since] the earliest time in ms to fetch orders for
79390
- * @param {int} [limit] the maximum number of orde structures to retrieve
79452
+ * @param {int} [limit] the maximum number of order structures to retrieve
79391
79453
  * @param {object} [params] extra parameters specific to the exchange API endpoint
79392
79454
  * @param {boolean} [params.stop] true if stop order
79393
79455
  * @param {string} [params.type] market type, ['swap', 'option', 'spot']
@@ -79503,7 +79565,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
79503
79565
  * @see https://bybit-exchange.github.io/docs/v5/order/order-list
79504
79566
  * @param {string} symbol unified market symbol of the market orders were made in
79505
79567
  * @param {int} [since] the earliest time in ms to fetch orders for
79506
- * @param {int} [limit] the maximum number of orde structures to retrieve
79568
+ * @param {int} [limit] the maximum number of order structures to retrieve
79507
79569
  * @param {object} [params] extra parameters specific to the exchange API endpoint
79508
79570
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
79509
79571
  */
@@ -83917,7 +83979,7 @@ class cex extends _abstract_cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
83917
83979
  * @description fetches information on multiple orders made by the user
83918
83980
  * @param {string} symbol unified market symbol of the market orders were made in
83919
83981
  * @param {int} [since] the earliest time in ms to fetch orders for
83920
- * @param {int} [limit] the maximum number of orde structures to retrieve
83982
+ * @param {int} [limit] the maximum number of order structures to retrieve
83921
83983
  * @param {object} [params] extra parameters specific to the exchange API endpoint
83922
83984
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
83923
83985
  */
@@ -88707,7 +88769,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
88707
88769
  * @description fetches information on multiple orders made by the user
88708
88770
  * @param {string} symbol unified market symbol of the market orders were made in
88709
88771
  * @param {int} [since] the earliest time in ms to fetch orders for
88710
- * @param {int} [limit] the maximum number of orde structures to retrieve
88772
+ * @param {int} [limit] the maximum number of order structures to retrieve
88711
88773
  * @param {object} [params] extra parameters specific to the exchange API endpoint
88712
88774
  * @param {int} [params.until] the latest time in ms to fetch open orders for
88713
88775
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -88765,7 +88827,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
88765
88827
  * @description fetches information on multiple closed orders made by the user
88766
88828
  * @param {string} symbol unified market symbol of the market orders were made in
88767
88829
  * @param {int} [since] the earliest time in ms to fetch orders for
88768
- * @param {int} [limit] the maximum number of orde structures to retrieve
88830
+ * @param {int} [limit] the maximum number of order structures to retrieve
88769
88831
  * @param {object} [params] extra parameters specific to the exchange API endpoint
88770
88832
  * @param {int} [params.until] the latest time in ms to fetch open orders for
88771
88833
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -93493,7 +93555,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
93493
93555
  * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade012_finished_order
93494
93556
  * @param {string} symbol unified market symbol of the market orders were made in
93495
93557
  * @param {int} [since] the earliest time in ms to fetch orders for
93496
- * @param {int} [limit] the maximum number of orde structures to retrieve
93558
+ * @param {int} [limit] the maximum number of order structures to retrieve
93497
93559
  * @param {object} [params] extra parameters specific to the exchange API endpoint
93498
93560
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
93499
93561
  */
@@ -96907,7 +96969,7 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
96907
96969
  * @see https://trade-docs.coinlist.co/?javascript--nodejs#list-orders
96908
96970
  * @param {string} symbol unified market symbol of the market orders were made in
96909
96971
  * @param {int} [since] the earliest time in ms to fetch orders for
96910
- * @param {int} [limit] the maximum number of orde structures to retrieve (default 200, max 500)
96972
+ * @param {int} [limit] the maximum number of order structures to retrieve (default 200, max 500)
96911
96973
  * @param {object} [params] extra parameters specific to the exchange API endpoint
96912
96974
  * @param {int} [params.until] the latest time in ms to fetch entries for
96913
96975
  * @param {string|string[]} [params.status] the status of the order - 'accepted', 'done', 'canceled', 'rejected', 'pending' (default [ 'accepted', 'done', 'canceled', 'rejected', 'pending' ])
@@ -113002,7 +113064,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
113002
113064
  * @description fetches information on multiple closed orders made by the user
113003
113065
  * @param {string} symbol unified market symbol of the market orders were made in
113004
113066
  * @param {int} [since] the earliest time in ms to fetch orders for
113005
- * @param {int} [limit] the maximum number of orde structures to retrieve
113067
+ * @param {int} [limit] the maximum number of order structures to retrieve
113006
113068
  * @param {object} [params] extra parameters specific to the exchange API endpoint
113007
113069
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
113008
113070
  */
@@ -116541,7 +116603,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
116541
116603
  * @see https://docs.digifinex.com/en-ww/swap/v2/rest.html#historyorder
116542
116604
  * @param {string} symbol unified market symbol of the market orders were made in
116543
116605
  * @param {int} [since] the earliest time in ms to fetch orders for
116544
- * @param {int} [limit] the maximum number of orde structures to retrieve
116606
+ * @param {int} [limit] the maximum number of order structures to retrieve
116545
116607
  * @param {object} [params] extra parameters specific to the exchange API endpoint
116546
116608
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
116547
116609
  */
@@ -125984,7 +126046,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
125984
126046
  * @see https://www.gate.io/docs/developers/apiv4/en/#list-options-orders
125985
126047
  * @param {string} symbol unified market symbol of the market orders were made in
125986
126048
  * @param {int} [since] the earliest time in ms to fetch orders for
125987
- * @param {int} [limit] the maximum number of orde structures to retrieve
126049
+ * @param {int} [limit] the maximum number of order structures to retrieve
125988
126050
  * @param {object} [params] extra parameters specific to the exchange API endpoint
125989
126051
  * @param {bool} [params.stop] true for fetching stop orders
125990
126052
  * @param {string} [params.type] spot, swap or future, if not provided this.options['defaultType'] is used
@@ -132030,7 +132092,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
132030
132092
  * @see https://api.hitbtc.com/#margin-orders-history
132031
132093
  * @param {string} symbol unified market symbol of the market orders were made in
132032
132094
  * @param {int} [since] the earliest time in ms to fetch orders for
132033
- * @param {int} [limit] the maximum number of orde structures to retrieve
132095
+ * @param {int} [limit] the maximum number of order structures to retrieve
132034
132096
  * @param {object} [params] extra parameters specific to the exchange API endpoint
132035
132097
  * @param {string} [params.marginMode] 'cross' or 'isolated' only 'isolated' is supported
132036
132098
  * @param {bool} [params.margin] true for fetching margin orders
@@ -134836,7 +134898,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
134836
134898
  * @description fetches information on multiple closed orders made by the user
134837
134899
  * @param {string} symbol unified market symbol of the market orders were made in
134838
134900
  * @param {int} [since] the earliest time in ms to fetch orders for
134839
- * @param {int} [limit] the maximum number of orde structures to retrieve
134901
+ * @param {int} [limit] the maximum number of order structures to retrieve
134840
134902
  * @param {object} [params] extra parameters specific to the exchange API endpoint
134841
134903
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
134842
134904
  */
@@ -134894,7 +134956,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
134894
134956
  * @description fetches information on multiple orders made by the user
134895
134957
  * @param {string} symbol unified market symbol of the market orders were made in
134896
134958
  * @param {int} [since] the earliest time in ms to fetch orders for
134897
- * @param {int} [limit] the maximum number of orde structures to retrieve
134959
+ * @param {int} [limit] the maximum number of order structures to retrieve
134898
134960
  * @param {object} [params] extra parameters specific to the exchange API endpoint
134899
134961
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
134900
134962
  */
@@ -139932,7 +139994,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
139932
139994
  * @description fetches information on multiple closed orders made by the user
139933
139995
  * @param {string} symbol unified market symbol of the market orders were made in
139934
139996
  * @param {int} [since] the earliest time in ms to fetch orders for
139935
- * @param {int} [limit] the maximum number of orde structures to retrieve
139997
+ * @param {int} [limit] the maximum number of order structures to retrieve
139936
139998
  * @param {object} [params] extra parameters specific to the exchange API endpoint
139937
139999
  * @param {int} [params.until] the latest time in ms to fetch entries for
139938
140000
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
@@ -145822,7 +145884,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
145822
145884
  * @description fetches information on multiple orders made by the user
145823
145885
  * @param {string} symbol unified market symbol of the market orders were made in
145824
145886
  * @param {int} [since] the earliest time in ms to fetch orders for
145825
- * @param {int} [limit] the maximum number of orde structures to retrieve
145887
+ * @param {int} [limit] the maximum number of order structures to retrieve
145826
145888
  * @param {object} [params] extra parameters specific to the exchange API endpoint
145827
145889
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
145828
145890
  */
@@ -145855,7 +145917,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
145855
145917
  * @description fetches information on multiple closed orders made by the user
145856
145918
  * @param {string} symbol unified market symbol of the market orders were made in
145857
145919
  * @param {int} [since] the earliest time in ms to fetch orders for
145858
- * @param {int} [limit] the maximum number of orde structures to retrieve
145920
+ * @param {int} [limit] the maximum number of order structures to retrieve
145859
145921
  * @param {object} [params] extra parameters specific to the exchange API endpoint
145860
145922
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
145861
145923
  */
@@ -147505,7 +147567,7 @@ class idex extends _abstract_idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
147505
147567
  * @description fetches information on multiple closed orders made by the user
147506
147568
  * @param {string} symbol unified market symbol of the market orders were made in
147507
147569
  * @param {int} [since] the earliest time in ms to fetch orders for
147508
- * @param {int} [limit] the maximum number of orde structures to retrieve
147570
+ * @param {int} [limit] the maximum number of order structures to retrieve
147509
147571
  * @param {object} [params] extra parameters specific to the exchange API endpoint
147510
147572
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
147511
147573
  */
@@ -148869,7 +148931,7 @@ class independentreserve extends _abstract_independentreserve_js__WEBPACK_IMPORT
148869
148931
  * @description fetches information on multiple closed orders made by the user
148870
148932
  * @param {string} symbol unified market symbol of the market orders were made in
148871
148933
  * @param {int} [since] the earliest time in ms to fetch orders for
148872
- * @param {int} [limit] the maximum number of orde structures to retrieve
148934
+ * @param {int} [limit] the maximum number of order structures to retrieve
148873
148935
  * @param {object} [params] extra parameters specific to the exchange API endpoint
148874
148936
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
148875
148937
  */
@@ -152285,7 +152347,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
152285
152347
  * @see https://docs.kraken.com/rest/#tag/Account-Data/operation/getClosedOrders
152286
152348
  * @param {string} symbol unified market symbol of the market orders were made in
152287
152349
  * @param {int} [since] the earliest time in ms to fetch orders for
152288
- * @param {int} [limit] the maximum number of orde structures to retrieve
152350
+ * @param {int} [limit] the maximum number of order structures to retrieve
152289
152351
  * @param {object} [params] extra parameters specific to the exchange API endpoint
152290
152352
  * @param {int} [params.until] timestamp in ms of the latest entry
152291
152353
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -155526,15 +155588,15 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
155526
155588
  'closeAllPositions': false,
155527
155589
  'closePosition': false,
155528
155590
  'createDepositAddress': true,
155591
+ 'createMarketBuyOrderWithCost': true,
155592
+ 'createMarketOrderWithCost': true,
155593
+ 'createMarketSellOrderWithCost': true,
155529
155594
  'createOrder': true,
155530
155595
  'createOrders': true,
155531
155596
  'createPostOnlyOrder': true,
155532
155597
  'createStopLimitOrder': true,
155533
155598
  'createStopMarketOrder': true,
155534
155599
  'createStopOrder': true,
155535
- 'createMarketBuyOrderWithCost': true,
155536
- 'createMarketOrderWithCost': true,
155537
- 'createMarketSellOrderWithCost': true,
155538
155600
  'editOrder': true,
155539
155601
  'fetchAccounts': true,
155540
155602
  'fetchBalance': true,
@@ -157921,7 +157983,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
157921
157983
  * @see https://docs.kucoin.com/spot-hf/#obtain-list-of-filled-hf-orders
157922
157984
  * @param {string} symbol unified market symbol of the market orders were made in
157923
157985
  * @param {int} [since] the earliest time in ms to fetch orders for
157924
- * @param {int} [limit] the maximum number of orde structures to retrieve
157986
+ * @param {int} [limit] the maximum number of order structures to retrieve
157925
157987
  * @param {object} [params] extra parameters specific to the exchange API endpoint
157926
157988
  * @param {int} [params.till] end time in ms
157927
157989
  * @param {string} [params.side] buy or sell
@@ -161528,7 +161590,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
161528
161590
  * @see https://docs.kucoin.com/futures/#get-order-list
161529
161591
  * @param {string} symbol unified market symbol of the market orders were made in
161530
161592
  * @param {int} [since] the earliest time in ms to fetch orders for
161531
- * @param {int} [limit] the maximum number of orde structures to retrieve
161593
+ * @param {int} [limit] the maximum number of order structures to retrieve
161532
161594
  * @param {object} [params] extra parameters specific to the exchange API endpoint
161533
161595
  * @param {int} [params.till] end time in ms
161534
161596
  * @param {string} [params.side] buy or sell
@@ -163708,7 +163770,7 @@ class kuna extends _abstract_kuna_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
163708
163770
  * @see https://docs.kuna.io/docs/get-private-orders-history
163709
163771
  * @param {string} symbol unified market symbol of the market orders were made in
163710
163772
  * @param {int} [since] the earliest time in ms to fetch orders for
163711
- * @param {int} [limit] the maximum number of orde structures to retrieve
163773
+ * @param {int} [limit] the maximum number of order structures to retrieve
163712
163774
  * @param {object} [params] extra parameters specific to the exchange API endpoint
163713
163775
  * @param {int} [params.until] the latest time in ms to fetch orders for
163714
163776
  *
@@ -165539,7 +165601,7 @@ class latoken extends _abstract_latoken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
165539
165601
  * @see https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair // stop
165540
165602
  * @param {string} symbol unified market symbol of the market orders were made in
165541
165603
  * @param {int} [since] the earliest time in ms to fetch orders for
165542
- * @param {int} [limit] the maximum number of orde structures to retrieve
165604
+ * @param {int} [limit] the maximum number of order structures to retrieve
165543
165605
  * @param {object} [params] extra parameters specific to the exchange API endpoint
165544
165606
  * @param {boolean} [params.trigger] true if fetching trigger orders
165545
165607
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -169447,7 +169509,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
169447
169509
  * @description fetches information on multiple orders made by the user
169448
169510
  * @param {string} symbol unified market symbol of the market orders were made in
169449
169511
  * @param {int} [since] the earliest time in ms to fetch orders for
169450
- * @param {int} [limit] the maximum number of orde structures to retrieve
169512
+ * @param {int} [limit] the maximum number of order structures to retrieve
169451
169513
  * @param {object} [params] extra parameters specific to the exchange API endpoint
169452
169514
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
169453
169515
  */
@@ -169473,7 +169535,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
169473
169535
  * @description fetches information on multiple closed orders made by the user
169474
169536
  * @param {string} symbol unified market symbol of the market orders were made in
169475
169537
  * @param {int} [since] the earliest time in ms to fetch orders for
169476
- * @param {int} [limit] the maximum number of orde structures to retrieve
169538
+ * @param {int} [limit] the maximum number of order structures to retrieve
169477
169539
  * @param {object} [params] extra parameters specific to the exchange API endpoint
169478
169540
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
169479
169541
  */
@@ -171001,7 +171063,7 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
171001
171063
  * @description fetches information on multiple closed orders made by the user
171002
171064
  * @param {string} symbol unified market symbol of the market orders were made in
171003
171065
  * @param {int} [since] the earliest time in ms to fetch orders for
171004
- * @param {int} [limit] the maximum number of orde structures to retrieve
171066
+ * @param {int} [limit] the maximum number of order structures to retrieve
171005
171067
  * @param {object} [params] extra parameters specific to the exchange API endpoint
171006
171068
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
171007
171069
  */
@@ -174748,7 +174810,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
174748
174810
  * @description fetches information on multiple orders made by the user
174749
174811
  * @param {string} symbol unified market symbol of the market orders were made in
174750
174812
  * @param {int} [since] the earliest time in ms to fetch orders for
174751
- * @param {int} [limit] the maximum number of orde structures to retrieve
174813
+ * @param {int} [limit] the maximum number of order structures to retrieve
174752
174814
  * @param {object} [params] extra parameters specific to the exchange API endpoint
174753
174815
  * @param {string} [params.marginMode] only 'isolated' is supported, for spot-margin trading
174754
174816
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -175071,7 +175133,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
175071
175133
  * @description fetches information on multiple closed orders made by the user
175072
175134
  * @param {string} symbol unified market symbol of the market orders were made in
175073
175135
  * @param {int} [since] the earliest time in ms to fetch orders for
175074
- * @param {int} [limit] the maximum number of orde structures to retrieve
175136
+ * @param {int} [limit] the maximum number of order structures to retrieve
175075
175137
  * @param {object} [params] extra parameters specific to the exchange API endpoint
175076
175138
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
175077
175139
  */
@@ -179336,7 +179398,7 @@ class ndax extends _abstract_ndax_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
179336
179398
  * @description fetches information on multiple orders made by the user
179337
179399
  * @param {string} symbol unified market symbol of the market orders were made in
179338
179400
  * @param {int} [since] the earliest time in ms to fetch orders for
179339
- * @param {int} [limit] the maximum number of orde structures to retrieve
179401
+ * @param {int} [limit] the maximum number of order structures to retrieve
179340
179402
  * @param {object} [params] extra parameters specific to the exchange API endpoint
179341
179403
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
179342
179404
  */
@@ -181019,7 +181081,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
181019
181081
  * @see https://doc.novadax.com/en-US/#get-order-history
181020
181082
  * @param {string} symbol unified market symbol of the market orders were made in
181021
181083
  * @param {int} [since] the earliest time in ms to fetch orders for
181022
- * @param {int} [limit] the maximum number of orde structures to retrieve
181084
+ * @param {int} [limit] the maximum number of order structures to retrieve
181023
181085
  * @param {object} [params] extra parameters specific to the exchange API endpoint
181024
181086
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
181025
181087
  */
@@ -181096,7 +181158,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
181096
181158
  * @see https://doc.novadax.com/en-US/#get-order-history
181097
181159
  * @param {string} symbol unified market symbol of the market orders were made in
181098
181160
  * @param {int} [since] the earliest time in ms to fetch orders for
181099
- * @param {int} [limit] the maximum number of orde structures to retrieve
181161
+ * @param {int} [limit] the maximum number of order structures to retrieve
181100
181162
  * @param {object} [params] extra parameters specific to the exchange API endpoint
181101
181163
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
181102
181164
  */
@@ -182385,7 +182447,7 @@ class oceanex extends _abstract_oceanex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
182385
182447
  * @see https://api.oceanex.pro/doc/v1/#order-status-get
182386
182448
  * @param {string} symbol unified market symbol of the market orders were made in
182387
182449
  * @param {int} [since] the earliest time in ms to fetch orders for
182388
- * @param {int} [limit] the maximum number of orde structures to retrieve
182450
+ * @param {int} [limit] the maximum number of order structures to retrieve
182389
182451
  * @param {object} [params] extra parameters specific to the exchange API endpoint
182390
182452
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
182391
182453
  */
@@ -184714,7 +184776,7 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
184714
184776
  * @description fetches information on multiple closed orders made by the user
184715
184777
  * @param {string} symbol unified market symbol of the market orders were made in
184716
184778
  * @param {int} [since] the earliest time in ms to fetch orders for
184717
- * @param {int} [limit] the maximum number of orde structures to retrieve
184779
+ * @param {int} [limit] the maximum number of order structures to retrieve
184718
184780
  * @param {object} [params] extra parameters specific to the exchange API endpoint
184719
184781
  * @param {bool} [params.stop] True if fetching trigger or conditional orders
184720
184782
  * @param {string} [params.ordType] "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
@@ -189684,7 +189746,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
189684
189746
  * @see https://www.okx.com/docs-v5/en/#order-book-trading-algo-trading-get-algo-order-history
189685
189747
  * @param {string} symbol unified market symbol of the market orders were made in
189686
189748
  * @param {int} [since] the earliest time in ms to fetch orders for
189687
- * @param {int} [limit] the maximum number of orde structures to retrieve
189749
+ * @param {int} [limit] the maximum number of order structures to retrieve
189688
189750
  * @param {object} [params] extra parameters specific to the exchange API endpoint
189689
189751
  * @param {bool} [params.stop] True if fetching trigger or conditional orders
189690
189752
  * @param {string} [params.ordType] "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
@@ -199218,7 +199280,7 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
199218
199280
  * @name phemex#setLeverage
199219
199281
  * @description set the level of leverage for a market
199220
199282
  * @see https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#set-leverage
199221
- * @param {float} leverage the rate of leverage
199283
+ * @param {float} leverage the rate of leverage, 100 > leverage > -100 excluding numbers between -1 to 1
199222
199284
  * @param {string} symbol unified market symbol
199223
199285
  * @param {object} [params] extra parameters specific to the exchange API endpoint
199224
199286
  * @param {bool} [params.hedged] set to true if hedged position mode is enabled (by default long and short leverage are set to the same value)
@@ -199231,8 +199293,8 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
199231
199293
  if (symbol === undefined) {
199232
199294
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
199233
199295
  }
199234
- if ((leverage < 1) || (leverage > 100)) {
199235
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' setLeverage() leverage should be between 1 and 100');
199296
+ if ((leverage < -100) || (leverage > 100)) {
199297
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' setLeverage() leverage should be between -100 and 100');
199236
199298
  }
199237
199299
  await this.loadMarkets();
199238
199300
  const isHedged = this.safeValue(params, 'hedged', false);
@@ -203386,7 +203448,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
203386
203448
  * @see https://futures-docs.poloniex.com/#get-untriggered-stop-order-list
203387
203449
  * @param {string} symbol unified market symbol of the market orders were made in
203388
203450
  * @param {int} [since] the earliest time in ms to fetch orders for
203389
- * @param {int} [limit] the maximum number of orde structures to retrieve
203451
+ * @param {int} [limit] the maximum number of order structures to retrieve
203390
203452
  * @param {object} [params] extra parameters specific to the exchange API endpoint
203391
203453
  * @param {int} [params.till] end time in ms
203392
203454
  * @param {string} [params.side] buy or sell
@@ -204156,7 +204218,7 @@ class alpaca extends _alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
204156
204218
  * @description watches information on multiple orders made by the user
204157
204219
  * @param {string} symbol unified market symbol of the market orders were made in
204158
204220
  * @param {int} [since] the earliest time in ms to fetch orders for
204159
- * @param {int} [limit] the maximum number of orde structures to retrieve
204221
+ * @param {int} [limit] the maximum number of order structures to retrieve
204160
204222
  * @param {object} [params] extra parameters specific to the exchange API endpoint
204161
204223
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
204162
204224
  */
@@ -205009,7 +205071,7 @@ class ascendex extends _ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
205009
205071
  * @description watches information on multiple orders made by the user
205010
205072
  * @param {string} symbol unified market symbol of the market orders were made in
205011
205073
  * @param {int} [since] the earliest time in ms to fetch orders for
205012
- * @param {int} [limit] the maximum number of orde structures to retrieve
205074
+ * @param {int} [limit] the maximum number of order structures to retrieve
205013
205075
  * @param {object} [params] extra parameters specific to the exchange API endpoint
205014
205076
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
205015
205077
  */
@@ -207470,7 +207532,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
207470
207532
  * @description watches information on multiple orders made by the user
207471
207533
  * @param {string} symbol unified market symbol of the market orders were made in
207472
207534
  * @param {int} [since] the earliest time in ms to fetch orders for
207473
- * @param {int} [limit] the maximum number of orde structures to retrieve
207535
+ * @param {int} [limit] the maximum number of order structures to retrieve
207474
207536
  * @param {object} [params] extra parameters specific to the exchange API endpoint
207475
207537
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
207476
207538
  */
@@ -208026,7 +208088,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
208026
208088
  * @description watches information on multiple trades made by the user
208027
208089
  * @param {string} symbol unified market symbol of the market orders were made in
208028
208090
  * @param {int} [since] the earliest time in ms to fetch orders for
208029
- * @param {int} [limit] the maximum number of orde structures to retrieve
208091
+ * @param {int} [limit] the maximum number of order structures to retrieve
208030
208092
  * @param {object} [params] extra parameters specific to the exchange API endpoint
208031
208093
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
208032
208094
  */
@@ -208498,7 +208560,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208498
208560
  * @see https://bingx-api.github.io/docs/#/swapV2/socket/market.html#Subscribe%20the%20Latest%20Trade%20Detail
208499
208561
  * @param {string} symbol unified market symbol of the market orders were made in
208500
208562
  * @param {int} [since] the earliest time in ms to fetch orders for
208501
- * @param {int} [limit] the maximum number of orde structures to retrieve
208563
+ * @param {int} [limit] the maximum number of order structures to retrieve
208502
208564
  * @param {object} [params] extra parameters specific to the exchange API endpoint
208503
208565
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
208504
208566
  */
@@ -208587,7 +208649,8 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208587
208649
  const data = this.safeValue(message, 'data', []);
208588
208650
  const messageHash = this.safeString(message, 'dataType');
208589
208651
  const marketId = messageHash.split('@')[0];
208590
- const marketType = client.url.indexOf('swap') >= 0 ? 'swap' : 'spot';
208652
+ const isSwap = client.url.indexOf('swap') >= 0;
208653
+ const marketType = isSwap ? 'swap' : 'spot';
208591
208654
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
208592
208655
  const symbol = market['symbol'];
208593
208656
  let trades = undefined;
@@ -208702,7 +208765,8 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208702
208765
  const data = this.safeValue(message, 'data', []);
208703
208766
  const messageHash = this.safeString(message, 'dataType');
208704
208767
  const marketId = messageHash.split('@')[0];
208705
- const marketType = client.url.indexOf('swap') >= 0 ? 'swap' : 'spot';
208768
+ const isSwap = client.url.indexOf('swap') >= 0;
208769
+ const marketType = isSwap ? 'swap' : 'spot';
208706
208770
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
208707
208771
  const symbol = market['symbol'];
208708
208772
  let orderbook = this.safeValue(this.orderbooks, symbol);
@@ -208726,8 +208790,11 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208726
208790
  // "t": 1696687440000
208727
208791
  // }
208728
208792
  //
208793
+ // for spot, opening-time (t) is used instead of closing-time (T), to be compatible with fetchOHLCV
208794
+ // for swap, (T) is the opening time
208795
+ const timestamp = (market['spot']) ? 't' : 'T';
208729
208796
  return [
208730
- this.safeInteger(ohlcv, 't'),
208797
+ this.safeInteger(ohlcv, timestamp),
208731
208798
  this.safeNumber(ohlcv, 'o'),
208732
208799
  this.safeNumber(ohlcv, 'h'),
208733
208800
  this.safeNumber(ohlcv, 'l'),
@@ -208791,7 +208858,8 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208791
208858
  const messageHash = this.safeString(message, 'dataType');
208792
208859
  const timeframeId = messageHash.split('_')[1];
208793
208860
  const marketId = messageHash.split('@')[0];
208794
- const marketType = client.url.indexOf('swap') >= 0 ? 'swap' : 'spot';
208861
+ const isSwap = client.url.indexOf('swap') >= 0;
208862
+ const marketType = isSwap ? 'swap' : 'spot';
208795
208863
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
208796
208864
  const symbol = market['symbol'];
208797
208865
  this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
@@ -208855,7 +208923,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208855
208923
  * @description watches information on multiple orders made by the user
208856
208924
  * @param {string} symbol unified market symbol of the market orders were made in
208857
208925
  * @param {int} [since] the earliest time in ms to fetch orders for
208858
- * @param {int} [limit] the maximum number of orde structures to retrieve
208926
+ * @param {int} [limit] the maximum number of order structures to retrieve
208859
208927
  * @param {object} [params] extra parameters specific to the exchange API endpoint
208860
208928
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
208861
208929
  */
@@ -209857,7 +209925,7 @@ class bitfinex extends _bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
209857
209925
  * @description watches information on multiple orders made by the user
209858
209926
  * @param {string} symbol unified market symbol of the market orders were made in
209859
209927
  * @param {int} [since] the earliest time in ms to fetch orders for
209860
- * @param {int} [limit] the maximum number of orde structures to retrieve
209928
+ * @param {int} [limit] the maximum number of order structures to retrieve
209861
209929
  * @param {object} [params] extra parameters specific to the exchange API endpoint
209862
209930
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
209863
209931
  */
@@ -210964,7 +211032,7 @@ class bitfinex2 extends _bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
210964
211032
  * @description watches information on multiple orders made by the user
210965
211033
  * @param {string} symbol unified market symbol of the market orders were made in
210966
211034
  * @param {int} [since] the earliest time in ms to fetch orders for
210967
- * @param {int} [limit] the maximum number of orde structures to retrieve
211035
+ * @param {int} [limit] the maximum number of order structures to retrieve
210968
211036
  * @param {object} [params] extra parameters specific to the exchange API endpoint
210969
211037
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
210970
211038
  */
@@ -213427,7 +213495,7 @@ class bitmart extends _bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
213427
213495
  const symbolKeys = Object.keys(symbols);
213428
213496
  for (let i = 0; i < symbolKeys.length; i++) {
213429
213497
  const symbol = symbolKeys[i];
213430
- const symbolSpecificMessageHash = messageHash + ':' + symbol;
213498
+ const symbolSpecificMessageHash = messageHash + '::' + symbol;
213431
213499
  client.resolve(newOrders, symbolSpecificMessageHash);
213432
213500
  }
213433
213501
  client.resolve(newOrders, messageHash);
@@ -215217,7 +215285,7 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
215217
215285
  * @description watches information on multiple orders made by the user
215218
215286
  * @param {string} symbol unified market symbol of the market orders were made in
215219
215287
  * @param {int} [since] the earliest time in ms to fetch orders for
215220
- * @param {int} [limit] the maximum number of orde structures to retrieve
215288
+ * @param {int} [limit] the maximum number of order structures to retrieve
215221
215289
  * @param {object} [params] extra parameters specific to the exchange API endpoint
215222
215290
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
215223
215291
  */
@@ -216758,7 +216826,7 @@ class bitpanda extends _bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
216758
216826
  * @description watches information on multiple orders made by the user
216759
216827
  * @param {string} symbol unified market symbol of the market orders were made in
216760
216828
  * @param {int} [since] the earliest time in ms to fetch orders for
216761
- * @param {int} [limit] the maximum number of orde structures to retrieve
216829
+ * @param {int} [limit] the maximum number of order structures to retrieve
216762
216830
  * @param {object} [params] extra parameters specific to the exchange API endpoint
216763
216831
  * @param {string} [params.channel] can listen to orders using ACCOUNT_HISTORY or TRADING
216764
216832
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -219832,7 +219900,7 @@ class blockchaincom extends _blockchaincom_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
219832
219900
  * @see https://exchange.blockchain.com/api/#mass-order-status-request-ordermassstatusrequest
219833
219901
  * @param {string} symbol unified market symbol of the market orders were made in
219834
219902
  * @param {int} [since] the earliest time in ms to fetch orders for
219835
- * @param {int} [limit] the maximum number of orde structures to retrieve
219903
+ * @param {int} [limit] the maximum number of order structures to retrieve
219836
219904
  * @param {object} [params] extra parameters specific to the exchange API endpoint
219837
219905
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
219838
219906
  */
@@ -221035,7 +221103,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
221035
221103
  * @see https://bybit-exchange.github.io/docs/v5/websocket/private/execution
221036
221104
  * @param {string} symbol unified market symbol of the market orders were made in
221037
221105
  * @param {int} [since] the earliest time in ms to fetch orders for
221038
- * @param {int} [limit] the maximum number of orde structures to retrieve
221106
+ * @param {int} [limit] the maximum number of order structures to retrieve
221039
221107
  * @param {object} [params] extra parameters specific to the exchange API endpoint
221040
221108
  * @param {boolean} [params.unifiedMargin] use unified margin account
221041
221109
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
@@ -221300,7 +221368,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
221300
221368
  * @see https://bybit-exchange.github.io/docs/v5/websocket/private/order
221301
221369
  * @param {string} symbol unified market symbol of the market orders were made in
221302
221370
  * @param {int} [since] the earliest time in ms to fetch orders for
221303
- * @param {int} [limit] the maximum number of orde structures to retrieve
221371
+ * @param {int} [limit] the maximum number of order structures to retrieve
221304
221372
  * @param {object} [params] extra parameters specific to the exchange API endpoint
221305
221373
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
221306
221374
  */
@@ -223892,7 +223960,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
223892
223960
  * @see https://docs.cloud.coinbase.com/advanced-trade-api/docs/ws-channels#user-channel
223893
223961
  * @param {string} [symbol] unified market symbol of the market orders were made in
223894
223962
  * @param {int} [since] the earliest time in ms to fetch orders for
223895
- * @param {int} [limit] the maximum number of orde structures to retrieve
223963
+ * @param {int} [limit] the maximum number of order structures to retrieve
223896
223964
  * @param {object} [params] extra parameters specific to the exchange API endpoint
223897
223965
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
223898
223966
  */
@@ -224460,7 +224528,7 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
224460
224528
  * @description watches information on multiple orders made by the user
224461
224529
  * @param {string} symbol unified market symbol of the market orders were made in
224462
224530
  * @param {int} [since] the earliest time in ms to fetch orders for
224463
- * @param {int} [limit] the maximum number of orde structures to retrieve
224531
+ * @param {int} [limit] the maximum number of order structures to retrieve
224464
224532
  * @param {object} [params] extra parameters specific to the exchange API endpoint
224465
224533
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
224466
224534
  */
@@ -228307,7 +228375,7 @@ class deribit extends _deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
228307
228375
  * @description watches information on multiple orders made by the user
228308
228376
  * @param {string} symbol unified market symbol of the market orders were made in
228309
228377
  * @param {int} [since] the earliest time in ms to fetch orders for
228310
- * @param {int} [limit] the maximum number of orde structures to retrieve
228378
+ * @param {int} [limit] the maximum number of order structures to retrieve
228311
228379
  * @param {object} [params] extra parameters specific to the exchange API endpoint
228312
228380
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
228313
228381
  */
@@ -230190,7 +230258,7 @@ class gate extends _gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
230190
230258
  * @description watches information on multiple orders made by the user
230191
230259
  * @param {string} symbol unified market symbol of the market orders were made in
230192
230260
  * @param {int} [since] the earliest time in ms to fetch orders for
230193
- * @param {int} [limit] the maximum number of orde structures to retrieve
230261
+ * @param {int} [limit] the maximum number of order structures to retrieve
230194
230262
  * @param {object} [params] extra parameters specific to the exchange API endpoint
230195
230263
  * @param {string} [params.type] spot, margin, swap, future, or option. Required if listening to all symbols.
230196
230264
  * @param {boolean} [params.isInverse] if future, listen to inverse or linear contracts
@@ -231023,7 +231091,7 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
231023
231091
  * @see https://docs.gemini.com/websocket-api/#order-events
231024
231092
  * @param {string} symbol unified market symbol of the market orders were made in
231025
231093
  * @param {int} [since] the earliest time in ms to fetch orders for
231026
- * @param {int} [limit] the maximum number of orde structures to retrieve
231094
+ * @param {int} [limit] the maximum number of order structures to retrieve
231027
231095
  * @param {object} [params] extra parameters specific to the exchange API endpoint
231028
231096
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
231029
231097
  */
@@ -232857,7 +232925,7 @@ class hollaex extends _hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
232857
232925
  * @description watches information on multiple orders made by the user
232858
232926
  * @param {string} symbol unified market symbol of the market orders were made in
232859
232927
  * @param {int} [since] the earliest time in ms to fetch orders for
232860
- * @param {int} [limit] the maximum number of orde structures to retrieve
232928
+ * @param {int} [limit] the maximum number of order structures to retrieve
232861
232929
  * @param {object} [params] extra parameters specific to the exchange API endpoint
232862
232930
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
232863
232931
  */
@@ -233979,7 +234047,7 @@ class htx extends _htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
233979
234047
  * @description watches information on multiple orders made by the user
233980
234048
  * @param {string} symbol unified market symbol of the market orders were made in
233981
234049
  * @param {int} [since] the earliest time in ms to fetch orders for
233982
- * @param {int} [limit] the maximum number of orde structures to retrieve
234050
+ * @param {int} [limit] the maximum number of order structures to retrieve
233983
234051
  * @param {object} [params] extra parameters specific to the exchange API endpoint
233984
234052
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
233985
234053
  */
@@ -236749,7 +236817,7 @@ class idex extends _idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
236749
236817
  * @description watches information on multiple orders made by the user
236750
236818
  * @param {string} symbol unified market symbol of the market orders were made in
236751
236819
  * @param {int} [since] the earliest time in ms to fetch orders for
236752
- * @param {int} [limit] the maximum number of orde structures to retrieve
236820
+ * @param {int} [limit] the maximum number of order structures to retrieve
236753
236821
  * @param {object} [params] extra parameters specific to the exchange API endpoint
236754
236822
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
236755
236823
  */
@@ -238241,7 +238309,7 @@ class kraken extends _kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
238241
238309
  * @param {string} symbol unified market symbol of the market orders were made in
238242
238310
  * @param {int} [since] the earliest time in ms to fetch orders for
238243
238311
  * @param {int} [limit] the maximum number of orde structures to retrieve
238244
- * @param {object} [params] extra parameters specific to the exchange API endpoint
238312
+ * @param {object} [params] maximum number of orderic to the exchange API endpoint
238245
238313
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
238246
238314
  */
238247
238315
  return await this.watchPrivate('openOrders', symbol, since, limit, params);
@@ -239001,7 +239069,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
239001
239069
  * @see https://docs.futures.kraken.com/#websocket-api-private-feeds-fills
239002
239070
  * @param {string} symbol unified market symbol of the market orders were made in
239003
239071
  * @param {int} [since] the earliest time in ms to fetch orders for
239004
- * @param {int} [limit] the maximum number of orde structures to retrieve
239072
+ * @param {int} [limit] the maximum number of order structures to retrieve
239005
239073
  * @param {object} [params] extra parameters specific to the exchange API endpoint
239006
239074
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
239007
239075
  */
@@ -241858,7 +241926,7 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
241858
241926
  * @see https://docs.kucoin.com/futures/#trade-orders-according-to-the-market
241859
241927
  * @param {string} symbol unified market symbol of the market orders were made in
241860
241928
  * @param {int} [since] the earliest time in ms to fetch orders for
241861
- * @param {int} [limit] the maximum number of orde structures to retrieve
241929
+ * @param {int} [limit] the maximum number of order structures to retrieve
241862
241930
  * @param {object} [params] extra parameters specific to the exchange API endpoint
241863
241931
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
241864
241932
  */
@@ -243234,7 +243302,7 @@ class mexc extends _mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
243234
243302
  * @description watches information on multiple orders made by the user
243235
243303
  * @param {string} symbol unified market symbol of the market orders were made in
243236
243304
  * @param {int} [since] the earliest time in ms to fetch orders for
243237
- * @param {int} [limit] the maximum number of orde structures to retrieve
243305
+ * @param {int} [limit] the maximum number of order structures to retrieve
243238
243306
  * @param {object} [params] extra parameters specific to the exchange API endpoint
243239
243307
  * @param {string|undefined} params.type the type of orders to retrieve, can be 'spot' or 'margin'
243240
243308
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -244316,7 +244384,7 @@ class okcoin extends _okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
244316
244384
  * @description watches information on multiple orders made by the user
244317
244385
  * @param {string} symbol unified market symbol of the market orders were made in
244318
244386
  * @param {int} [since] the earliest time in ms to fetch orders for
244319
- * @param {int} [limit] the maximum number of orde structures to retrieve
244387
+ * @param {int} [limit] the maximum number of order structures to retrieve
244320
244388
  * @param {object} [params] extra parameters specific to the exchange API endpoint
244321
244389
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
244322
244390
  */
@@ -245962,7 +246030,7 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
245962
246030
  * @description watches information on multiple orders made by the user
245963
246031
  * @param {string} [symbol] unified market symbol of the market orders were made in
245964
246032
  * @param {int} [since] the earliest time in ms to fetch orders for
245965
- * @param {int} [limit] the maximum number of orde structures to retrieve
246033
+ * @param {int} [limit] the maximum number of order structures to retrieve
245966
246034
  * @param {object} [params] extra parameters specific to the exchange API endpoint
245967
246035
  * @param {bool} [params.stop] true if fetching trigger or conditional orders
245968
246036
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -247451,7 +247519,7 @@ class phemex extends _phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
247451
247519
  * @description watches information on multiple orders made by the user
247452
247520
  * @param {string} symbol unified market symbol of the market orders were made in
247453
247521
  * @param {int} [since] the earliest time in ms to fetch orders for
247454
- * @param {int} [limit] the maximum number of orde structures to retrieve
247522
+ * @param {int} [limit] the maximum number of order structures to retrieve
247455
247523
  * @param {object} [params] extra parameters specific to the exchange API endpoint
247456
247524
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
247457
247525
  */
@@ -249645,7 +249713,7 @@ class poloniexfutures extends _poloniexfutures_js__WEBPACK_IMPORTED_MODULE_0__/*
249645
249713
  * @see https://futures-docs.poloniex.com/#private-messages
249646
249714
  * @param {string} symbol filter by unified market symbol of the market orders were made in
249647
249715
  * @param {int} [since] the earliest time in ms to fetch orders for
249648
- * @param {int} [limit] the maximum number of orde structures to retrieve
249716
+ * @param {int} [limit] the maximum number of order structures to retrieve
249649
249717
  * @param {object} [params] extra parameters specific to the exchange API endpoint
249650
249718
  * @param {string} [params.method] the method to use will default to /contractMarket/tradeOrders. Set to /contractMarket/advancedOrders to watch stop orders
249651
249719
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -254762,7 +254830,7 @@ class probit extends _abstract_probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
254762
254830
  * @description fetches information on multiple closed orders made by the user
254763
254831
  * @param {string} symbol unified market symbol of the market orders were made in
254764
254832
  * @param {int} [since] the earliest time in ms to fetch orders for
254765
- * @param {int} [limit] the maximum number of orde structures to retrieve
254833
+ * @param {int} [limit] the maximum number of order structures to retrieve
254766
254834
  * @param {object} [params] extra parameters specific to the exchange API endpoint
254767
254835
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
254768
254836
  */
@@ -265510,7 +265578,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
265510
265578
  * @description fetches information on multiple closed orders made by the user
265511
265579
  * @param {string} symbol unified market symbol of the market orders were made in
265512
265580
  * @param {int} [since] the earliest time in ms to fetch orders for
265513
- * @param {int} [limit] the maximum number of orde structures to retrieve
265581
+ * @param {int} [limit] the maximum number of order structures to retrieve
265514
265582
  * @param {object} [params] extra parameters specific to the exchange API endpoint
265515
265583
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
265516
265584
  */
@@ -267987,7 +268055,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
267987
268055
  * @description fetches information on multiple closed orders made by the user
267988
268056
  * @param {string} symbol unified market symbol of the market orders were made in
267989
268057
  * @param {int} [since] the earliest time in ms to fetch orders for
267990
- * @param {int} [limit] the maximum number of orde structures to retrieve
268058
+ * @param {int} [limit] the maximum number of order structures to retrieve
267991
268059
  * @param {object} [params] extra parameters specific to the exchange API endpoint
267992
268060
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
267993
268061
  */
@@ -270158,7 +270226,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
270158
270226
  * @description fetches information on multiple closed orders made by the user
270159
270227
  * @param {string} symbol unified market symbol of the market orders were made in
270160
270228
  * @param {int} [since] the earliest time in ms to fetch orders for
270161
- * @param {int} [limit] the maximum number of orde structures to retrieve
270229
+ * @param {int} [limit] the maximum number of order structures to retrieve
270162
270230
  * @param {object} [params] extra parameters specific to the exchange API endpoint
270163
270231
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
270164
270232
  */
@@ -272124,7 +272192,7 @@ class wavesexchange extends _abstract_wavesexchange_js__WEBPACK_IMPORTED_MODULE_
272124
272192
  * @description fetches information on multiple closed orders made by the user
272125
272193
  * @param {string} symbol unified market symbol of the market orders were made in
272126
272194
  * @param {int} [since] the earliest time in ms to fetch orders for
272127
- * @param {int} [limit] the maximum number of orde structures to retrieve
272195
+ * @param {int} [limit] the maximum number of order structures to retrieve
272128
272196
  * @param {object} [params] extra parameters specific to the exchange API endpoint
272129
272197
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
272130
272198
  */
@@ -275478,7 +275546,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
275478
275546
  * @see https://docs.whitebit.com/private/http-trade-v4/#query-executed-orders
275479
275547
  * @param {string} symbol unified market symbol of the market orders were made in
275480
275548
  * @param {int} [since] the earliest time in ms to fetch orders for
275481
- * @param {int} [limit] the maximum number of orde structures to retrieve
275549
+ * @param {int} [limit] the maximum number of order structures to retrieve
275482
275550
  * @param {object} [params] extra parameters specific to the exchange API endpoint
275483
275551
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
275484
275552
  */
@@ -277580,7 +277648,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
277580
277648
  * @description fetches information on multiple orders made by the user
277581
277649
  * @param {string} symbol unified market symbol of the market orders were made in
277582
277650
  * @param {int} [since] the earliest time in ms to fetch orders for
277583
- * @param {int} [limit] the maximum number of orde structures to retrieve
277651
+ * @param {int} [limit] the maximum number of order structures to retrieve
277584
277652
  * @param {object} [params] extra parameters specific to the exchange API endpoint
277585
277653
  * @param {boolean} [params.stop] whether the order is a stop/algo order
277586
277654
  * @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
@@ -280377,752 +280445,6 @@ class yobit extends _abstract_yobit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
280377
280445
  }
280378
280446
 
280379
280447
 
280380
- /***/ }),
280381
-
280382
- /***/ 5934:
280383
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
280384
-
280385
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
280386
- /* harmony export */ Z: () => (/* binding */ zaif)
280387
- /* harmony export */ });
280388
- /* harmony import */ var _abstract_zaif_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5224);
280389
- /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
280390
- /* harmony import */ var _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2194);
280391
- /* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
280392
- /* harmony import */ var _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7110);
280393
- // ---------------------------------------------------------------------------
280394
-
280395
-
280396
-
280397
-
280398
-
280399
- // ---------------------------------------------------------------------------
280400
- /**
280401
- * @class zaif
280402
- * @augments Exchange
280403
- */
280404
- class zaif extends _abstract_zaif_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
280405
- describe() {
280406
- return this.deepExtend(super.describe(), {
280407
- 'id': 'zaif',
280408
- 'name': 'Zaif',
280409
- 'countries': ['JP'],
280410
- // 10 requests per second = 1000ms / 10 = 100ms between requests (public market endpoints)
280411
- 'rateLimit': 100,
280412
- 'version': '1',
280413
- 'has': {
280414
- 'CORS': undefined,
280415
- 'spot': true,
280416
- 'margin': undefined,
280417
- 'swap': false,
280418
- 'future': false,
280419
- 'option': false,
280420
- 'cancelOrder': true,
280421
- 'createMarketOrder': false,
280422
- 'createOrder': true,
280423
- 'fetchBalance': true,
280424
- 'fetchClosedOrders': true,
280425
- 'fetchFundingHistory': false,
280426
- 'fetchFundingRate': false,
280427
- 'fetchFundingRateHistory': false,
280428
- 'fetchFundingRates': false,
280429
- 'fetchIndexOHLCV': false,
280430
- 'fetchMarkets': true,
280431
- 'fetchMarkOHLCV': false,
280432
- 'fetchOpenInterestHistory': false,
280433
- 'fetchOpenOrders': true,
280434
- 'fetchOrderBook': true,
280435
- 'fetchPremiumIndexOHLCV': false,
280436
- 'fetchTicker': true,
280437
- 'fetchTrades': true,
280438
- 'fetchTradingFee': false,
280439
- 'fetchTradingFees': false,
280440
- 'withdraw': true,
280441
- },
280442
- 'urls': {
280443
- 'logo': 'https://user-images.githubusercontent.com/1294454/27766927-39ca2ada-5eeb-11e7-972f-1b4199518ca6.jpg',
280444
- 'api': {
280445
- 'rest': 'https://api.zaif.jp',
280446
- },
280447
- 'www': 'https://zaif.jp',
280448
- 'doc': [
280449
- 'https://techbureau-api-document.readthedocs.io/ja/latest/index.html',
280450
- 'https://corp.zaif.jp/api-docs',
280451
- 'https://corp.zaif.jp/api-docs/api_links',
280452
- 'https://www.npmjs.com/package/zaif.jp',
280453
- 'https://github.com/you21979/node-zaif',
280454
- ],
280455
- 'fees': 'https://zaif.jp/fee?lang=en',
280456
- },
280457
- 'fees': {
280458
- 'trading': {
280459
- 'percentage': true,
280460
- 'taker': this.parseNumber('0.001'),
280461
- 'maker': this.parseNumber('0'),
280462
- },
280463
- },
280464
- 'api': {
280465
- 'public': {
280466
- 'get': {
280467
- 'depth/{pair}': 1,
280468
- 'currencies/{pair}': 1,
280469
- 'currencies/all': 1,
280470
- 'currency_pairs/{pair}': 1,
280471
- 'currency_pairs/all': 1,
280472
- 'last_price/{pair}': 1,
280473
- 'ticker/{pair}': 1,
280474
- 'trades/{pair}': 1,
280475
- },
280476
- },
280477
- 'private': {
280478
- 'post': {
280479
- 'active_orders': 5,
280480
- 'cancel_order': 5,
280481
- 'deposit_history': 5,
280482
- 'get_id_info': 5,
280483
- 'get_info': 10,
280484
- 'get_info2': 5,
280485
- 'get_personal_info': 5,
280486
- 'trade': 5,
280487
- 'trade_history': 50,
280488
- 'withdraw': 5,
280489
- 'withdraw_history': 5,
280490
- },
280491
- },
280492
- 'ecapi': {
280493
- 'post': {
280494
- 'createInvoice': 1,
280495
- 'getInvoice': 1,
280496
- 'getInvoiceIdsByOrderNumber': 1,
280497
- 'cancelInvoice': 1,
280498
- },
280499
- },
280500
- 'tlapi': {
280501
- 'post': {
280502
- 'get_positions': 66,
280503
- 'position_history': 66,
280504
- 'active_positions': 5,
280505
- 'create_position': 33,
280506
- 'change_position': 33,
280507
- 'cancel_position': 33, // 3 in 10 seconds
280508
- },
280509
- },
280510
- 'fapi': {
280511
- 'get': {
280512
- 'groups/{group_id}': 1,
280513
- 'last_price/{group_id}/{pair}': 1,
280514
- 'ticker/{group_id}/{pair}': 1,
280515
- 'trades/{group_id}/{pair}': 1,
280516
- 'depth/{group_id}/{pair}': 1,
280517
- },
280518
- },
280519
- },
280520
- 'options': {},
280521
- 'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .TICK_SIZE */ .sh,
280522
- 'exceptions': {
280523
- 'exact': {
280524
- 'unsupported currency_pair': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // {"error": "unsupported currency_pair"}
280525
- },
280526
- 'broad': {},
280527
- },
280528
- });
280529
- }
280530
- async fetchMarkets(params = {}) {
280531
- /**
280532
- * @method
280533
- * @name zaif#fetchMarkets
280534
- * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id12
280535
- * @description retrieves data on all markets for zaif
280536
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280537
- * @returns {object[]} an array of objects representing market data
280538
- */
280539
- const markets = await this.publicGetCurrencyPairsAll(params);
280540
- //
280541
- // [
280542
- // {
280543
- // "aux_unit_point": 0,
280544
- // "item_japanese": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3",
280545
- // "aux_unit_step": 5.0,
280546
- // "description": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3\u30fb\u65e5\u672c\u5186\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059",
280547
- // "item_unit_min": 0.001,
280548
- // "event_number": 0,
280549
- // "currency_pair": "btc_jpy",
280550
- // "is_token": false,
280551
- // "aux_unit_min": 5.0,
280552
- // "aux_japanese": "\u65e5\u672c\u5186",
280553
- // "id": 1,
280554
- // "item_unit_step": 0.0001,
280555
- // "name": "BTC/JPY",
280556
- // "seq": 0,
280557
- // "title": "BTC/JPY"
280558
- // }
280559
- // ]
280560
- //
280561
- return this.parseMarkets(markets);
280562
- }
280563
- parseMarket(market) {
280564
- const id = this.safeString(market, 'currency_pair');
280565
- const name = this.safeString(market, 'name');
280566
- const [baseId, quoteId] = name.split('/');
280567
- const base = this.safeCurrencyCode(baseId);
280568
- const quote = this.safeCurrencyCode(quoteId);
280569
- const symbol = base + '/' + quote;
280570
- return {
280571
- 'id': id,
280572
- 'symbol': symbol,
280573
- 'base': base,
280574
- 'quote': quote,
280575
- 'settle': undefined,
280576
- 'baseId': baseId,
280577
- 'quoteId': quoteId,
280578
- 'settleId': undefined,
280579
- 'type': 'spot',
280580
- 'spot': true,
280581
- 'margin': undefined,
280582
- 'swap': false,
280583
- 'future': false,
280584
- 'option': false,
280585
- 'active': undefined,
280586
- 'contract': false,
280587
- 'linear': undefined,
280588
- 'inverse': undefined,
280589
- 'contractSize': undefined,
280590
- 'expiry': undefined,
280591
- 'expiryDatetime': undefined,
280592
- 'strike': undefined,
280593
- 'optionType': undefined,
280594
- 'precision': {
280595
- 'amount': this.safeNumber(market, 'item_unit_step'),
280596
- 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'aux_unit_point'))),
280597
- },
280598
- 'limits': {
280599
- 'leverage': {
280600
- 'min': undefined,
280601
- 'max': undefined,
280602
- },
280603
- 'amount': {
280604
- 'min': this.safeNumber(market, 'item_unit_min'),
280605
- 'max': undefined,
280606
- },
280607
- 'price': {
280608
- 'min': this.safeNumber(market, 'aux_unit_min'),
280609
- 'max': undefined,
280610
- },
280611
- 'cost': {
280612
- 'min': undefined,
280613
- 'max': undefined,
280614
- },
280615
- },
280616
- 'created': undefined,
280617
- 'info': market,
280618
- };
280619
- }
280620
- parseBalance(response) {
280621
- const balances = this.safeValue(response, 'return', {});
280622
- const deposit = this.safeValue(balances, 'deposit');
280623
- const result = {
280624
- 'info': response,
280625
- 'timestamp': undefined,
280626
- 'datetime': undefined,
280627
- };
280628
- const funds = this.safeValue(balances, 'funds', {});
280629
- const currencyIds = Object.keys(funds);
280630
- for (let i = 0; i < currencyIds.length; i++) {
280631
- const currencyId = currencyIds[i];
280632
- const code = this.safeCurrencyCode(currencyId);
280633
- const balance = this.safeString(funds, currencyId);
280634
- const account = this.account();
280635
- account['free'] = balance;
280636
- account['total'] = balance;
280637
- if (deposit !== undefined) {
280638
- if (currencyId in deposit) {
280639
- account['total'] = this.safeString(deposit, currencyId);
280640
- }
280641
- }
280642
- result[code] = account;
280643
- }
280644
- return this.safeBalance(result);
280645
- }
280646
- async fetchBalance(params = {}) {
280647
- /**
280648
- * @method
280649
- * @name zaif#fetchBalance
280650
- * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id10
280651
- * @description query for balance and get the amount of funds available for trading or funds locked in orders
280652
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280653
- * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
280654
- */
280655
- await this.loadMarkets();
280656
- const response = await this.privatePostGetInfo(params);
280657
- return this.parseBalance(response);
280658
- }
280659
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
280660
- /**
280661
- * @method
280662
- * @name zaif#fetchOrderBook
280663
- * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id34
280664
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
280665
- * @param {string} symbol unified symbol of the market to fetch the order book for
280666
- * @param {int} [limit] the maximum amount of order book entries to return
280667
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280668
- * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
280669
- */
280670
- await this.loadMarkets();
280671
- const market = this.market(symbol);
280672
- const request = {
280673
- 'pair': market['id'],
280674
- };
280675
- const response = await this.publicGetDepthPair(this.extend(request, params));
280676
- return this.parseOrderBook(response, market['symbol']);
280677
- }
280678
- parseTicker(ticker, market = undefined) {
280679
- //
280680
- // {
280681
- // "last": 9e-08,
280682
- // "high": 1e-07,
280683
- // "low": 9e-08,
280684
- // "vwap": 0.0,
280685
- // "volume": 135250.0,
280686
- // "bid": 9e-08,
280687
- // "ask": 1e-07
280688
- // }
280689
- //
280690
- const symbol = this.safeSymbol(undefined, market);
280691
- const vwap = this.safeString(ticker, 'vwap');
280692
- const baseVolume = this.safeString(ticker, 'volume');
280693
- const quoteVolume = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(baseVolume, vwap);
280694
- const last = this.safeString(ticker, 'last');
280695
- return this.safeTicker({
280696
- 'symbol': symbol,
280697
- 'timestamp': undefined,
280698
- 'datetime': undefined,
280699
- 'high': this.safeString(ticker, 'high'),
280700
- 'low': this.safeString(ticker, 'low'),
280701
- 'bid': this.safeString(ticker, 'bid'),
280702
- 'bidVolume': undefined,
280703
- 'ask': this.safeString(ticker, 'ask'),
280704
- 'askVolume': undefined,
280705
- 'vwap': vwap,
280706
- 'open': undefined,
280707
- 'close': last,
280708
- 'last': last,
280709
- 'previousClose': undefined,
280710
- 'change': undefined,
280711
- 'percentage': undefined,
280712
- 'average': undefined,
280713
- 'baseVolume': baseVolume,
280714
- 'quoteVolume': quoteVolume,
280715
- 'info': ticker,
280716
- }, market);
280717
- }
280718
- async fetchTicker(symbol, params = {}) {
280719
- /**
280720
- * @method
280721
- * @name zaif#fetchTicker
280722
- * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id22
280723
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
280724
- * @param {string} symbol unified symbol of the market to fetch the ticker for
280725
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280726
- * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
280727
- */
280728
- await this.loadMarkets();
280729
- const market = this.market(symbol);
280730
- const request = {
280731
- 'pair': market['id'],
280732
- };
280733
- const ticker = await this.publicGetTickerPair(this.extend(request, params));
280734
- //
280735
- // {
280736
- // "last": 9e-08,
280737
- // "high": 1e-07,
280738
- // "low": 9e-08,
280739
- // "vwap": 0.0,
280740
- // "volume": 135250.0,
280741
- // "bid": 9e-08,
280742
- // "ask": 1e-07
280743
- // }
280744
- //
280745
- return this.parseTicker(ticker, market);
280746
- }
280747
- parseTrade(trade, market = undefined) {
280748
- //
280749
- // fetchTrades (public)
280750
- //
280751
- // {
280752
- // "date": 1648559414,
280753
- // "price": 5880375.0,
280754
- // "amount": 0.017,
280755
- // "tid": 176126557,
280756
- // "currency_pair": "btc_jpy",
280757
- // "trade_type": "ask"
280758
- // }
280759
- //
280760
- let side = this.safeString(trade, 'trade_type');
280761
- side = (side === 'bid') ? 'buy' : 'sell';
280762
- const timestamp = this.safeTimestamp(trade, 'date');
280763
- const id = this.safeString2(trade, 'id', 'tid');
280764
- const priceString = this.safeString(trade, 'price');
280765
- const amountString = this.safeString(trade, 'amount');
280766
- const marketId = this.safeString(trade, 'currency_pair');
280767
- const symbol = this.safeSymbol(marketId, market, '_');
280768
- return this.safeTrade({
280769
- 'id': id,
280770
- 'info': trade,
280771
- 'timestamp': timestamp,
280772
- 'datetime': this.iso8601(timestamp),
280773
- 'symbol': symbol,
280774
- 'type': undefined,
280775
- 'side': side,
280776
- 'order': undefined,
280777
- 'takerOrMaker': undefined,
280778
- 'price': priceString,
280779
- 'amount': amountString,
280780
- 'cost': undefined,
280781
- 'fee': undefined,
280782
- }, market);
280783
- }
280784
- async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
280785
- /**
280786
- * @method
280787
- * @name zaif#fetchTrades
280788
- * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id28
280789
- * @description get the list of most recent trades for a particular symbol
280790
- * @param {string} symbol unified symbol of the market to fetch trades for
280791
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
280792
- * @param {int} [limit] the maximum amount of trades to fetch
280793
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280794
- * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
280795
- */
280796
- await this.loadMarkets();
280797
- const market = this.market(symbol);
280798
- const request = {
280799
- 'pair': market['id'],
280800
- };
280801
- let response = await this.publicGetTradesPair(this.extend(request, params));
280802
- //
280803
- // [
280804
- // {
280805
- // "date": 1648559414,
280806
- // "price": 5880375.0,
280807
- // "amount": 0.017,
280808
- // "tid": 176126557,
280809
- // "currency_pair": "btc_jpy",
280810
- // "trade_type": "ask"
280811
- // }, ...
280812
- // ]
280813
- //
280814
- const numTrades = response.length;
280815
- if (numTrades === 1) {
280816
- const firstTrade = response[0];
280817
- if (!Object.keys(firstTrade).length) {
280818
- response = [];
280819
- }
280820
- }
280821
- return this.parseTrades(response, market, since, limit);
280822
- }
280823
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
280824
- /**
280825
- * @method
280826
- * @name zaif#createOrder
280827
- * @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id23
280828
- * @description create a trade order
280829
- * @param {string} symbol unified symbol of the market to create an order in
280830
- * @param {string} type must be 'limit'
280831
- * @param {string} side 'buy' or 'sell'
280832
- * @param {float} amount how much of currency you want to trade in units of base currency
280833
- * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
280834
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280835
- * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
280836
- */
280837
- await this.loadMarkets();
280838
- if (type !== 'limit') {
280839
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' createOrder() allows limit orders only');
280840
- }
280841
- const market = this.market(symbol);
280842
- const request = {
280843
- 'currency_pair': market['id'],
280844
- 'action': (side === 'buy') ? 'bid' : 'ask',
280845
- 'amount': amount,
280846
- 'price': price,
280847
- };
280848
- const response = await this.privatePostTrade(this.extend(request, params));
280849
- return this.safeOrder({
280850
- 'info': response,
280851
- 'id': response['return']['order_id'].toString(),
280852
- }, market);
280853
- }
280854
- async cancelOrder(id, symbol = undefined, params = {}) {
280855
- /**
280856
- * @method
280857
- * @name zaif#cancelOrder
280858
- * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id37
280859
- * @description cancels an open order
280860
- * @param {string} id order id
280861
- * @param {string} symbol not used by zaif cancelOrder ()
280862
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280863
- * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
280864
- */
280865
- const request = {
280866
- 'order_id': id,
280867
- };
280868
- return await this.privatePostCancelOrder(this.extend(request, params));
280869
- }
280870
- parseOrder(order, market = undefined) {
280871
- //
280872
- // {
280873
- // "currency_pair": "btc_jpy",
280874
- // "action": "ask",
280875
- // "amount": 0.03,
280876
- // "price": 56000,
280877
- // "timestamp": 1402021125,
280878
- // "comment" : "demo"
280879
- // }
280880
- //
280881
- let side = this.safeString(order, 'action');
280882
- side = (side === 'bid') ? 'buy' : 'sell';
280883
- const timestamp = this.safeTimestamp(order, 'timestamp');
280884
- const marketId = this.safeString(order, 'currency_pair');
280885
- const symbol = this.safeSymbol(marketId, market, '_');
280886
- const price = this.safeString(order, 'price');
280887
- const amount = this.safeString(order, 'amount');
280888
- const id = this.safeString(order, 'id');
280889
- return this.safeOrder({
280890
- 'id': id,
280891
- 'clientOrderId': undefined,
280892
- 'timestamp': timestamp,
280893
- 'datetime': this.iso8601(timestamp),
280894
- 'lastTradeTimestamp': undefined,
280895
- 'status': 'open',
280896
- 'symbol': symbol,
280897
- 'type': 'limit',
280898
- 'timeInForce': undefined,
280899
- 'postOnly': undefined,
280900
- 'side': side,
280901
- 'price': price,
280902
- 'stopPrice': undefined,
280903
- 'triggerPrice': undefined,
280904
- 'cost': undefined,
280905
- 'amount': amount,
280906
- 'filled': undefined,
280907
- 'remaining': undefined,
280908
- 'trades': undefined,
280909
- 'fee': undefined,
280910
- 'info': order,
280911
- 'average': undefined,
280912
- }, market);
280913
- }
280914
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
280915
- /**
280916
- * @method
280917
- * @name zaif#fetchOpenOrders
280918
- * @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id28
280919
- * @description fetch all unfilled currently open orders
280920
- * @param {string} symbol unified market symbol
280921
- * @param {int} [since] the earliest time in ms to fetch open orders for
280922
- * @param {int} [limit] the maximum number of open orders structures to retrieve
280923
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280924
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
280925
- */
280926
- await this.loadMarkets();
280927
- let market = undefined;
280928
- const request = {
280929
- // 'is_token': false,
280930
- // 'is_token_both': false,
280931
- };
280932
- if (symbol !== undefined) {
280933
- market = this.market(symbol);
280934
- request['currency_pair'] = market['id'];
280935
- }
280936
- const response = await this.privatePostActiveOrders(this.extend(request, params));
280937
- return this.parseOrders(response['return'], market, since, limit);
280938
- }
280939
- async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
280940
- /**
280941
- * @method
280942
- * @name zaif#fetchClosedOrders
280943
- * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id24
280944
- * @description fetches information on multiple closed orders made by the user
280945
- * @param {string} symbol unified market symbol of the market orders were made in
280946
- * @param {int} [since] the earliest time in ms to fetch orders for
280947
- * @param {int} [limit] the maximum number of orde structures to retrieve
280948
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280949
- * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
280950
- */
280951
- await this.loadMarkets();
280952
- let market = undefined;
280953
- const request = {
280954
- // 'from': 0,
280955
- // 'count': 1000,
280956
- // 'from_id': 0,
280957
- // 'end_id': 1000,
280958
- // 'order': 'DESC',
280959
- // 'since': 1503821051,
280960
- // 'end': 1503821051,
280961
- // 'is_token': false,
280962
- };
280963
- if (symbol !== undefined) {
280964
- market = this.market(symbol);
280965
- request['currency_pair'] = market['id'];
280966
- }
280967
- const response = await this.privatePostTradeHistory(this.extend(request, params));
280968
- return this.parseOrders(response['return'], market, since, limit);
280969
- }
280970
- async withdraw(code, amount, address, tag = undefined, params = {}) {
280971
- /**
280972
- * @method
280973
- * @name zaif#withdraw
280974
- * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id41
280975
- * @description make a withdrawal
280976
- * @param {string} code unified currency code
280977
- * @param {float} amount the amount to withdraw
280978
- * @param {string} address the address to withdraw to
280979
- * @param {string} tag
280980
- * @param {object} [params] extra parameters specific to the exchange API endpoint
280981
- * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
280982
- */
280983
- [tag, params] = this.handleWithdrawTagAndParams(tag, params);
280984
- this.checkAddress(address);
280985
- await this.loadMarkets();
280986
- const currency = this.currency(code);
280987
- if (code === 'JPY') {
280988
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' withdraw() does not allow ' + code + ' withdrawals');
280989
- }
280990
- const request = {
280991
- 'currency': currency['id'],
280992
- 'amount': amount,
280993
- 'address': address,
280994
- // 'message': 'Hi!', // XEM and others
280995
- // 'opt_fee': 0.003, // BTC and MONA only
280996
- };
280997
- if (tag !== undefined) {
280998
- request['message'] = tag;
280999
- }
281000
- const result = await this.privatePostWithdraw(this.extend(request, params));
281001
- //
281002
- // {
281003
- // "success": 1,
281004
- // "return": {
281005
- // "id": 23634,
281006
- // "fee": 0.001,
281007
- // "txid":,
281008
- // "funds": {
281009
- // "jpy": 15320,
281010
- // "btc": 1.392,
281011
- // "xem": 100.2,
281012
- // "mona": 2600
281013
- // }
281014
- // }
281015
- // }
281016
- //
281017
- const returnData = this.safeValue(result, 'return');
281018
- return this.parseTransaction(returnData, currency);
281019
- }
281020
- parseTransaction(transaction, currency = undefined) {
281021
- //
281022
- // {
281023
- // "id": 23634,
281024
- // "fee": 0.001,
281025
- // "txid":,
281026
- // "funds": {
281027
- // "jpy": 15320,
281028
- // "btc": 1.392,
281029
- // "xem": 100.2,
281030
- // "mona": 2600
281031
- // }
281032
- // }
281033
- //
281034
- currency = this.safeCurrency(undefined, currency);
281035
- let fee = undefined;
281036
- const feeCost = this.safeValue(transaction, 'fee');
281037
- if (feeCost !== undefined) {
281038
- fee = {
281039
- 'cost': feeCost,
281040
- 'currency': currency['code'],
281041
- };
281042
- }
281043
- return {
281044
- 'id': this.safeString(transaction, 'id'),
281045
- 'txid': this.safeString(transaction, 'txid'),
281046
- 'timestamp': undefined,
281047
- 'datetime': undefined,
281048
- 'network': undefined,
281049
- 'addressFrom': undefined,
281050
- 'address': undefined,
281051
- 'addressTo': undefined,
281052
- 'amount': undefined,
281053
- 'type': undefined,
281054
- 'currency': currency['code'],
281055
- 'status': undefined,
281056
- 'updated': undefined,
281057
- 'tagFrom': undefined,
281058
- 'tag': undefined,
281059
- 'tagTo': undefined,
281060
- 'comment': undefined,
281061
- 'internal': undefined,
281062
- 'fee': fee,
281063
- 'info': transaction,
281064
- };
281065
- }
281066
- customNonce() {
281067
- const num = (this.milliseconds() / 1000).toString();
281068
- const nonce = parseFloat(num);
281069
- return nonce.toFixed(8);
281070
- }
281071
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
281072
- let url = this.urls['api']['rest'] + '/';
281073
- if (api === 'public') {
281074
- url += 'api/' + this.version + '/' + this.implodeParams(path, params);
281075
- }
281076
- else if (api === 'fapi') {
281077
- url += 'fapi/' + this.version + '/' + this.implodeParams(path, params);
281078
- }
281079
- else {
281080
- this.checkRequiredCredentials();
281081
- if (api === 'ecapi') {
281082
- url += 'ecapi';
281083
- }
281084
- else if (api === 'tlapi') {
281085
- url += 'tlapi';
281086
- }
281087
- else {
281088
- url += 'tapi';
281089
- }
281090
- const nonce = this.customNonce();
281091
- body = this.urlencode(this.extend({
281092
- 'method': path,
281093
- 'nonce': nonce,
281094
- }, params));
281095
- headers = {
281096
- 'Content-Type': 'application/x-www-form-urlencoded',
281097
- 'Key': this.apiKey,
281098
- 'Sign': this.hmac(this.encode(body), this.encode(this.secret), _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__/* .sha512 */ .o),
281099
- };
281100
- }
281101
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
281102
- }
281103
- handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
281104
- if (response === undefined) {
281105
- return undefined;
281106
- }
281107
- //
281108
- // {"error": "unsupported currency_pair"}
281109
- //
281110
- const feedback = this.id + ' ' + body;
281111
- const error = this.safeString(response, 'error');
281112
- if (error !== undefined) {
281113
- this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
281114
- this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
281115
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback); // unknown message
281116
- }
281117
- const success = this.safeValue(response, 'success', true);
281118
- if (!success) {
281119
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
281120
- }
281121
- return undefined;
281122
- }
281123
- }
281124
-
281125
-
281126
280448
  /***/ }),
281127
280449
 
281128
280450
  /***/ 5140:
@@ -288166,6 +287488,751 @@ YAHOO.lang = {
288166
287488
  }
288167
287489
  };
288168
287490
 
287491
+ /***/ }),
287492
+
287493
+ /***/ 7558:
287494
+ /***/ (() => {
287495
+
287496
+
287497
+ // ---------------------------------------------------------------------------
287498
+ var __importDefault = (undefined && undefined.__importDefault) || function (mod) {
287499
+ return (mod && mod.__esModule) ? mod : { "default": mod };
287500
+ };
287501
+ Object.defineProperty(exports, "__esModule", { value: true });
287502
+ const zaif_js_1 = __importDefault(require("./abstract/zaif.js"));
287503
+ const errors_js_1 = require("./base/errors.js");
287504
+ const Precise_js_1 = require("./base/Precise.js");
287505
+ const number_js_1 = require("./base/functions/number.js");
287506
+ const sha512_js_1 = require("./static_dependencies/noble-hashes/sha512.js");
287507
+ // ---------------------------------------------------------------------------
287508
+ /**
287509
+ * @class zaif
287510
+ * @extends Exchange
287511
+ */
287512
+ class zaif extends zaif_js_1.default {
287513
+ describe() {
287514
+ return this.deepExtend(super.describe(), {
287515
+ 'id': 'zaif',
287516
+ 'name': 'Zaif',
287517
+ 'countries': ['JP'],
287518
+ // 10 requests per second = 1000ms / 10 = 100ms between requests (public market endpoints)
287519
+ 'rateLimit': 100,
287520
+ 'version': '1',
287521
+ 'has': {
287522
+ 'CORS': undefined,
287523
+ 'spot': true,
287524
+ 'margin': undefined,
287525
+ 'swap': false,
287526
+ 'future': false,
287527
+ 'option': false,
287528
+ 'cancelOrder': true,
287529
+ 'createMarketOrder': false,
287530
+ 'createOrder': true,
287531
+ 'fetchBalance': true,
287532
+ 'fetchClosedOrders': true,
287533
+ 'fetchFundingHistory': false,
287534
+ 'fetchFundingRate': false,
287535
+ 'fetchFundingRateHistory': false,
287536
+ 'fetchFundingRates': false,
287537
+ 'fetchIndexOHLCV': false,
287538
+ 'fetchMarkets': true,
287539
+ 'fetchMarkOHLCV': false,
287540
+ 'fetchOpenInterestHistory': false,
287541
+ 'fetchOpenOrders': true,
287542
+ 'fetchOrderBook': true,
287543
+ 'fetchPremiumIndexOHLCV': false,
287544
+ 'fetchTicker': true,
287545
+ 'fetchTrades': true,
287546
+ 'fetchTradingFee': false,
287547
+ 'fetchTradingFees': false,
287548
+ 'withdraw': true,
287549
+ },
287550
+ 'urls': {
287551
+ 'logo': 'https://user-images.githubusercontent.com/1294454/27766927-39ca2ada-5eeb-11e7-972f-1b4199518ca6.jpg',
287552
+ 'api': {
287553
+ 'rest': 'https://api.zaif.jp',
287554
+ },
287555
+ 'www': 'https://zaif.jp',
287556
+ 'doc': [
287557
+ 'https://techbureau-api-document.readthedocs.io/ja/latest/index.html',
287558
+ 'https://corp.zaif.jp/api-docs',
287559
+ 'https://corp.zaif.jp/api-docs/api_links',
287560
+ 'https://www.npmjs.com/package/zaif.jp',
287561
+ 'https://github.com/you21979/node-zaif',
287562
+ ],
287563
+ 'fees': 'https://zaif.jp/fee?lang=en',
287564
+ },
287565
+ 'fees': {
287566
+ 'trading': {
287567
+ 'percentage': true,
287568
+ 'taker': this.parseNumber('0.001'),
287569
+ 'maker': this.parseNumber('0'),
287570
+ },
287571
+ },
287572
+ 'api': {
287573
+ 'public': {
287574
+ 'get': {
287575
+ 'depth/{pair}': 1,
287576
+ 'currencies/{pair}': 1,
287577
+ 'currencies/all': 1,
287578
+ 'currency_pairs/{pair}': 1,
287579
+ 'currency_pairs/all': 1,
287580
+ 'last_price/{pair}': 1,
287581
+ 'ticker/{pair}': 1,
287582
+ 'trades/{pair}': 1,
287583
+ },
287584
+ },
287585
+ 'private': {
287586
+ 'post': {
287587
+ 'active_orders': 5,
287588
+ 'cancel_order': 5,
287589
+ 'deposit_history': 5,
287590
+ 'get_id_info': 5,
287591
+ 'get_info': 10,
287592
+ 'get_info2': 5,
287593
+ 'get_personal_info': 5,
287594
+ 'trade': 5,
287595
+ 'trade_history': 50,
287596
+ 'withdraw': 5,
287597
+ 'withdraw_history': 5,
287598
+ },
287599
+ },
287600
+ 'ecapi': {
287601
+ 'post': {
287602
+ 'createInvoice': 1,
287603
+ 'getInvoice': 1,
287604
+ 'getInvoiceIdsByOrderNumber': 1,
287605
+ 'cancelInvoice': 1,
287606
+ },
287607
+ },
287608
+ 'tlapi': {
287609
+ 'post': {
287610
+ 'get_positions': 66,
287611
+ 'position_history': 66,
287612
+ 'active_positions': 5,
287613
+ 'create_position': 33,
287614
+ 'change_position': 33,
287615
+ 'cancel_position': 33, // 3 in 10 seconds
287616
+ },
287617
+ },
287618
+ 'fapi': {
287619
+ 'get': {
287620
+ 'groups/{group_id}': 1,
287621
+ 'last_price/{group_id}/{pair}': 1,
287622
+ 'ticker/{group_id}/{pair}': 1,
287623
+ 'trades/{group_id}/{pair}': 1,
287624
+ 'depth/{group_id}/{pair}': 1,
287625
+ },
287626
+ },
287627
+ },
287628
+ 'options': {},
287629
+ 'precisionMode': number_js_1.TICK_SIZE,
287630
+ 'exceptions': {
287631
+ 'exact': {
287632
+ 'unsupported currency_pair': errors_js_1.BadRequest, // {"error": "unsupported currency_pair"}
287633
+ },
287634
+ 'broad': {},
287635
+ },
287636
+ });
287637
+ }
287638
+ async fetchMarkets(params = {}) {
287639
+ /**
287640
+ * @method
287641
+ * @name zaif#fetchMarkets
287642
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id12
287643
+ * @description retrieves data on all markets for zaif
287644
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287645
+ * @returns {object[]} an array of objects representing market data
287646
+ */
287647
+ const markets = await this.publicGetCurrencyPairsAll(params);
287648
+ //
287649
+ // [
287650
+ // {
287651
+ // "aux_unit_point": 0,
287652
+ // "item_japanese": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3",
287653
+ // "aux_unit_step": 5.0,
287654
+ // "description": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3\u30fb\u65e5\u672c\u5186\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059",
287655
+ // "item_unit_min": 0.001,
287656
+ // "event_number": 0,
287657
+ // "currency_pair": "btc_jpy",
287658
+ // "is_token": false,
287659
+ // "aux_unit_min": 5.0,
287660
+ // "aux_japanese": "\u65e5\u672c\u5186",
287661
+ // "id": 1,
287662
+ // "item_unit_step": 0.0001,
287663
+ // "name": "BTC/JPY",
287664
+ // "seq": 0,
287665
+ // "title": "BTC/JPY"
287666
+ // }
287667
+ // ]
287668
+ //
287669
+ return this.parseMarkets(markets);
287670
+ }
287671
+ parseMarket(market) {
287672
+ const id = this.safeString(market, 'currency_pair');
287673
+ const name = this.safeString(market, 'name');
287674
+ const [baseId, quoteId] = name.split('/');
287675
+ const base = this.safeCurrencyCode(baseId);
287676
+ const quote = this.safeCurrencyCode(quoteId);
287677
+ const symbol = base + '/' + quote;
287678
+ return {
287679
+ 'id': id,
287680
+ 'symbol': symbol,
287681
+ 'base': base,
287682
+ 'quote': quote,
287683
+ 'settle': undefined,
287684
+ 'baseId': baseId,
287685
+ 'quoteId': quoteId,
287686
+ 'settleId': undefined,
287687
+ 'type': 'spot',
287688
+ 'spot': true,
287689
+ 'margin': undefined,
287690
+ 'swap': false,
287691
+ 'future': false,
287692
+ 'option': false,
287693
+ 'active': undefined,
287694
+ 'contract': false,
287695
+ 'linear': undefined,
287696
+ 'inverse': undefined,
287697
+ 'contractSize': undefined,
287698
+ 'expiry': undefined,
287699
+ 'expiryDatetime': undefined,
287700
+ 'strike': undefined,
287701
+ 'optionType': undefined,
287702
+ 'precision': {
287703
+ 'amount': this.safeNumber(market, 'item_unit_step'),
287704
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'aux_unit_point'))),
287705
+ },
287706
+ 'limits': {
287707
+ 'leverage': {
287708
+ 'min': undefined,
287709
+ 'max': undefined,
287710
+ },
287711
+ 'amount': {
287712
+ 'min': this.safeNumber(market, 'item_unit_min'),
287713
+ 'max': undefined,
287714
+ },
287715
+ 'price': {
287716
+ 'min': this.safeNumber(market, 'aux_unit_min'),
287717
+ 'max': undefined,
287718
+ },
287719
+ 'cost': {
287720
+ 'min': undefined,
287721
+ 'max': undefined,
287722
+ },
287723
+ },
287724
+ 'created': undefined,
287725
+ 'info': market,
287726
+ };
287727
+ }
287728
+ parseBalance(response) {
287729
+ const balances = this.safeValue(response, 'return', {});
287730
+ const deposit = this.safeValue(balances, 'deposit');
287731
+ const result = {
287732
+ 'info': response,
287733
+ 'timestamp': undefined,
287734
+ 'datetime': undefined,
287735
+ };
287736
+ const funds = this.safeValue(balances, 'funds', {});
287737
+ const currencyIds = Object.keys(funds);
287738
+ for (let i = 0; i < currencyIds.length; i++) {
287739
+ const currencyId = currencyIds[i];
287740
+ const code = this.safeCurrencyCode(currencyId);
287741
+ const balance = this.safeString(funds, currencyId);
287742
+ const account = this.account();
287743
+ account['free'] = balance;
287744
+ account['total'] = balance;
287745
+ if (deposit !== undefined) {
287746
+ if (currencyId in deposit) {
287747
+ account['total'] = this.safeString(deposit, currencyId);
287748
+ }
287749
+ }
287750
+ result[code] = account;
287751
+ }
287752
+ return this.safeBalance(result);
287753
+ }
287754
+ async fetchBalance(params = {}) {
287755
+ /**
287756
+ * @method
287757
+ * @name zaif#fetchBalance
287758
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id10
287759
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
287760
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287761
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
287762
+ */
287763
+ await this.loadMarkets();
287764
+ const response = await this.privatePostGetInfo(params);
287765
+ return this.parseBalance(response);
287766
+ }
287767
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
287768
+ /**
287769
+ * @method
287770
+ * @name zaif#fetchOrderBook
287771
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id34
287772
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
287773
+ * @param {string} symbol unified symbol of the market to fetch the order book for
287774
+ * @param {int} [limit] the maximum amount of order book entries to return
287775
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287776
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
287777
+ */
287778
+ await this.loadMarkets();
287779
+ const market = this.market(symbol);
287780
+ const request = {
287781
+ 'pair': market['id'],
287782
+ };
287783
+ const response = await this.publicGetDepthPair(this.extend(request, params));
287784
+ return this.parseOrderBook(response, market['symbol']);
287785
+ }
287786
+ parseTicker(ticker, market = undefined) {
287787
+ //
287788
+ // {
287789
+ // "last": 9e-08,
287790
+ // "high": 1e-07,
287791
+ // "low": 9e-08,
287792
+ // "vwap": 0.0,
287793
+ // "volume": 135250.0,
287794
+ // "bid": 9e-08,
287795
+ // "ask": 1e-07
287796
+ // }
287797
+ //
287798
+ const symbol = this.safeSymbol(undefined, market);
287799
+ const timestamp = this.milliseconds();
287800
+ const vwap = this.safeString(ticker, 'vwap');
287801
+ const baseVolume = this.safeString(ticker, 'volume');
287802
+ const quoteVolume = Precise_js_1.Precise.stringMul(baseVolume, vwap);
287803
+ const last = this.safeString(ticker, 'last');
287804
+ return this.safeTicker({
287805
+ 'symbol': symbol,
287806
+ 'timestamp': timestamp,
287807
+ 'datetime': this.iso8601(timestamp),
287808
+ 'high': this.safeString(ticker, 'high'),
287809
+ 'low': this.safeString(ticker, 'low'),
287810
+ 'bid': this.safeString(ticker, 'bid'),
287811
+ 'bidVolume': undefined,
287812
+ 'ask': this.safeString(ticker, 'ask'),
287813
+ 'askVolume': undefined,
287814
+ 'vwap': vwap,
287815
+ 'open': undefined,
287816
+ 'close': last,
287817
+ 'last': last,
287818
+ 'previousClose': undefined,
287819
+ 'change': undefined,
287820
+ 'percentage': undefined,
287821
+ 'average': undefined,
287822
+ 'baseVolume': baseVolume,
287823
+ 'quoteVolume': quoteVolume,
287824
+ 'info': ticker,
287825
+ }, market);
287826
+ }
287827
+ async fetchTicker(symbol, params = {}) {
287828
+ /**
287829
+ * @method
287830
+ * @name zaif#fetchTicker
287831
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id22
287832
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
287833
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
287834
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287835
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
287836
+ */
287837
+ await this.loadMarkets();
287838
+ const market = this.market(symbol);
287839
+ const request = {
287840
+ 'pair': market['id'],
287841
+ };
287842
+ const ticker = await this.publicGetTickerPair(this.extend(request, params));
287843
+ //
287844
+ // {
287845
+ // "last": 9e-08,
287846
+ // "high": 1e-07,
287847
+ // "low": 9e-08,
287848
+ // "vwap": 0.0,
287849
+ // "volume": 135250.0,
287850
+ // "bid": 9e-08,
287851
+ // "ask": 1e-07
287852
+ // }
287853
+ //
287854
+ return this.parseTicker(ticker, market);
287855
+ }
287856
+ parseTrade(trade, market = undefined) {
287857
+ //
287858
+ // fetchTrades (public)
287859
+ //
287860
+ // {
287861
+ // "date": 1648559414,
287862
+ // "price": 5880375.0,
287863
+ // "amount": 0.017,
287864
+ // "tid": 176126557,
287865
+ // "currency_pair": "btc_jpy",
287866
+ // "trade_type": "ask"
287867
+ // }
287868
+ //
287869
+ let side = this.safeString(trade, 'trade_type');
287870
+ side = (side === 'bid') ? 'buy' : 'sell';
287871
+ const timestamp = this.safeTimestamp(trade, 'date');
287872
+ const id = this.safeString2(trade, 'id', 'tid');
287873
+ const priceString = this.safeString(trade, 'price');
287874
+ const amountString = this.safeString(trade, 'amount');
287875
+ const marketId = this.safeString(trade, 'currency_pair');
287876
+ const symbol = this.safeSymbol(marketId, market, '_');
287877
+ return this.safeTrade({
287878
+ 'id': id,
287879
+ 'info': trade,
287880
+ 'timestamp': timestamp,
287881
+ 'datetime': this.iso8601(timestamp),
287882
+ 'symbol': symbol,
287883
+ 'type': undefined,
287884
+ 'side': side,
287885
+ 'order': undefined,
287886
+ 'takerOrMaker': undefined,
287887
+ 'price': priceString,
287888
+ 'amount': amountString,
287889
+ 'cost': undefined,
287890
+ 'fee': undefined,
287891
+ }, market);
287892
+ }
287893
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
287894
+ /**
287895
+ * @method
287896
+ * @name zaif#fetchTrades
287897
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id28
287898
+ * @description get the list of most recent trades for a particular symbol
287899
+ * @param {string} symbol unified symbol of the market to fetch trades for
287900
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
287901
+ * @param {int} [limit] the maximum amount of trades to fetch
287902
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287903
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
287904
+ */
287905
+ await this.loadMarkets();
287906
+ const market = this.market(symbol);
287907
+ const request = {
287908
+ 'pair': market['id'],
287909
+ };
287910
+ let response = await this.publicGetTradesPair(this.extend(request, params));
287911
+ //
287912
+ // [
287913
+ // {
287914
+ // "date": 1648559414,
287915
+ // "price": 5880375.0,
287916
+ // "amount": 0.017,
287917
+ // "tid": 176126557,
287918
+ // "currency_pair": "btc_jpy",
287919
+ // "trade_type": "ask"
287920
+ // }, ...
287921
+ // ]
287922
+ //
287923
+ const numTrades = response.length;
287924
+ if (numTrades === 1) {
287925
+ const firstTrade = response[0];
287926
+ if (!Object.keys(firstTrade).length) {
287927
+ response = [];
287928
+ }
287929
+ }
287930
+ return this.parseTrades(response, market, since, limit);
287931
+ }
287932
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
287933
+ /**
287934
+ * @method
287935
+ * @name zaif#createOrder
287936
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id23
287937
+ * @description create a trade order
287938
+ * @param {string} symbol unified symbol of the market to create an order in
287939
+ * @param {string} type must be 'limit'
287940
+ * @param {string} side 'buy' or 'sell'
287941
+ * @param {float} amount how much of currency you want to trade in units of base currency
287942
+ * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
287943
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287944
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
287945
+ */
287946
+ await this.loadMarkets();
287947
+ if (type !== 'limit') {
287948
+ throw new errors_js_1.ExchangeError(this.id + ' createOrder() allows limit orders only');
287949
+ }
287950
+ const market = this.market(symbol);
287951
+ const request = {
287952
+ 'currency_pair': market['id'],
287953
+ 'action': (side === 'buy') ? 'bid' : 'ask',
287954
+ 'amount': amount,
287955
+ 'price': price,
287956
+ };
287957
+ const response = await this.privatePostTrade(this.extend(request, params));
287958
+ return this.safeOrder({
287959
+ 'info': response,
287960
+ 'id': response['return']['order_id'].toString(),
287961
+ }, market);
287962
+ }
287963
+ async cancelOrder(id, symbol = undefined, params = {}) {
287964
+ /**
287965
+ * @method
287966
+ * @name zaif#cancelOrder
287967
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id37
287968
+ * @description cancels an open order
287969
+ * @param {string} id order id
287970
+ * @param {string} symbol not used by zaif cancelOrder ()
287971
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287972
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
287973
+ */
287974
+ const request = {
287975
+ 'order_id': id,
287976
+ };
287977
+ return await this.privatePostCancelOrder(this.extend(request, params));
287978
+ }
287979
+ parseOrder(order, market = undefined) {
287980
+ //
287981
+ // {
287982
+ // "currency_pair": "btc_jpy",
287983
+ // "action": "ask",
287984
+ // "amount": 0.03,
287985
+ // "price": 56000,
287986
+ // "timestamp": 1402021125,
287987
+ // "comment" : "demo"
287988
+ // }
287989
+ //
287990
+ let side = this.safeString(order, 'action');
287991
+ side = (side === 'bid') ? 'buy' : 'sell';
287992
+ const timestamp = this.safeTimestamp(order, 'timestamp');
287993
+ const marketId = this.safeString(order, 'currency_pair');
287994
+ const symbol = this.safeSymbol(marketId, market, '_');
287995
+ const price = this.safeString(order, 'price');
287996
+ const amount = this.safeString(order, 'amount');
287997
+ const id = this.safeString(order, 'id');
287998
+ return this.safeOrder({
287999
+ 'id': id,
288000
+ 'clientOrderId': undefined,
288001
+ 'timestamp': timestamp,
288002
+ 'datetime': this.iso8601(timestamp),
288003
+ 'lastTradeTimestamp': undefined,
288004
+ 'status': 'open',
288005
+ 'symbol': symbol,
288006
+ 'type': 'limit',
288007
+ 'timeInForce': undefined,
288008
+ 'postOnly': undefined,
288009
+ 'side': side,
288010
+ 'price': price,
288011
+ 'stopPrice': undefined,
288012
+ 'triggerPrice': undefined,
288013
+ 'cost': undefined,
288014
+ 'amount': amount,
288015
+ 'filled': undefined,
288016
+ 'remaining': undefined,
288017
+ 'trades': undefined,
288018
+ 'fee': undefined,
288019
+ 'info': order,
288020
+ 'average': undefined,
288021
+ }, market);
288022
+ }
288023
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
288024
+ /**
288025
+ * @method
288026
+ * @name zaif#fetchOpenOrders
288027
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id28
288028
+ * @description fetch all unfilled currently open orders
288029
+ * @param {string} symbol unified market symbol
288030
+ * @param {int} [since] the earliest time in ms to fetch open orders for
288031
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
288032
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
288033
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
288034
+ */
288035
+ await this.loadMarkets();
288036
+ let market = undefined;
288037
+ const request = {
288038
+ // 'is_token': false,
288039
+ // 'is_token_both': false,
288040
+ };
288041
+ if (symbol !== undefined) {
288042
+ market = this.market(symbol);
288043
+ request['currency_pair'] = market['id'];
288044
+ }
288045
+ const response = await this.privatePostActiveOrders(this.extend(request, params));
288046
+ return this.parseOrders(response['return'], market, since, limit);
288047
+ }
288048
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
288049
+ /**
288050
+ * @method
288051
+ * @name zaif#fetchClosedOrders
288052
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id24
288053
+ * @description fetches information on multiple closed orders made by the user
288054
+ * @param {string} symbol unified market symbol of the market orders were made in
288055
+ * @param {int} [since] the earliest time in ms to fetch orders for
288056
+ * @param {int} [limit] the maximum number of order structures to retrieve
288057
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
288058
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
288059
+ */
288060
+ await this.loadMarkets();
288061
+ let market = undefined;
288062
+ const request = {
288063
+ // 'from': 0,
288064
+ // 'count': 1000,
288065
+ // 'from_id': 0,
288066
+ // 'end_id': 1000,
288067
+ // 'order': 'DESC',
288068
+ // 'since': 1503821051,
288069
+ // 'end': 1503821051,
288070
+ // 'is_token': false,
288071
+ };
288072
+ if (symbol !== undefined) {
288073
+ market = this.market(symbol);
288074
+ request['currency_pair'] = market['id'];
288075
+ }
288076
+ const response = await this.privatePostTradeHistory(this.extend(request, params));
288077
+ return this.parseOrders(response['return'], market, since, limit);
288078
+ }
288079
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
288080
+ /**
288081
+ * @method
288082
+ * @name zaif#withdraw
288083
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id41
288084
+ * @description make a withdrawal
288085
+ * @param {string} code unified currency code
288086
+ * @param {float} amount the amount to withdraw
288087
+ * @param {string} address the address to withdraw to
288088
+ * @param {string} tag
288089
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
288090
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
288091
+ */
288092
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
288093
+ this.checkAddress(address);
288094
+ await this.loadMarkets();
288095
+ const currency = this.currency(code);
288096
+ if (code === 'JPY') {
288097
+ throw new errors_js_1.ExchangeError(this.id + ' withdraw() does not allow ' + code + ' withdrawals');
288098
+ }
288099
+ const request = {
288100
+ 'currency': currency['id'],
288101
+ 'amount': amount,
288102
+ 'address': address,
288103
+ // 'message': 'Hi!', // XEM and others
288104
+ // 'opt_fee': 0.003, // BTC and MONA only
288105
+ };
288106
+ if (tag !== undefined) {
288107
+ request['message'] = tag;
288108
+ }
288109
+ const result = await this.privatePostWithdraw(this.extend(request, params));
288110
+ //
288111
+ // {
288112
+ // "success": 1,
288113
+ // "return": {
288114
+ // "id": 23634,
288115
+ // "fee": 0.001,
288116
+ // "txid":,
288117
+ // "funds": {
288118
+ // "jpy": 15320,
288119
+ // "btc": 1.392,
288120
+ // "xem": 100.2,
288121
+ // "mona": 2600
288122
+ // }
288123
+ // }
288124
+ // }
288125
+ //
288126
+ const returnData = this.safeValue(result, 'return');
288127
+ return this.parseTransaction(returnData, currency);
288128
+ }
288129
+ parseTransaction(transaction, currency = undefined) {
288130
+ //
288131
+ // {
288132
+ // "id": 23634,
288133
+ // "fee": 0.001,
288134
+ // "txid":,
288135
+ // "funds": {
288136
+ // "jpy": 15320,
288137
+ // "btc": 1.392,
288138
+ // "xem": 100.2,
288139
+ // "mona": 2600
288140
+ // }
288141
+ // }
288142
+ //
288143
+ currency = this.safeCurrency(undefined, currency);
288144
+ let fee = undefined;
288145
+ const feeCost = this.safeValue(transaction, 'fee');
288146
+ if (feeCost !== undefined) {
288147
+ fee = {
288148
+ 'cost': feeCost,
288149
+ 'currency': currency['code'],
288150
+ };
288151
+ }
288152
+ return {
288153
+ 'id': this.safeString(transaction, 'id'),
288154
+ 'txid': this.safeString(transaction, 'txid'),
288155
+ 'timestamp': undefined,
288156
+ 'datetime': undefined,
288157
+ 'network': undefined,
288158
+ 'addressFrom': undefined,
288159
+ 'address': undefined,
288160
+ 'addressTo': undefined,
288161
+ 'amount': undefined,
288162
+ 'type': undefined,
288163
+ 'currency': currency['code'],
288164
+ 'status': undefined,
288165
+ 'updated': undefined,
288166
+ 'tagFrom': undefined,
288167
+ 'tag': undefined,
288168
+ 'tagTo': undefined,
288169
+ 'comment': undefined,
288170
+ 'internal': undefined,
288171
+ 'fee': fee,
288172
+ 'info': transaction,
288173
+ };
288174
+ }
288175
+ customNonce() {
288176
+ const num = (this.milliseconds() / 1000).toString();
288177
+ const nonce = parseFloat(num);
288178
+ return nonce.toFixed(8);
288179
+ }
288180
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
288181
+ let url = this.urls['api']['rest'] + '/';
288182
+ if (api === 'public') {
288183
+ url += 'api/' + this.version + '/' + this.implodeParams(path, params);
288184
+ }
288185
+ else if (api === 'fapi') {
288186
+ url += 'fapi/' + this.version + '/' + this.implodeParams(path, params);
288187
+ }
288188
+ else {
288189
+ this.checkRequiredCredentials();
288190
+ if (api === 'ecapi') {
288191
+ url += 'ecapi';
288192
+ }
288193
+ else if (api === 'tlapi') {
288194
+ url += 'tlapi';
288195
+ }
288196
+ else {
288197
+ url += 'tapi';
288198
+ }
288199
+ const nonce = this.customNonce();
288200
+ body = this.urlencode(this.extend({
288201
+ 'method': path,
288202
+ 'nonce': nonce,
288203
+ }, params));
288204
+ headers = {
288205
+ 'Content-Type': 'application/x-www-form-urlencoded',
288206
+ 'Key': this.apiKey,
288207
+ 'Sign': this.hmac(this.encode(body), this.encode(this.secret), sha512_js_1.sha512),
288208
+ };
288209
+ }
288210
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
288211
+ }
288212
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
288213
+ if (response === undefined) {
288214
+ return undefined;
288215
+ }
288216
+ //
288217
+ // {"error": "unsupported currency_pair"}
288218
+ //
288219
+ const feedback = this.id + ' ' + body;
288220
+ const error = this.safeString(response, 'error');
288221
+ if (error !== undefined) {
288222
+ this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
288223
+ this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
288224
+ throw new errors_js_1.ExchangeError(feedback); // unknown message
288225
+ }
288226
+ const success = this.safeValue(response, 'success', true);
288227
+ if (!success) {
288228
+ throw new errors_js_1.ExchangeError(feedback);
288229
+ }
288230
+ return undefined;
288231
+ }
288232
+ }
288233
+ exports.default = zaif;
288234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFpZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInphaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtFQUErRTs7Ozs7QUFFL0UsaUVBQTBDO0FBQzFDLGdEQUE2RDtBQUM3RCxrREFBNEM7QUFDNUMsMERBQXVEO0FBQ3ZELDRFQUFzRTtBQUd0RSwrRUFBK0U7QUFFL0U7OztHQUdHO0FBQ0gsTUFBcUIsSUFBSyxTQUFRLGlCQUFRO0lBQ3RDLFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRyxFQUFFO1lBQ3ZDLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBRSxJQUFJLENBQUU7WUFDckIsMEZBQTBGO1lBQzFGLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsS0FBSyxFQUFFO2dCQUNILE1BQU0sRUFBRSxTQUFTO2dCQUNqQixNQUFNLEVBQUUsSUFBSTtnQkFDWixRQUFRLEVBQUUsU0FBUztnQkFDbkIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIscUJBQXFCLEVBQUUsS0FBSztnQkFDNUIsa0JBQWtCLEVBQUUsS0FBSztnQkFDekIseUJBQXlCLEVBQUUsS0FBSztnQkFDaEMsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLDBCQUEwQixFQUFFLEtBQUs7Z0JBQ2pDLGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLGdCQUFn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QVMsRUFBRTtZQUNyQixJQUFJLENBQUMsNEJBQTRCLENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLDRCQUE0QixDQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sSUFBSSx5QkFBYSxDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1NBQ3pEO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixNQUFNLElBQUkseUJBQWEsQ0FBRSxRQUFRLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQWp1QkQsdUJBaXVCQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbXBvcnQgRXhjaGFuZ2UgZnJvbSAnLi9hYnN0cmFjdC96YWlmLmpzJztcbmltcG9ydCB7IEV4Y2hhbmdlRXJyb3IsIEJhZFJlcXVlc3QgfSBmcm9tICcuL2Jhc2UvZXJyb3JzLmpzJztcbmltcG9ydCB7IFByZWNpc2UgfSBmcm9tICcuL2Jhc2UvUHJlY2lzZS5qcyc7XG5pbXBvcnQgeyBUSUNLX1NJWkUgfSBmcm9tICcuL2Jhc2UvZnVuY3Rpb25zL251bWJlci5qcyc7XG5pbXBvcnQgeyBzaGE1MTIgfSBmcm9tICcuL3N0YXRpY19kZXBlbmRlbmNpZXMvbm9ibGUtaGFzaGVzL3NoYTUxMi5qcyc7XG5pbXBvcnQgeyBCYWxhbmNlcywgQ3VycmVuY3ksIEludCwgTWFya2V0LCBPcmRlciwgT3JkZXJCb29rLCBPcmRlclNpZGUsIE9yZGVyVHlwZSwgU3RyLCBUaWNrZXIsIFRyYWRlLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4vYmFzZS90eXBlcy5qcyc7XG5cbi8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBAY2xhc3MgemFpZlxuICogQGV4dGVuZHMgRXhjaGFuZ2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgemFpZiBleHRlbmRzIEV4Y2hhbmdlIHtcbiAgICBkZXNjcmliZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZXBFeHRlbmQgKHN1cGVyLmRlc2NyaWJlICgpLCB7XG4gICAgICAgICAgICAnaWQnOiAnemFpZicsXG4gICAgICAgICAgICAnbmFtZSc6ICdaYWlmJyxcbiAgICAgICAgICAgICdjb3VudHJpZXMnOiBbICdKUCcgXSxcbiAgICAgICAgICAgIC8vIDEwIHJlcXVlc3RzIHBlciBzZWNvbmQgPSAxMDAwbXMgLyAxMCA9IDEwMG1zIGJldHdlZW4gcmVxdWVzdHMgKHB1YmxpYyBtYXJrZXQgZW5kcG9pbnRzKVxuICAgICAgICAgICAgJ3JhdGVMaW1pdCc6IDEwMCxcbiAgICAgICAgICAgICd2ZXJzaW9uJzogJzEnLFxuICAgICAgICAgICAgJ2hhcyc6IHtcbiAgICAgICAgICAgICAgICAnQ09SUyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAnc3BvdCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ21hcmdpbic6IHVuZGVmaW5lZCwgLy8gaGFzIGJ1dCB1bmltcGxlbWVudGVkXG4gICAgICAgICAgICAgICAgJ3N3YXAnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZnV0dXJlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ29wdGlvbic6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdjYW5jZWxPcmRlcic6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZU1hcmtldE9yZGVyJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZU9yZGVyJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hCYWxhbmNlJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hDbG9zZWRPcmRlcnMnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaEZ1bmRpbmdIaXN0b3J5JzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoRnVuZGluZ1JhdGUnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hGdW5kaW5nUmF0ZUhpc3RvcnknOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hGdW5kaW5nUmF0ZXMnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hJbmRleE9ITENWJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoTWFya2V0cyc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoTWFya09ITENWJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoT3BlbkludGVyZXN0SGlzdG9yeSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdmZXRjaE9wZW5PcmRlcnMnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaE9yZGVyQm9vayc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoUHJlbWl1bUluZGV4T0hMQ1YnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hUaWNrZXInOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaFRyYWRlcyc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoVHJhZGluZ0ZlZSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdmZXRjaFRyYWRpbmdGZWVzJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ3dpdGhkcmF3JzogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAndXJscyc6IHtcbiAgICAgICAgICAgICAgICAnbG9nbyc6ICdodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjk0NDU0LzI3NzY2OTI3LTM5Y2EyYWRhLTVlZWItMTFlNy05NzJmLTFiNDE5OTUxOGNhNi5qcGcnLFxuICAgICAgICAgICAgICAgICdhcGknOiB7XG4gICAgICAgICAgICAgICAgICAgICdyZXN0JzogJ2h0dHBzOi8vYXBpLnphaWYuanAnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3d3dyc6ICdodHRwczovL3phaWYuanAnLFxuICAgICAgICAgICAgICAgICdkb2MnOiBbXG4gICAgICAgICAgICAgICAgICAgICdodHRwczovL3RlY2hidXJlYXUtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9pbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vY29ycC56YWlmLmpwL2FwaS1kb2NzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vY29ycC56YWlmLmpwL2FwaS1kb2NzL2FwaV9saW5rcycsXG4gICAgICAgICAgICAgICAgICAgICdodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96YWlmLmpwJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS95b3UyMTk3OS9ub2RlLXphaWYnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgJ2ZlZXMnOiAnaHR0cHM6Ly96YWlmLmpwL2ZlZT9sYW5nPWVuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZmVlcyc6IHtcbiAgICAgICAgICAgICAgICAndHJhZGluZyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3BlcmNlbnRhZ2UnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAndGFrZXInOiB0aGlzLnBhcnNlTnVtYmVyICgnMC4wMDEnKSxcbiAgICAgICAgICAgICAgICAgICAgJ21ha2VyJzogdGhpcy5wYXJzZU51bWJlciAoJzAnKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdhcGknOiB7XG4gICAgICAgICAgICAgICAgJ3B1YmxpYyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2dldCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXB0aC97cGFpcn0nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnJlbmNpZXMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW5jaWVzL2FsbCc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3VycmVuY3lfcGFpcnMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW5jeV9wYWlycy9hbGwnOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3RfcHJpY2Uve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWNrZXIve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFkZXMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwcml2YXRlJzoge1xuICAgICAgICAgICAgICAgICAgICAncG9zdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVfb3JkZXJzJzogNSwgLy8gMTAgaW4gNSBzZWNvbmRzID0gMiBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDIgPSA1XG4gICAgICAgICAgICAgICAgICAgICAgICAnY2FuY2VsX29yZGVyJzogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXBvc2l0X2hpc3RvcnknOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9pZF9pbmZvJzogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfaW5mbyc6IDEwLCAvLyAxMCBpbiAxMCBzZWNvbmRzID0gMSBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDEgPSAxMFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9pbmZvMic6IDUsIC8vIDIwIGluIDEwIHNlY29uZHMgPSAyIHBlciBzZWNvbmQgPT4gY29zdCA9IDEwIC8gMiA9IDVcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGVyc29uYWxfaW5mbyc6IDUsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhZGUnOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWRlX2hpc3RvcnknOiA1MCwgLy8gMTIgaW4gNjAgc2Vjb25kcyA9IDAuMiBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDAuMiA9IDUwXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2l0aGRyYXcnOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGhkcmF3X2hpc3RvcnknOiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2VjYXBpJzoge1xuICAgICAgICAgICAgICAgICAgICAncG9zdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVJbnZvaWNlJzogMSwgLy8gdW52ZXJpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldEludm9pY2UnOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldEludm9pY2VJZHNCeU9yZGVyTnVtYmVyJzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjYW5jZWxJbnZvaWNlJzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd0bGFwaSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3Bvc3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3Bvc2l0aW9ucyc6IDY2LCAvLyAxMCBpbiA2MCBzZWNvbmRzID0gMC4xNjYgcGVyIHNlY29uZCA9PiBjb3N0ID0gMTAgLyAwLjE2NiA9IDY2XG4gICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb25faGlzdG9yeSc6IDY2LCAvLyAxMCBpbiA2MCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlX3Bvc2l0aW9ucyc6IDUsIC8vIDIwIGluIDEwIHNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfcG9zaXRpb24nOiAzMywgLy8gMyBpbiAxMCBzZWNvbmRzID0gMC4zIHBlciBzZWNvbmQgPT4gY29zdCA9IDEwIC8gMC4zID0gMzNcbiAgICAgICAgICAgICAgICAgICAgICAgICdjaGFuZ2VfcG9zaXRpb24nOiAzMywgLy8gMyBpbiAxMCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2FuY2VsX3Bvc2l0aW9uJzogMzMsIC8vIDMgaW4gMTAgc2Vjb25kc1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2ZhcGknOiB7XG4gICAgICAgICAgICAgICAgICAgICdnZXQnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBzL3tncm91cF9pZH0nOiAxLCAvLyB0ZXN0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGFzdF9wcmljZS97Z3JvdXBfaWR9L3twYWlyfSc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2VyL3tncm91cF9pZH0ve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFkZXMve2dyb3VwX2lkfS97cGFpcn0nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHRoL3tncm91cF9pZH0ve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdvcHRpb25zJzoge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwcmVjaXNpb25Nb2RlJzogVElDS19TSVpFLFxuICAgICAgICAgICAgJ2V4Y2VwdGlvbnMnOiB7XG4gICAgICAgICAgICAgICAgJ2V4YWN0Jzoge1xuICAgICAgICAgICAgICAgICAgICAndW5zdXBwb3J0ZWQgY3VycmVuY3lfcGFpcic6IEJhZFJlcXVlc3QsIC8vIHtcImVycm9yXCI6IFwidW5zdXBwb3J0ZWQgY3VycmVuY3lfcGFpclwifVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Jyb2FkJzoge1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaE1hcmtldHMgKHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hNYXJrZXRzXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvUHVibGljQVBJLmh0bWwjaWQxMlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gcmV0cmlldmVzIGRhdGEgb24gYWxsIG1hcmtldHMgZm9yIHphaWZcbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIGV4dHJhIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGV4Y2hhbmdlIEFQSSBlbmRwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7b2JqZWN0W119IGFuIGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIG1hcmtldCBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBtYXJrZXRzID0gYXdhaXQgdGhpcy5wdWJsaWNHZXRDdXJyZW5jeVBhaXJzQWxsIChwYXJhbXMpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgICAgW1xuICAgICAgICAvLyAgICAgICAgIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJhdXhfdW5pdF9wb2ludFwiOiAwLFxuICAgICAgICAvLyAgICAgICAgICAgICBcIml0ZW1famFwYW5lc2VcIjogXCJcXHUzMGQzXFx1MzBjM1xcdTMwYzhcXHUzMGIzXFx1MzBhNFxcdTMwZjNcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJhdXhfdW5pdF9zdGVwXCI6IDUuMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlxcdTMwZDNcXHUzMGMzXFx1MzBjOFxcdTMwYjNcXHUzMGE0XFx1MzBmM1xcdTMwZmJcXHU2NWU1XFx1NjcyY1xcdTUxODZcXHUzMDZlXFx1NTNkNlxcdTVmMTVcXHUzMDkyXFx1ODg0Y1xcdTMwNDZcXHUzMDUzXFx1MzA2OFxcdTMwNGNcXHUzMDY3XFx1MzA0ZFxcdTMwN2VcXHUzMDU5XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaXRlbV91bml0X21pblwiOiAwLjAwMSxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJldmVudF9udW1iZXJcIjogMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJjdXJyZW5jeV9wYWlyXCI6IFwiYnRjX2pweVwiLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImlzX3Rva2VuXCI6IGZhbHNlLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImF1eF91bml0X21pblwiOiA1LjAsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiYXV4X2phcGFuZXNlXCI6IFwiXFx1NjVlNVxcdTY3MmNcXHU1MTg2XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaWRcIjogMSxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJpdGVtX3VuaXRfc3RlcFwiOiAwLjAwMDEsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwibmFtZVwiOiBcIkJUQy9KUFlcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJzZXFcIjogMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkJUQy9KUFlcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIF1cbiAgICAgICAgLy9cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VNYXJrZXRzIChtYXJrZXRzKTtcbiAgICB9XG5cbiAgICBwYXJzZU1hcmtldCAobWFya2V0KTogTWFya2V0IHtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnNhZmVTdHJpbmcgKG1hcmtldCwgJ2N1cnJlbmN5X3BhaXInKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuc2FmZVN0cmluZyAobWFya2V0LCAnbmFtZScpO1xuICAgICAgICBjb25zdCBbIGJhc2VJZCwgcXVvdGVJZCBdID0gbmFtZS5zcGxpdCAoJy8nKTtcbiAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuc2FmZUN1cnJlbmN5Q29kZSAoYmFzZUlkKTtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLnNhZmVDdXJyZW5jeUNvZGUgKHF1b3RlSWQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBiYXNlICsgJy8nICsgcXVvdGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWQnOiBpZCxcbiAgICAgICAgICAgICdzeW1ib2wnOiBzeW1ib2wsXG4gICAgICAgICAgICAnYmFzZSc6IGJhc2UsXG4gICAgICAgICAgICAncXVvdGUnOiBxdW90ZSxcbiAgICAgICAgICAgICdzZXR0bGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYmFzZUlkJzogYmFzZUlkLFxuICAgICAgICAgICAgJ3F1b3RlSWQnOiBxdW90ZUlkLFxuICAgICAgICAgICAgJ3NldHRsZUlkJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3R5cGUnOiAnc3BvdCcsXG4gICAgICAgICAgICAnc3BvdCc6IHRydWUsXG4gICAgICAgICAgICAnbWFyZ2luJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3N3YXAnOiBmYWxzZSxcbiAgICAgICAgICAgICdmdXR1cmUnOiBmYWxzZSxcbiAgICAgICAgICAgICdvcHRpb24nOiBmYWxzZSxcbiAgICAgICAgICAgICdhY3RpdmUnOiB1bmRlZmluZWQsIC8vIGNhbiB0cmFkZSBvciBub3RcbiAgICAgICAgICAgICdjb250cmFjdCc6IGZhbHNlLFxuICAgICAgICAgICAgJ2xpbmVhcic6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbnZlcnNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2NvbnRyYWN0U2l6ZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdleHBpcnknOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZXhwaXJ5RGF0ZXRpbWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnc3RyaWtlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ29wdGlvblR5cGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAncHJlY2lzaW9uJzoge1xuICAgICAgICAgICAgICAgICdhbW91bnQnOiB0aGlzLnNhZmVOdW1iZXIgKG1hcmtldCwgJ2l0ZW1fdW5pdF9zdGVwJyksXG4gICAgICAgICAgICAgICAgJ3ByaWNlJzogdGhpcy5wYXJzZU51bWJlciAodGhpcy5wYXJzZVByZWNpc2lvbiAodGhpcy5zYWZlU3RyaW5nIChtYXJrZXQsICdhdXhfdW5pdF9wb2ludCcpKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2xpbWl0cyc6IHtcbiAgICAgICAgICAgICAgICAnbGV2ZXJhZ2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnYW1vdW50Jzoge1xuICAgICAgICAgICAgICAgICAgICAnbWluJzogdGhpcy5zYWZlTnVtYmVyIChtYXJrZXQsICdpdGVtX3VuaXRfbWluJyksXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAncHJpY2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB0aGlzLnNhZmVOdW1iZXIgKG1hcmtldCwgJ2F1eF91bml0X21pbicpLFxuICAgICAgICAgICAgICAgICAgICAnbWF4JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Nvc3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnY3JlYXRlZCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbmZvJzogbWFya2V0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHBhcnNlQmFsYW5jZSAocmVzcG9uc2UpOiBCYWxhbmNlcyB7XG4gICAgICAgIGNvbnN0IGJhbGFuY2VzID0gdGhpcy5zYWZlVmFsdWUgKHJlc3BvbnNlLCAncmV0dXJuJywge30pO1xuICAgICAgICBjb25zdCBkZXBvc2l0ID0gdGhpcy5zYWZlVmFsdWUgKGJhbGFuY2VzLCAnZGVwb3NpdCcpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICAnaW5mbyc6IHJlc3BvbnNlLFxuICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdkYXRldGltZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZnVuZHMgPSB0aGlzLnNhZmVWYWx1ZSAoYmFsYW5jZXMsICdmdW5kcycsIHt9KTtcbiAgICAgICAgY29uc3QgY3VycmVuY3lJZHMgPSBPYmplY3Qua2V5cyAoZnVuZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbmN5SWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW5jeUlkID0gY3VycmVuY3lJZHNbaV07XG4gICAgICAgICAgICBjb25zdCBjb2RlID0gdGhpcy5zYWZlQ3VycmVuY3lDb2RlIChjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGJhbGFuY2UgPSB0aGlzLnNhZmVTdHJpbmcgKGZ1bmRzLCBjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmFjY291bnQgKCk7XG4gICAgICAgICAgICBhY2NvdW50WydmcmVlJ10gPSBiYWxhbmNlO1xuICAgICAgICAgICAgYWNjb3VudFsndG90YWwnXSA9IGJhbGFuY2U7XG4gICAgICAgICAgICBpZiAoZGVwb3NpdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbmN5SWQgaW4gZGVwb3NpdCkge1xuICAgICAgICAgICAgICAgICAgICBhY2NvdW50Wyd0b3RhbCddID0gdGhpcy5zYWZlU3RyaW5nIChkZXBvc2l0LCBjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbY29kZV0gPSBhY2NvdW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVCYWxhbmNlIChyZXN1bHQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoQmFsYW5jZSAocGFyYW1zID0ge30pOiBQcm9taXNlPEJhbGFuY2VzPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hCYWxhbmNlXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvVHJhZGluZ0FQSS5odG1sI2lkMTBcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIHF1ZXJ5IGZvciBiYWxhbmNlIGFuZCBnZXQgdGhlIGFtb3VudCBvZiBmdW5kcyBhdmFpbGFibGUgZm9yIHRyYWRpbmcgb3IgZnVuZHMgbG9ja2VkIGluIG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGEgW2JhbGFuY2Ugc3RydWN0dXJlXXtAbGluayBodHRwczovL2RvY3MuY2N4dC5jb20vIy8/aWQ9YmFsYW5jZS1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RHZXRJbmZvIChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUJhbGFuY2UgKHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaE9yZGVyQm9vayAoc3ltYm9sOiBzdHJpbmcsIGxpbWl0OiBJbnQgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9KTogUHJvbWlzZTxPcmRlckJvb2s+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaE9yZGVyQm9va1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1B1YmxpY0FQSS5odG1sI2lkMzRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGZldGNoZXMgaW5mb3JtYXRpb24gb24gb3BlbiBvcmRlcnMgd2l0aCBiaWQgKGJ1eSkgYW5kIGFzayAoc2VsbCkgcHJpY2VzLCB2b2x1bWVzIGFuZCBvdGhlciBkYXRhXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgdW5pZmllZCBzeW1ib2wgb2YgdGhlIG1hcmtldCB0byBmZXRjaCB0aGUgb3JkZXIgYm9vayBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtsaW1pdF0gdGhlIG1heGltdW0gYW1vdW50IG9mIG9yZGVyIGJvb2sgZW50cmllcyB0byByZXR1cm5cbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIGV4dHJhIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGV4Y2hhbmdlIEFQSSBlbmRwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBBIGRpY3Rpb25hcnkgb2YgW29yZGVyIGJvb2sgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPW9yZGVyLWJvb2stc3RydWN0dXJlfSBpbmRleGVkIGJ5IG1hcmtldCBzeW1ib2xzXG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHVibGljR2V0RGVwdGhQYWlyICh0aGlzLmV4dGVuZCAocmVxdWVzdCwgcGFyYW1zKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlT3JkZXJCb29rIChyZXNwb25zZSwgbWFya2V0WydzeW1ib2wnXSk7XG4gICAgfVxuXG4gICAgcGFyc2VUaWNrZXIgKHRpY2tlciwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBUaWNrZXIge1xuICAgICAgICAvL1xuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBcImxhc3RcIjogOWUtMDgsXG4gICAgICAgIC8vICAgICBcImhpZ2hcIjogMWUtMDcsXG4gICAgICAgIC8vICAgICBcImxvd1wiOiA5ZS0wOCxcbiAgICAgICAgLy8gICAgIFwidndhcFwiOiAwLjAsXG4gICAgICAgIC8vICAgICBcInZvbHVtZVwiOiAxMzUyNTAuMCxcbiAgICAgICAgLy8gICAgIFwiYmlkXCI6IDllLTA4LFxuICAgICAgICAvLyAgICAgXCJhc2tcIjogMWUtMDdcbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICBjb25zdCBzeW1ib2wgPSB0aGlzLnNhZmVTeW1ib2wgKHVuZGVmaW5lZCwgbWFya2V0KTtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5taWxsaXNlY29uZHMgKCk7XG4gICAgICAgIGNvbnN0IHZ3YXAgPSB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ3Z3YXAnKTtcbiAgICAgICAgY29uc3QgYmFzZVZvbHVtZSA9IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAndm9sdW1lJyk7XG4gICAgICAgIGNvbnN0IHF1b3RlVm9sdW1lID0gUHJlY2lzZS5zdHJpbmdNdWwgKGJhc2VWb2x1bWUsIHZ3YXApO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5zYWZlU3RyaW5nICh0aWNrZXIsICdsYXN0Jyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVUaWNrZXIgKHtcbiAgICAgICAgICAgICdzeW1ib2wnOiBzeW1ib2wsXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wLFxuICAgICAgICAgICAgJ2RhdGV0aW1lJzogdGhpcy5pc284NjAxICh0aW1lc3RhbXApLFxuICAgICAgICAgICAgJ2hpZ2gnOiB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ2hpZ2gnKSxcbiAgICAgICAgICAgICdsb3cnOiB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ2xvdycpLFxuICAgICAgICAgICAgJ2JpZCc6IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAnYmlkJyksXG4gICAgICAgICAgICAnYmlkVm9sdW1lJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2Fzayc6IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAnYXNrJyksXG4gICAgICAgICAgICAnYXNrVm9sdW1lJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3Z3YXAnOiB2d2FwLFxuICAgICAgICAgICAgJ29wZW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY2xvc2UnOiBsYXN0LFxuICAgICAgICAgICAgJ2xhc3QnOiBsYXN0LFxuICAgICAgICAgICAgJ3ByZXZpb3VzQ2xvc2UnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY2hhbmdlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3BlcmNlbnRhZ2UnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXZlcmFnZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdiYXNlVm9sdW1lJzogYmFzZVZvbHVtZSxcbiAgICAgICAgICAgICdxdW90ZVZvbHVtZSc6IHF1b3RlVm9sdW1lLFxuICAgICAgICAgICAgJ2luZm8nOiB0aWNrZXIsXG4gICAgICAgIH0sIG1hcmtldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2hUaWNrZXIgKHN5bWJvbDogc3RyaW5nLCBwYXJhbXMgPSB7fSk6IFByb21pc2U8VGlja2VyPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hUaWNrZXJcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9QdWJsaWNBUEkuaHRtbCNpZDIyXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBmZXRjaGVzIGEgcHJpY2UgdGlja2VyLCBhIHN0YXRpc3RpY2FsIGNhbGN1bGF0aW9uIHdpdGggdGhlIGluZm9ybWF0aW9uIGNhbGN1bGF0ZWQgb3ZlciB0aGUgcGFzdCAyNCBob3VycyBmb3IgYSBzcGVjaWZpYyBtYXJrZXRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGZldGNoIHRoZSB0aWNrZXIgZm9yXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge29iamVjdH0gYSBbdGlja2VyIHN0cnVjdHVyZV17QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPXRpY2tlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aWNrZXIgPSBhd2FpdCB0aGlzLnB1YmxpY0dldFRpY2tlclBhaXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgXCJsYXN0XCI6IDllLTA4LFxuICAgICAgICAvLyAgICAgXCJoaWdoXCI6IDFlLTA3LFxuICAgICAgICAvLyAgICAgXCJsb3dcIjogOWUtMDgsXG4gICAgICAgIC8vICAgICBcInZ3YXBcIjogMC4wLFxuICAgICAgICAvLyAgICAgXCJ2b2x1bWVcIjogMTM1MjUwLjAsXG4gICAgICAgIC8vICAgICBcImJpZFwiOiA5ZS0wOCxcbiAgICAgICAgLy8gICAgIFwiYXNrXCI6IDFlLTA3XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaWNrZXIgKHRpY2tlciwgbWFya2V0KTtcbiAgICB9XG5cbiAgICBwYXJzZVRyYWRlICh0cmFkZSwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBUcmFkZSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGZldGNoVHJhZGVzIChwdWJsaWMpXG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICAge1xuICAgICAgICAvLyAgICAgICAgICBcImRhdGVcIjogMTY0ODU1OTQxNCxcbiAgICAgICAgLy8gICAgICAgICAgXCJwcmljZVwiOiA1ODgwMzc1LjAsXG4gICAgICAgIC8vICAgICAgICAgIFwiYW1vdW50XCI6IDAuMDE3LFxuICAgICAgICAvLyAgICAgICAgICBcInRpZFwiOiAxNzYxMjY1NTcsXG4gICAgICAgIC8vICAgICAgICAgIFwiY3VycmVuY3lfcGFpclwiOiBcImJ0Y19qcHlcIixcbiAgICAgICAgLy8gICAgICAgICAgXCJ0cmFkZV90eXBlXCI6IFwiYXNrXCJcbiAgICAgICAgLy8gICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIGxldCBzaWRlID0gdGhpcy5zYWZlU3RyaW5nICh0cmFkZSwgJ3RyYWRlX3R5cGUnKTtcbiAgICAgICAgc2lkZSA9IChzaWRlID09PSAnYmlkJykgPyAnYnV5JyA6ICdzZWxsJztcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5zYWZlVGltZXN0YW1wICh0cmFkZSwgJ2RhdGUnKTtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnNhZmVTdHJpbmcyICh0cmFkZSwgJ2lkJywgJ3RpZCcpO1xuICAgICAgICBjb25zdCBwcmljZVN0cmluZyA9IHRoaXMuc2FmZVN0cmluZyAodHJhZGUsICdwcmljZScpO1xuICAgICAgICBjb25zdCBhbW91bnRTdHJpbmcgPSB0aGlzLnNhZmVTdHJpbmcgKHRyYWRlLCAnYW1vdW50Jyk7XG4gICAgICAgIGNvbnN0IG1hcmtldElkID0gdGhpcy5zYWZlU3RyaW5nICh0cmFkZSwgJ2N1cnJlbmN5X3BhaXInKTtcbiAgICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5zYWZlU3ltYm9sIChtYXJrZXRJZCwgbWFya2V0LCAnXycpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlVHJhZGUgKHtcbiAgICAgICAgICAgICdpZCc6IGlkLFxuICAgICAgICAgICAgJ2luZm8nOiB0cmFkZSxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB0aW1lc3RhbXAsXG4gICAgICAgICAgICAnZGF0ZXRpbWUnOiB0aGlzLmlzbzg2MDEgKHRpbWVzdGFtcCksXG4gICAgICAgICAgICAnc3ltYm9sJzogc3ltYm9sLFxuICAgICAgICAgICAgJ3R5cGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnc2lkZSc6IHNpZGUsXG4gICAgICAgICAgICAnb3JkZXInOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFrZXJPck1ha2VyJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3ByaWNlJzogcHJpY2VTdHJpbmcsXG4gICAgICAgICAgICAnYW1vdW50JzogYW1vdW50U3RyaW5nLFxuICAgICAgICAgICAgJ2Nvc3QnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZmVlJzogdW5kZWZpbmVkLFxuICAgICAgICB9LCBtYXJrZXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoVHJhZGVzIChzeW1ib2w6IHN0cmluZywgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPFRyYWRlW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaFRyYWRlc1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1B1YmxpY0FQSS5odG1sI2lkMjhcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGdldCB0aGUgbGlzdCBvZiBtb3N0IHJlY2VudCB0cmFkZXMgZm9yIGEgcGFydGljdWxhciBzeW1ib2xcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGZldGNoIHRyYWRlcyBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtzaW5jZV0gdGltZXN0YW1wIGluIG1zIG9mIHRoZSBlYXJsaWVzdCB0cmFkZSB0byBmZXRjaFxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW2xpbWl0XSB0aGUgbWF4aW11bSBhbW91bnQgb2YgdHJhZGVzIHRvIGZldGNoXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge1RyYWRlW119IGEgbGlzdCBvZiBbdHJhZGUgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPXB1YmxpYy10cmFkZXN9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnB1YmxpY0dldFRyYWRlc1BhaXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgICBbXG4gICAgICAgIC8vICAgICAgICAgIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwiZGF0ZVwiOiAxNjQ4NTU5NDE0LFxuICAgICAgICAvLyAgICAgICAgICAgICAgXCJwcmljZVwiOiA1ODgwMzc1LjAsXG4gICAgICAgIC8vICAgICAgICAgICAgICBcImFtb3VudFwiOiAwLjAxNyxcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwidGlkXCI6IDE3NjEyNjU1NyxcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwiY3VycmVuY3lfcGFpclwiOiBcImJ0Y19qcHlcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwidHJhZGVfdHlwZVwiOiBcImFza1wiXG4gICAgICAgIC8vICAgICAgICAgIH0sIC4uLlxuICAgICAgICAvLyAgICAgIF1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgbnVtVHJhZGVzID0gcmVzcG9uc2UubGVuZ3RoO1xuICAgICAgICBpZiAobnVtVHJhZGVzID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFRyYWRlID0gcmVzcG9uc2VbMF07XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzIChmaXJzdFRyYWRlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlVHJhZGVzIChyZXNwb25zZSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZU9yZGVyIChzeW1ib2w6IHN0cmluZywgdHlwZTogT3JkZXJUeXBlLCBzaWRlOiBPcmRlclNpZGUsIGFtb3VudCwgcHJpY2UgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjY3JlYXRlT3JkZXJcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9NYXJnaW5UcmFkaW5nQVBJLmh0bWwjaWQyM1xuICAgICAgICAgKiBAZGVzY3JpcHRpb24gY3JlYXRlIGEgdHJhZGUgb3JkZXJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGNyZWF0ZSBhbiBvcmRlciBpblxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBtdXN0IGJlICdsaW1pdCdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZGUgJ2J1eScgb3IgJ3NlbGwnXG4gICAgICAgICAqIEBwYXJhbSB7ZmxvYXR9IGFtb3VudCBob3cgbXVjaCBvZiBjdXJyZW5jeSB5b3Ugd2FudCB0byB0cmFkZSBpbiB1bml0cyBvZiBiYXNlIGN1cnJlbmN5XG4gICAgICAgICAqIEBwYXJhbSB7ZmxvYXR9IFtwcmljZV0gdGhlIHByaWNlIGF0IHdoaWNoIHRoZSBvcmRlciBpcyB0byBiZSBmdWxsZmlsbGVkLCBpbiB1bml0cyBvZiB0aGUgcXVvdGUgY3VycmVuY3ksIGlnbm9yZWQgaW4gbWFya2V0IG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGFuIFtvcmRlciBzdHJ1Y3R1cmVde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBpZiAodHlwZSAhPT0gJ2xpbWl0Jykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2hhbmdlRXJyb3IgKHRoaXMuaWQgKyAnIGNyZWF0ZU9yZGVyKCkgYWxsb3dzIGxpbWl0IG9yZGVycyBvbmx5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWFya2V0ID0gdGhpcy5tYXJrZXQgKHN5bWJvbCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAnY3VycmVuY3lfcGFpcic6IG1hcmtldFsnaWQnXSxcbiAgICAgICAgICAgICdhY3Rpb24nOiAoc2lkZSA9PT0gJ2J1eScpID8gJ2JpZCcgOiAnYXNrJyxcbiAgICAgICAgICAgICdhbW91bnQnOiBhbW91bnQsXG4gICAgICAgICAgICAncHJpY2UnOiBwcmljZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnByaXZhdGVQb3N0VHJhZGUgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZU9yZGVyICh7XG4gICAgICAgICAgICAnaW5mbyc6IHJlc3BvbnNlLFxuICAgICAgICAgICAgJ2lkJzogcmVzcG9uc2VbJ3JldHVybiddWydvcmRlcl9pZCddLnRvU3RyaW5nICgpLFxuICAgICAgICB9LCBtYXJrZXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbmNlbE9yZGVyIChpZDogc3RyaW5nLCBzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNjYW5jZWxPcmRlclxuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1RyYWRpbmdBUEkuaHRtbCNpZDM3XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBjYW5jZWxzIGFuIG9wZW4gb3JkZXJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIG9yZGVyIGlkXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgbm90IHVzZWQgYnkgemFpZiBjYW5jZWxPcmRlciAoKVxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IEFuIFtvcmRlciBzdHJ1Y3R1cmVde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICAgICAgJ29yZGVyX2lkJzogaWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByaXZhdGVQb3N0Q2FuY2VsT3JkZXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICB9XG5cbiAgICBwYXJzZU9yZGVyIChvcmRlciwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBPcmRlciB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XG4gICAgICAgIC8vICAgICAgICAgXCJjdXJyZW5jeV9wYWlyXCI6IFwiYnRjX2pweVwiLFxuICAgICAgICAvLyAgICAgICAgIFwiYWN0aW9uXCI6IFwiYXNrXCIsXG4gICAgICAgIC8vICAgICAgICAgXCJhbW91bnRcIjogMC4wMyxcbiAgICAgICAgLy8gICAgICAgICBcInByaWNlXCI6IDU2MDAwLFxuICAgICAgICAvLyAgICAgICAgIFwidGltZXN0YW1wXCI6IDE0MDIwMjExMjUsXG4gICAgICAgIC8vICAgICAgICAgXCJjb21tZW50XCIgOiBcImRlbW9cIlxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBsZXQgc2lkZSA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdhY3Rpb24nKTtcbiAgICAgICAgc2lkZSA9IChzaWRlID09PSAnYmlkJykgPyAnYnV5JyA6ICdzZWxsJztcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5zYWZlVGltZXN0YW1wIChvcmRlciwgJ3RpbWVzdGFtcCcpO1xuICAgICAgICBjb25zdCBtYXJrZXRJZCA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdjdXJyZW5jeV9wYWlyJyk7XG4gICAgICAgIGNvbnN0IHN5bWJvbCA9IHRoaXMuc2FmZVN5bWJvbCAobWFya2V0SWQsIG1hcmtldCwgJ18nKTtcbiAgICAgICAgY29uc3QgcHJpY2UgPSB0aGlzLnNhZmVTdHJpbmcgKG9yZGVyLCAncHJpY2UnKTtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5zYWZlU3RyaW5nIChvcmRlciwgJ2Ftb3VudCcpO1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdpZCcpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlT3JkZXIgKHtcbiAgICAgICAgICAgICdpZCc6IGlkLFxuICAgICAgICAgICAgJ2NsaWVudE9yZGVySWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wLFxuICAgICAgICAgICAgJ2RhdGV0aW1lJzogdGhpcy5pc284NjAxICh0aW1lc3RhbXApLFxuICAgICAgICAgICAgJ2xhc3RUcmFkZVRpbWVzdGFtcCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdzdGF0dXMnOiAnb3BlbicsXG4gICAgICAgICAgICAnc3ltYm9sJzogc3ltYm9sLFxuICAgICAgICAgICAgJ3R5cGUnOiAnbGltaXQnLFxuICAgICAgICAgICAgJ3RpbWVJbkZvcmNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3Bvc3RPbmx5JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3NpZGUnOiBzaWRlLFxuICAgICAgICAgICAgJ3ByaWNlJzogcHJpY2UsXG4gICAgICAgICAgICAnc3RvcFByaWNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3RyaWdnZXJQcmljZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdjb3N0JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2Ftb3VudCc6IGFtb3VudCxcbiAgICAgICAgICAgICdmaWxsZWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAncmVtYWluaW5nJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3RyYWRlcyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdmZWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnaW5mbyc6IG9yZGVyLFxuICAgICAgICAgICAgJ2F2ZXJhZ2UnOiB1bmRlZmluZWQsXG4gICAgICAgIH0sIG1hcmtldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2hPcGVuT3JkZXJzIChzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaE9wZW5PcmRlcnNcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9NYXJnaW5UcmFkaW5nQVBJLmh0bWwjaWQyOFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gZmV0Y2ggYWxsIHVuZmlsbGVkIGN1cnJlbnRseSBvcGVuIG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIHVuaWZpZWQgbWFya2V0IHN5bWJvbFxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW3NpbmNlXSB0aGUgZWFybGllc3QgdGltZSBpbiBtcyB0byBmZXRjaCBvcGVuIG9yZGVycyBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtsaW1pdF0gdGhlIG1heGltdW0gbnVtYmVyIG9mICBvcGVuIG9yZGVycyBzdHJ1Y3R1cmVzIHRvIHJldHJpZXZlXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge09yZGVyW119IGEgbGlzdCBvZiBbb3JkZXIgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPW9yZGVyLXN0cnVjdHVyZX1cbiAgICAgICAgICovXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1hcmtldHMgKCk7XG4gICAgICAgIGxldCBtYXJrZXQ6IE1hcmtldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgIC8vICdpc190b2tlbic6IGZhbHNlLFxuICAgICAgICAgICAgLy8gJ2lzX3Rva2VuX2JvdGgnOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgICAgIHJlcXVlc3RbJ2N1cnJlbmN5X3BhaXInXSA9IG1hcmtldFsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RBY3RpdmVPcmRlcnMgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcmRlcnMgKHJlc3BvbnNlWydyZXR1cm4nXSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoQ2xvc2VkT3JkZXJzIChzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaENsb3NlZE9yZGVyc1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1RyYWRpbmdBUEkuaHRtbCNpZDI0XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBmZXRjaGVzIGluZm9ybWF0aW9uIG9uIG11bHRpcGxlIGNsb3NlZCBvcmRlcnMgbWFkZSBieSB0aGUgdXNlclxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIHVuaWZpZWQgbWFya2V0IHN5bWJvbCBvZiB0aGUgbWFya2V0IG9yZGVycyB3ZXJlIG1hZGUgaW5cbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtzaW5jZV0gdGhlIGVhcmxpZXN0IHRpbWUgaW4gbXMgdG8gZmV0Y2ggb3JkZXJzIGZvclxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW2xpbWl0XSB0aGUgbWF4aW11bSBudW1iZXIgb2YgIG9yZGUgc3RydWN0dXJlcyB0byByZXRyaWV2ZVxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtPcmRlcltdfSBhIGxpc3Qgb2YgW29yZGVyIHN0cnVjdHVyZXNde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBsZXQgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAvLyAnZnJvbSc6IDAsXG4gICAgICAgICAgICAvLyAnY291bnQnOiAxMDAwLFxuICAgICAgICAgICAgLy8gJ2Zyb21faWQnOiAwLFxuICAgICAgICAgICAgLy8gJ2VuZF9pZCc6IDEwMDAsXG4gICAgICAgICAgICAvLyAnb3JkZXInOiAnREVTQycsXG4gICAgICAgICAgICAvLyAnc2luY2UnOiAxNTAzODIxMDUxLFxuICAgICAgICAgICAgLy8gJ2VuZCc6IDE1MDM4MjEwNTEsXG4gICAgICAgICAgICAvLyAnaXNfdG9rZW4nOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgICAgIHJlcXVlc3RbJ2N1cnJlbmN5X3BhaXInXSA9IG1hcmtldFsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RUcmFkZUhpc3RvcnkgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcmRlcnMgKHJlc3BvbnNlWydyZXR1cm4nXSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIHdpdGhkcmF3IChjb2RlOiBzdHJpbmcsIGFtb3VudCwgYWRkcmVzcywgdGFnID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1ldGhvZFxuICAgICAgICAgKiBAbmFtZSB6YWlmI3dpdGhkcmF3XG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvVHJhZGluZ0FQSS5odG1sI2lkNDFcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIG1ha2UgYSB3aXRoZHJhd2FsXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIHVuaWZpZWQgY3VycmVuY3kgY29kZVxuICAgICAgICAgKiBAcGFyYW0ge2Zsb2F0fSBhbW91bnQgdGhlIGFtb3VudCB0byB3aXRoZHJhd1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyB0byB3aXRoZHJhdyB0b1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge29iamVjdH0gYSBbdHJhbnNhY3Rpb24gc3RydWN0dXJlXXtAbGluayBodHRwczovL2RvY3MuY2N4dC5jb20vIy8/aWQ9dHJhbnNhY3Rpb24tc3RydWN0dXJlfVxuICAgICAgICAgKi9cbiAgICAgICAgWyB0YWcsIHBhcmFtcyBdID0gdGhpcy5oYW5kbGVXaXRoZHJhd1RhZ0FuZFBhcmFtcyAodGFnLCBwYXJhbXMpO1xuICAgICAgICB0aGlzLmNoZWNrQWRkcmVzcyAoYWRkcmVzcyk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1hcmtldHMgKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeSAoY29kZSk7XG4gICAgICAgIGlmIChjb2RlID09PSAnSlBZJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2hhbmdlRXJyb3IgKHRoaXMuaWQgKyAnIHdpdGhkcmF3KCkgZG9lcyBub3QgYWxsb3cgJyArIGNvZGUgKyAnIHdpdGhkcmF3YWxzJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5WydpZCddLFxuICAgICAgICAgICAgJ2Ftb3VudCc6IGFtb3VudCxcbiAgICAgICAgICAgICdhZGRyZXNzJzogYWRkcmVzcyxcbiAgICAgICAgICAgIC8vICdtZXNzYWdlJzogJ0hpIScsIC8vIFhFTSBhbmQgb3RoZXJzXG4gICAgICAgICAgICAvLyAnb3B0X2ZlZSc6IDAuMDAzLCAvLyBCVEMgYW5kIE1PTkEgb25seVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcXVlc3RbJ21lc3NhZ2UnXSA9IHRhZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByaXZhdGVQb3N0V2l0aGRyYXcgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgIHtcbiAgICAgICAgLy8gICAgICAgICBcInN1Y2Nlc3NcIjogMSxcbiAgICAgICAgLy8gICAgICAgICBcInJldHVyblwiOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaWRcIjogMjM2MzQsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiZmVlXCI6IDAuMDAxLFxuICAgICAgICAvLyAgICAgICAgICAgICBcInR4aWRcIjosXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiZnVuZHNcIjoge1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgXCJqcHlcIjogMTUzMjAsXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBcImJ0Y1wiOiAxLjM5MixcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIFwieGVtXCI6IDEwMC4yLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgXCJtb25hXCI6IDI2MDBcbiAgICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgcmV0dXJuRGF0YSA9IHRoaXMuc2FmZVZhbHVlIChyZXN1bHQsICdyZXR1cm4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUcmFuc2FjdGlvbiAocmV0dXJuRGF0YSwgY3VycmVuY3kpO1xuICAgIH1cblxuICAgIHBhcnNlVHJhbnNhY3Rpb24gKHRyYW5zYWN0aW9uLCBjdXJyZW5jeTogQ3VycmVuY3kgPSB1bmRlZmluZWQpOiBUcmFuc2FjdGlvbiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XG4gICAgICAgIC8vICAgICAgICAgXCJpZFwiOiAyMzYzNCxcbiAgICAgICAgLy8gICAgICAgICBcImZlZVwiOiAwLjAwMSxcbiAgICAgICAgLy8gICAgICAgICBcInR4aWRcIjosXG4gICAgICAgIC8vICAgICAgICAgXCJmdW5kc1wiOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIFwianB5XCI6IDE1MzIwLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImJ0Y1wiOiAxLjM5MixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJ4ZW1cIjogMTAwLjIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwibW9uYVwiOiAyNjAwXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBjdXJyZW5jeSA9IHRoaXMuc2FmZUN1cnJlbmN5ICh1bmRlZmluZWQsIGN1cnJlbmN5KTtcbiAgICAgICAgbGV0IGZlZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZmVlQ29zdCA9IHRoaXMuc2FmZVZhbHVlICh0cmFuc2FjdGlvbiwgJ2ZlZScpO1xuICAgICAgICBpZiAoZmVlQ29zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmZWUgPSB7XG4gICAgICAgICAgICAgICAgJ2Nvc3QnOiBmZWVDb3N0LFxuICAgICAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5Wydjb2RlJ10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWQnOiB0aGlzLnNhZmVTdHJpbmcgKHRyYW5zYWN0aW9uLCAnaWQnKSxcbiAgICAgICAgICAgICd0eGlkJzogdGhpcy5zYWZlU3RyaW5nICh0cmFuc2FjdGlvbiwgJ3R4aWQnKSxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZGF0ZXRpbWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnbmV0d29yayc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhZGRyZXNzRnJvbSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhZGRyZXNzJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2FkZHJlc3NUbyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhbW91bnQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndHlwZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5Wydjb2RlJ10sXG4gICAgICAgICAgICAnc3RhdHVzJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3VwZGF0ZWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFnRnJvbSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICd0YWcnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFnVG8nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY29tbWVudCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbnRlcm5hbCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdmZWUnOiBmZWUsXG4gICAgICAgICAgICAnaW5mbyc6IHRyYW5zYWN0aW9uLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGN1c3RvbU5vbmNlICgpIHtcbiAgICAgICAgY29uc3QgbnVtID0gKHRoaXMubWlsbGlzZWNvbmRzICgpIC8gMTAwMCkudG9TdHJpbmcgKCk7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gcGFyc2VGbG9hdCAobnVtKTtcbiAgICAgICAgcmV0dXJuIG5vbmNlLnRvRml4ZWQgKDgpO1xuICAgIH1cblxuICAgIHNpZ24gKHBhdGgsIGFwaSA9ICdwdWJsaWMnLCBtZXRob2QgPSAnR0VUJywgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB1bmRlZmluZWQsIGJvZHkgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMudXJsc1snYXBpJ11bJ3Jlc3QnXSArICcvJztcbiAgICAgICAgaWYgKGFwaSA9PT0gJ3B1YmxpYycpIHtcbiAgICAgICAgICAgIHVybCArPSAnYXBpLycgKyB0aGlzLnZlcnNpb24gKyAnLycgKyB0aGlzLmltcGxvZGVQYXJhbXMgKHBhdGgsIHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXBpID09PSAnZmFwaScpIHtcbiAgICAgICAgICAgIHVybCArPSAnZmFwaS8nICsgdGhpcy52ZXJzaW9uICsgJy8nICsgdGhpcy5pbXBsb2RlUGFyYW1zIChwYXRoLCBwYXJhbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja1JlcXVpcmVkQ3JlZGVudGlhbHMgKCk7XG4gICAgICAgICAgICBpZiAoYXBpID09PSAnZWNhcGknKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9ICdlY2FwaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFwaSA9PT0gJ3RsYXBpJykge1xuICAgICAgICAgICAgICAgIHVybCArPSAndGxhcGknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJ3RhcGknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9uY2UgPSB0aGlzLmN1c3RvbU5vbmNlICgpO1xuICAgICAgICAgICAgYm9keSA9IHRoaXMudXJsZW5jb2RlICh0aGlzLmV4dGVuZCAoe1xuICAgICAgICAgICAgICAgICdtZXRob2QnOiBwYXRoLFxuICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgfSwgcGFyYW1zKSk7XG4gICAgICAgICAgICBoZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICAgICAgICAnS2V5JzogdGhpcy5hcGlLZXksXG4gICAgICAgICAgICAgICAgJ1NpZ24nOiB0aGlzLmhtYWMgKHRoaXMuZW5jb2RlIChib2R5KSwgdGhpcy5lbmNvZGUgKHRoaXMuc2VjcmV0KSwgc2hhNTEyKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgJ3VybCc6IHVybCwgJ21ldGhvZCc6IG1ldGhvZCwgJ2JvZHknOiBib2R5LCAnaGVhZGVycyc6IGhlYWRlcnMgfTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcnMgKGh0dHBDb2RlLCByZWFzb24sIHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXNwb25zZSwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3RCb2R5KSB7XG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XCJlcnJvclwiOiBcInVuc3VwcG9ydGVkIGN1cnJlbmN5X3BhaXJcIn1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgZmVlZGJhY2sgPSB0aGlzLmlkICsgJyAnICsgYm9keTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnNhZmVTdHJpbmcgKHJlc3BvbnNlLCAnZXJyb3InKTtcbiAgICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFeGFjdGx5TWF0Y2hlZEV4Y2VwdGlvbiAodGhpcy5leGNlcHRpb25zWydleGFjdCddLCBlcnJvciwgZmVlZGJhY2spO1xuICAgICAgICAgICAgdGhpcy50aHJvd0Jyb2FkbHlNYXRjaGVkRXhjZXB0aW9uICh0aGlzLmV4Y2VwdGlvbnNbJ2Jyb2FkJ10sIGVycm9yLCBmZWVkYmFjayk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXhjaGFuZ2VFcnJvciAoZmVlZGJhY2spOyAvLyB1bmtub3duIG1lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5zYWZlVmFsdWUgKHJlc3BvbnNlLCAnc3VjY2VzcycsIHRydWUpO1xuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFeGNoYW5nZUVycm9yIChmZWVkYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=
288235
+
288169
288236
  /***/ })
288170
288237
 
288171
288238
  /******/ });
@@ -288274,210 +288341,210 @@ __webpack_require__.r(__webpack_exports__);
288274
288341
  /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_154__.O),
288275
288342
  /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__.RateLimitExceeded),
288276
288343
  /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__.RequestTimeout),
288277
- /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
288278
- /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
288279
- /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
288280
- /* harmony export */ bequant: () => (/* reexport safe */ _src_bequant_js__WEBPACK_IMPORTED_MODULE_4__.Z),
288281
- /* harmony export */ bigone: () => (/* reexport safe */ _src_bigone_js__WEBPACK_IMPORTED_MODULE_5__.Z),
288282
- /* harmony export */ binance: () => (/* reexport safe */ _src_binance_js__WEBPACK_IMPORTED_MODULE_6__.Z),
288283
- /* harmony export */ binancecoinm: () => (/* reexport safe */ _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_7__.Z),
288284
- /* harmony export */ binanceus: () => (/* reexport safe */ _src_binanceus_js__WEBPACK_IMPORTED_MODULE_8__.Z),
288285
- /* harmony export */ binanceusdm: () => (/* reexport safe */ _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_9__.Z),
288286
- /* harmony export */ bingx: () => (/* reexport safe */ _src_bingx_js__WEBPACK_IMPORTED_MODULE_10__.Z),
288287
- /* harmony export */ bit2c: () => (/* reexport safe */ _src_bit2c_js__WEBPACK_IMPORTED_MODULE_11__.Z),
288288
- /* harmony export */ bitbank: () => (/* reexport safe */ _src_bitbank_js__WEBPACK_IMPORTED_MODULE_12__.Z),
288289
- /* harmony export */ bitbay: () => (/* reexport safe */ _src_bitbay_js__WEBPACK_IMPORTED_MODULE_13__.Z),
288290
- /* harmony export */ bitbns: () => (/* reexport safe */ _src_bitbns_js__WEBPACK_IMPORTED_MODULE_14__.Z),
288291
- /* harmony export */ bitcoincom: () => (/* reexport safe */ _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_15__.Z),
288292
- /* harmony export */ bitfinex: () => (/* reexport safe */ _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_16__.Z),
288293
- /* harmony export */ bitfinex2: () => (/* reexport safe */ _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_17__.Z),
288294
- /* harmony export */ bitflyer: () => (/* reexport safe */ _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_18__.Z),
288295
- /* harmony export */ bitforex: () => (/* reexport safe */ _src_bitforex_js__WEBPACK_IMPORTED_MODULE_19__.Z),
288296
- /* harmony export */ bitget: () => (/* reexport safe */ _src_bitget_js__WEBPACK_IMPORTED_MODULE_20__.Z),
288297
- /* harmony export */ bithumb: () => (/* reexport safe */ _src_bithumb_js__WEBPACK_IMPORTED_MODULE_21__.Z),
288298
- /* harmony export */ bitmart: () => (/* reexport safe */ _src_bitmart_js__WEBPACK_IMPORTED_MODULE_22__.Z),
288299
- /* harmony export */ bitmex: () => (/* reexport safe */ _src_bitmex_js__WEBPACK_IMPORTED_MODULE_23__.Z),
288300
- /* harmony export */ bitopro: () => (/* reexport safe */ _src_bitopro_js__WEBPACK_IMPORTED_MODULE_24__.Z),
288301
- /* harmony export */ bitpanda: () => (/* reexport safe */ _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_25__.Z),
288302
- /* harmony export */ bitrue: () => (/* reexport safe */ _src_bitrue_js__WEBPACK_IMPORTED_MODULE_26__.Z),
288303
- /* harmony export */ bitso: () => (/* reexport safe */ _src_bitso_js__WEBPACK_IMPORTED_MODULE_27__.Z),
288304
- /* harmony export */ bitstamp: () => (/* reexport safe */ _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_28__.Z),
288305
- /* harmony export */ bitvavo: () => (/* reexport safe */ _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_29__.Z),
288306
- /* harmony export */ bl3p: () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_30__.Z),
288307
- /* harmony export */ blockchaincom: () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_31__.Z),
288308
- /* harmony export */ btcalpha: () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_32__.Z),
288309
- /* harmony export */ btcbox: () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_33__.Z),
288310
- /* harmony export */ btcmarkets: () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_34__.Z),
288311
- /* harmony export */ btcturk: () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_35__.Z),
288312
- /* harmony export */ bybit: () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_36__.Z),
288313
- /* harmony export */ cex: () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_37__.Z),
288314
- /* harmony export */ coinbase: () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_38__.Z),
288315
- /* harmony export */ coinbasepro: () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_39__.Z),
288316
- /* harmony export */ coincheck: () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_40__.Z),
288317
- /* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_41__.Z),
288318
- /* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_42__.Z),
288319
- /* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_43__.Z),
288320
- /* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_44__.Z),
288321
- /* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_45__.Z),
288322
- /* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_46__.Z),
288323
- /* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_47__.Z),
288324
- /* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_48__.Z),
288344
+ /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_2__.Z),
288345
+ /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__.Z),
288346
+ /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__.Z),
288347
+ /* harmony export */ bequant: () => (/* reexport safe */ _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__.Z),
288348
+ /* harmony export */ bigone: () => (/* reexport safe */ _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__.Z),
288349
+ /* harmony export */ binance: () => (/* reexport safe */ _src_binance_js__WEBPACK_IMPORTED_MODULE_7__.Z),
288350
+ /* harmony export */ binancecoinm: () => (/* reexport safe */ _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__.Z),
288351
+ /* harmony export */ binanceus: () => (/* reexport safe */ _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__.Z),
288352
+ /* harmony export */ binanceusdm: () => (/* reexport safe */ _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__.Z),
288353
+ /* harmony export */ bingx: () => (/* reexport safe */ _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__.Z),
288354
+ /* harmony export */ bit2c: () => (/* reexport safe */ _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__.Z),
288355
+ /* harmony export */ bitbank: () => (/* reexport safe */ _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__.Z),
288356
+ /* harmony export */ bitbay: () => (/* reexport safe */ _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__.Z),
288357
+ /* harmony export */ bitbns: () => (/* reexport safe */ _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__.Z),
288358
+ /* harmony export */ bitcoincom: () => (/* reexport safe */ _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__.Z),
288359
+ /* harmony export */ bitfinex: () => (/* reexport safe */ _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__.Z),
288360
+ /* harmony export */ bitfinex2: () => (/* reexport safe */ _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__.Z),
288361
+ /* harmony export */ bitflyer: () => (/* reexport safe */ _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__.Z),
288362
+ /* harmony export */ bitforex: () => (/* reexport safe */ _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__.Z),
288363
+ /* harmony export */ bitget: () => (/* reexport safe */ _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__.Z),
288364
+ /* harmony export */ bithumb: () => (/* reexport safe */ _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__.Z),
288365
+ /* harmony export */ bitmart: () => (/* reexport safe */ _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__.Z),
288366
+ /* harmony export */ bitmex: () => (/* reexport safe */ _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__.Z),
288367
+ /* harmony export */ bitopro: () => (/* reexport safe */ _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__.Z),
288368
+ /* harmony export */ bitpanda: () => (/* reexport safe */ _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__.Z),
288369
+ /* harmony export */ bitrue: () => (/* reexport safe */ _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__.Z),
288370
+ /* harmony export */ bitso: () => (/* reexport safe */ _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__.Z),
288371
+ /* harmony export */ bitstamp: () => (/* reexport safe */ _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__.Z),
288372
+ /* harmony export */ bitvavo: () => (/* reexport safe */ _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__.Z),
288373
+ /* harmony export */ bl3p: () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__.Z),
288374
+ /* harmony export */ blockchaincom: () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__.Z),
288375
+ /* harmony export */ btcalpha: () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__.Z),
288376
+ /* harmony export */ btcbox: () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__.Z),
288377
+ /* harmony export */ btcmarkets: () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__.Z),
288378
+ /* harmony export */ btcturk: () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__.Z),
288379
+ /* harmony export */ bybit: () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__.Z),
288380
+ /* harmony export */ cex: () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_38__.Z),
288381
+ /* harmony export */ coinbase: () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__.Z),
288382
+ /* harmony export */ coinbasepro: () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__.Z),
288383
+ /* harmony export */ coincheck: () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__.Z),
288384
+ /* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__.Z),
288385
+ /* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__.Z),
288386
+ /* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__.Z),
288387
+ /* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__.Z),
288388
+ /* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__.Z),
288389
+ /* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__.Z),
288390
+ /* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__.Z),
288391
+ /* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
288325
288392
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
288326
- /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_49__.Z),
288327
- /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_50__.Z),
288328
- /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_51__.Z),
288393
+ /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_50__.Z),
288394
+ /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__.Z),
288395
+ /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__.Z),
288329
288396
  /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__),
288330
288397
  /* harmony export */ exchanges: () => (/* binding */ exchanges),
288331
- /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_52__.Z),
288332
- /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_53__.Z),
288398
+ /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__.Z),
288399
+ /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__.Z),
288333
288400
  /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_155__),
288334
- /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_54__.Z),
288335
- /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_55__.Z),
288336
- /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_56__.Z),
288337
- /* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_57__.Z),
288338
- /* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_58__.Z),
288339
- /* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_59__.Z),
288340
- /* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_60__.Z),
288341
- /* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_61__.Z),
288342
- /* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_62__.Z),
288343
- /* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_63__.Z),
288344
- /* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_64__.Z),
288345
- /* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_65__.Z),
288346
- /* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_66__.Z),
288347
- /* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_67__.Z),
288348
- /* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_68__.Z),
288349
- /* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_69__.Z),
288350
- /* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_70__.Z),
288351
- /* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_71__.Z),
288352
- /* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_72__.Z),
288353
- /* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_73__.Z),
288354
- /* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_74__.Z),
288355
- /* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_75__.Z),
288356
- /* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_76__.Z),
288357
- /* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_77__.Z),
288358
- /* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_78__.Z),
288359
- /* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_79__.Z),
288360
- /* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_80__.Z),
288361
- /* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_81__.Z),
288362
- /* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_82__.Z),
288363
- /* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_83__.Z),
288364
- /* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_84__.Z),
288365
- /* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_85__.Z),
288366
- /* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_86__.Z),
288401
+ /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_55__.Z),
288402
+ /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
288403
+ /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__.Z),
288404
+ /* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__.Z),
288405
+ /* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__.Z),
288406
+ /* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__.Z),
288407
+ /* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_61__.Z),
288408
+ /* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__.Z),
288409
+ /* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__.Z),
288410
+ /* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_64__.Z),
288411
+ /* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__.Z),
288412
+ /* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__.Z),
288413
+ /* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__.Z),
288414
+ /* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__.Z),
288415
+ /* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__.Z),
288416
+ /* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__.Z),
288417
+ /* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__.Z),
288418
+ /* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__.Z),
288419
+ /* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__.Z),
288420
+ /* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_74__.Z),
288421
+ /* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__.Z),
288422
+ /* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__.Z),
288423
+ /* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__.Z),
288424
+ /* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__.Z),
288425
+ /* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
288426
+ /* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__.Z),
288427
+ /* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__.Z),
288428
+ /* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_82__.Z),
288429
+ /* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__.Z),
288430
+ /* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__.Z),
288431
+ /* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__.Z),
288432
+ /* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__.Z),
288433
+ /* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__.Z),
288367
288434
  /* harmony export */ pro: () => (/* binding */ pro),
288368
- /* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_87__.Z),
288369
- /* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_88__.Z),
288370
- /* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_89__.Z),
288371
- /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_90__.Z),
288435
+ /* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_88__.Z),
288436
+ /* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_89__.Z),
288437
+ /* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__.Z),
288438
+ /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__.Z),
288372
288439
  /* harmony export */ version: () => (/* binding */ version),
288373
- /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_91__.Z),
288374
- /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_92__.Z),
288375
- /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_93__.Z),
288376
- /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_94__.Z),
288377
- /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_95__.Z),
288378
- /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_96__.Z),
288440
+ /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__.Z),
288441
+ /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__.Z),
288442
+ /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__.Z),
288443
+ /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_95__.Z),
288444
+ /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__.Z),
288445
+ /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__.Z),
288379
288446
  /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__.Z)
288380
288447
  /* harmony export */ });
288381
288448
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
288382
288449
  /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(2194);
288383
288450
  /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7100);
288384
288451
  /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(6689);
288385
- /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
288386
- /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
288387
- /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
288388
- /* harmony import */ var _src_bequant_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2049);
288389
- /* harmony import */ var _src_bigone_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7679);
288390
- /* harmony import */ var _src_binance_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9987);
288391
- /* harmony import */ var _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9212);
288392
- /* harmony import */ var _src_binanceus_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2723);
288393
- /* harmony import */ var _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(3254);
288394
- /* harmony import */ var _src_bingx_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7960);
288395
- /* harmony import */ var _src_bit2c_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7691);
288396
- /* harmony import */ var _src_bitbank_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7820);
288397
- /* harmony import */ var _src_bitbay_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(668);
288398
- /* harmony import */ var _src_bitbns_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(7790);
288399
- /* harmony import */ var _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(1819);
288400
- /* harmony import */ var _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(6537);
288401
- /* harmony import */ var _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(730);
288402
- /* harmony import */ var _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(8429);
288403
- /* harmony import */ var _src_bitforex_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2035);
288404
- /* harmony import */ var _src_bitget_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(9051);
288405
- /* harmony import */ var _src_bithumb_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(5305);
288406
- /* harmony import */ var _src_bitmart_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(3718);
288407
- /* harmony import */ var _src_bitmex_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(7077);
288408
- /* harmony import */ var _src_bitopro_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(172);
288409
- /* harmony import */ var _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(2737);
288410
- /* harmony import */ var _src_bitrue_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(854);
288411
- /* harmony import */ var _src_bitso_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(4388);
288412
- /* harmony import */ var _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(4667);
288413
- /* harmony import */ var _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(9943);
288414
- /* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(9476);
288415
- /* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(182);
288416
- /* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(6246);
288417
- /* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(7796);
288418
- /* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(1776);
288419
- /* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(6304);
288420
- /* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(3527);
288421
- /* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(6445);
288422
- /* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(437);
288423
- /* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(8856);
288424
- /* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(2117);
288425
- /* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(332);
288426
- /* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(3623);
288427
- /* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(9816);
288428
- /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(7811);
288429
- /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(5782);
288430
- /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(7794);
288431
- /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(9129);
288432
- /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(3214);
288433
- /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(1753);
288434
- /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(24);
288435
- /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(8846);
288436
- /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(1729);
288437
- /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(5788);
288438
- /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(7290);
288439
- /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(7036);
288440
- /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(6743);
288441
- /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(4714);
288442
- /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(4815);
288443
- /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(8422);
288444
- /* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(5939);
288445
- /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(8146);
288446
- /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(7034);
288447
- /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(8232);
288448
- /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(9570);
288449
- /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(1605);
288450
- /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(9922);
288451
- /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(4470);
288452
- /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(3583);
288453
- /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(1924);
288454
- /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(7732);
288455
- /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(2545);
288456
- /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(3944);
288457
- /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(1758);
288458
- /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(3803);
288459
- /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(9013);
288460
- /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(6641);
288461
- /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(4531);
288462
- /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(2449);
288463
- /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(6749);
288464
- /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(3007);
288465
- /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(4042);
288466
- /* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(2466);
288467
- /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(7082);
288468
- /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(79);
288469
- /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(8891);
288470
- /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(6877);
288471
- /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(3657);
288472
- /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(1067);
288473
- /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(5261);
288474
- /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(7584);
288475
- /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(3853);
288476
- /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(6536);
288477
- /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(5467);
288478
- /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(517);
288479
- /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(3850);
288480
- /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(5934);
288452
+ /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9869);
288453
+ /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5660);
288454
+ /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9612);
288455
+ /* harmony import */ var _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2049);
288456
+ /* harmony import */ var _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7679);
288457
+ /* harmony import */ var _src_binance_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9987);
288458
+ /* harmony import */ var _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9212);
288459
+ /* harmony import */ var _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2723);
288460
+ /* harmony import */ var _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(3254);
288461
+ /* harmony import */ var _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7960);
288462
+ /* harmony import */ var _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7691);
288463
+ /* harmony import */ var _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7820);
288464
+ /* harmony import */ var _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(668);
288465
+ /* harmony import */ var _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7790);
288466
+ /* harmony import */ var _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(1819);
288467
+ /* harmony import */ var _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6537);
288468
+ /* harmony import */ var _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(730);
288469
+ /* harmony import */ var _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(8429);
288470
+ /* harmony import */ var _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(2035);
288471
+ /* harmony import */ var _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(9051);
288472
+ /* harmony import */ var _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(5305);
288473
+ /* harmony import */ var _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(3718);
288474
+ /* harmony import */ var _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(7077);
288475
+ /* harmony import */ var _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(172);
288476
+ /* harmony import */ var _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(2737);
288477
+ /* harmony import */ var _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(854);
288478
+ /* harmony import */ var _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(4388);
288479
+ /* harmony import */ var _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(4667);
288480
+ /* harmony import */ var _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(9943);
288481
+ /* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(9476);
288482
+ /* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(182);
288483
+ /* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(6246);
288484
+ /* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(7796);
288485
+ /* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(1776);
288486
+ /* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(6304);
288487
+ /* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(3527);
288488
+ /* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(6445);
288489
+ /* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(437);
288490
+ /* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(8856);
288491
+ /* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(2117);
288492
+ /* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(332);
288493
+ /* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(3623);
288494
+ /* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(9816);
288495
+ /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(7811);
288496
+ /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(5782);
288497
+ /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(7794);
288498
+ /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(9129);
288499
+ /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(3214);
288500
+ /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(1753);
288501
+ /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(24);
288502
+ /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(8846);
288503
+ /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(1729);
288504
+ /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(5788);
288505
+ /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(7290);
288506
+ /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7036);
288507
+ /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(6743);
288508
+ /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(4714);
288509
+ /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4815);
288510
+ /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(8422);
288511
+ /* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(5939);
288512
+ /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(8146);
288513
+ /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(7034);
288514
+ /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(8232);
288515
+ /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(9570);
288516
+ /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(1605);
288517
+ /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(9922);
288518
+ /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(4470);
288519
+ /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(3583);
288520
+ /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(1924);
288521
+ /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(7732);
288522
+ /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(2545);
288523
+ /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(3944);
288524
+ /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(1758);
288525
+ /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(3803);
288526
+ /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(9013);
288527
+ /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(6641);
288528
+ /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(4531);
288529
+ /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(2449);
288530
+ /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(6749);
288531
+ /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(3007);
288532
+ /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(4042);
288533
+ /* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(2466);
288534
+ /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(7082);
288535
+ /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(79);
288536
+ /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(8891);
288537
+ /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(6877);
288538
+ /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(3657);
288539
+ /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(1067);
288540
+ /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(5261);
288541
+ /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(7584);
288542
+ /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(3853);
288543
+ /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(6536);
288544
+ /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(5467);
288545
+ /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(517);
288546
+ /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(3850);
288547
+ /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7558);
288481
288548
  /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(5140);
288482
288549
  /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(2467);
288483
288550
  /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(2383);
@@ -288569,7 +288636,7 @@ SOFTWARE.
288569
288636
 
288570
288637
  //-----------------------------------------------------------------------------
288571
288638
  // this is updated by vss.js when building
288572
- const version = '4.1.96';
288639
+ const version = '4.1.98';
288573
288640
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
288574
288641
  //-----------------------------------------------------------------------------
288575
288642
 
@@ -288727,102 +288794,102 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
288727
288794
 
288728
288795
 
288729
288796
  const exchanges = {
288730
- 'ace': _src_ace_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,
288731
- 'alpaca': _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,
288732
- 'ascendex': _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,
288733
- 'bequant': _src_bequant_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z,
288734
- 'bigone': _src_bigone_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z,
288735
- 'binance': _src_binance_js__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z,
288736
- 'binancecoinm': _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z,
288737
- 'binanceus': _src_binanceus_js__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z,
288738
- 'binanceusdm': _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z,
288739
- 'bingx': _src_bingx_js__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z,
288740
- 'bit2c': _src_bit2c_js__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z,
288741
- 'bitbank': _src_bitbank_js__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z,
288742
- 'bitbay': _src_bitbay_js__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z,
288743
- 'bitbns': _src_bitbns_js__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z,
288744
- 'bitcoincom': _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z,
288745
- 'bitfinex': _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .Z,
288746
- 'bitfinex2': _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z,
288747
- 'bitflyer': _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z,
288748
- 'bitforex': _src_bitforex_js__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z,
288749
- 'bitget': _src_bitget_js__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z,
288750
- 'bithumb': _src_bithumb_js__WEBPACK_IMPORTED_MODULE_21__/* ["default"] */ .Z,
288751
- 'bitmart': _src_bitmart_js__WEBPACK_IMPORTED_MODULE_22__/* ["default"] */ .Z,
288752
- 'bitmex': _src_bitmex_js__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z,
288753
- 'bitopro': _src_bitopro_js__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Z,
288754
- 'bitpanda': _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_25__/* ["default"] */ .Z,
288755
- 'bitrue': _src_bitrue_js__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .Z,
288756
- 'bitso': _src_bitso_js__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .Z,
288757
- 'bitstamp': _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_28__/* ["default"] */ .Z,
288758
- 'bitvavo': _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_29__/* ["default"] */ .Z,
288759
- 'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_30__/* ["default"] */ .Z,
288760
- 'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .Z,
288761
- 'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
288762
- 'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
288763
- 'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
288764
- 'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
288765
- 'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
288766
- 'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
288767
- 'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
288768
- 'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
288769
- 'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
288770
- 'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
288771
- 'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
288772
- 'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
288773
- 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
288774
- 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
288775
- 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
288776
- 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
288777
- 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
288778
- 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
288779
- 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
288780
- 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
288781
- 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
288782
- 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
288783
- 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
288784
- 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
288785
- 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
288786
- 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
288787
- 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
288788
- 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
288789
- 'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
288790
- 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
288791
- 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
288792
- 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
288793
- 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
288794
- 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
288795
- 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
288796
- 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
288797
- 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
288798
- 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
288799
- 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
288800
- 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
288801
- 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
288802
- 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
288803
- 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
288804
- 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
288805
- 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
288806
- 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
288807
- 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
288808
- 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
288809
- 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
288810
- 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
288811
- 'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
288812
- 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
288813
- 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
288814
- 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
288815
- 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
288816
- 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
288817
- 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
288818
- 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
288819
- 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
288820
- 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
288821
- 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
288822
- 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
288823
- 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
288824
- 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
288825
- 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
288797
+ 'ace': _src_ace_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,
288798
+ 'alpaca': _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,
288799
+ 'ascendex': _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z,
288800
+ 'bequant': _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z,
288801
+ 'bigone': _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z,
288802
+ 'binance': _src_binance_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z,
288803
+ 'binancecoinm': _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z,
288804
+ 'binanceus': _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z,
288805
+ 'binanceusdm': _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z,
288806
+ 'bingx': _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z,
288807
+ 'bit2c': _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z,
288808
+ 'bitbank': _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z,
288809
+ 'bitbay': _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z,
288810
+ 'bitbns': _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z,
288811
+ 'bitcoincom': _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .Z,
288812
+ 'bitfinex': _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z,
288813
+ 'bitfinex2': _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z,
288814
+ 'bitflyer': _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z,
288815
+ 'bitforex': _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z,
288816
+ 'bitget': _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__/* ["default"] */ .Z,
288817
+ 'bithumb': _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__/* ["default"] */ .Z,
288818
+ 'bitmart': _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z,
288819
+ 'bitmex': _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Z,
288820
+ 'bitopro': _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__/* ["default"] */ .Z,
288821
+ 'bitpanda': _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .Z,
288822
+ 'bitrue': _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .Z,
288823
+ 'bitso': _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__/* ["default"] */ .Z,
288824
+ 'bitstamp': _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__/* ["default"] */ .Z,
288825
+ 'bitvavo': _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__/* ["default"] */ .Z,
288826
+ 'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .Z,
288827
+ 'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
288828
+ 'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
288829
+ 'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
288830
+ 'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
288831
+ 'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
288832
+ 'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
288833
+ 'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
288834
+ 'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
288835
+ 'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
288836
+ 'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
288837
+ 'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
288838
+ 'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
288839
+ 'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
288840
+ 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
288841
+ 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
288842
+ 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
288843
+ 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
288844
+ 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
288845
+ 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
288846
+ 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
288847
+ 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
288848
+ 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
288849
+ 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
288850
+ 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
288851
+ 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
288852
+ 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
288853
+ 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
288854
+ 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
288855
+ 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
288856
+ 'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
288857
+ 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
288858
+ 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
288859
+ 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
288860
+ 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
288861
+ 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
288862
+ 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
288863
+ 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
288864
+ 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
288865
+ 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
288866
+ 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
288867
+ 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
288868
+ 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
288869
+ 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
288870
+ 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
288871
+ 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
288872
+ 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
288873
+ 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
288874
+ 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
288875
+ 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
288876
+ 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
288877
+ 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
288878
+ 'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
288879
+ 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
288880
+ 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
288881
+ 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
288882
+ 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
288883
+ 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
288884
+ 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
288885
+ 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
288886
+ 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
288887
+ 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
288888
+ 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
288889
+ 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
288890
+ 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
288891
+ 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
288892
+ 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,
288826
288893
  'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
288827
288894
  };
288828
288895
  const pro = {