ccxt 4.1.96 → 4.1.97

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 (177) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.js +1189 -1154
  3. package/dist/ccxt.browser.min.js +3 -3
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/src/ace.js +1 -1
  6. package/dist/cjs/src/ascendex.js +1 -1
  7. package/dist/cjs/src/base/Exchange.js +6 -5
  8. package/dist/cjs/src/base/errors.js +8 -1
  9. package/dist/cjs/src/bigone.js +2 -2
  10. package/dist/cjs/src/bingx.js +42 -1
  11. package/dist/cjs/src/bitfinex.js +1 -1
  12. package/dist/cjs/src/bitfinex2.js +1 -1
  13. package/dist/cjs/src/bitflyer.js +2 -2
  14. package/dist/cjs/src/bitmart.js +1 -1
  15. package/dist/cjs/src/bitmex.js +2 -2
  16. package/dist/cjs/src/bitopro.js +1 -1
  17. package/dist/cjs/src/bitpanda.js +1 -1
  18. package/dist/cjs/src/bitvavo.js +1 -1
  19. package/dist/cjs/src/blockchaincom.js +1 -1
  20. package/dist/cjs/src/btcalpha.js +2 -2
  21. package/dist/cjs/src/btcbox.js +1 -1
  22. package/dist/cjs/src/btcmarkets.js +2 -2
  23. package/dist/cjs/src/btcturk.js +1 -1
  24. package/dist/cjs/src/bybit.js +2 -2
  25. package/dist/cjs/src/cex.js +1 -1
  26. package/dist/cjs/src/coinbasepro.js +2 -2
  27. package/dist/cjs/src/coinex.js +1 -1
  28. package/dist/cjs/src/coinlist.js +1 -1
  29. package/dist/cjs/src/deribit.js +1 -1
  30. package/dist/cjs/src/digifinex.js +1 -1
  31. package/dist/cjs/src/gate.js +1 -1
  32. package/dist/cjs/src/hitbtc.js +1 -1
  33. package/dist/cjs/src/hollaex.js +2 -2
  34. package/dist/cjs/src/htx.js +1 -1
  35. package/dist/cjs/src/huobijp.js +2 -2
  36. package/dist/cjs/src/idex.js +1 -1
  37. package/dist/cjs/src/independentreserve.js +1 -1
  38. package/dist/cjs/src/kraken.js +1 -1
  39. package/dist/cjs/src/kucoin.js +4 -4
  40. package/dist/cjs/src/kucoinfutures.js +1 -1
  41. package/dist/cjs/src/kuna.js +1 -1
  42. package/dist/cjs/src/latoken.js +1 -1
  43. package/dist/cjs/src/luno.js +2 -2
  44. package/dist/cjs/src/lykke.js +1 -1
  45. package/dist/cjs/src/mexc.js +2 -2
  46. package/dist/cjs/src/ndax.js +1 -1
  47. package/dist/cjs/src/novadax.js +2 -2
  48. package/dist/cjs/src/oceanex.js +1 -1
  49. package/dist/cjs/src/okcoin.js +1 -1
  50. package/dist/cjs/src/okx.js +1 -1
  51. package/dist/cjs/src/poloniexfutures.js +1 -1
  52. package/dist/cjs/src/pro/alpaca.js +1 -1
  53. package/dist/cjs/src/pro/ascendex.js +1 -1
  54. package/dist/cjs/src/pro/binance.js +2 -2
  55. package/dist/cjs/src/pro/bingx.js +6 -3
  56. package/dist/cjs/src/pro/bitfinex.js +1 -1
  57. package/dist/cjs/src/pro/bitfinex2.js +1 -1
  58. package/dist/cjs/src/pro/bitmex.js +1 -1
  59. package/dist/cjs/src/pro/bitpanda.js +1 -1
  60. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  61. package/dist/cjs/src/pro/bybit.js +2 -2
  62. package/dist/cjs/src/pro/coinbase.js +1 -1
  63. package/dist/cjs/src/pro/coinbasepro.js +1 -1
  64. package/dist/cjs/src/pro/deribit.js +1 -1
  65. package/dist/cjs/src/pro/gate.js +1 -1
  66. package/dist/cjs/src/pro/gemini.js +1 -1
  67. package/dist/cjs/src/pro/hollaex.js +1 -1
  68. package/dist/cjs/src/pro/htx.js +1 -1
  69. package/dist/cjs/src/pro/idex.js +1 -1
  70. package/dist/cjs/src/pro/kraken.js +1 -1
  71. package/dist/cjs/src/pro/krakenfutures.js +1 -1
  72. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  73. package/dist/cjs/src/pro/mexc.js +1 -1
  74. package/dist/cjs/src/pro/okcoin.js +1 -1
  75. package/dist/cjs/src/pro/okx.js +1 -1
  76. package/dist/cjs/src/pro/phemex.js +1 -1
  77. package/dist/cjs/src/pro/poloniexfutures.js +1 -1
  78. package/dist/cjs/src/probit.js +1 -1
  79. package/dist/cjs/src/timex.js +1 -1
  80. package/dist/cjs/src/tokocrypto.js +1 -1
  81. package/dist/cjs/src/upbit.js +1 -1
  82. package/dist/cjs/src/wavesexchange.js +1 -1
  83. package/dist/cjs/src/whitebit.js +1 -1
  84. package/dist/cjs/src/woo.js +1 -1
  85. package/dist/cjs/src/zaif.js +1 -1
  86. package/js/ccxt.d.ts +1 -1
  87. package/js/ccxt.js +1 -1
  88. package/js/src/abstract/bingx.d.ts +2 -0
  89. package/js/src/ace.js +1 -1
  90. package/js/src/ascendex.js +1 -1
  91. package/js/src/base/Exchange.d.ts +1 -1
  92. package/js/src/base/Exchange.js +7 -6
  93. package/js/src/base/errorHierarchy.d.ts +1 -0
  94. package/js/src/base/errorHierarchy.js +1 -0
  95. package/js/src/base/errors.d.ts +5 -1
  96. package/js/src/base/errors.js +8 -2
  97. package/js/src/bigone.js +2 -2
  98. package/js/src/bingx.d.ts +1 -0
  99. package/js/src/bingx.js +42 -1
  100. package/js/src/bitfinex.js +1 -1
  101. package/js/src/bitfinex2.js +1 -1
  102. package/js/src/bitflyer.js +2 -2
  103. package/js/src/bitmart.js +1 -1
  104. package/js/src/bitmex.js +2 -2
  105. package/js/src/bitopro.js +1 -1
  106. package/js/src/bitpanda.js +1 -1
  107. package/js/src/bitso.d.ts +1 -1
  108. package/js/src/bitvavo.js +1 -1
  109. package/js/src/blockchaincom.js +1 -1
  110. package/js/src/btcalpha.js +2 -2
  111. package/js/src/btcbox.js +1 -1
  112. package/js/src/btcmarkets.js +2 -2
  113. package/js/src/btcturk.js +1 -1
  114. package/js/src/bybit.js +2 -2
  115. package/js/src/cex.js +1 -1
  116. package/js/src/coinbasepro.js +2 -2
  117. package/js/src/coinex.js +1 -1
  118. package/js/src/coinlist.js +1 -1
  119. package/js/src/deribit.js +1 -1
  120. package/js/src/digifinex.js +1 -1
  121. package/js/src/gate.js +1 -1
  122. package/js/src/hitbtc.js +1 -1
  123. package/js/src/hollaex.js +2 -2
  124. package/js/src/htx.js +1 -1
  125. package/js/src/huobijp.js +2 -2
  126. package/js/src/idex.js +1 -1
  127. package/js/src/independentreserve.js +1 -1
  128. package/js/src/kraken.js +1 -1
  129. package/js/src/kucoin.js +4 -4
  130. package/js/src/kucoinfutures.js +1 -1
  131. package/js/src/kuna.js +1 -1
  132. package/js/src/latoken.js +1 -1
  133. package/js/src/luno.js +2 -2
  134. package/js/src/lykke.js +1 -1
  135. package/js/src/mexc.js +2 -2
  136. package/js/src/ndax.js +1 -1
  137. package/js/src/novadax.js +2 -2
  138. package/js/src/oceanex.js +1 -1
  139. package/js/src/okcoin.js +1 -1
  140. package/js/src/okx.js +1 -1
  141. package/js/src/poloniexfutures.js +1 -1
  142. package/js/src/pro/alpaca.js +1 -1
  143. package/js/src/pro/ascendex.js +1 -1
  144. package/js/src/pro/binance.js +2 -2
  145. package/js/src/pro/bingx.js +6 -3
  146. package/js/src/pro/bitfinex.js +1 -1
  147. package/js/src/pro/bitfinex2.js +1 -1
  148. package/js/src/pro/bitmex.js +1 -1
  149. package/js/src/pro/bitpanda.js +1 -1
  150. package/js/src/pro/blockchaincom.js +1 -1
  151. package/js/src/pro/bybit.js +2 -2
  152. package/js/src/pro/coinbase.js +1 -1
  153. package/js/src/pro/coinbasepro.js +1 -1
  154. package/js/src/pro/deribit.js +1 -1
  155. package/js/src/pro/gate.js +1 -1
  156. package/js/src/pro/gemini.js +1 -1
  157. package/js/src/pro/hollaex.js +1 -1
  158. package/js/src/pro/htx.js +1 -1
  159. package/js/src/pro/idex.js +1 -1
  160. package/js/src/pro/kraken.js +1 -1
  161. package/js/src/pro/krakenfutures.js +1 -1
  162. package/js/src/pro/kucoinfutures.js +1 -1
  163. package/js/src/pro/mexc.js +1 -1
  164. package/js/src/pro/okcoin.js +1 -1
  165. package/js/src/pro/okx.js +1 -1
  166. package/js/src/pro/phemex.js +1 -1
  167. package/js/src/pro/poloniexfutures.js +1 -1
  168. package/js/src/probit.js +1 -1
  169. package/js/src/timex.js +1 -1
  170. package/js/src/tokocrypto.js +1 -1
  171. package/js/src/upbit.js +1 -1
  172. package/js/src/wavesexchange.js +1 -1
  173. package/js/src/whitebit.js +1 -1
  174. package/js/src/woo.js +1 -1
  175. package/js/src/zaif.js +1 -1
  176. package/package.json +1 -1
  177. package/skip-tests.json +1 -0
@@ -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
  */
@@ -27121,6 +27113,16 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
27121
27113
  },
27122
27114
  },
27123
27115
  'swap': {
27116
+ 'v1': {
27117
+ 'private': {
27118
+ 'get': {
27119
+ 'positionSide/dual': 1,
27120
+ },
27121
+ 'post': {
27122
+ 'positionSide/dual': 1,
27123
+ },
27124
+ },
27125
+ },
27124
27126
  'v2': {
27125
27127
  'public': {
27126
27128
  'get': {
@@ -29449,7 +29451,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
29449
29451
  * @see https://bingx-api.github.io/docs/#/standard/contract-interface.html#Historical%20order
29450
29452
  * @param {string} [symbol] unified market symbol of the market orders were made in
29451
29453
  * @param {int} [since] the earliest time in ms to fetch orders for
29452
- * @param {int} [limit] the maximum number of orde structures to retrieve
29454
+ * @param {int} [limit] the maximum number of order structures to retrieve
29453
29455
  * @param {object} [params] extra parameters specific to the exchange API endpoint
29454
29456
  * @param {int} [params.until] the latest time in ms to fetch orders for
29455
29457
  * @param {boolean} [params.standard] whether to fetch standard contract orders
@@ -30392,6 +30394,37 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
30392
30394
  }
30393
30395
  return positions;
30394
30396
  }
30397
+ async setPositionMode(hedged, symbol = undefined, params = {}) {
30398
+ /**
30399
+ * @method
30400
+ * @name bingx#setPositionMode
30401
+ * @description set hedged to true or false for a market
30402
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Set%20Position%20Mode
30403
+ * @param {bool} hedged set to true to use dualSidePosition
30404
+ * @param {string} symbol not used by bingx setPositionMode ()
30405
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
30406
+ * @returns {object} response from the exchange
30407
+ */
30408
+ let dualSidePosition = undefined;
30409
+ if (hedged) {
30410
+ dualSidePosition = 'true';
30411
+ }
30412
+ else {
30413
+ dualSidePosition = 'false';
30414
+ }
30415
+ const request = {
30416
+ 'dualSidePosition': dualSidePosition,
30417
+ };
30418
+ //
30419
+ // {
30420
+ // code: '0',
30421
+ // msg: '',
30422
+ // timeStamp: '1703327432734',
30423
+ // data: { dualSidePosition: 'false' }
30424
+ // }
30425
+ //
30426
+ return await this.swapV1PrivatePostPositionSideDual(this.extend(request, params));
30427
+ }
30395
30428
  sign(path, section = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
30396
30429
  const type = section[0];
30397
30430
  const version = section[1];
@@ -34925,7 +34958,7 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
34925
34958
  * @description fetches information on multiple closed orders made by the user
34926
34959
  * @param {string} symbol unified market symbol of the market orders were made in
34927
34960
  * @param {int} [since] the earliest time in ms to fetch orders for
34928
- * @param {int} [limit] the maximum number of orde structures to retrieve
34961
+ * @param {int} [limit] the maximum number of order structures to retrieve
34929
34962
  * @param {object} [params] extra parameters specific to the exchange API endpoint
34930
34963
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
34931
34964
  */
@@ -37181,7 +37214,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
37181
37214
  * @see https://docs.bitfinex.com/reference/rest-auth-retrieve-orders-by-symbol
37182
37215
  * @param {string} symbol unified market symbol of the market orders were made in
37183
37216
  * @param {int} [since] the earliest time in ms to fetch orders for
37184
- * @param {int} [limit] the maximum number of orde structures to retrieve
37217
+ * @param {int} [limit] the maximum number of order structures to retrieve
37185
37218
  * @param {object} [params] extra parameters specific to the exchange API endpoint
37186
37219
  * @param {int} [params.until] the latest time in ms to fetch entries for
37187
37220
  * @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 +39052,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
39019
39052
  * @see https://lightning.bitflyer.com/docs?lang=en#list-orders
39020
39053
  * @param {string} symbol unified market symbol of the market orders were made in
39021
39054
  * @param {int} [since] the earliest time in ms to fetch orders for
39022
- * @param {int} [limit] the maximum number of orde structures to retrieve
39055
+ * @param {int} [limit] the maximum number of order structures to retrieve
39023
39056
  * @param {object} [params] extra parameters specific to the exchange API endpoint
39024
39057
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
39025
39058
  */
@@ -39064,7 +39097,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
39064
39097
  * @see https://lightning.bitflyer.com/docs?lang=en#list-orders
39065
39098
  * @param {string} symbol unified market symbol of the market orders were made in
39066
39099
  * @param {int} [since] the earliest time in ms to fetch orders for
39067
- * @param {int} [limit] the maximum number of orde structures to retrieve
39100
+ * @param {int} [limit] the maximum number of order structures to retrieve
39068
39101
  * @param {object} [params] extra parameters specific to the exchange API endpoint
39069
39102
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
39070
39103
  */
@@ -52343,7 +52376,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
52343
52376
  * @description fetches information on multiple closed orders made by the user
52344
52377
  * @param {string} symbol unified market symbol of the market orders were made in
52345
52378
  * @param {int} [since] the earliest time in ms to fetch orders for
52346
- * @param {int} [limit] the maximum number of orde structures to retrieve
52379
+ * @param {int} [limit] the maximum number of order structures to retrieve
52347
52380
  * @param {object} [params] extra parameters specific to the exchange API endpoint
52348
52381
  * @param {int} [params.until] timestamp in ms of the latest entry
52349
52382
  * @param {string} [params.marginMode] *spot only* 'cross' or 'isolated', for margin trading
@@ -54784,7 +54817,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
54784
54817
  * @description fetches information on multiple orders made by the user
54785
54818
  * @param {string} symbol unified market symbol of the market orders were made in
54786
54819
  * @param {int} [since] the earliest time in ms to fetch orders for
54787
- * @param {int} [limit] the maximum number of orde structures to retrieve
54820
+ * @param {int} [limit] the maximum number of order structures to retrieve
54788
54821
  * @param {object} [params] extra parameters specific to the exchange API endpoint
54789
54822
  * @param {int} [params.until] the earliest time in ms to fetch orders for
54790
54823
  * @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 +54881,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
54848
54881
  * @description fetches information on multiple closed orders made by the user
54849
54882
  * @param {string} symbol unified market symbol of the market orders were made in
54850
54883
  * @param {int} [since] the earliest time in ms to fetch orders for
54851
- * @param {int} [limit] the maximum number of orde structures to retrieve
54884
+ * @param {int} [limit] the maximum number of order structures to retrieve
54852
54885
  * @param {object} [params] extra parameters specific to the exchange API endpoint
54853
54886
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
54854
54887
  */
@@ -58010,7 +58043,7 @@ class bitopro extends _abstract_bitopro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
58010
58043
  * @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
58011
58044
  * @param {string} symbol unified market symbol of the market orders were made in
58012
58045
  * @param {int} [since] the earliest time in ms to fetch orders for
58013
- * @param {int} [limit] the maximum number of orde structures to retrieve
58046
+ * @param {int} [limit] the maximum number of order structures to retrieve
58014
58047
  * @param {object} [params] extra parameters specific to the exchange API endpoint
58015
58048
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
58016
58049
  */
@@ -60293,7 +60326,7 @@ class bitpanda extends _abstract_bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
60293
60326
  * @description fetches information on multiple closed orders made by the user
60294
60327
  * @param {string} symbol unified market symbol of the market orders were made in
60295
60328
  * @param {int} [since] the earliest time in ms to fetch orders for
60296
- * @param {int} [limit] the maximum number of orde structures to retrieve
60329
+ * @param {int} [limit] the maximum number of order structures to retrieve
60297
60330
  * @param {object} [params] extra parameters specific to the exchange API endpoint
60298
60331
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
60299
60332
  */
@@ -68946,7 +68979,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
68946
68979
  * @description fetches information on multiple orders made by the user
68947
68980
  * @param {string} symbol unified market symbol of the market orders were made in
68948
68981
  * @param {int} [since] the earliest time in ms to fetch orders for
68949
- * @param {int} [limit] the maximum number of orde structures to retrieve
68982
+ * @param {int} [limit] the maximum number of order structures to retrieve
68950
68983
  * @param {object} [params] extra parameters specific to the exchange API endpoint
68951
68984
  * @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
68985
  * @param {int} [params.until] the latest time in ms to fetch entries for
@@ -70771,7 +70804,7 @@ class blockchaincom extends _abstract_blockchaincom_js__WEBPACK_IMPORTED_MODULE_
70771
70804
  * @description fetches information on multiple closed orders made by the user
70772
70805
  * @param {string} symbol unified market symbol of the market orders were made in
70773
70806
  * @param {int} [since] the earliest time in ms to fetch orders for
70774
- * @param {int} [limit] the maximum number of orde structures to retrieve
70807
+ * @param {int} [limit] the maximum number of order structures to retrieve
70775
70808
  * @param {object} [params] extra parameters specific to the exchange API endpoint
70776
70809
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
70777
70810
  */
@@ -72048,7 +72081,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
72048
72081
  * @description fetches information on multiple orders made by the user
72049
72082
  * @param {string} symbol unified market symbol of the market orders were made in
72050
72083
  * @param {int} [since] the earliest time in ms to fetch orders for
72051
- * @param {int} [limit] the maximum number of orde structures to retrieve
72084
+ * @param {int} [limit] the maximum number of order structures to retrieve
72052
72085
  * @param {object} [params] extra parameters specific to the exchange API endpoint
72053
72086
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
72054
72087
  */
@@ -72088,7 +72121,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
72088
72121
  * @description fetches information on multiple closed orders made by the user
72089
72122
  * @param {string} symbol unified market symbol of the market orders were made in
72090
72123
  * @param {int} [since] the earliest time in ms to fetch orders for
72091
- * @param {int} [limit] the maximum number of orde structures to retrieve
72124
+ * @param {int} [limit] the maximum number of order structures to retrieve
72092
72125
  * @param {object} [params] extra parameters specific to the exchange API endpoint
72093
72126
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
72094
72127
  */
@@ -72677,7 +72710,7 @@ class btcbox extends _abstract_btcbox_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
72677
72710
  * @description fetches information on multiple orders made by the user
72678
72711
  * @param {string} symbol unified market symbol of the market orders were made in
72679
72712
  * @param {int} [since] the earliest time in ms to fetch orders for
72680
- * @param {int} [limit] the maximum number of orde structures to retrieve
72713
+ * @param {int} [limit] the maximum number of order structures to retrieve
72681
72714
  * @param {object} [params] extra parameters specific to the exchange API endpoint
72682
72715
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
72683
72716
  */
@@ -73789,7 +73822,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
73789
73822
  * @description fetches information on multiple orders made by the user
73790
73823
  * @param {string} symbol unified market symbol of the market orders were made in
73791
73824
  * @param {int} [since] the earliest time in ms to fetch orders for
73792
- * @param {int} [limit] the maximum number of orde structures to retrieve
73825
+ * @param {int} [limit] the maximum number of order structures to retrieve
73793
73826
  * @param {object} [params] extra parameters specific to the exchange API endpoint
73794
73827
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
73795
73828
  */
@@ -73832,7 +73865,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
73832
73865
  * @description fetches information on multiple closed orders made by the user
73833
73866
  * @param {string} symbol unified market symbol of the market orders were made in
73834
73867
  * @param {int} [since] the earliest time in ms to fetch orders for
73835
- * @param {int} [limit] the maximum number of orde structures to retrieve
73868
+ * @param {int} [limit] the maximum number of order structures to retrieve
73836
73869
  * @param {object} [params] extra parameters specific to the exchange API endpoint
73837
73870
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
73838
73871
  */
@@ -74742,7 +74775,7 @@ class btcturk extends _abstract_btcturk_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
74742
74775
  * @description fetches information on multiple orders made by the user
74743
74776
  * @param {string} symbol unified market symbol of the market orders were made in
74744
74777
  * @param {int} [since] the earliest time in ms to fetch orders for
74745
- * @param {int} [limit] the maximum number of orde structures to retrieve
74778
+ * @param {int} [limit] the maximum number of order structures to retrieve
74746
74779
  * @param {object} [params] extra parameters specific to the exchange API endpoint
74747
74780
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
74748
74781
  */
@@ -79387,7 +79420,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
79387
79420
  * @see https://bybit-exchange.github.io/docs/v5/order/order-list
79388
79421
  * @param {string} symbol unified market symbol of the market orders were made in
79389
79422
  * @param {int} [since] the earliest time in ms to fetch orders for
79390
- * @param {int} [limit] the maximum number of orde structures to retrieve
79423
+ * @param {int} [limit] the maximum number of order structures to retrieve
79391
79424
  * @param {object} [params] extra parameters specific to the exchange API endpoint
79392
79425
  * @param {boolean} [params.stop] true if stop order
79393
79426
  * @param {string} [params.type] market type, ['swap', 'option', 'spot']
@@ -79503,7 +79536,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
79503
79536
  * @see https://bybit-exchange.github.io/docs/v5/order/order-list
79504
79537
  * @param {string} symbol unified market symbol of the market orders were made in
79505
79538
  * @param {int} [since] the earliest time in ms to fetch orders for
79506
- * @param {int} [limit] the maximum number of orde structures to retrieve
79539
+ * @param {int} [limit] the maximum number of order structures to retrieve
79507
79540
  * @param {object} [params] extra parameters specific to the exchange API endpoint
79508
79541
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
79509
79542
  */
@@ -83917,7 +83950,7 @@ class cex extends _abstract_cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
83917
83950
  * @description fetches information on multiple orders made by the user
83918
83951
  * @param {string} symbol unified market symbol of the market orders were made in
83919
83952
  * @param {int} [since] the earliest time in ms to fetch orders for
83920
- * @param {int} [limit] the maximum number of orde structures to retrieve
83953
+ * @param {int} [limit] the maximum number of order structures to retrieve
83921
83954
  * @param {object} [params] extra parameters specific to the exchange API endpoint
83922
83955
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
83923
83956
  */
@@ -88707,7 +88740,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
88707
88740
  * @description fetches information on multiple orders made by the user
88708
88741
  * @param {string} symbol unified market symbol of the market orders were made in
88709
88742
  * @param {int} [since] the earliest time in ms to fetch orders for
88710
- * @param {int} [limit] the maximum number of orde structures to retrieve
88743
+ * @param {int} [limit] the maximum number of order structures to retrieve
88711
88744
  * @param {object} [params] extra parameters specific to the exchange API endpoint
88712
88745
  * @param {int} [params.until] the latest time in ms to fetch open orders for
88713
88746
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -88765,7 +88798,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
88765
88798
  * @description fetches information on multiple closed orders made by the user
88766
88799
  * @param {string} symbol unified market symbol of the market orders were made in
88767
88800
  * @param {int} [since] the earliest time in ms to fetch orders for
88768
- * @param {int} [limit] the maximum number of orde structures to retrieve
88801
+ * @param {int} [limit] the maximum number of order structures to retrieve
88769
88802
  * @param {object} [params] extra parameters specific to the exchange API endpoint
88770
88803
  * @param {int} [params.until] the latest time in ms to fetch open orders for
88771
88804
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -93493,7 +93526,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
93493
93526
  * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade012_finished_order
93494
93527
  * @param {string} symbol unified market symbol of the market orders were made in
93495
93528
  * @param {int} [since] the earliest time in ms to fetch orders for
93496
- * @param {int} [limit] the maximum number of orde structures to retrieve
93529
+ * @param {int} [limit] the maximum number of order structures to retrieve
93497
93530
  * @param {object} [params] extra parameters specific to the exchange API endpoint
93498
93531
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
93499
93532
  */
@@ -96907,7 +96940,7 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
96907
96940
  * @see https://trade-docs.coinlist.co/?javascript--nodejs#list-orders
96908
96941
  * @param {string} symbol unified market symbol of the market orders were made in
96909
96942
  * @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)
96943
+ * @param {int} [limit] the maximum number of order structures to retrieve (default 200, max 500)
96911
96944
  * @param {object} [params] extra parameters specific to the exchange API endpoint
96912
96945
  * @param {int} [params.until] the latest time in ms to fetch entries for
96913
96946
  * @param {string|string[]} [params.status] the status of the order - 'accepted', 'done', 'canceled', 'rejected', 'pending' (default [ 'accepted', 'done', 'canceled', 'rejected', 'pending' ])
@@ -113002,7 +113035,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
113002
113035
  * @description fetches information on multiple closed orders made by the user
113003
113036
  * @param {string} symbol unified market symbol of the market orders were made in
113004
113037
  * @param {int} [since] the earliest time in ms to fetch orders for
113005
- * @param {int} [limit] the maximum number of orde structures to retrieve
113038
+ * @param {int} [limit] the maximum number of order structures to retrieve
113006
113039
  * @param {object} [params] extra parameters specific to the exchange API endpoint
113007
113040
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
113008
113041
  */
@@ -116541,7 +116574,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
116541
116574
  * @see https://docs.digifinex.com/en-ww/swap/v2/rest.html#historyorder
116542
116575
  * @param {string} symbol unified market symbol of the market orders were made in
116543
116576
  * @param {int} [since] the earliest time in ms to fetch orders for
116544
- * @param {int} [limit] the maximum number of orde structures to retrieve
116577
+ * @param {int} [limit] the maximum number of order structures to retrieve
116545
116578
  * @param {object} [params] extra parameters specific to the exchange API endpoint
116546
116579
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
116547
116580
  */
@@ -125984,7 +126017,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
125984
126017
  * @see https://www.gate.io/docs/developers/apiv4/en/#list-options-orders
125985
126018
  * @param {string} symbol unified market symbol of the market orders were made in
125986
126019
  * @param {int} [since] the earliest time in ms to fetch orders for
125987
- * @param {int} [limit] the maximum number of orde structures to retrieve
126020
+ * @param {int} [limit] the maximum number of order structures to retrieve
125988
126021
  * @param {object} [params] extra parameters specific to the exchange API endpoint
125989
126022
  * @param {bool} [params.stop] true for fetching stop orders
125990
126023
  * @param {string} [params.type] spot, swap or future, if not provided this.options['defaultType'] is used
@@ -132030,7 +132063,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
132030
132063
  * @see https://api.hitbtc.com/#margin-orders-history
132031
132064
  * @param {string} symbol unified market symbol of the market orders were made in
132032
132065
  * @param {int} [since] the earliest time in ms to fetch orders for
132033
- * @param {int} [limit] the maximum number of orde structures to retrieve
132066
+ * @param {int} [limit] the maximum number of order structures to retrieve
132034
132067
  * @param {object} [params] extra parameters specific to the exchange API endpoint
132035
132068
  * @param {string} [params.marginMode] 'cross' or 'isolated' only 'isolated' is supported
132036
132069
  * @param {bool} [params.margin] true for fetching margin orders
@@ -134836,7 +134869,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
134836
134869
  * @description fetches information on multiple closed orders made by the user
134837
134870
  * @param {string} symbol unified market symbol of the market orders were made in
134838
134871
  * @param {int} [since] the earliest time in ms to fetch orders for
134839
- * @param {int} [limit] the maximum number of orde structures to retrieve
134872
+ * @param {int} [limit] the maximum number of order structures to retrieve
134840
134873
  * @param {object} [params] extra parameters specific to the exchange API endpoint
134841
134874
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
134842
134875
  */
@@ -134894,7 +134927,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
134894
134927
  * @description fetches information on multiple orders made by the user
134895
134928
  * @param {string} symbol unified market symbol of the market orders were made in
134896
134929
  * @param {int} [since] the earliest time in ms to fetch orders for
134897
- * @param {int} [limit] the maximum number of orde structures to retrieve
134930
+ * @param {int} [limit] the maximum number of order structures to retrieve
134898
134931
  * @param {object} [params] extra parameters specific to the exchange API endpoint
134899
134932
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
134900
134933
  */
@@ -139932,7 +139965,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
139932
139965
  * @description fetches information on multiple closed orders made by the user
139933
139966
  * @param {string} symbol unified market symbol of the market orders were made in
139934
139967
  * @param {int} [since] the earliest time in ms to fetch orders for
139935
- * @param {int} [limit] the maximum number of orde structures to retrieve
139968
+ * @param {int} [limit] the maximum number of order structures to retrieve
139936
139969
  * @param {object} [params] extra parameters specific to the exchange API endpoint
139937
139970
  * @param {int} [params.until] the latest time in ms to fetch entries for
139938
139971
  * @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 +145855,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
145822
145855
  * @description fetches information on multiple orders made by the user
145823
145856
  * @param {string} symbol unified market symbol of the market orders were made in
145824
145857
  * @param {int} [since] the earliest time in ms to fetch orders for
145825
- * @param {int} [limit] the maximum number of orde structures to retrieve
145858
+ * @param {int} [limit] the maximum number of order structures to retrieve
145826
145859
  * @param {object} [params] extra parameters specific to the exchange API endpoint
145827
145860
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
145828
145861
  */
@@ -145855,7 +145888,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
145855
145888
  * @description fetches information on multiple closed orders made by the user
145856
145889
  * @param {string} symbol unified market symbol of the market orders were made in
145857
145890
  * @param {int} [since] the earliest time in ms to fetch orders for
145858
- * @param {int} [limit] the maximum number of orde structures to retrieve
145891
+ * @param {int} [limit] the maximum number of order structures to retrieve
145859
145892
  * @param {object} [params] extra parameters specific to the exchange API endpoint
145860
145893
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
145861
145894
  */
@@ -147505,7 +147538,7 @@ class idex extends _abstract_idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
147505
147538
  * @description fetches information on multiple closed orders made by the user
147506
147539
  * @param {string} symbol unified market symbol of the market orders were made in
147507
147540
  * @param {int} [since] the earliest time in ms to fetch orders for
147508
- * @param {int} [limit] the maximum number of orde structures to retrieve
147541
+ * @param {int} [limit] the maximum number of order structures to retrieve
147509
147542
  * @param {object} [params] extra parameters specific to the exchange API endpoint
147510
147543
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
147511
147544
  */
@@ -148869,7 +148902,7 @@ class independentreserve extends _abstract_independentreserve_js__WEBPACK_IMPORT
148869
148902
  * @description fetches information on multiple closed orders made by the user
148870
148903
  * @param {string} symbol unified market symbol of the market orders were made in
148871
148904
  * @param {int} [since] the earliest time in ms to fetch orders for
148872
- * @param {int} [limit] the maximum number of orde structures to retrieve
148905
+ * @param {int} [limit] the maximum number of order structures to retrieve
148873
148906
  * @param {object} [params] extra parameters specific to the exchange API endpoint
148874
148907
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
148875
148908
  */
@@ -152285,7 +152318,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
152285
152318
  * @see https://docs.kraken.com/rest/#tag/Account-Data/operation/getClosedOrders
152286
152319
  * @param {string} symbol unified market symbol of the market orders were made in
152287
152320
  * @param {int} [since] the earliest time in ms to fetch orders for
152288
- * @param {int} [limit] the maximum number of orde structures to retrieve
152321
+ * @param {int} [limit] the maximum number of order structures to retrieve
152289
152322
  * @param {object} [params] extra parameters specific to the exchange API endpoint
152290
152323
  * @param {int} [params.until] timestamp in ms of the latest entry
152291
152324
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -155526,15 +155559,15 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
155526
155559
  'closeAllPositions': false,
155527
155560
  'closePosition': false,
155528
155561
  'createDepositAddress': true,
155562
+ 'createMarketBuyOrderWithCost': true,
155563
+ 'createMarketOrderWithCost': true,
155564
+ 'createMarketSellOrderWithCost': true,
155529
155565
  'createOrder': true,
155530
155566
  'createOrders': true,
155531
155567
  'createPostOnlyOrder': true,
155532
155568
  'createStopLimitOrder': true,
155533
155569
  'createStopMarketOrder': true,
155534
155570
  'createStopOrder': true,
155535
- 'createMarketBuyOrderWithCost': true,
155536
- 'createMarketOrderWithCost': true,
155537
- 'createMarketSellOrderWithCost': true,
155538
155571
  'editOrder': true,
155539
155572
  'fetchAccounts': true,
155540
155573
  'fetchBalance': true,
@@ -157921,7 +157954,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
157921
157954
  * @see https://docs.kucoin.com/spot-hf/#obtain-list-of-filled-hf-orders
157922
157955
  * @param {string} symbol unified market symbol of the market orders were made in
157923
157956
  * @param {int} [since] the earliest time in ms to fetch orders for
157924
- * @param {int} [limit] the maximum number of orde structures to retrieve
157957
+ * @param {int} [limit] the maximum number of order structures to retrieve
157925
157958
  * @param {object} [params] extra parameters specific to the exchange API endpoint
157926
157959
  * @param {int} [params.till] end time in ms
157927
157960
  * @param {string} [params.side] buy or sell
@@ -161528,7 +161561,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
161528
161561
  * @see https://docs.kucoin.com/futures/#get-order-list
161529
161562
  * @param {string} symbol unified market symbol of the market orders were made in
161530
161563
  * @param {int} [since] the earliest time in ms to fetch orders for
161531
- * @param {int} [limit] the maximum number of orde structures to retrieve
161564
+ * @param {int} [limit] the maximum number of order structures to retrieve
161532
161565
  * @param {object} [params] extra parameters specific to the exchange API endpoint
161533
161566
  * @param {int} [params.till] end time in ms
161534
161567
  * @param {string} [params.side] buy or sell
@@ -163708,7 +163741,7 @@ class kuna extends _abstract_kuna_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
163708
163741
  * @see https://docs.kuna.io/docs/get-private-orders-history
163709
163742
  * @param {string} symbol unified market symbol of the market orders were made in
163710
163743
  * @param {int} [since] the earliest time in ms to fetch orders for
163711
- * @param {int} [limit] the maximum number of orde structures to retrieve
163744
+ * @param {int} [limit] the maximum number of order structures to retrieve
163712
163745
  * @param {object} [params] extra parameters specific to the exchange API endpoint
163713
163746
  * @param {int} [params.until] the latest time in ms to fetch orders for
163714
163747
  *
@@ -165539,7 +165572,7 @@ class latoken extends _abstract_latoken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
165539
165572
  * @see https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair // stop
165540
165573
  * @param {string} symbol unified market symbol of the market orders were made in
165541
165574
  * @param {int} [since] the earliest time in ms to fetch orders for
165542
- * @param {int} [limit] the maximum number of orde structures to retrieve
165575
+ * @param {int} [limit] the maximum number of order structures to retrieve
165543
165576
  * @param {object} [params] extra parameters specific to the exchange API endpoint
165544
165577
  * @param {boolean} [params.trigger] true if fetching trigger orders
165545
165578
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -169447,7 +169480,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
169447
169480
  * @description fetches information on multiple orders made by the user
169448
169481
  * @param {string} symbol unified market symbol of the market orders were made in
169449
169482
  * @param {int} [since] the earliest time in ms to fetch orders for
169450
- * @param {int} [limit] the maximum number of orde structures to retrieve
169483
+ * @param {int} [limit] the maximum number of order structures to retrieve
169451
169484
  * @param {object} [params] extra parameters specific to the exchange API endpoint
169452
169485
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
169453
169486
  */
@@ -169473,7 +169506,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
169473
169506
  * @description fetches information on multiple closed orders made by the user
169474
169507
  * @param {string} symbol unified market symbol of the market orders were made in
169475
169508
  * @param {int} [since] the earliest time in ms to fetch orders for
169476
- * @param {int} [limit] the maximum number of orde structures to retrieve
169509
+ * @param {int} [limit] the maximum number of order structures to retrieve
169477
169510
  * @param {object} [params] extra parameters specific to the exchange API endpoint
169478
169511
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
169479
169512
  */
@@ -171001,7 +171034,7 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
171001
171034
  * @description fetches information on multiple closed orders made by the user
171002
171035
  * @param {string} symbol unified market symbol of the market orders were made in
171003
171036
  * @param {int} [since] the earliest time in ms to fetch orders for
171004
- * @param {int} [limit] the maximum number of orde structures to retrieve
171037
+ * @param {int} [limit] the maximum number of order structures to retrieve
171005
171038
  * @param {object} [params] extra parameters specific to the exchange API endpoint
171006
171039
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
171007
171040
  */
@@ -174748,7 +174781,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
174748
174781
  * @description fetches information on multiple orders made by the user
174749
174782
  * @param {string} symbol unified market symbol of the market orders were made in
174750
174783
  * @param {int} [since] the earliest time in ms to fetch orders for
174751
- * @param {int} [limit] the maximum number of orde structures to retrieve
174784
+ * @param {int} [limit] the maximum number of order structures to retrieve
174752
174785
  * @param {object} [params] extra parameters specific to the exchange API endpoint
174753
174786
  * @param {string} [params.marginMode] only 'isolated' is supported, for spot-margin trading
174754
174787
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -175071,7 +175104,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
175071
175104
  * @description fetches information on multiple closed orders made by the user
175072
175105
  * @param {string} symbol unified market symbol of the market orders were made in
175073
175106
  * @param {int} [since] the earliest time in ms to fetch orders for
175074
- * @param {int} [limit] the maximum number of orde structures to retrieve
175107
+ * @param {int} [limit] the maximum number of order structures to retrieve
175075
175108
  * @param {object} [params] extra parameters specific to the exchange API endpoint
175076
175109
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
175077
175110
  */
@@ -179336,7 +179369,7 @@ class ndax extends _abstract_ndax_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
179336
179369
  * @description fetches information on multiple orders made by the user
179337
179370
  * @param {string} symbol unified market symbol of the market orders were made in
179338
179371
  * @param {int} [since] the earliest time in ms to fetch orders for
179339
- * @param {int} [limit] the maximum number of orde structures to retrieve
179372
+ * @param {int} [limit] the maximum number of order structures to retrieve
179340
179373
  * @param {object} [params] extra parameters specific to the exchange API endpoint
179341
179374
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
179342
179375
  */
@@ -181019,7 +181052,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
181019
181052
  * @see https://doc.novadax.com/en-US/#get-order-history
181020
181053
  * @param {string} symbol unified market symbol of the market orders were made in
181021
181054
  * @param {int} [since] the earliest time in ms to fetch orders for
181022
- * @param {int} [limit] the maximum number of orde structures to retrieve
181055
+ * @param {int} [limit] the maximum number of order structures to retrieve
181023
181056
  * @param {object} [params] extra parameters specific to the exchange API endpoint
181024
181057
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
181025
181058
  */
@@ -181096,7 +181129,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
181096
181129
  * @see https://doc.novadax.com/en-US/#get-order-history
181097
181130
  * @param {string} symbol unified market symbol of the market orders were made in
181098
181131
  * @param {int} [since] the earliest time in ms to fetch orders for
181099
- * @param {int} [limit] the maximum number of orde structures to retrieve
181132
+ * @param {int} [limit] the maximum number of order structures to retrieve
181100
181133
  * @param {object} [params] extra parameters specific to the exchange API endpoint
181101
181134
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
181102
181135
  */
@@ -182385,7 +182418,7 @@ class oceanex extends _abstract_oceanex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
182385
182418
  * @see https://api.oceanex.pro/doc/v1/#order-status-get
182386
182419
  * @param {string} symbol unified market symbol of the market orders were made in
182387
182420
  * @param {int} [since] the earliest time in ms to fetch orders for
182388
- * @param {int} [limit] the maximum number of orde structures to retrieve
182421
+ * @param {int} [limit] the maximum number of order structures to retrieve
182389
182422
  * @param {object} [params] extra parameters specific to the exchange API endpoint
182390
182423
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
182391
182424
  */
@@ -184714,7 +184747,7 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
184714
184747
  * @description fetches information on multiple closed orders made by the user
184715
184748
  * @param {string} symbol unified market symbol of the market orders were made in
184716
184749
  * @param {int} [since] the earliest time in ms to fetch orders for
184717
- * @param {int} [limit] the maximum number of orde structures to retrieve
184750
+ * @param {int} [limit] the maximum number of order structures to retrieve
184718
184751
  * @param {object} [params] extra parameters specific to the exchange API endpoint
184719
184752
  * @param {bool} [params.stop] True if fetching trigger or conditional orders
184720
184753
  * @param {string} [params.ordType] "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
@@ -189684,7 +189717,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
189684
189717
  * @see https://www.okx.com/docs-v5/en/#order-book-trading-algo-trading-get-algo-order-history
189685
189718
  * @param {string} symbol unified market symbol of the market orders were made in
189686
189719
  * @param {int} [since] the earliest time in ms to fetch orders for
189687
- * @param {int} [limit] the maximum number of orde structures to retrieve
189720
+ * @param {int} [limit] the maximum number of order structures to retrieve
189688
189721
  * @param {object} [params] extra parameters specific to the exchange API endpoint
189689
189722
  * @param {bool} [params.stop] True if fetching trigger or conditional orders
189690
189723
  * @param {string} [params.ordType] "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
@@ -203386,7 +203419,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
203386
203419
  * @see https://futures-docs.poloniex.com/#get-untriggered-stop-order-list
203387
203420
  * @param {string} symbol unified market symbol of the market orders were made in
203388
203421
  * @param {int} [since] the earliest time in ms to fetch orders for
203389
- * @param {int} [limit] the maximum number of orde structures to retrieve
203422
+ * @param {int} [limit] the maximum number of order structures to retrieve
203390
203423
  * @param {object} [params] extra parameters specific to the exchange API endpoint
203391
203424
  * @param {int} [params.till] end time in ms
203392
203425
  * @param {string} [params.side] buy or sell
@@ -204156,7 +204189,7 @@ class alpaca extends _alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
204156
204189
  * @description watches information on multiple orders made by the user
204157
204190
  * @param {string} symbol unified market symbol of the market orders were made in
204158
204191
  * @param {int} [since] the earliest time in ms to fetch orders for
204159
- * @param {int} [limit] the maximum number of orde structures to retrieve
204192
+ * @param {int} [limit] the maximum number of order structures to retrieve
204160
204193
  * @param {object} [params] extra parameters specific to the exchange API endpoint
204161
204194
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
204162
204195
  */
@@ -205009,7 +205042,7 @@ class ascendex extends _ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
205009
205042
  * @description watches information on multiple orders made by the user
205010
205043
  * @param {string} symbol unified market symbol of the market orders were made in
205011
205044
  * @param {int} [since] the earliest time in ms to fetch orders for
205012
- * @param {int} [limit] the maximum number of orde structures to retrieve
205045
+ * @param {int} [limit] the maximum number of order structures to retrieve
205013
205046
  * @param {object} [params] extra parameters specific to the exchange API endpoint
205014
205047
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
205015
205048
  */
@@ -207470,7 +207503,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
207470
207503
  * @description watches information on multiple orders made by the user
207471
207504
  * @param {string} symbol unified market symbol of the market orders were made in
207472
207505
  * @param {int} [since] the earliest time in ms to fetch orders for
207473
- * @param {int} [limit] the maximum number of orde structures to retrieve
207506
+ * @param {int} [limit] the maximum number of order structures to retrieve
207474
207507
  * @param {object} [params] extra parameters specific to the exchange API endpoint
207475
207508
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
207476
207509
  */
@@ -208026,7 +208059,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
208026
208059
  * @description watches information on multiple trades made by the user
208027
208060
  * @param {string} symbol unified market symbol of the market orders were made in
208028
208061
  * @param {int} [since] the earliest time in ms to fetch orders for
208029
- * @param {int} [limit] the maximum number of orde structures to retrieve
208062
+ * @param {int} [limit] the maximum number of order structures to retrieve
208030
208063
  * @param {object} [params] extra parameters specific to the exchange API endpoint
208031
208064
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
208032
208065
  */
@@ -208498,7 +208531,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208498
208531
  * @see https://bingx-api.github.io/docs/#/swapV2/socket/market.html#Subscribe%20the%20Latest%20Trade%20Detail
208499
208532
  * @param {string} symbol unified market symbol of the market orders were made in
208500
208533
  * @param {int} [since] the earliest time in ms to fetch orders for
208501
- * @param {int} [limit] the maximum number of orde structures to retrieve
208534
+ * @param {int} [limit] the maximum number of order structures to retrieve
208502
208535
  * @param {object} [params] extra parameters specific to the exchange API endpoint
208503
208536
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
208504
208537
  */
@@ -208726,8 +208759,11 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208726
208759
  // "t": 1696687440000
208727
208760
  // }
208728
208761
  //
208762
+ // for spot, opening-time (t) is used instead of closing-time (T), to be compatible with fetchOHLCV
208763
+ // for swap, (T) is the opening time
208764
+ const timestamp = (market['spot']) ? 't' : 'T';
208729
208765
  return [
208730
- this.safeInteger(ohlcv, 't'),
208766
+ this.safeInteger(ohlcv, timestamp),
208731
208767
  this.safeNumber(ohlcv, 'o'),
208732
208768
  this.safeNumber(ohlcv, 'h'),
208733
208769
  this.safeNumber(ohlcv, 'l'),
@@ -208855,7 +208891,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
208855
208891
  * @description watches information on multiple orders made by the user
208856
208892
  * @param {string} symbol unified market symbol of the market orders were made in
208857
208893
  * @param {int} [since] the earliest time in ms to fetch orders for
208858
- * @param {int} [limit] the maximum number of orde structures to retrieve
208894
+ * @param {int} [limit] the maximum number of order structures to retrieve
208859
208895
  * @param {object} [params] extra parameters specific to the exchange API endpoint
208860
208896
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
208861
208897
  */
@@ -209857,7 +209893,7 @@ class bitfinex extends _bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
209857
209893
  * @description watches information on multiple orders made by the user
209858
209894
  * @param {string} symbol unified market symbol of the market orders were made in
209859
209895
  * @param {int} [since] the earliest time in ms to fetch orders for
209860
- * @param {int} [limit] the maximum number of orde structures to retrieve
209896
+ * @param {int} [limit] the maximum number of order structures to retrieve
209861
209897
  * @param {object} [params] extra parameters specific to the exchange API endpoint
209862
209898
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
209863
209899
  */
@@ -210964,7 +211000,7 @@ class bitfinex2 extends _bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
210964
211000
  * @description watches information on multiple orders made by the user
210965
211001
  * @param {string} symbol unified market symbol of the market orders were made in
210966
211002
  * @param {int} [since] the earliest time in ms to fetch orders for
210967
- * @param {int} [limit] the maximum number of orde structures to retrieve
211003
+ * @param {int} [limit] the maximum number of order structures to retrieve
210968
211004
  * @param {object} [params] extra parameters specific to the exchange API endpoint
210969
211005
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
210970
211006
  */
@@ -215217,7 +215253,7 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
215217
215253
  * @description watches information on multiple orders made by the user
215218
215254
  * @param {string} symbol unified market symbol of the market orders were made in
215219
215255
  * @param {int} [since] the earliest time in ms to fetch orders for
215220
- * @param {int} [limit] the maximum number of orde structures to retrieve
215256
+ * @param {int} [limit] the maximum number of order structures to retrieve
215221
215257
  * @param {object} [params] extra parameters specific to the exchange API endpoint
215222
215258
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
215223
215259
  */
@@ -216758,7 +216794,7 @@ class bitpanda extends _bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
216758
216794
  * @description watches information on multiple orders made by the user
216759
216795
  * @param {string} symbol unified market symbol of the market orders were made in
216760
216796
  * @param {int} [since] the earliest time in ms to fetch orders for
216761
- * @param {int} [limit] the maximum number of orde structures to retrieve
216797
+ * @param {int} [limit] the maximum number of order structures to retrieve
216762
216798
  * @param {object} [params] extra parameters specific to the exchange API endpoint
216763
216799
  * @param {string} [params.channel] can listen to orders using ACCOUNT_HISTORY or TRADING
216764
216800
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -219832,7 +219868,7 @@ class blockchaincom extends _blockchaincom_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
219832
219868
  * @see https://exchange.blockchain.com/api/#mass-order-status-request-ordermassstatusrequest
219833
219869
  * @param {string} symbol unified market symbol of the market orders were made in
219834
219870
  * @param {int} [since] the earliest time in ms to fetch orders for
219835
- * @param {int} [limit] the maximum number of orde structures to retrieve
219871
+ * @param {int} [limit] the maximum number of order structures to retrieve
219836
219872
  * @param {object} [params] extra parameters specific to the exchange API endpoint
219837
219873
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
219838
219874
  */
@@ -221035,7 +221071,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
221035
221071
  * @see https://bybit-exchange.github.io/docs/v5/websocket/private/execution
221036
221072
  * @param {string} symbol unified market symbol of the market orders were made in
221037
221073
  * @param {int} [since] the earliest time in ms to fetch orders for
221038
- * @param {int} [limit] the maximum number of orde structures to retrieve
221074
+ * @param {int} [limit] the maximum number of order structures to retrieve
221039
221075
  * @param {object} [params] extra parameters specific to the exchange API endpoint
221040
221076
  * @param {boolean} [params.unifiedMargin] use unified margin account
221041
221077
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
@@ -221300,7 +221336,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
221300
221336
  * @see https://bybit-exchange.github.io/docs/v5/websocket/private/order
221301
221337
  * @param {string} symbol unified market symbol of the market orders were made in
221302
221338
  * @param {int} [since] the earliest time in ms to fetch orders for
221303
- * @param {int} [limit] the maximum number of orde structures to retrieve
221339
+ * @param {int} [limit] the maximum number of order structures to retrieve
221304
221340
  * @param {object} [params] extra parameters specific to the exchange API endpoint
221305
221341
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
221306
221342
  */
@@ -223892,7 +223928,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
223892
223928
  * @see https://docs.cloud.coinbase.com/advanced-trade-api/docs/ws-channels#user-channel
223893
223929
  * @param {string} [symbol] unified market symbol of the market orders were made in
223894
223930
  * @param {int} [since] the earliest time in ms to fetch orders for
223895
- * @param {int} [limit] the maximum number of orde structures to retrieve
223931
+ * @param {int} [limit] the maximum number of order structures to retrieve
223896
223932
  * @param {object} [params] extra parameters specific to the exchange API endpoint
223897
223933
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
223898
223934
  */
@@ -224460,7 +224496,7 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
224460
224496
  * @description watches information on multiple orders made by the user
224461
224497
  * @param {string} symbol unified market symbol of the market orders were made in
224462
224498
  * @param {int} [since] the earliest time in ms to fetch orders for
224463
- * @param {int} [limit] the maximum number of orde structures to retrieve
224499
+ * @param {int} [limit] the maximum number of order structures to retrieve
224464
224500
  * @param {object} [params] extra parameters specific to the exchange API endpoint
224465
224501
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
224466
224502
  */
@@ -228307,7 +228343,7 @@ class deribit extends _deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
228307
228343
  * @description watches information on multiple orders made by the user
228308
228344
  * @param {string} symbol unified market symbol of the market orders were made in
228309
228345
  * @param {int} [since] the earliest time in ms to fetch orders for
228310
- * @param {int} [limit] the maximum number of orde structures to retrieve
228346
+ * @param {int} [limit] the maximum number of order structures to retrieve
228311
228347
  * @param {object} [params] extra parameters specific to the exchange API endpoint
228312
228348
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
228313
228349
  */
@@ -230190,7 +230226,7 @@ class gate extends _gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
230190
230226
  * @description watches information on multiple orders made by the user
230191
230227
  * @param {string} symbol unified market symbol of the market orders were made in
230192
230228
  * @param {int} [since] the earliest time in ms to fetch orders for
230193
- * @param {int} [limit] the maximum number of orde structures to retrieve
230229
+ * @param {int} [limit] the maximum number of order structures to retrieve
230194
230230
  * @param {object} [params] extra parameters specific to the exchange API endpoint
230195
230231
  * @param {string} [params.type] spot, margin, swap, future, or option. Required if listening to all symbols.
230196
230232
  * @param {boolean} [params.isInverse] if future, listen to inverse or linear contracts
@@ -231023,7 +231059,7 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
231023
231059
  * @see https://docs.gemini.com/websocket-api/#order-events
231024
231060
  * @param {string} symbol unified market symbol of the market orders were made in
231025
231061
  * @param {int} [since] the earliest time in ms to fetch orders for
231026
- * @param {int} [limit] the maximum number of orde structures to retrieve
231062
+ * @param {int} [limit] the maximum number of order structures to retrieve
231027
231063
  * @param {object} [params] extra parameters specific to the exchange API endpoint
231028
231064
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
231029
231065
  */
@@ -232857,7 +232893,7 @@ class hollaex extends _hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
232857
232893
  * @description watches information on multiple orders made by the user
232858
232894
  * @param {string} symbol unified market symbol of the market orders were made in
232859
232895
  * @param {int} [since] the earliest time in ms to fetch orders for
232860
- * @param {int} [limit] the maximum number of orde structures to retrieve
232896
+ * @param {int} [limit] the maximum number of order structures to retrieve
232861
232897
  * @param {object} [params] extra parameters specific to the exchange API endpoint
232862
232898
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
232863
232899
  */
@@ -233979,7 +234015,7 @@ class htx extends _htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
233979
234015
  * @description watches information on multiple orders made by the user
233980
234016
  * @param {string} symbol unified market symbol of the market orders were made in
233981
234017
  * @param {int} [since] the earliest time in ms to fetch orders for
233982
- * @param {int} [limit] the maximum number of orde structures to retrieve
234018
+ * @param {int} [limit] the maximum number of order structures to retrieve
233983
234019
  * @param {object} [params] extra parameters specific to the exchange API endpoint
233984
234020
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
233985
234021
  */
@@ -236749,7 +236785,7 @@ class idex extends _idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
236749
236785
  * @description watches information on multiple orders made by the user
236750
236786
  * @param {string} symbol unified market symbol of the market orders were made in
236751
236787
  * @param {int} [since] the earliest time in ms to fetch orders for
236752
- * @param {int} [limit] the maximum number of orde structures to retrieve
236788
+ * @param {int} [limit] the maximum number of order structures to retrieve
236753
236789
  * @param {object} [params] extra parameters specific to the exchange API endpoint
236754
236790
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
236755
236791
  */
@@ -238241,7 +238277,7 @@ class kraken extends _kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
238241
238277
  * @param {string} symbol unified market symbol of the market orders were made in
238242
238278
  * @param {int} [since] the earliest time in ms to fetch orders for
238243
238279
  * @param {int} [limit] the maximum number of orde structures to retrieve
238244
- * @param {object} [params] extra parameters specific to the exchange API endpoint
238280
+ * @param {object} [params] maximum number of orderic to the exchange API endpoint
238245
238281
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
238246
238282
  */
238247
238283
  return await this.watchPrivate('openOrders', symbol, since, limit, params);
@@ -239001,7 +239037,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
239001
239037
  * @see https://docs.futures.kraken.com/#websocket-api-private-feeds-fills
239002
239038
  * @param {string} symbol unified market symbol of the market orders were made in
239003
239039
  * @param {int} [since] the earliest time in ms to fetch orders for
239004
- * @param {int} [limit] the maximum number of orde structures to retrieve
239040
+ * @param {int} [limit] the maximum number of order structures to retrieve
239005
239041
  * @param {object} [params] extra parameters specific to the exchange API endpoint
239006
239042
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
239007
239043
  */
@@ -241858,7 +241894,7 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
241858
241894
  * @see https://docs.kucoin.com/futures/#trade-orders-according-to-the-market
241859
241895
  * @param {string} symbol unified market symbol of the market orders were made in
241860
241896
  * @param {int} [since] the earliest time in ms to fetch orders for
241861
- * @param {int} [limit] the maximum number of orde structures to retrieve
241897
+ * @param {int} [limit] the maximum number of order structures to retrieve
241862
241898
  * @param {object} [params] extra parameters specific to the exchange API endpoint
241863
241899
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
241864
241900
  */
@@ -243234,7 +243270,7 @@ class mexc extends _mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
243234
243270
  * @description watches information on multiple orders made by the user
243235
243271
  * @param {string} symbol unified market symbol of the market orders were made in
243236
243272
  * @param {int} [since] the earliest time in ms to fetch orders for
243237
- * @param {int} [limit] the maximum number of orde structures to retrieve
243273
+ * @param {int} [limit] the maximum number of order structures to retrieve
243238
243274
  * @param {object} [params] extra parameters specific to the exchange API endpoint
243239
243275
  * @param {string|undefined} params.type the type of orders to retrieve, can be 'spot' or 'margin'
243240
243276
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -244316,7 +244352,7 @@ class okcoin extends _okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
244316
244352
  * @description watches information on multiple orders made by the user
244317
244353
  * @param {string} symbol unified market symbol of the market orders were made in
244318
244354
  * @param {int} [since] the earliest time in ms to fetch orders for
244319
- * @param {int} [limit] the maximum number of orde structures to retrieve
244355
+ * @param {int} [limit] the maximum number of order structures to retrieve
244320
244356
  * @param {object} [params] extra parameters specific to the exchange API endpoint
244321
244357
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
244322
244358
  */
@@ -245962,7 +245998,7 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
245962
245998
  * @description watches information on multiple orders made by the user
245963
245999
  * @param {string} [symbol] unified market symbol of the market orders were made in
245964
246000
  * @param {int} [since] the earliest time in ms to fetch orders for
245965
- * @param {int} [limit] the maximum number of orde structures to retrieve
246001
+ * @param {int} [limit] the maximum number of order structures to retrieve
245966
246002
  * @param {object} [params] extra parameters specific to the exchange API endpoint
245967
246003
  * @param {bool} [params.stop] true if fetching trigger or conditional orders
245968
246004
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -247451,7 +247487,7 @@ class phemex extends _phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
247451
247487
  * @description watches information on multiple orders made by the user
247452
247488
  * @param {string} symbol unified market symbol of the market orders were made in
247453
247489
  * @param {int} [since] the earliest time in ms to fetch orders for
247454
- * @param {int} [limit] the maximum number of orde structures to retrieve
247490
+ * @param {int} [limit] the maximum number of order structures to retrieve
247455
247491
  * @param {object} [params] extra parameters specific to the exchange API endpoint
247456
247492
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
247457
247493
  */
@@ -249645,7 +249681,7 @@ class poloniexfutures extends _poloniexfutures_js__WEBPACK_IMPORTED_MODULE_0__/*
249645
249681
  * @see https://futures-docs.poloniex.com/#private-messages
249646
249682
  * @param {string} symbol filter by unified market symbol of the market orders were made in
249647
249683
  * @param {int} [since] the earliest time in ms to fetch orders for
249648
- * @param {int} [limit] the maximum number of orde structures to retrieve
249684
+ * @param {int} [limit] the maximum number of order structures to retrieve
249649
249685
  * @param {object} [params] extra parameters specific to the exchange API endpoint
249650
249686
  * @param {string} [params.method] the method to use will default to /contractMarket/tradeOrders. Set to /contractMarket/advancedOrders to watch stop orders
249651
249687
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -254762,7 +254798,7 @@ class probit extends _abstract_probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
254762
254798
  * @description fetches information on multiple closed orders made by the user
254763
254799
  * @param {string} symbol unified market symbol of the market orders were made in
254764
254800
  * @param {int} [since] the earliest time in ms to fetch orders for
254765
- * @param {int} [limit] the maximum number of orde structures to retrieve
254801
+ * @param {int} [limit] the maximum number of order structures to retrieve
254766
254802
  * @param {object} [params] extra parameters specific to the exchange API endpoint
254767
254803
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
254768
254804
  */
@@ -265510,7 +265546,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
265510
265546
  * @description fetches information on multiple closed orders made by the user
265511
265547
  * @param {string} symbol unified market symbol of the market orders were made in
265512
265548
  * @param {int} [since] the earliest time in ms to fetch orders for
265513
- * @param {int} [limit] the maximum number of orde structures to retrieve
265549
+ * @param {int} [limit] the maximum number of order structures to retrieve
265514
265550
  * @param {object} [params] extra parameters specific to the exchange API endpoint
265515
265551
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
265516
265552
  */
@@ -267987,7 +268023,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
267987
268023
  * @description fetches information on multiple closed orders made by the user
267988
268024
  * @param {string} symbol unified market symbol of the market orders were made in
267989
268025
  * @param {int} [since] the earliest time in ms to fetch orders for
267990
- * @param {int} [limit] the maximum number of orde structures to retrieve
268026
+ * @param {int} [limit] the maximum number of order structures to retrieve
267991
268027
  * @param {object} [params] extra parameters specific to the exchange API endpoint
267992
268028
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
267993
268029
  */
@@ -270158,7 +270194,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
270158
270194
  * @description fetches information on multiple closed orders made by the user
270159
270195
  * @param {string} symbol unified market symbol of the market orders were made in
270160
270196
  * @param {int} [since] the earliest time in ms to fetch orders for
270161
- * @param {int} [limit] the maximum number of orde structures to retrieve
270197
+ * @param {int} [limit] the maximum number of order structures to retrieve
270162
270198
  * @param {object} [params] extra parameters specific to the exchange API endpoint
270163
270199
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
270164
270200
  */
@@ -272124,7 +272160,7 @@ class wavesexchange extends _abstract_wavesexchange_js__WEBPACK_IMPORTED_MODULE_
272124
272160
  * @description fetches information on multiple closed orders made by the user
272125
272161
  * @param {string} symbol unified market symbol of the market orders were made in
272126
272162
  * @param {int} [since] the earliest time in ms to fetch orders for
272127
- * @param {int} [limit] the maximum number of orde structures to retrieve
272163
+ * @param {int} [limit] the maximum number of order structures to retrieve
272128
272164
  * @param {object} [params] extra parameters specific to the exchange API endpoint
272129
272165
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
272130
272166
  */
@@ -275478,7 +275514,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
275478
275514
  * @see https://docs.whitebit.com/private/http-trade-v4/#query-executed-orders
275479
275515
  * @param {string} symbol unified market symbol of the market orders were made in
275480
275516
  * @param {int} [since] the earliest time in ms to fetch orders for
275481
- * @param {int} [limit] the maximum number of orde structures to retrieve
275517
+ * @param {int} [limit] the maximum number of order structures to retrieve
275482
275518
  * @param {object} [params] extra parameters specific to the exchange API endpoint
275483
275519
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
275484
275520
  */
@@ -277580,7 +277616,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
277580
277616
  * @description fetches information on multiple orders made by the user
277581
277617
  * @param {string} symbol unified market symbol of the market orders were made in
277582
277618
  * @param {int} [since] the earliest time in ms to fetch orders for
277583
- * @param {int} [limit] the maximum number of orde structures to retrieve
277619
+ * @param {int} [limit] the maximum number of order structures to retrieve
277584
277620
  * @param {object} [params] extra parameters specific to the exchange API endpoint
277585
277621
  * @param {boolean} [params.stop] whether the order is a stop/algo order
277586
277622
  * @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
@@ -280377,752 +280413,6 @@ class yobit extends _abstract_yobit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
280377
280413
  }
280378
280414
 
280379
280415
 
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
280416
  /***/ }),
281127
280417
 
281128
280418
  /***/ 5140:
@@ -288166,6 +287456,751 @@ YAHOO.lang = {
288166
287456
  }
288167
287457
  };
288168
287458
 
287459
+ /***/ }),
287460
+
287461
+ /***/ 7558:
287462
+ /***/ (() => {
287463
+
287464
+
287465
+ // ---------------------------------------------------------------------------
287466
+ var __importDefault = (undefined && undefined.__importDefault) || function (mod) {
287467
+ return (mod && mod.__esModule) ? mod : { "default": mod };
287468
+ };
287469
+ Object.defineProperty(exports, "__esModule", { value: true });
287470
+ const zaif_js_1 = __importDefault(require("./abstract/zaif.js"));
287471
+ const errors_js_1 = require("./base/errors.js");
287472
+ const Precise_js_1 = require("./base/Precise.js");
287473
+ const number_js_1 = require("./base/functions/number.js");
287474
+ const sha512_js_1 = require("./static_dependencies/noble-hashes/sha512.js");
287475
+ // ---------------------------------------------------------------------------
287476
+ /**
287477
+ * @class zaif
287478
+ * @extends Exchange
287479
+ */
287480
+ class zaif extends zaif_js_1.default {
287481
+ describe() {
287482
+ return this.deepExtend(super.describe(), {
287483
+ 'id': 'zaif',
287484
+ 'name': 'Zaif',
287485
+ 'countries': ['JP'],
287486
+ // 10 requests per second = 1000ms / 10 = 100ms between requests (public market endpoints)
287487
+ 'rateLimit': 100,
287488
+ 'version': '1',
287489
+ 'has': {
287490
+ 'CORS': undefined,
287491
+ 'spot': true,
287492
+ 'margin': undefined,
287493
+ 'swap': false,
287494
+ 'future': false,
287495
+ 'option': false,
287496
+ 'cancelOrder': true,
287497
+ 'createMarketOrder': false,
287498
+ 'createOrder': true,
287499
+ 'fetchBalance': true,
287500
+ 'fetchClosedOrders': true,
287501
+ 'fetchFundingHistory': false,
287502
+ 'fetchFundingRate': false,
287503
+ 'fetchFundingRateHistory': false,
287504
+ 'fetchFundingRates': false,
287505
+ 'fetchIndexOHLCV': false,
287506
+ 'fetchMarkets': true,
287507
+ 'fetchMarkOHLCV': false,
287508
+ 'fetchOpenInterestHistory': false,
287509
+ 'fetchOpenOrders': true,
287510
+ 'fetchOrderBook': true,
287511
+ 'fetchPremiumIndexOHLCV': false,
287512
+ 'fetchTicker': true,
287513
+ 'fetchTrades': true,
287514
+ 'fetchTradingFee': false,
287515
+ 'fetchTradingFees': false,
287516
+ 'withdraw': true,
287517
+ },
287518
+ 'urls': {
287519
+ 'logo': 'https://user-images.githubusercontent.com/1294454/27766927-39ca2ada-5eeb-11e7-972f-1b4199518ca6.jpg',
287520
+ 'api': {
287521
+ 'rest': 'https://api.zaif.jp',
287522
+ },
287523
+ 'www': 'https://zaif.jp',
287524
+ 'doc': [
287525
+ 'https://techbureau-api-document.readthedocs.io/ja/latest/index.html',
287526
+ 'https://corp.zaif.jp/api-docs',
287527
+ 'https://corp.zaif.jp/api-docs/api_links',
287528
+ 'https://www.npmjs.com/package/zaif.jp',
287529
+ 'https://github.com/you21979/node-zaif',
287530
+ ],
287531
+ 'fees': 'https://zaif.jp/fee?lang=en',
287532
+ },
287533
+ 'fees': {
287534
+ 'trading': {
287535
+ 'percentage': true,
287536
+ 'taker': this.parseNumber('0.001'),
287537
+ 'maker': this.parseNumber('0'),
287538
+ },
287539
+ },
287540
+ 'api': {
287541
+ 'public': {
287542
+ 'get': {
287543
+ 'depth/{pair}': 1,
287544
+ 'currencies/{pair}': 1,
287545
+ 'currencies/all': 1,
287546
+ 'currency_pairs/{pair}': 1,
287547
+ 'currency_pairs/all': 1,
287548
+ 'last_price/{pair}': 1,
287549
+ 'ticker/{pair}': 1,
287550
+ 'trades/{pair}': 1,
287551
+ },
287552
+ },
287553
+ 'private': {
287554
+ 'post': {
287555
+ 'active_orders': 5,
287556
+ 'cancel_order': 5,
287557
+ 'deposit_history': 5,
287558
+ 'get_id_info': 5,
287559
+ 'get_info': 10,
287560
+ 'get_info2': 5,
287561
+ 'get_personal_info': 5,
287562
+ 'trade': 5,
287563
+ 'trade_history': 50,
287564
+ 'withdraw': 5,
287565
+ 'withdraw_history': 5,
287566
+ },
287567
+ },
287568
+ 'ecapi': {
287569
+ 'post': {
287570
+ 'createInvoice': 1,
287571
+ 'getInvoice': 1,
287572
+ 'getInvoiceIdsByOrderNumber': 1,
287573
+ 'cancelInvoice': 1,
287574
+ },
287575
+ },
287576
+ 'tlapi': {
287577
+ 'post': {
287578
+ 'get_positions': 66,
287579
+ 'position_history': 66,
287580
+ 'active_positions': 5,
287581
+ 'create_position': 33,
287582
+ 'change_position': 33,
287583
+ 'cancel_position': 33, // 3 in 10 seconds
287584
+ },
287585
+ },
287586
+ 'fapi': {
287587
+ 'get': {
287588
+ 'groups/{group_id}': 1,
287589
+ 'last_price/{group_id}/{pair}': 1,
287590
+ 'ticker/{group_id}/{pair}': 1,
287591
+ 'trades/{group_id}/{pair}': 1,
287592
+ 'depth/{group_id}/{pair}': 1,
287593
+ },
287594
+ },
287595
+ },
287596
+ 'options': {},
287597
+ 'precisionMode': number_js_1.TICK_SIZE,
287598
+ 'exceptions': {
287599
+ 'exact': {
287600
+ 'unsupported currency_pair': errors_js_1.BadRequest, // {"error": "unsupported currency_pair"}
287601
+ },
287602
+ 'broad': {},
287603
+ },
287604
+ });
287605
+ }
287606
+ async fetchMarkets(params = {}) {
287607
+ /**
287608
+ * @method
287609
+ * @name zaif#fetchMarkets
287610
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id12
287611
+ * @description retrieves data on all markets for zaif
287612
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287613
+ * @returns {object[]} an array of objects representing market data
287614
+ */
287615
+ const markets = await this.publicGetCurrencyPairsAll(params);
287616
+ //
287617
+ // [
287618
+ // {
287619
+ // "aux_unit_point": 0,
287620
+ // "item_japanese": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3",
287621
+ // "aux_unit_step": 5.0,
287622
+ // "description": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3\u30fb\u65e5\u672c\u5186\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059",
287623
+ // "item_unit_min": 0.001,
287624
+ // "event_number": 0,
287625
+ // "currency_pair": "btc_jpy",
287626
+ // "is_token": false,
287627
+ // "aux_unit_min": 5.0,
287628
+ // "aux_japanese": "\u65e5\u672c\u5186",
287629
+ // "id": 1,
287630
+ // "item_unit_step": 0.0001,
287631
+ // "name": "BTC/JPY",
287632
+ // "seq": 0,
287633
+ // "title": "BTC/JPY"
287634
+ // }
287635
+ // ]
287636
+ //
287637
+ return this.parseMarkets(markets);
287638
+ }
287639
+ parseMarket(market) {
287640
+ const id = this.safeString(market, 'currency_pair');
287641
+ const name = this.safeString(market, 'name');
287642
+ const [baseId, quoteId] = name.split('/');
287643
+ const base = this.safeCurrencyCode(baseId);
287644
+ const quote = this.safeCurrencyCode(quoteId);
287645
+ const symbol = base + '/' + quote;
287646
+ return {
287647
+ 'id': id,
287648
+ 'symbol': symbol,
287649
+ 'base': base,
287650
+ 'quote': quote,
287651
+ 'settle': undefined,
287652
+ 'baseId': baseId,
287653
+ 'quoteId': quoteId,
287654
+ 'settleId': undefined,
287655
+ 'type': 'spot',
287656
+ 'spot': true,
287657
+ 'margin': undefined,
287658
+ 'swap': false,
287659
+ 'future': false,
287660
+ 'option': false,
287661
+ 'active': undefined,
287662
+ 'contract': false,
287663
+ 'linear': undefined,
287664
+ 'inverse': undefined,
287665
+ 'contractSize': undefined,
287666
+ 'expiry': undefined,
287667
+ 'expiryDatetime': undefined,
287668
+ 'strike': undefined,
287669
+ 'optionType': undefined,
287670
+ 'precision': {
287671
+ 'amount': this.safeNumber(market, 'item_unit_step'),
287672
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'aux_unit_point'))),
287673
+ },
287674
+ 'limits': {
287675
+ 'leverage': {
287676
+ 'min': undefined,
287677
+ 'max': undefined,
287678
+ },
287679
+ 'amount': {
287680
+ 'min': this.safeNumber(market, 'item_unit_min'),
287681
+ 'max': undefined,
287682
+ },
287683
+ 'price': {
287684
+ 'min': this.safeNumber(market, 'aux_unit_min'),
287685
+ 'max': undefined,
287686
+ },
287687
+ 'cost': {
287688
+ 'min': undefined,
287689
+ 'max': undefined,
287690
+ },
287691
+ },
287692
+ 'created': undefined,
287693
+ 'info': market,
287694
+ };
287695
+ }
287696
+ parseBalance(response) {
287697
+ const balances = this.safeValue(response, 'return', {});
287698
+ const deposit = this.safeValue(balances, 'deposit');
287699
+ const result = {
287700
+ 'info': response,
287701
+ 'timestamp': undefined,
287702
+ 'datetime': undefined,
287703
+ };
287704
+ const funds = this.safeValue(balances, 'funds', {});
287705
+ const currencyIds = Object.keys(funds);
287706
+ for (let i = 0; i < currencyIds.length; i++) {
287707
+ const currencyId = currencyIds[i];
287708
+ const code = this.safeCurrencyCode(currencyId);
287709
+ const balance = this.safeString(funds, currencyId);
287710
+ const account = this.account();
287711
+ account['free'] = balance;
287712
+ account['total'] = balance;
287713
+ if (deposit !== undefined) {
287714
+ if (currencyId in deposit) {
287715
+ account['total'] = this.safeString(deposit, currencyId);
287716
+ }
287717
+ }
287718
+ result[code] = account;
287719
+ }
287720
+ return this.safeBalance(result);
287721
+ }
287722
+ async fetchBalance(params = {}) {
287723
+ /**
287724
+ * @method
287725
+ * @name zaif#fetchBalance
287726
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id10
287727
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
287728
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287729
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
287730
+ */
287731
+ await this.loadMarkets();
287732
+ const response = await this.privatePostGetInfo(params);
287733
+ return this.parseBalance(response);
287734
+ }
287735
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
287736
+ /**
287737
+ * @method
287738
+ * @name zaif#fetchOrderBook
287739
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id34
287740
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
287741
+ * @param {string} symbol unified symbol of the market to fetch the order book for
287742
+ * @param {int} [limit] the maximum amount of order book entries to return
287743
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287744
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
287745
+ */
287746
+ await this.loadMarkets();
287747
+ const market = this.market(symbol);
287748
+ const request = {
287749
+ 'pair': market['id'],
287750
+ };
287751
+ const response = await this.publicGetDepthPair(this.extend(request, params));
287752
+ return this.parseOrderBook(response, market['symbol']);
287753
+ }
287754
+ parseTicker(ticker, market = undefined) {
287755
+ //
287756
+ // {
287757
+ // "last": 9e-08,
287758
+ // "high": 1e-07,
287759
+ // "low": 9e-08,
287760
+ // "vwap": 0.0,
287761
+ // "volume": 135250.0,
287762
+ // "bid": 9e-08,
287763
+ // "ask": 1e-07
287764
+ // }
287765
+ //
287766
+ const symbol = this.safeSymbol(undefined, market);
287767
+ const timestamp = this.milliseconds();
287768
+ const vwap = this.safeString(ticker, 'vwap');
287769
+ const baseVolume = this.safeString(ticker, 'volume');
287770
+ const quoteVolume = Precise_js_1.Precise.stringMul(baseVolume, vwap);
287771
+ const last = this.safeString(ticker, 'last');
287772
+ return this.safeTicker({
287773
+ 'symbol': symbol,
287774
+ 'timestamp': timestamp,
287775
+ 'datetime': this.iso8601(timestamp),
287776
+ 'high': this.safeString(ticker, 'high'),
287777
+ 'low': this.safeString(ticker, 'low'),
287778
+ 'bid': this.safeString(ticker, 'bid'),
287779
+ 'bidVolume': undefined,
287780
+ 'ask': this.safeString(ticker, 'ask'),
287781
+ 'askVolume': undefined,
287782
+ 'vwap': vwap,
287783
+ 'open': undefined,
287784
+ 'close': last,
287785
+ 'last': last,
287786
+ 'previousClose': undefined,
287787
+ 'change': undefined,
287788
+ 'percentage': undefined,
287789
+ 'average': undefined,
287790
+ 'baseVolume': baseVolume,
287791
+ 'quoteVolume': quoteVolume,
287792
+ 'info': ticker,
287793
+ }, market);
287794
+ }
287795
+ async fetchTicker(symbol, params = {}) {
287796
+ /**
287797
+ * @method
287798
+ * @name zaif#fetchTicker
287799
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id22
287800
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
287801
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
287802
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287803
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
287804
+ */
287805
+ await this.loadMarkets();
287806
+ const market = this.market(symbol);
287807
+ const request = {
287808
+ 'pair': market['id'],
287809
+ };
287810
+ const ticker = await this.publicGetTickerPair(this.extend(request, params));
287811
+ //
287812
+ // {
287813
+ // "last": 9e-08,
287814
+ // "high": 1e-07,
287815
+ // "low": 9e-08,
287816
+ // "vwap": 0.0,
287817
+ // "volume": 135250.0,
287818
+ // "bid": 9e-08,
287819
+ // "ask": 1e-07
287820
+ // }
287821
+ //
287822
+ return this.parseTicker(ticker, market);
287823
+ }
287824
+ parseTrade(trade, market = undefined) {
287825
+ //
287826
+ // fetchTrades (public)
287827
+ //
287828
+ // {
287829
+ // "date": 1648559414,
287830
+ // "price": 5880375.0,
287831
+ // "amount": 0.017,
287832
+ // "tid": 176126557,
287833
+ // "currency_pair": "btc_jpy",
287834
+ // "trade_type": "ask"
287835
+ // }
287836
+ //
287837
+ let side = this.safeString(trade, 'trade_type');
287838
+ side = (side === 'bid') ? 'buy' : 'sell';
287839
+ const timestamp = this.safeTimestamp(trade, 'date');
287840
+ const id = this.safeString2(trade, 'id', 'tid');
287841
+ const priceString = this.safeString(trade, 'price');
287842
+ const amountString = this.safeString(trade, 'amount');
287843
+ const marketId = this.safeString(trade, 'currency_pair');
287844
+ const symbol = this.safeSymbol(marketId, market, '_');
287845
+ return this.safeTrade({
287846
+ 'id': id,
287847
+ 'info': trade,
287848
+ 'timestamp': timestamp,
287849
+ 'datetime': this.iso8601(timestamp),
287850
+ 'symbol': symbol,
287851
+ 'type': undefined,
287852
+ 'side': side,
287853
+ 'order': undefined,
287854
+ 'takerOrMaker': undefined,
287855
+ 'price': priceString,
287856
+ 'amount': amountString,
287857
+ 'cost': undefined,
287858
+ 'fee': undefined,
287859
+ }, market);
287860
+ }
287861
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
287862
+ /**
287863
+ * @method
287864
+ * @name zaif#fetchTrades
287865
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id28
287866
+ * @description get the list of most recent trades for a particular symbol
287867
+ * @param {string} symbol unified symbol of the market to fetch trades for
287868
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
287869
+ * @param {int} [limit] the maximum amount of trades to fetch
287870
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287871
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
287872
+ */
287873
+ await this.loadMarkets();
287874
+ const market = this.market(symbol);
287875
+ const request = {
287876
+ 'pair': market['id'],
287877
+ };
287878
+ let response = await this.publicGetTradesPair(this.extend(request, params));
287879
+ //
287880
+ // [
287881
+ // {
287882
+ // "date": 1648559414,
287883
+ // "price": 5880375.0,
287884
+ // "amount": 0.017,
287885
+ // "tid": 176126557,
287886
+ // "currency_pair": "btc_jpy",
287887
+ // "trade_type": "ask"
287888
+ // }, ...
287889
+ // ]
287890
+ //
287891
+ const numTrades = response.length;
287892
+ if (numTrades === 1) {
287893
+ const firstTrade = response[0];
287894
+ if (!Object.keys(firstTrade).length) {
287895
+ response = [];
287896
+ }
287897
+ }
287898
+ return this.parseTrades(response, market, since, limit);
287899
+ }
287900
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
287901
+ /**
287902
+ * @method
287903
+ * @name zaif#createOrder
287904
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id23
287905
+ * @description create a trade order
287906
+ * @param {string} symbol unified symbol of the market to create an order in
287907
+ * @param {string} type must be 'limit'
287908
+ * @param {string} side 'buy' or 'sell'
287909
+ * @param {float} amount how much of currency you want to trade in units of base currency
287910
+ * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
287911
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287912
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
287913
+ */
287914
+ await this.loadMarkets();
287915
+ if (type !== 'limit') {
287916
+ throw new errors_js_1.ExchangeError(this.id + ' createOrder() allows limit orders only');
287917
+ }
287918
+ const market = this.market(symbol);
287919
+ const request = {
287920
+ 'currency_pair': market['id'],
287921
+ 'action': (side === 'buy') ? 'bid' : 'ask',
287922
+ 'amount': amount,
287923
+ 'price': price,
287924
+ };
287925
+ const response = await this.privatePostTrade(this.extend(request, params));
287926
+ return this.safeOrder({
287927
+ 'info': response,
287928
+ 'id': response['return']['order_id'].toString(),
287929
+ }, market);
287930
+ }
287931
+ async cancelOrder(id, symbol = undefined, params = {}) {
287932
+ /**
287933
+ * @method
287934
+ * @name zaif#cancelOrder
287935
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id37
287936
+ * @description cancels an open order
287937
+ * @param {string} id order id
287938
+ * @param {string} symbol not used by zaif cancelOrder ()
287939
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
287940
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
287941
+ */
287942
+ const request = {
287943
+ 'order_id': id,
287944
+ };
287945
+ return await this.privatePostCancelOrder(this.extend(request, params));
287946
+ }
287947
+ parseOrder(order, market = undefined) {
287948
+ //
287949
+ // {
287950
+ // "currency_pair": "btc_jpy",
287951
+ // "action": "ask",
287952
+ // "amount": 0.03,
287953
+ // "price": 56000,
287954
+ // "timestamp": 1402021125,
287955
+ // "comment" : "demo"
287956
+ // }
287957
+ //
287958
+ let side = this.safeString(order, 'action');
287959
+ side = (side === 'bid') ? 'buy' : 'sell';
287960
+ const timestamp = this.safeTimestamp(order, 'timestamp');
287961
+ const marketId = this.safeString(order, 'currency_pair');
287962
+ const symbol = this.safeSymbol(marketId, market, '_');
287963
+ const price = this.safeString(order, 'price');
287964
+ const amount = this.safeString(order, 'amount');
287965
+ const id = this.safeString(order, 'id');
287966
+ return this.safeOrder({
287967
+ 'id': id,
287968
+ 'clientOrderId': undefined,
287969
+ 'timestamp': timestamp,
287970
+ 'datetime': this.iso8601(timestamp),
287971
+ 'lastTradeTimestamp': undefined,
287972
+ 'status': 'open',
287973
+ 'symbol': symbol,
287974
+ 'type': 'limit',
287975
+ 'timeInForce': undefined,
287976
+ 'postOnly': undefined,
287977
+ 'side': side,
287978
+ 'price': price,
287979
+ 'stopPrice': undefined,
287980
+ 'triggerPrice': undefined,
287981
+ 'cost': undefined,
287982
+ 'amount': amount,
287983
+ 'filled': undefined,
287984
+ 'remaining': undefined,
287985
+ 'trades': undefined,
287986
+ 'fee': undefined,
287987
+ 'info': order,
287988
+ 'average': undefined,
287989
+ }, market);
287990
+ }
287991
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
287992
+ /**
287993
+ * @method
287994
+ * @name zaif#fetchOpenOrders
287995
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id28
287996
+ * @description fetch all unfilled currently open orders
287997
+ * @param {string} symbol unified market symbol
287998
+ * @param {int} [since] the earliest time in ms to fetch open orders for
287999
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
288000
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
288001
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
288002
+ */
288003
+ await this.loadMarkets();
288004
+ let market = undefined;
288005
+ const request = {
288006
+ // 'is_token': false,
288007
+ // 'is_token_both': false,
288008
+ };
288009
+ if (symbol !== undefined) {
288010
+ market = this.market(symbol);
288011
+ request['currency_pair'] = market['id'];
288012
+ }
288013
+ const response = await this.privatePostActiveOrders(this.extend(request, params));
288014
+ return this.parseOrders(response['return'], market, since, limit);
288015
+ }
288016
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
288017
+ /**
288018
+ * @method
288019
+ * @name zaif#fetchClosedOrders
288020
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id24
288021
+ * @description fetches information on multiple closed orders made by the user
288022
+ * @param {string} symbol unified market symbol of the market orders were made in
288023
+ * @param {int} [since] the earliest time in ms to fetch orders for
288024
+ * @param {int} [limit] the maximum number of order structures to retrieve
288025
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
288026
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
288027
+ */
288028
+ await this.loadMarkets();
288029
+ let market = undefined;
288030
+ const request = {
288031
+ // 'from': 0,
288032
+ // 'count': 1000,
288033
+ // 'from_id': 0,
288034
+ // 'end_id': 1000,
288035
+ // 'order': 'DESC',
288036
+ // 'since': 1503821051,
288037
+ // 'end': 1503821051,
288038
+ // 'is_token': false,
288039
+ };
288040
+ if (symbol !== undefined) {
288041
+ market = this.market(symbol);
288042
+ request['currency_pair'] = market['id'];
288043
+ }
288044
+ const response = await this.privatePostTradeHistory(this.extend(request, params));
288045
+ return this.parseOrders(response['return'], market, since, limit);
288046
+ }
288047
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
288048
+ /**
288049
+ * @method
288050
+ * @name zaif#withdraw
288051
+ * @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id41
288052
+ * @description make a withdrawal
288053
+ * @param {string} code unified currency code
288054
+ * @param {float} amount the amount to withdraw
288055
+ * @param {string} address the address to withdraw to
288056
+ * @param {string} tag
288057
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
288058
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
288059
+ */
288060
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
288061
+ this.checkAddress(address);
288062
+ await this.loadMarkets();
288063
+ const currency = this.currency(code);
288064
+ if (code === 'JPY') {
288065
+ throw new errors_js_1.ExchangeError(this.id + ' withdraw() does not allow ' + code + ' withdrawals');
288066
+ }
288067
+ const request = {
288068
+ 'currency': currency['id'],
288069
+ 'amount': amount,
288070
+ 'address': address,
288071
+ // 'message': 'Hi!', // XEM and others
288072
+ // 'opt_fee': 0.003, // BTC and MONA only
288073
+ };
288074
+ if (tag !== undefined) {
288075
+ request['message'] = tag;
288076
+ }
288077
+ const result = await this.privatePostWithdraw(this.extend(request, params));
288078
+ //
288079
+ // {
288080
+ // "success": 1,
288081
+ // "return": {
288082
+ // "id": 23634,
288083
+ // "fee": 0.001,
288084
+ // "txid":,
288085
+ // "funds": {
288086
+ // "jpy": 15320,
288087
+ // "btc": 1.392,
288088
+ // "xem": 100.2,
288089
+ // "mona": 2600
288090
+ // }
288091
+ // }
288092
+ // }
288093
+ //
288094
+ const returnData = this.safeValue(result, 'return');
288095
+ return this.parseTransaction(returnData, currency);
288096
+ }
288097
+ parseTransaction(transaction, currency = undefined) {
288098
+ //
288099
+ // {
288100
+ // "id": 23634,
288101
+ // "fee": 0.001,
288102
+ // "txid":,
288103
+ // "funds": {
288104
+ // "jpy": 15320,
288105
+ // "btc": 1.392,
288106
+ // "xem": 100.2,
288107
+ // "mona": 2600
288108
+ // }
288109
+ // }
288110
+ //
288111
+ currency = this.safeCurrency(undefined, currency);
288112
+ let fee = undefined;
288113
+ const feeCost = this.safeValue(transaction, 'fee');
288114
+ if (feeCost !== undefined) {
288115
+ fee = {
288116
+ 'cost': feeCost,
288117
+ 'currency': currency['code'],
288118
+ };
288119
+ }
288120
+ return {
288121
+ 'id': this.safeString(transaction, 'id'),
288122
+ 'txid': this.safeString(transaction, 'txid'),
288123
+ 'timestamp': undefined,
288124
+ 'datetime': undefined,
288125
+ 'network': undefined,
288126
+ 'addressFrom': undefined,
288127
+ 'address': undefined,
288128
+ 'addressTo': undefined,
288129
+ 'amount': undefined,
288130
+ 'type': undefined,
288131
+ 'currency': currency['code'],
288132
+ 'status': undefined,
288133
+ 'updated': undefined,
288134
+ 'tagFrom': undefined,
288135
+ 'tag': undefined,
288136
+ 'tagTo': undefined,
288137
+ 'comment': undefined,
288138
+ 'internal': undefined,
288139
+ 'fee': fee,
288140
+ 'info': transaction,
288141
+ };
288142
+ }
288143
+ customNonce() {
288144
+ const num = (this.milliseconds() / 1000).toString();
288145
+ const nonce = parseFloat(num);
288146
+ return nonce.toFixed(8);
288147
+ }
288148
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
288149
+ let url = this.urls['api']['rest'] + '/';
288150
+ if (api === 'public') {
288151
+ url += 'api/' + this.version + '/' + this.implodeParams(path, params);
288152
+ }
288153
+ else if (api === 'fapi') {
288154
+ url += 'fapi/' + this.version + '/' + this.implodeParams(path, params);
288155
+ }
288156
+ else {
288157
+ this.checkRequiredCredentials();
288158
+ if (api === 'ecapi') {
288159
+ url += 'ecapi';
288160
+ }
288161
+ else if (api === 'tlapi') {
288162
+ url += 'tlapi';
288163
+ }
288164
+ else {
288165
+ url += 'tapi';
288166
+ }
288167
+ const nonce = this.customNonce();
288168
+ body = this.urlencode(this.extend({
288169
+ 'method': path,
288170
+ 'nonce': nonce,
288171
+ }, params));
288172
+ headers = {
288173
+ 'Content-Type': 'application/x-www-form-urlencoded',
288174
+ 'Key': this.apiKey,
288175
+ 'Sign': this.hmac(this.encode(body), this.encode(this.secret), sha512_js_1.sha512),
288176
+ };
288177
+ }
288178
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
288179
+ }
288180
+ handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
288181
+ if (response === undefined) {
288182
+ return undefined;
288183
+ }
288184
+ //
288185
+ // {"error": "unsupported currency_pair"}
288186
+ //
288187
+ const feedback = this.id + ' ' + body;
288188
+ const error = this.safeString(response, 'error');
288189
+ if (error !== undefined) {
288190
+ this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
288191
+ this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
288192
+ throw new errors_js_1.ExchangeError(feedback); // unknown message
288193
+ }
288194
+ const success = this.safeValue(response, 'success', true);
288195
+ if (!success) {
288196
+ throw new errors_js_1.ExchangeError(feedback);
288197
+ }
288198
+ return undefined;
288199
+ }
288200
+ }
288201
+ exports.default = zaif;
288202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFpZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInphaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtFQUErRTs7Ozs7QUFFL0UsaUVBQTBDO0FBQzFDLGdEQUE2RDtBQUM3RCxrREFBNEM7QUFDNUMsMERBQXVEO0FBQ3ZELDRFQUFzRTtBQUd0RSwrRUFBK0U7QUFFL0U7OztHQUdHO0FBQ0gsTUFBcUIsSUFBSyxTQUFRLGlCQUFRO0lBQ3RDLFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRyxFQUFFO1lBQ3ZDLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBRSxJQUFJLENBQUU7WUFDckIsMEZBQTBGO1lBQzFGLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsS0FBSyxFQUFFO2dCQUNILE1BQU0sRUFBRSxTQUFTO2dCQUNqQixNQUFNLEVBQUUsSUFBSTtnQkFDWixRQUFRLEVBQUUsU0FBUztnQkFDbkIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIscUJBQXFCLEVBQUUsS0FBSztnQkFDNUIsa0JBQWtCLEVBQUUsS0FBSztnQkFDekIseUJBQXlCLEVBQUUsS0FBSztnQkFDaEMsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLDBCQUEwQixFQUFFLEtBQUs7Z0JBQ2pDLGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLGdCQUFn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QVMsRUFBRTtZQUNyQixJQUFJLENBQUMsNEJBQTRCLENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLDRCQUE0QixDQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sSUFBSSx5QkFBYSxDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1NBQ3pEO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixNQUFNLElBQUkseUJBQWEsQ0FBRSxRQUFRLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQWp1QkQsdUJBaXVCQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbXBvcnQgRXhjaGFuZ2UgZnJvbSAnLi9hYnN0cmFjdC96YWlmLmpzJztcbmltcG9ydCB7IEV4Y2hhbmdlRXJyb3IsIEJhZFJlcXVlc3QgfSBmcm9tICcuL2Jhc2UvZXJyb3JzLmpzJztcbmltcG9ydCB7IFByZWNpc2UgfSBmcm9tICcuL2Jhc2UvUHJlY2lzZS5qcyc7XG5pbXBvcnQgeyBUSUNLX1NJWkUgfSBmcm9tICcuL2Jhc2UvZnVuY3Rpb25zL251bWJlci5qcyc7XG5pbXBvcnQgeyBzaGE1MTIgfSBmcm9tICcuL3N0YXRpY19kZXBlbmRlbmNpZXMvbm9ibGUtaGFzaGVzL3NoYTUxMi5qcyc7XG5pbXBvcnQgeyBCYWxhbmNlcywgQ3VycmVuY3ksIEludCwgTWFya2V0LCBPcmRlciwgT3JkZXJCb29rLCBPcmRlclNpZGUsIE9yZGVyVHlwZSwgU3RyLCBUaWNrZXIsIFRyYWRlLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4vYmFzZS90eXBlcy5qcyc7XG5cbi8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBAY2xhc3MgemFpZlxuICogQGV4dGVuZHMgRXhjaGFuZ2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgemFpZiBleHRlbmRzIEV4Y2hhbmdlIHtcbiAgICBkZXNjcmliZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZXBFeHRlbmQgKHN1cGVyLmRlc2NyaWJlICgpLCB7XG4gICAgICAgICAgICAnaWQnOiAnemFpZicsXG4gICAgICAgICAgICAnbmFtZSc6ICdaYWlmJyxcbiAgICAgICAgICAgICdjb3VudHJpZXMnOiBbICdKUCcgXSxcbiAgICAgICAgICAgIC8vIDEwIHJlcXVlc3RzIHBlciBzZWNvbmQgPSAxMDAwbXMgLyAxMCA9IDEwMG1zIGJldHdlZW4gcmVxdWVzdHMgKHB1YmxpYyBtYXJrZXQgZW5kcG9pbnRzKVxuICAgICAgICAgICAgJ3JhdGVMaW1pdCc6IDEwMCxcbiAgICAgICAgICAgICd2ZXJzaW9uJzogJzEnLFxuICAgICAgICAgICAgJ2hhcyc6IHtcbiAgICAgICAgICAgICAgICAnQ09SUyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAnc3BvdCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ21hcmdpbic6IHVuZGVmaW5lZCwgLy8gaGFzIGJ1dCB1bmltcGxlbWVudGVkXG4gICAgICAgICAgICAgICAgJ3N3YXAnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZnV0dXJlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ29wdGlvbic6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdjYW5jZWxPcmRlcic6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZU1hcmtldE9yZGVyJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZU9yZGVyJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hCYWxhbmNlJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hDbG9zZWRPcmRlcnMnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaEZ1bmRpbmdIaXN0b3J5JzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoRnVuZGluZ1JhdGUnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hGdW5kaW5nUmF0ZUhpc3RvcnknOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hGdW5kaW5nUmF0ZXMnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hJbmRleE9ITENWJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoTWFya2V0cyc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoTWFya09ITENWJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoT3BlbkludGVyZXN0SGlzdG9yeSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdmZXRjaE9wZW5PcmRlcnMnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaE9yZGVyQm9vayc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoUHJlbWl1bUluZGV4T0hMQ1YnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hUaWNrZXInOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaFRyYWRlcyc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoVHJhZGluZ0ZlZSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdmZXRjaFRyYWRpbmdGZWVzJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ3dpdGhkcmF3JzogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAndXJscyc6IHtcbiAgICAgICAgICAgICAgICAnbG9nbyc6ICdodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjk0NDU0LzI3NzY2OTI3LTM5Y2EyYWRhLTVlZWItMTFlNy05NzJmLTFiNDE5OTUxOGNhNi5qcGcnLFxuICAgICAgICAgICAgICAgICdhcGknOiB7XG4gICAgICAgICAgICAgICAgICAgICdyZXN0JzogJ2h0dHBzOi8vYXBpLnphaWYuanAnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3d3dyc6ICdodHRwczovL3phaWYuanAnLFxuICAgICAgICAgICAgICAgICdkb2MnOiBbXG4gICAgICAgICAgICAgICAgICAgICdodHRwczovL3RlY2hidXJlYXUtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9pbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vY29ycC56YWlmLmpwL2FwaS1kb2NzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vY29ycC56YWlmLmpwL2FwaS1kb2NzL2FwaV9saW5rcycsXG4gICAgICAgICAgICAgICAgICAgICdodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96YWlmLmpwJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS95b3UyMTk3OS9ub2RlLXphaWYnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgJ2ZlZXMnOiAnaHR0cHM6Ly96YWlmLmpwL2ZlZT9sYW5nPWVuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZmVlcyc6IHtcbiAgICAgICAgICAgICAgICAndHJhZGluZyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3BlcmNlbnRhZ2UnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAndGFrZXInOiB0aGlzLnBhcnNlTnVtYmVyICgnMC4wMDEnKSxcbiAgICAgICAgICAgICAgICAgICAgJ21ha2VyJzogdGhpcy5wYXJzZU51bWJlciAoJzAnKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdhcGknOiB7XG4gICAgICAgICAgICAgICAgJ3B1YmxpYyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2dldCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXB0aC97cGFpcn0nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnJlbmNpZXMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW5jaWVzL2FsbCc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3VycmVuY3lfcGFpcnMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW5jeV9wYWlycy9hbGwnOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3RfcHJpY2Uve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWNrZXIve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFkZXMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwcml2YXRlJzoge1xuICAgICAgICAgICAgICAgICAgICAncG9zdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVfb3JkZXJzJzogNSwgLy8gMTAgaW4gNSBzZWNvbmRzID0gMiBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDIgPSA1XG4gICAgICAgICAgICAgICAgICAgICAgICAnY2FuY2VsX29yZGVyJzogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXBvc2l0X2hpc3RvcnknOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9pZF9pbmZvJzogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfaW5mbyc6IDEwLCAvLyAxMCBpbiAxMCBzZWNvbmRzID0gMSBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDEgPSAxMFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9pbmZvMic6IDUsIC8vIDIwIGluIDEwIHNlY29uZHMgPSAyIHBlciBzZWNvbmQgPT4gY29zdCA9IDEwIC8gMiA9IDVcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGVyc29uYWxfaW5mbyc6IDUsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhZGUnOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWRlX2hpc3RvcnknOiA1MCwgLy8gMTIgaW4gNjAgc2Vjb25kcyA9IDAuMiBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDAuMiA9IDUwXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2l0aGRyYXcnOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGhkcmF3X2hpc3RvcnknOiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2VjYXBpJzoge1xuICAgICAgICAgICAgICAgICAgICAncG9zdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVJbnZvaWNlJzogMSwgLy8gdW52ZXJpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldEludm9pY2UnOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldEludm9pY2VJZHNCeU9yZGVyTnVtYmVyJzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjYW5jZWxJbnZvaWNlJzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd0bGFwaSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3Bvc3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3Bvc2l0aW9ucyc6IDY2LCAvLyAxMCBpbiA2MCBzZWNvbmRzID0gMC4xNjYgcGVyIHNlY29uZCA9PiBjb3N0ID0gMTAgLyAwLjE2NiA9IDY2XG4gICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb25faGlzdG9yeSc6IDY2LCAvLyAxMCBpbiA2MCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlX3Bvc2l0aW9ucyc6IDUsIC8vIDIwIGluIDEwIHNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfcG9zaXRpb24nOiAzMywgLy8gMyBpbiAxMCBzZWNvbmRzID0gMC4zIHBlciBzZWNvbmQgPT4gY29zdCA9IDEwIC8gMC4zID0gMzNcbiAgICAgICAgICAgICAgICAgICAgICAgICdjaGFuZ2VfcG9zaXRpb24nOiAzMywgLy8gMyBpbiAxMCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2FuY2VsX3Bvc2l0aW9uJzogMzMsIC8vIDMgaW4gMTAgc2Vjb25kc1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2ZhcGknOiB7XG4gICAgICAgICAgICAgICAgICAgICdnZXQnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBzL3tncm91cF9pZH0nOiAxLCAvLyB0ZXN0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGFzdF9wcmljZS97Z3JvdXBfaWR9L3twYWlyfSc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2VyL3tncm91cF9pZH0ve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFkZXMve2dyb3VwX2lkfS97cGFpcn0nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHRoL3tncm91cF9pZH0ve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdvcHRpb25zJzoge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwcmVjaXNpb25Nb2RlJzogVElDS19TSVpFLFxuICAgICAgICAgICAgJ2V4Y2VwdGlvbnMnOiB7XG4gICAgICAgICAgICAgICAgJ2V4YWN0Jzoge1xuICAgICAgICAgICAgICAgICAgICAndW5zdXBwb3J0ZWQgY3VycmVuY3lfcGFpcic6IEJhZFJlcXVlc3QsIC8vIHtcImVycm9yXCI6IFwidW5zdXBwb3J0ZWQgY3VycmVuY3lfcGFpclwifVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Jyb2FkJzoge1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaE1hcmtldHMgKHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hNYXJrZXRzXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvUHVibGljQVBJLmh0bWwjaWQxMlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gcmV0cmlldmVzIGRhdGEgb24gYWxsIG1hcmtldHMgZm9yIHphaWZcbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIGV4dHJhIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGV4Y2hhbmdlIEFQSSBlbmRwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7b2JqZWN0W119IGFuIGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIG1hcmtldCBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBtYXJrZXRzID0gYXdhaXQgdGhpcy5wdWJsaWNHZXRDdXJyZW5jeVBhaXJzQWxsIChwYXJhbXMpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgICAgW1xuICAgICAgICAvLyAgICAgICAgIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJhdXhfdW5pdF9wb2ludFwiOiAwLFxuICAgICAgICAvLyAgICAgICAgICAgICBcIml0ZW1famFwYW5lc2VcIjogXCJcXHUzMGQzXFx1MzBjM1xcdTMwYzhcXHUzMGIzXFx1MzBhNFxcdTMwZjNcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJhdXhfdW5pdF9zdGVwXCI6IDUuMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlxcdTMwZDNcXHUzMGMzXFx1MzBjOFxcdTMwYjNcXHUzMGE0XFx1MzBmM1xcdTMwZmJcXHU2NWU1XFx1NjcyY1xcdTUxODZcXHUzMDZlXFx1NTNkNlxcdTVmMTVcXHUzMDkyXFx1ODg0Y1xcdTMwNDZcXHUzMDUzXFx1MzA2OFxcdTMwNGNcXHUzMDY3XFx1MzA0ZFxcdTMwN2VcXHUzMDU5XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaXRlbV91bml0X21pblwiOiAwLjAwMSxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJldmVudF9udW1iZXJcIjogMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJjdXJyZW5jeV9wYWlyXCI6IFwiYnRjX2pweVwiLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImlzX3Rva2VuXCI6IGZhbHNlLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImF1eF91bml0X21pblwiOiA1LjAsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiYXV4X2phcGFuZXNlXCI6IFwiXFx1NjVlNVxcdTY3MmNcXHU1MTg2XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaWRcIjogMSxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJpdGVtX3VuaXRfc3RlcFwiOiAwLjAwMDEsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwibmFtZVwiOiBcIkJUQy9KUFlcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJzZXFcIjogMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkJUQy9KUFlcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIF1cbiAgICAgICAgLy9cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VNYXJrZXRzIChtYXJrZXRzKTtcbiAgICB9XG5cbiAgICBwYXJzZU1hcmtldCAobWFya2V0KTogTWFya2V0IHtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnNhZmVTdHJpbmcgKG1hcmtldCwgJ2N1cnJlbmN5X3BhaXInKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuc2FmZVN0cmluZyAobWFya2V0LCAnbmFtZScpO1xuICAgICAgICBjb25zdCBbIGJhc2VJZCwgcXVvdGVJZCBdID0gbmFtZS5zcGxpdCAoJy8nKTtcbiAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuc2FmZUN1cnJlbmN5Q29kZSAoYmFzZUlkKTtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLnNhZmVDdXJyZW5jeUNvZGUgKHF1b3RlSWQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBiYXNlICsgJy8nICsgcXVvdGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWQnOiBpZCxcbiAgICAgICAgICAgICdzeW1ib2wnOiBzeW1ib2wsXG4gICAgICAgICAgICAnYmFzZSc6IGJhc2UsXG4gICAgICAgICAgICAncXVvdGUnOiBxdW90ZSxcbiAgICAgICAgICAgICdzZXR0bGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYmFzZUlkJzogYmFzZUlkLFxuICAgICAgICAgICAgJ3F1b3RlSWQnOiBxdW90ZUlkLFxuICAgICAgICAgICAgJ3NldHRsZUlkJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3R5cGUnOiAnc3BvdCcsXG4gICAgICAgICAgICAnc3BvdCc6IHRydWUsXG4gICAgICAgICAgICAnbWFyZ2luJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3N3YXAnOiBmYWxzZSxcbiAgICAgICAgICAgICdmdXR1cmUnOiBmYWxzZSxcbiAgICAgICAgICAgICdvcHRpb24nOiBmYWxzZSxcbiAgICAgICAgICAgICdhY3RpdmUnOiB1bmRlZmluZWQsIC8vIGNhbiB0cmFkZSBvciBub3RcbiAgICAgICAgICAgICdjb250cmFjdCc6IGZhbHNlLFxuICAgICAgICAgICAgJ2xpbmVhcic6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbnZlcnNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2NvbnRyYWN0U2l6ZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdleHBpcnknOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZXhwaXJ5RGF0ZXRpbWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnc3RyaWtlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ29wdGlvblR5cGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAncHJlY2lzaW9uJzoge1xuICAgICAgICAgICAgICAgICdhbW91bnQnOiB0aGlzLnNhZmVOdW1iZXIgKG1hcmtldCwgJ2l0ZW1fdW5pdF9zdGVwJyksXG4gICAgICAgICAgICAgICAgJ3ByaWNlJzogdGhpcy5wYXJzZU51bWJlciAodGhpcy5wYXJzZVByZWNpc2lvbiAodGhpcy5zYWZlU3RyaW5nIChtYXJrZXQsICdhdXhfdW5pdF9wb2ludCcpKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2xpbWl0cyc6IHtcbiAgICAgICAgICAgICAgICAnbGV2ZXJhZ2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnYW1vdW50Jzoge1xuICAgICAgICAgICAgICAgICAgICAnbWluJzogdGhpcy5zYWZlTnVtYmVyIChtYXJrZXQsICdpdGVtX3VuaXRfbWluJyksXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAncHJpY2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB0aGlzLnNhZmVOdW1iZXIgKG1hcmtldCwgJ2F1eF91bml0X21pbicpLFxuICAgICAgICAgICAgICAgICAgICAnbWF4JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Nvc3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnY3JlYXRlZCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbmZvJzogbWFya2V0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHBhcnNlQmFsYW5jZSAocmVzcG9uc2UpOiBCYWxhbmNlcyB7XG4gICAgICAgIGNvbnN0IGJhbGFuY2VzID0gdGhpcy5zYWZlVmFsdWUgKHJlc3BvbnNlLCAncmV0dXJuJywge30pO1xuICAgICAgICBjb25zdCBkZXBvc2l0ID0gdGhpcy5zYWZlVmFsdWUgKGJhbGFuY2VzLCAnZGVwb3NpdCcpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICAnaW5mbyc6IHJlc3BvbnNlLFxuICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdkYXRldGltZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZnVuZHMgPSB0aGlzLnNhZmVWYWx1ZSAoYmFsYW5jZXMsICdmdW5kcycsIHt9KTtcbiAgICAgICAgY29uc3QgY3VycmVuY3lJZHMgPSBPYmplY3Qua2V5cyAoZnVuZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbmN5SWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW5jeUlkID0gY3VycmVuY3lJZHNbaV07XG4gICAgICAgICAgICBjb25zdCBjb2RlID0gdGhpcy5zYWZlQ3VycmVuY3lDb2RlIChjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGJhbGFuY2UgPSB0aGlzLnNhZmVTdHJpbmcgKGZ1bmRzLCBjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmFjY291bnQgKCk7XG4gICAgICAgICAgICBhY2NvdW50WydmcmVlJ10gPSBiYWxhbmNlO1xuICAgICAgICAgICAgYWNjb3VudFsndG90YWwnXSA9IGJhbGFuY2U7XG4gICAgICAgICAgICBpZiAoZGVwb3NpdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbmN5SWQgaW4gZGVwb3NpdCkge1xuICAgICAgICAgICAgICAgICAgICBhY2NvdW50Wyd0b3RhbCddID0gdGhpcy5zYWZlU3RyaW5nIChkZXBvc2l0LCBjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbY29kZV0gPSBhY2NvdW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVCYWxhbmNlIChyZXN1bHQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoQmFsYW5jZSAocGFyYW1zID0ge30pOiBQcm9taXNlPEJhbGFuY2VzPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hCYWxhbmNlXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvVHJhZGluZ0FQSS5odG1sI2lkMTBcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIHF1ZXJ5IGZvciBiYWxhbmNlIGFuZCBnZXQgdGhlIGFtb3VudCBvZiBmdW5kcyBhdmFpbGFibGUgZm9yIHRyYWRpbmcgb3IgZnVuZHMgbG9ja2VkIGluIG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGEgW2JhbGFuY2Ugc3RydWN0dXJlXXtAbGluayBodHRwczovL2RvY3MuY2N4dC5jb20vIy8/aWQ9YmFsYW5jZS1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RHZXRJbmZvIChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUJhbGFuY2UgKHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaE9yZGVyQm9vayAoc3ltYm9sOiBzdHJpbmcsIGxpbWl0OiBJbnQgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9KTogUHJvbWlzZTxPcmRlckJvb2s+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaE9yZGVyQm9va1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1B1YmxpY0FQSS5odG1sI2lkMzRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGZldGNoZXMgaW5mb3JtYXRpb24gb24gb3BlbiBvcmRlcnMgd2l0aCBiaWQgKGJ1eSkgYW5kIGFzayAoc2VsbCkgcHJpY2VzLCB2b2x1bWVzIGFuZCBvdGhlciBkYXRhXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgdW5pZmllZCBzeW1ib2wgb2YgdGhlIG1hcmtldCB0byBmZXRjaCB0aGUgb3JkZXIgYm9vayBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtsaW1pdF0gdGhlIG1heGltdW0gYW1vdW50IG9mIG9yZGVyIGJvb2sgZW50cmllcyB0byByZXR1cm5cbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIGV4dHJhIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGV4Y2hhbmdlIEFQSSBlbmRwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBBIGRpY3Rpb25hcnkgb2YgW29yZGVyIGJvb2sgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPW9yZGVyLWJvb2stc3RydWN0dXJlfSBpbmRleGVkIGJ5IG1hcmtldCBzeW1ib2xzXG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHVibGljR2V0RGVwdGhQYWlyICh0aGlzLmV4dGVuZCAocmVxdWVzdCwgcGFyYW1zKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlT3JkZXJCb29rIChyZXNwb25zZSwgbWFya2V0WydzeW1ib2wnXSk7XG4gICAgfVxuXG4gICAgcGFyc2VUaWNrZXIgKHRpY2tlciwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBUaWNrZXIge1xuICAgICAgICAvL1xuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBcImxhc3RcIjogOWUtMDgsXG4gICAgICAgIC8vICAgICBcImhpZ2hcIjogMWUtMDcsXG4gICAgICAgIC8vICAgICBcImxvd1wiOiA5ZS0wOCxcbiAgICAgICAgLy8gICAgIFwidndhcFwiOiAwLjAsXG4gICAgICAgIC8vICAgICBcInZvbHVtZVwiOiAxMzUyNTAuMCxcbiAgICAgICAgLy8gICAgIFwiYmlkXCI6IDllLTA4LFxuICAgICAgICAvLyAgICAgXCJhc2tcIjogMWUtMDdcbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICBjb25zdCBzeW1ib2wgPSB0aGlzLnNhZmVTeW1ib2wgKHVuZGVmaW5lZCwgbWFya2V0KTtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5taWxsaXNlY29uZHMgKCk7XG4gICAgICAgIGNvbnN0IHZ3YXAgPSB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ3Z3YXAnKTtcbiAgICAgICAgY29uc3QgYmFzZVZvbHVtZSA9IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAndm9sdW1lJyk7XG4gICAgICAgIGNvbnN0IHF1b3RlVm9sdW1lID0gUHJlY2lzZS5zdHJpbmdNdWwgKGJhc2VWb2x1bWUsIHZ3YXApO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5zYWZlU3RyaW5nICh0aWNrZXIsICdsYXN0Jyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVUaWNrZXIgKHtcbiAgICAgICAgICAgICdzeW1ib2wnOiBzeW1ib2wsXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wLFxuICAgICAgICAgICAgJ2RhdGV0aW1lJzogdGhpcy5pc284NjAxICh0aW1lc3RhbXApLFxuICAgICAgICAgICAgJ2hpZ2gnOiB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ2hpZ2gnKSxcbiAgICAgICAgICAgICdsb3cnOiB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ2xvdycpLFxuICAgICAgICAgICAgJ2JpZCc6IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAnYmlkJyksXG4gICAgICAgICAgICAnYmlkVm9sdW1lJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2Fzayc6IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAnYXNrJyksXG4gICAgICAgICAgICAnYXNrVm9sdW1lJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3Z3YXAnOiB2d2FwLFxuICAgICAgICAgICAgJ29wZW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY2xvc2UnOiBsYXN0LFxuICAgICAgICAgICAgJ2xhc3QnOiBsYXN0LFxuICAgICAgICAgICAgJ3ByZXZpb3VzQ2xvc2UnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY2hhbmdlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3BlcmNlbnRhZ2UnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXZlcmFnZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdiYXNlVm9sdW1lJzogYmFzZVZvbHVtZSxcbiAgICAgICAgICAgICdxdW90ZVZvbHVtZSc6IHF1b3RlVm9sdW1lLFxuICAgICAgICAgICAgJ2luZm8nOiB0aWNrZXIsXG4gICAgICAgIH0sIG1hcmtldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2hUaWNrZXIgKHN5bWJvbDogc3RyaW5nLCBwYXJhbXMgPSB7fSk6IFByb21pc2U8VGlja2VyPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hUaWNrZXJcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9QdWJsaWNBUEkuaHRtbCNpZDIyXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBmZXRjaGVzIGEgcHJpY2UgdGlja2VyLCBhIHN0YXRpc3RpY2FsIGNhbGN1bGF0aW9uIHdpdGggdGhlIGluZm9ybWF0aW9uIGNhbGN1bGF0ZWQgb3ZlciB0aGUgcGFzdCAyNCBob3VycyBmb3IgYSBzcGVjaWZpYyBtYXJrZXRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGZldGNoIHRoZSB0aWNrZXIgZm9yXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge29iamVjdH0gYSBbdGlja2VyIHN0cnVjdHVyZV17QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPXRpY2tlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aWNrZXIgPSBhd2FpdCB0aGlzLnB1YmxpY0dldFRpY2tlclBhaXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgXCJsYXN0XCI6IDllLTA4LFxuICAgICAgICAvLyAgICAgXCJoaWdoXCI6IDFlLTA3LFxuICAgICAgICAvLyAgICAgXCJsb3dcIjogOWUtMDgsXG4gICAgICAgIC8vICAgICBcInZ3YXBcIjogMC4wLFxuICAgICAgICAvLyAgICAgXCJ2b2x1bWVcIjogMTM1MjUwLjAsXG4gICAgICAgIC8vICAgICBcImJpZFwiOiA5ZS0wOCxcbiAgICAgICAgLy8gICAgIFwiYXNrXCI6IDFlLTA3XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaWNrZXIgKHRpY2tlciwgbWFya2V0KTtcbiAgICB9XG5cbiAgICBwYXJzZVRyYWRlICh0cmFkZSwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBUcmFkZSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGZldGNoVHJhZGVzIChwdWJsaWMpXG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICAge1xuICAgICAgICAvLyAgICAgICAgICBcImRhdGVcIjogMTY0ODU1OTQxNCxcbiAgICAgICAgLy8gICAgICAgICAgXCJwcmljZVwiOiA1ODgwMzc1LjAsXG4gICAgICAgIC8vICAgICAgICAgIFwiYW1vdW50XCI6IDAuMDE3LFxuICAgICAgICAvLyAgICAgICAgICBcInRpZFwiOiAxNzYxMjY1NTcsXG4gICAgICAgIC8vICAgICAgICAgIFwiY3VycmVuY3lfcGFpclwiOiBcImJ0Y19qcHlcIixcbiAgICAgICAgLy8gICAgICAgICAgXCJ0cmFkZV90eXBlXCI6IFwiYXNrXCJcbiAgICAgICAgLy8gICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIGxldCBzaWRlID0gdGhpcy5zYWZlU3RyaW5nICh0cmFkZSwgJ3RyYWRlX3R5cGUnKTtcbiAgICAgICAgc2lkZSA9IChzaWRlID09PSAnYmlkJykgPyAnYnV5JyA6ICdzZWxsJztcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5zYWZlVGltZXN0YW1wICh0cmFkZSwgJ2RhdGUnKTtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnNhZmVTdHJpbmcyICh0cmFkZSwgJ2lkJywgJ3RpZCcpO1xuICAgICAgICBjb25zdCBwcmljZVN0cmluZyA9IHRoaXMuc2FmZVN0cmluZyAodHJhZGUsICdwcmljZScpO1xuICAgICAgICBjb25zdCBhbW91bnRTdHJpbmcgPSB0aGlzLnNhZmVTdHJpbmcgKHRyYWRlLCAnYW1vdW50Jyk7XG4gICAgICAgIGNvbnN0IG1hcmtldElkID0gdGhpcy5zYWZlU3RyaW5nICh0cmFkZSwgJ2N1cnJlbmN5X3BhaXInKTtcbiAgICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5zYWZlU3ltYm9sIChtYXJrZXRJZCwgbWFya2V0LCAnXycpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlVHJhZGUgKHtcbiAgICAgICAgICAgICdpZCc6IGlkLFxuICAgICAgICAgICAgJ2luZm8nOiB0cmFkZSxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB0aW1lc3RhbXAsXG4gICAgICAgICAgICAnZGF0ZXRpbWUnOiB0aGlzLmlzbzg2MDEgKHRpbWVzdGFtcCksXG4gICAgICAgICAgICAnc3ltYm9sJzogc3ltYm9sLFxuICAgICAgICAgICAgJ3R5cGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnc2lkZSc6IHNpZGUsXG4gICAgICAgICAgICAnb3JkZXInOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFrZXJPck1ha2VyJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3ByaWNlJzogcHJpY2VTdHJpbmcsXG4gICAgICAgICAgICAnYW1vdW50JzogYW1vdW50U3RyaW5nLFxuICAgICAgICAgICAgJ2Nvc3QnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZmVlJzogdW5kZWZpbmVkLFxuICAgICAgICB9LCBtYXJrZXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoVHJhZGVzIChzeW1ib2w6IHN0cmluZywgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPFRyYWRlW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaFRyYWRlc1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1B1YmxpY0FQSS5odG1sI2lkMjhcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGdldCB0aGUgbGlzdCBvZiBtb3N0IHJlY2VudCB0cmFkZXMgZm9yIGEgcGFydGljdWxhciBzeW1ib2xcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGZldGNoIHRyYWRlcyBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtzaW5jZV0gdGltZXN0YW1wIGluIG1zIG9mIHRoZSBlYXJsaWVzdCB0cmFkZSB0byBmZXRjaFxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW2xpbWl0XSB0aGUgbWF4aW11bSBhbW91bnQgb2YgdHJhZGVzIHRvIGZldGNoXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge1RyYWRlW119IGEgbGlzdCBvZiBbdHJhZGUgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPXB1YmxpYy10cmFkZXN9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnB1YmxpY0dldFRyYWRlc1BhaXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgICBbXG4gICAgICAgIC8vICAgICAgICAgIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwiZGF0ZVwiOiAxNjQ4NTU5NDE0LFxuICAgICAgICAvLyAgICAgICAgICAgICAgXCJwcmljZVwiOiA1ODgwMzc1LjAsXG4gICAgICAgIC8vICAgICAgICAgICAgICBcImFtb3VudFwiOiAwLjAxNyxcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwidGlkXCI6IDE3NjEyNjU1NyxcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwiY3VycmVuY3lfcGFpclwiOiBcImJ0Y19qcHlcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwidHJhZGVfdHlwZVwiOiBcImFza1wiXG4gICAgICAgIC8vICAgICAgICAgIH0sIC4uLlxuICAgICAgICAvLyAgICAgIF1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgbnVtVHJhZGVzID0gcmVzcG9uc2UubGVuZ3RoO1xuICAgICAgICBpZiAobnVtVHJhZGVzID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFRyYWRlID0gcmVzcG9uc2VbMF07XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzIChmaXJzdFRyYWRlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlVHJhZGVzIChyZXNwb25zZSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZU9yZGVyIChzeW1ib2w6IHN0cmluZywgdHlwZTogT3JkZXJUeXBlLCBzaWRlOiBPcmRlclNpZGUsIGFtb3VudCwgcHJpY2UgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjY3JlYXRlT3JkZXJcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9NYXJnaW5UcmFkaW5nQVBJLmh0bWwjaWQyM1xuICAgICAgICAgKiBAZGVzY3JpcHRpb24gY3JlYXRlIGEgdHJhZGUgb3JkZXJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGNyZWF0ZSBhbiBvcmRlciBpblxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBtdXN0IGJlICdsaW1pdCdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZGUgJ2J1eScgb3IgJ3NlbGwnXG4gICAgICAgICAqIEBwYXJhbSB7ZmxvYXR9IGFtb3VudCBob3cgbXVjaCBvZiBjdXJyZW5jeSB5b3Ugd2FudCB0byB0cmFkZSBpbiB1bml0cyBvZiBiYXNlIGN1cnJlbmN5XG4gICAgICAgICAqIEBwYXJhbSB7ZmxvYXR9IFtwcmljZV0gdGhlIHByaWNlIGF0IHdoaWNoIHRoZSBvcmRlciBpcyB0byBiZSBmdWxsZmlsbGVkLCBpbiB1bml0cyBvZiB0aGUgcXVvdGUgY3VycmVuY3ksIGlnbm9yZWQgaW4gbWFya2V0IG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGFuIFtvcmRlciBzdHJ1Y3R1cmVde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBpZiAodHlwZSAhPT0gJ2xpbWl0Jykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2hhbmdlRXJyb3IgKHRoaXMuaWQgKyAnIGNyZWF0ZU9yZGVyKCkgYWxsb3dzIGxpbWl0IG9yZGVycyBvbmx5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWFya2V0ID0gdGhpcy5tYXJrZXQgKHN5bWJvbCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAnY3VycmVuY3lfcGFpcic6IG1hcmtldFsnaWQnXSxcbiAgICAgICAgICAgICdhY3Rpb24nOiAoc2lkZSA9PT0gJ2J1eScpID8gJ2JpZCcgOiAnYXNrJyxcbiAgICAgICAgICAgICdhbW91bnQnOiBhbW91bnQsXG4gICAgICAgICAgICAncHJpY2UnOiBwcmljZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnByaXZhdGVQb3N0VHJhZGUgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZU9yZGVyICh7XG4gICAgICAgICAgICAnaW5mbyc6IHJlc3BvbnNlLFxuICAgICAgICAgICAgJ2lkJzogcmVzcG9uc2VbJ3JldHVybiddWydvcmRlcl9pZCddLnRvU3RyaW5nICgpLFxuICAgICAgICB9LCBtYXJrZXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbmNlbE9yZGVyIChpZDogc3RyaW5nLCBzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNjYW5jZWxPcmRlclxuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1RyYWRpbmdBUEkuaHRtbCNpZDM3XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBjYW5jZWxzIGFuIG9wZW4gb3JkZXJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIG9yZGVyIGlkXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgbm90IHVzZWQgYnkgemFpZiBjYW5jZWxPcmRlciAoKVxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IEFuIFtvcmRlciBzdHJ1Y3R1cmVde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICAgICAgJ29yZGVyX2lkJzogaWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByaXZhdGVQb3N0Q2FuY2VsT3JkZXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICB9XG5cbiAgICBwYXJzZU9yZGVyIChvcmRlciwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBPcmRlciB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XG4gICAgICAgIC8vICAgICAgICAgXCJjdXJyZW5jeV9wYWlyXCI6IFwiYnRjX2pweVwiLFxuICAgICAgICAvLyAgICAgICAgIFwiYWN0aW9uXCI6IFwiYXNrXCIsXG4gICAgICAgIC8vICAgICAgICAgXCJhbW91bnRcIjogMC4wMyxcbiAgICAgICAgLy8gICAgICAgICBcInByaWNlXCI6IDU2MDAwLFxuICAgICAgICAvLyAgICAgICAgIFwidGltZXN0YW1wXCI6IDE0MDIwMjExMjUsXG4gICAgICAgIC8vICAgICAgICAgXCJjb21tZW50XCIgOiBcImRlbW9cIlxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBsZXQgc2lkZSA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdhY3Rpb24nKTtcbiAgICAgICAgc2lkZSA9IChzaWRlID09PSAnYmlkJykgPyAnYnV5JyA6ICdzZWxsJztcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5zYWZlVGltZXN0YW1wIChvcmRlciwgJ3RpbWVzdGFtcCcpO1xuICAgICAgICBjb25zdCBtYXJrZXRJZCA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdjdXJyZW5jeV9wYWlyJyk7XG4gICAgICAgIGNvbnN0IHN5bWJvbCA9IHRoaXMuc2FmZVN5bWJvbCAobWFya2V0SWQsIG1hcmtldCwgJ18nKTtcbiAgICAgICAgY29uc3QgcHJpY2UgPSB0aGlzLnNhZmVTdHJpbmcgKG9yZGVyLCAncHJpY2UnKTtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5zYWZlU3RyaW5nIChvcmRlciwgJ2Ftb3VudCcpO1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdpZCcpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlT3JkZXIgKHtcbiAgICAgICAgICAgICdpZCc6IGlkLFxuICAgICAgICAgICAgJ2NsaWVudE9yZGVySWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wLFxuICAgICAgICAgICAgJ2RhdGV0aW1lJzogdGhpcy5pc284NjAxICh0aW1lc3RhbXApLFxuICAgICAgICAgICAgJ2xhc3RUcmFkZVRpbWVzdGFtcCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdzdGF0dXMnOiAnb3BlbicsXG4gICAgICAgICAgICAnc3ltYm9sJzogc3ltYm9sLFxuICAgICAgICAgICAgJ3R5cGUnOiAnbGltaXQnLFxuICAgICAgICAgICAgJ3RpbWVJbkZvcmNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3Bvc3RPbmx5JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3NpZGUnOiBzaWRlLFxuICAgICAgICAgICAgJ3ByaWNlJzogcHJpY2UsXG4gICAgICAgICAgICAnc3RvcFByaWNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3RyaWdnZXJQcmljZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdjb3N0JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2Ftb3VudCc6IGFtb3VudCxcbiAgICAgICAgICAgICdmaWxsZWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAncmVtYWluaW5nJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3RyYWRlcyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdmZWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnaW5mbyc6IG9yZGVyLFxuICAgICAgICAgICAgJ2F2ZXJhZ2UnOiB1bmRlZmluZWQsXG4gICAgICAgIH0sIG1hcmtldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2hPcGVuT3JkZXJzIChzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaE9wZW5PcmRlcnNcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9NYXJnaW5UcmFkaW5nQVBJLmh0bWwjaWQyOFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gZmV0Y2ggYWxsIHVuZmlsbGVkIGN1cnJlbnRseSBvcGVuIG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIHVuaWZpZWQgbWFya2V0IHN5bWJvbFxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW3NpbmNlXSB0aGUgZWFybGllc3QgdGltZSBpbiBtcyB0byBmZXRjaCBvcGVuIG9yZGVycyBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtsaW1pdF0gdGhlIG1heGltdW0gbnVtYmVyIG9mICBvcGVuIG9yZGVycyBzdHJ1Y3R1cmVzIHRvIHJldHJpZXZlXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge09yZGVyW119IGEgbGlzdCBvZiBbb3JkZXIgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPW9yZGVyLXN0cnVjdHVyZX1cbiAgICAgICAgICovXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1hcmtldHMgKCk7XG4gICAgICAgIGxldCBtYXJrZXQ6IE1hcmtldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgIC8vICdpc190b2tlbic6IGZhbHNlLFxuICAgICAgICAgICAgLy8gJ2lzX3Rva2VuX2JvdGgnOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgICAgIHJlcXVlc3RbJ2N1cnJlbmN5X3BhaXInXSA9IG1hcmtldFsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RBY3RpdmVPcmRlcnMgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcmRlcnMgKHJlc3BvbnNlWydyZXR1cm4nXSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoQ2xvc2VkT3JkZXJzIChzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaENsb3NlZE9yZGVyc1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1RyYWRpbmdBUEkuaHRtbCNpZDI0XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBmZXRjaGVzIGluZm9ybWF0aW9uIG9uIG11bHRpcGxlIGNsb3NlZCBvcmRlcnMgbWFkZSBieSB0aGUgdXNlclxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIHVuaWZpZWQgbWFya2V0IHN5bWJvbCBvZiB0aGUgbWFya2V0IG9yZGVycyB3ZXJlIG1hZGUgaW5cbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtzaW5jZV0gdGhlIGVhcmxpZXN0IHRpbWUgaW4gbXMgdG8gZmV0Y2ggb3JkZXJzIGZvclxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW2xpbWl0XSB0aGUgbWF4aW11bSBudW1iZXIgb2YgIG9yZGUgc3RydWN0dXJlcyB0byByZXRyaWV2ZVxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtPcmRlcltdfSBhIGxpc3Qgb2YgW29yZGVyIHN0cnVjdHVyZXNde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBsZXQgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAvLyAnZnJvbSc6IDAsXG4gICAgICAgICAgICAvLyAnY291bnQnOiAxMDAwLFxuICAgICAgICAgICAgLy8gJ2Zyb21faWQnOiAwLFxuICAgICAgICAgICAgLy8gJ2VuZF9pZCc6IDEwMDAsXG4gICAgICAgICAgICAvLyAnb3JkZXInOiAnREVTQycsXG4gICAgICAgICAgICAvLyAnc2luY2UnOiAxNTAzODIxMDUxLFxuICAgICAgICAgICAgLy8gJ2VuZCc6IDE1MDM4MjEwNTEsXG4gICAgICAgICAgICAvLyAnaXNfdG9rZW4nOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgICAgIHJlcXVlc3RbJ2N1cnJlbmN5X3BhaXInXSA9IG1hcmtldFsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RUcmFkZUhpc3RvcnkgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcmRlcnMgKHJlc3BvbnNlWydyZXR1cm4nXSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIHdpdGhkcmF3IChjb2RlOiBzdHJpbmcsIGFtb3VudCwgYWRkcmVzcywgdGFnID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1ldGhvZFxuICAgICAgICAgKiBAbmFtZSB6YWlmI3dpdGhkcmF3XG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvVHJhZGluZ0FQSS5odG1sI2lkNDFcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIG1ha2UgYSB3aXRoZHJhd2FsXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIHVuaWZpZWQgY3VycmVuY3kgY29kZVxuICAgICAgICAgKiBAcGFyYW0ge2Zsb2F0fSBhbW91bnQgdGhlIGFtb3VudCB0byB3aXRoZHJhd1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyB0byB3aXRoZHJhdyB0b1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge29iamVjdH0gYSBbdHJhbnNhY3Rpb24gc3RydWN0dXJlXXtAbGluayBodHRwczovL2RvY3MuY2N4dC5jb20vIy8/aWQ9dHJhbnNhY3Rpb24tc3RydWN0dXJlfVxuICAgICAgICAgKi9cbiAgICAgICAgWyB0YWcsIHBhcmFtcyBdID0gdGhpcy5oYW5kbGVXaXRoZHJhd1RhZ0FuZFBhcmFtcyAodGFnLCBwYXJhbXMpO1xuICAgICAgICB0aGlzLmNoZWNrQWRkcmVzcyAoYWRkcmVzcyk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1hcmtldHMgKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeSAoY29kZSk7XG4gICAgICAgIGlmIChjb2RlID09PSAnSlBZJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2hhbmdlRXJyb3IgKHRoaXMuaWQgKyAnIHdpdGhkcmF3KCkgZG9lcyBub3QgYWxsb3cgJyArIGNvZGUgKyAnIHdpdGhkcmF3YWxzJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5WydpZCddLFxuICAgICAgICAgICAgJ2Ftb3VudCc6IGFtb3VudCxcbiAgICAgICAgICAgICdhZGRyZXNzJzogYWRkcmVzcyxcbiAgICAgICAgICAgIC8vICdtZXNzYWdlJzogJ0hpIScsIC8vIFhFTSBhbmQgb3RoZXJzXG4gICAgICAgICAgICAvLyAnb3B0X2ZlZSc6IDAuMDAzLCAvLyBCVEMgYW5kIE1PTkEgb25seVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcXVlc3RbJ21lc3NhZ2UnXSA9IHRhZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByaXZhdGVQb3N0V2l0aGRyYXcgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgIHtcbiAgICAgICAgLy8gICAgICAgICBcInN1Y2Nlc3NcIjogMSxcbiAgICAgICAgLy8gICAgICAgICBcInJldHVyblwiOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaWRcIjogMjM2MzQsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiZmVlXCI6IDAuMDAxLFxuICAgICAgICAvLyAgICAgICAgICAgICBcInR4aWRcIjosXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiZnVuZHNcIjoge1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgXCJqcHlcIjogMTUzMjAsXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBcImJ0Y1wiOiAxLjM5MixcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIFwieGVtXCI6IDEwMC4yLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgXCJtb25hXCI6IDI2MDBcbiAgICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgcmV0dXJuRGF0YSA9IHRoaXMuc2FmZVZhbHVlIChyZXN1bHQsICdyZXR1cm4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUcmFuc2FjdGlvbiAocmV0dXJuRGF0YSwgY3VycmVuY3kpO1xuICAgIH1cblxuICAgIHBhcnNlVHJhbnNhY3Rpb24gKHRyYW5zYWN0aW9uLCBjdXJyZW5jeTogQ3VycmVuY3kgPSB1bmRlZmluZWQpOiBUcmFuc2FjdGlvbiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XG4gICAgICAgIC8vICAgICAgICAgXCJpZFwiOiAyMzYzNCxcbiAgICAgICAgLy8gICAgICAgICBcImZlZVwiOiAwLjAwMSxcbiAgICAgICAgLy8gICAgICAgICBcInR4aWRcIjosXG4gICAgICAgIC8vICAgICAgICAgXCJmdW5kc1wiOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIFwianB5XCI6IDE1MzIwLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImJ0Y1wiOiAxLjM5MixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJ4ZW1cIjogMTAwLjIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwibW9uYVwiOiAyNjAwXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBjdXJyZW5jeSA9IHRoaXMuc2FmZUN1cnJlbmN5ICh1bmRlZmluZWQsIGN1cnJlbmN5KTtcbiAgICAgICAgbGV0IGZlZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZmVlQ29zdCA9IHRoaXMuc2FmZVZhbHVlICh0cmFuc2FjdGlvbiwgJ2ZlZScpO1xuICAgICAgICBpZiAoZmVlQ29zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmZWUgPSB7XG4gICAgICAgICAgICAgICAgJ2Nvc3QnOiBmZWVDb3N0LFxuICAgICAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5Wydjb2RlJ10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWQnOiB0aGlzLnNhZmVTdHJpbmcgKHRyYW5zYWN0aW9uLCAnaWQnKSxcbiAgICAgICAgICAgICd0eGlkJzogdGhpcy5zYWZlU3RyaW5nICh0cmFuc2FjdGlvbiwgJ3R4aWQnKSxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZGF0ZXRpbWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnbmV0d29yayc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhZGRyZXNzRnJvbSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhZGRyZXNzJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2FkZHJlc3NUbyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhbW91bnQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndHlwZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5Wydjb2RlJ10sXG4gICAgICAgICAgICAnc3RhdHVzJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3VwZGF0ZWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFnRnJvbSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICd0YWcnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFnVG8nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY29tbWVudCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbnRlcm5hbCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdmZWUnOiBmZWUsXG4gICAgICAgICAgICAnaW5mbyc6IHRyYW5zYWN0aW9uLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGN1c3RvbU5vbmNlICgpIHtcbiAgICAgICAgY29uc3QgbnVtID0gKHRoaXMubWlsbGlzZWNvbmRzICgpIC8gMTAwMCkudG9TdHJpbmcgKCk7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gcGFyc2VGbG9hdCAobnVtKTtcbiAgICAgICAgcmV0dXJuIG5vbmNlLnRvRml4ZWQgKDgpO1xuICAgIH1cblxuICAgIHNpZ24gKHBhdGgsIGFwaSA9ICdwdWJsaWMnLCBtZXRob2QgPSAnR0VUJywgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB1bmRlZmluZWQsIGJvZHkgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMudXJsc1snYXBpJ11bJ3Jlc3QnXSArICcvJztcbiAgICAgICAgaWYgKGFwaSA9PT0gJ3B1YmxpYycpIHtcbiAgICAgICAgICAgIHVybCArPSAnYXBpLycgKyB0aGlzLnZlcnNpb24gKyAnLycgKyB0aGlzLmltcGxvZGVQYXJhbXMgKHBhdGgsIHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXBpID09PSAnZmFwaScpIHtcbiAgICAgICAgICAgIHVybCArPSAnZmFwaS8nICsgdGhpcy52ZXJzaW9uICsgJy8nICsgdGhpcy5pbXBsb2RlUGFyYW1zIChwYXRoLCBwYXJhbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja1JlcXVpcmVkQ3JlZGVudGlhbHMgKCk7XG4gICAgICAgICAgICBpZiAoYXBpID09PSAnZWNhcGknKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9ICdlY2FwaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFwaSA9PT0gJ3RsYXBpJykge1xuICAgICAgICAgICAgICAgIHVybCArPSAndGxhcGknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJ3RhcGknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9uY2UgPSB0aGlzLmN1c3RvbU5vbmNlICgpO1xuICAgICAgICAgICAgYm9keSA9IHRoaXMudXJsZW5jb2RlICh0aGlzLmV4dGVuZCAoe1xuICAgICAgICAgICAgICAgICdtZXRob2QnOiBwYXRoLFxuICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgfSwgcGFyYW1zKSk7XG4gICAgICAgICAgICBoZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICAgICAgICAnS2V5JzogdGhpcy5hcGlLZXksXG4gICAgICAgICAgICAgICAgJ1NpZ24nOiB0aGlzLmhtYWMgKHRoaXMuZW5jb2RlIChib2R5KSwgdGhpcy5lbmNvZGUgKHRoaXMuc2VjcmV0KSwgc2hhNTEyKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgJ3VybCc6IHVybCwgJ21ldGhvZCc6IG1ldGhvZCwgJ2JvZHknOiBib2R5LCAnaGVhZGVycyc6IGhlYWRlcnMgfTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcnMgKGh0dHBDb2RlLCByZWFzb24sIHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXNwb25zZSwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3RCb2R5KSB7XG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XCJlcnJvclwiOiBcInVuc3VwcG9ydGVkIGN1cnJlbmN5X3BhaXJcIn1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgZmVlZGJhY2sgPSB0aGlzLmlkICsgJyAnICsgYm9keTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnNhZmVTdHJpbmcgKHJlc3BvbnNlLCAnZXJyb3InKTtcbiAgICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFeGFjdGx5TWF0Y2hlZEV4Y2VwdGlvbiAodGhpcy5leGNlcHRpb25zWydleGFjdCddLCBlcnJvciwgZmVlZGJhY2spO1xuICAgICAgICAgICAgdGhpcy50aHJvd0Jyb2FkbHlNYXRjaGVkRXhjZXB0aW9uICh0aGlzLmV4Y2VwdGlvbnNbJ2Jyb2FkJ10sIGVycm9yLCBmZWVkYmFjayk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXhjaGFuZ2VFcnJvciAoZmVlZGJhY2spOyAvLyB1bmtub3duIG1lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5zYWZlVmFsdWUgKHJlc3BvbnNlLCAnc3VjY2VzcycsIHRydWUpO1xuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFeGNoYW5nZUVycm9yIChmZWVkYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=
288203
+
288169
288204
  /***/ })
288170
288205
 
288171
288206
  /******/ });
@@ -288274,210 +288309,210 @@ __webpack_require__.r(__webpack_exports__);
288274
288309
  /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_154__.O),
288275
288310
  /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__.RateLimitExceeded),
288276
288311
  /* 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),
288312
+ /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_2__.Z),
288313
+ /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__.Z),
288314
+ /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__.Z),
288315
+ /* harmony export */ bequant: () => (/* reexport safe */ _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__.Z),
288316
+ /* harmony export */ bigone: () => (/* reexport safe */ _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__.Z),
288317
+ /* harmony export */ binance: () => (/* reexport safe */ _src_binance_js__WEBPACK_IMPORTED_MODULE_7__.Z),
288318
+ /* harmony export */ binancecoinm: () => (/* reexport safe */ _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__.Z),
288319
+ /* harmony export */ binanceus: () => (/* reexport safe */ _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__.Z),
288320
+ /* harmony export */ binanceusdm: () => (/* reexport safe */ _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__.Z),
288321
+ /* harmony export */ bingx: () => (/* reexport safe */ _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__.Z),
288322
+ /* harmony export */ bit2c: () => (/* reexport safe */ _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__.Z),
288323
+ /* harmony export */ bitbank: () => (/* reexport safe */ _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__.Z),
288324
+ /* harmony export */ bitbay: () => (/* reexport safe */ _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__.Z),
288325
+ /* harmony export */ bitbns: () => (/* reexport safe */ _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__.Z),
288326
+ /* harmony export */ bitcoincom: () => (/* reexport safe */ _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__.Z),
288327
+ /* harmony export */ bitfinex: () => (/* reexport safe */ _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__.Z),
288328
+ /* harmony export */ bitfinex2: () => (/* reexport safe */ _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__.Z),
288329
+ /* harmony export */ bitflyer: () => (/* reexport safe */ _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__.Z),
288330
+ /* harmony export */ bitforex: () => (/* reexport safe */ _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__.Z),
288331
+ /* harmony export */ bitget: () => (/* reexport safe */ _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__.Z),
288332
+ /* harmony export */ bithumb: () => (/* reexport safe */ _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__.Z),
288333
+ /* harmony export */ bitmart: () => (/* reexport safe */ _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__.Z),
288334
+ /* harmony export */ bitmex: () => (/* reexport safe */ _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__.Z),
288335
+ /* harmony export */ bitopro: () => (/* reexport safe */ _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__.Z),
288336
+ /* harmony export */ bitpanda: () => (/* reexport safe */ _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__.Z),
288337
+ /* harmony export */ bitrue: () => (/* reexport safe */ _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__.Z),
288338
+ /* harmony export */ bitso: () => (/* reexport safe */ _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__.Z),
288339
+ /* harmony export */ bitstamp: () => (/* reexport safe */ _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__.Z),
288340
+ /* harmony export */ bitvavo: () => (/* reexport safe */ _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__.Z),
288341
+ /* harmony export */ bl3p: () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__.Z),
288342
+ /* harmony export */ blockchaincom: () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__.Z),
288343
+ /* harmony export */ btcalpha: () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__.Z),
288344
+ /* harmony export */ btcbox: () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__.Z),
288345
+ /* harmony export */ btcmarkets: () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__.Z),
288346
+ /* harmony export */ btcturk: () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__.Z),
288347
+ /* harmony export */ bybit: () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__.Z),
288348
+ /* harmony export */ cex: () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_38__.Z),
288349
+ /* harmony export */ coinbase: () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__.Z),
288350
+ /* harmony export */ coinbasepro: () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__.Z),
288351
+ /* harmony export */ coincheck: () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__.Z),
288352
+ /* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__.Z),
288353
+ /* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__.Z),
288354
+ /* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__.Z),
288355
+ /* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__.Z),
288356
+ /* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__.Z),
288357
+ /* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__.Z),
288358
+ /* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__.Z),
288359
+ /* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
288325
288360
  /* 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),
288361
+ /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_50__.Z),
288362
+ /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__.Z),
288363
+ /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__.Z),
288329
288364
  /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__),
288330
288365
  /* 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),
288366
+ /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__.Z),
288367
+ /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__.Z),
288333
288368
  /* 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),
288369
+ /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_55__.Z),
288370
+ /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
288371
+ /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__.Z),
288372
+ /* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__.Z),
288373
+ /* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__.Z),
288374
+ /* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__.Z),
288375
+ /* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_61__.Z),
288376
+ /* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__.Z),
288377
+ /* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__.Z),
288378
+ /* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_64__.Z),
288379
+ /* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__.Z),
288380
+ /* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__.Z),
288381
+ /* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__.Z),
288382
+ /* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__.Z),
288383
+ /* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__.Z),
288384
+ /* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__.Z),
288385
+ /* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__.Z),
288386
+ /* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__.Z),
288387
+ /* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__.Z),
288388
+ /* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_74__.Z),
288389
+ /* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__.Z),
288390
+ /* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__.Z),
288391
+ /* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__.Z),
288392
+ /* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__.Z),
288393
+ /* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
288394
+ /* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__.Z),
288395
+ /* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__.Z),
288396
+ /* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_82__.Z),
288397
+ /* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__.Z),
288398
+ /* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__.Z),
288399
+ /* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__.Z),
288400
+ /* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__.Z),
288401
+ /* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__.Z),
288367
288402
  /* 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),
288403
+ /* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_88__.Z),
288404
+ /* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_89__.Z),
288405
+ /* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__.Z),
288406
+ /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__.Z),
288372
288407
  /* 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),
288408
+ /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__.Z),
288409
+ /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__.Z),
288410
+ /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__.Z),
288411
+ /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_95__.Z),
288412
+ /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__.Z),
288413
+ /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__.Z),
288379
288414
  /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__.Z)
288380
288415
  /* harmony export */ });
288381
288416
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
288382
288417
  /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(2194);
288383
288418
  /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7100);
288384
288419
  /* 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);
288420
+ /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9869);
288421
+ /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5660);
288422
+ /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9612);
288423
+ /* harmony import */ var _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2049);
288424
+ /* harmony import */ var _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7679);
288425
+ /* harmony import */ var _src_binance_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9987);
288426
+ /* harmony import */ var _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9212);
288427
+ /* harmony import */ var _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2723);
288428
+ /* harmony import */ var _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(3254);
288429
+ /* harmony import */ var _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7960);
288430
+ /* harmony import */ var _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7691);
288431
+ /* harmony import */ var _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7820);
288432
+ /* harmony import */ var _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(668);
288433
+ /* harmony import */ var _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7790);
288434
+ /* harmony import */ var _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(1819);
288435
+ /* harmony import */ var _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6537);
288436
+ /* harmony import */ var _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(730);
288437
+ /* harmony import */ var _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(8429);
288438
+ /* harmony import */ var _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(2035);
288439
+ /* harmony import */ var _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(9051);
288440
+ /* harmony import */ var _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(5305);
288441
+ /* harmony import */ var _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(3718);
288442
+ /* harmony import */ var _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(7077);
288443
+ /* harmony import */ var _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(172);
288444
+ /* harmony import */ var _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(2737);
288445
+ /* harmony import */ var _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(854);
288446
+ /* harmony import */ var _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(4388);
288447
+ /* harmony import */ var _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(4667);
288448
+ /* harmony import */ var _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(9943);
288449
+ /* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(9476);
288450
+ /* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(182);
288451
+ /* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(6246);
288452
+ /* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(7796);
288453
+ /* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(1776);
288454
+ /* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(6304);
288455
+ /* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(3527);
288456
+ /* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(6445);
288457
+ /* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(437);
288458
+ /* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(8856);
288459
+ /* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(2117);
288460
+ /* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(332);
288461
+ /* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(3623);
288462
+ /* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(9816);
288463
+ /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(7811);
288464
+ /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(5782);
288465
+ /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(7794);
288466
+ /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(9129);
288467
+ /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(3214);
288468
+ /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(1753);
288469
+ /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(24);
288470
+ /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(8846);
288471
+ /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(1729);
288472
+ /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(5788);
288473
+ /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(7290);
288474
+ /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7036);
288475
+ /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(6743);
288476
+ /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(4714);
288477
+ /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4815);
288478
+ /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(8422);
288479
+ /* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(5939);
288480
+ /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(8146);
288481
+ /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(7034);
288482
+ /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(8232);
288483
+ /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(9570);
288484
+ /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(1605);
288485
+ /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(9922);
288486
+ /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(4470);
288487
+ /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(3583);
288488
+ /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(1924);
288489
+ /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(7732);
288490
+ /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(2545);
288491
+ /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(3944);
288492
+ /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(1758);
288493
+ /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(3803);
288494
+ /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(9013);
288495
+ /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(6641);
288496
+ /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(4531);
288497
+ /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(2449);
288498
+ /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(6749);
288499
+ /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(3007);
288500
+ /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(4042);
288501
+ /* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(2466);
288502
+ /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(7082);
288503
+ /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(79);
288504
+ /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(8891);
288505
+ /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(6877);
288506
+ /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(3657);
288507
+ /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(1067);
288508
+ /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(5261);
288509
+ /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(7584);
288510
+ /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(3853);
288511
+ /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(6536);
288512
+ /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(5467);
288513
+ /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(517);
288514
+ /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(3850);
288515
+ /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7558);
288481
288516
  /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(5140);
288482
288517
  /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(2467);
288483
288518
  /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(2383);
@@ -288569,7 +288604,7 @@ SOFTWARE.
288569
288604
 
288570
288605
  //-----------------------------------------------------------------------------
288571
288606
  // this is updated by vss.js when building
288572
- const version = '4.1.96';
288607
+ const version = '4.1.97';
288573
288608
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
288574
288609
  //-----------------------------------------------------------------------------
288575
288610
 
@@ -288727,102 +288762,102 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
288727
288762
 
288728
288763
 
288729
288764
  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,
288765
+ 'ace': _src_ace_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,
288766
+ 'alpaca': _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,
288767
+ 'ascendex': _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z,
288768
+ 'bequant': _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z,
288769
+ 'bigone': _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z,
288770
+ 'binance': _src_binance_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z,
288771
+ 'binancecoinm': _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z,
288772
+ 'binanceus': _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z,
288773
+ 'binanceusdm': _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z,
288774
+ 'bingx': _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z,
288775
+ 'bit2c': _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z,
288776
+ 'bitbank': _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z,
288777
+ 'bitbay': _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z,
288778
+ 'bitbns': _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z,
288779
+ 'bitcoincom': _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .Z,
288780
+ 'bitfinex': _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z,
288781
+ 'bitfinex2': _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z,
288782
+ 'bitflyer': _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z,
288783
+ 'bitforex': _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z,
288784
+ 'bitget': _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__/* ["default"] */ .Z,
288785
+ 'bithumb': _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__/* ["default"] */ .Z,
288786
+ 'bitmart': _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z,
288787
+ 'bitmex': _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Z,
288788
+ 'bitopro': _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__/* ["default"] */ .Z,
288789
+ 'bitpanda': _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .Z,
288790
+ 'bitrue': _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .Z,
288791
+ 'bitso': _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__/* ["default"] */ .Z,
288792
+ 'bitstamp': _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__/* ["default"] */ .Z,
288793
+ 'bitvavo': _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__/* ["default"] */ .Z,
288794
+ 'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .Z,
288795
+ 'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
288796
+ 'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
288797
+ 'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
288798
+ 'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
288799
+ 'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
288800
+ 'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
288801
+ 'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
288802
+ 'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
288803
+ 'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
288804
+ 'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
288805
+ 'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
288806
+ 'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
288807
+ 'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
288808
+ 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
288809
+ 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
288810
+ 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
288811
+ 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
288812
+ 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
288813
+ 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
288814
+ 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
288815
+ 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
288816
+ 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
288817
+ 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
288818
+ 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
288819
+ 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
288820
+ 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
288821
+ 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
288822
+ 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
288823
+ 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
288824
+ 'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
288825
+ 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
288826
+ 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
288827
+ 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
288828
+ 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
288829
+ 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
288830
+ 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
288831
+ 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
288832
+ 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
288833
+ 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
288834
+ 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
288835
+ 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
288836
+ 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
288837
+ 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
288838
+ 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
288839
+ 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
288840
+ 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
288841
+ 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
288842
+ 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
288843
+ 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
288844
+ 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
288845
+ 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
288846
+ 'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
288847
+ 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
288848
+ 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
288849
+ 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
288850
+ 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
288851
+ 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
288852
+ 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
288853
+ 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
288854
+ 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
288855
+ 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
288856
+ 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
288857
+ 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
288858
+ 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
288859
+ 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
288860
+ 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,
288826
288861
  'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
288827
288862
  };
288828
288863
  const pro = {