@drift-labs/sdk 0.1.26 → 0.1.27

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 (120) hide show
  1. package/lib/accounts/pollingOracleSubscriber.d.ts +26 -0
  2. package/lib/accounts/pollingOracleSubscriber.js +79 -0
  3. package/lib/accounts/types.d.ts +14 -1
  4. package/lib/clearingHouse.d.ts +4 -4
  5. package/lib/clearingHouse.js +32 -7
  6. package/lib/constants/markets.d.ts +2 -2
  7. package/lib/constants/markets.js +39 -28
  8. package/lib/idl/clearing_house.json +6 -1
  9. package/lib/index.d.ts +1 -0
  10. package/lib/index.js +1 -0
  11. package/lib/math/market.d.ts +2 -0
  12. package/lib/math/market.js +6 -1
  13. package/lib/orderParams.d.ts +1 -1
  14. package/lib/orderParams.js +2 -2
  15. package/lib/orders.d.ts +3 -2
  16. package/lib/orders.js +11 -4
  17. package/package.json +1 -1
  18. package/src/accounts/bulkAccountLoader.js +180 -0
  19. package/src/accounts/bulkAccountLoader.js.map +1 -0
  20. package/src/accounts/bulkUserSubscription.js +56 -0
  21. package/src/accounts/bulkUserSubscription.js.map +1 -0
  22. package/src/accounts/pollingClearingHouseAccountSubscriber.js +210 -0
  23. package/src/accounts/pollingClearingHouseAccountSubscriber.js.map +1 -0
  24. package/src/accounts/pollingOracleSubscriber.js +65 -0
  25. package/src/accounts/pollingOracleSubscriber.js.map +1 -0
  26. package/src/accounts/pollingOracleSubscriber.ts +103 -0
  27. package/src/accounts/pollingTokenAccountSubscriber.js +65 -0
  28. package/src/accounts/pollingTokenAccountSubscriber.js.map +1 -0
  29. package/src/accounts/pollingUserAccountSubscriber.js +139 -0
  30. package/src/accounts/pollingUserAccountSubscriber.js.map +1 -0
  31. package/src/accounts/types.js +1 -0
  32. package/src/accounts/types.js.map +1 -0
  33. package/src/accounts/types.ts +22 -1
  34. package/src/accounts/utils.js +1 -0
  35. package/src/accounts/utils.js.map +1 -0
  36. package/src/accounts/webSocketAccountSubscriber.js +15 -27
  37. package/src/accounts/webSocketAccountSubscriber.js.map +1 -0
  38. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +212 -0
  39. package/src/accounts/webSocketClearingHouseAccountSubscriber.js.map +1 -0
  40. package/src/accounts/webSocketUserAccountSubscriber.js +78 -0
  41. package/src/accounts/webSocketUserAccountSubscriber.js.map +1 -0
  42. package/src/addresses.js +20 -44
  43. package/src/addresses.js.map +1 -0
  44. package/src/admin.js +443 -0
  45. package/src/admin.js.map +1 -0
  46. package/src/assert/assert.js +10 -0
  47. package/src/assert/assert.js.map +1 -0
  48. package/src/clearingHouse.js +769 -0
  49. package/src/clearingHouse.js.map +1 -0
  50. package/src/clearingHouse.ts +45 -7
  51. package/src/clearingHouseUser.js +581 -0
  52. package/src/clearingHouseUser.js.map +1 -0
  53. package/src/config.js +37 -0
  54. package/src/config.js.map +1 -0
  55. package/src/constants/markets.js +167 -0
  56. package/src/constants/markets.js.map +1 -0
  57. package/src/constants/markets.ts +41 -30
  58. package/src/constants/numericConstants.js +22 -0
  59. package/src/constants/numericConstants.js.map +1 -0
  60. package/src/factory/clearingHouse.js +65 -0
  61. package/src/factory/clearingHouse.js.map +1 -0
  62. package/src/factory/clearingHouseUser.js +35 -0
  63. package/src/factory/clearingHouseUser.js.map +1 -0
  64. package/src/factory/oracleClient.js +17 -0
  65. package/src/factory/oracleClient.js.map +1 -0
  66. package/src/idl/clearing_house.json +6 -1
  67. package/src/index.js +56 -0
  68. package/src/index.js.map +1 -0
  69. package/src/index.ts +1 -0
  70. package/src/math/amm.js +285 -0
  71. package/src/math/amm.js.map +1 -0
  72. package/src/math/conversion.js +16 -0
  73. package/src/math/conversion.js.map +1 -0
  74. package/src/math/funding.js +223 -0
  75. package/src/math/funding.js.map +1 -0
  76. package/src/math/insuranceFund.js +23 -0
  77. package/src/math/insuranceFund.js.map +1 -0
  78. package/src/math/market.js +30 -0
  79. package/src/math/market.js.map +1 -0
  80. package/src/math/market.ts +9 -0
  81. package/src/math/orders.js +73 -0
  82. package/src/math/orders.js.map +1 -0
  83. package/src/math/position.js +121 -0
  84. package/src/math/position.js.map +1 -0
  85. package/src/math/trade.js +182 -0
  86. package/src/math/trade.js.map +1 -0
  87. package/src/math/utils.js +27 -0
  88. package/src/math/utils.js.map +1 -0
  89. package/src/mockUSDCFaucet.js +88 -116
  90. package/src/mockUSDCFaucet.js.map +1 -0
  91. package/src/oracles/pythClient.js +39 -0
  92. package/src/oracles/pythClient.js.map +1 -0
  93. package/src/oracles/switchboardClient.js +60 -0
  94. package/src/oracles/switchboardClient.js.map +1 -0
  95. package/src/oracles/types.js +3 -0
  96. package/src/oracles/types.js.map +1 -0
  97. package/src/orderParams.js +109 -0
  98. package/src/orderParams.js.map +1 -0
  99. package/src/orderParams.ts +3 -2
  100. package/src/orders.js +172 -0
  101. package/src/orders.js.map +1 -0
  102. package/src/orders.ts +17 -4
  103. package/src/token/index.js +39 -0
  104. package/src/token/index.js.map +1 -0
  105. package/src/tx/defaultTxSender.js +13 -0
  106. package/src/tx/defaultTxSender.js.map +1 -0
  107. package/src/tx/retryTxSender.js +137 -0
  108. package/src/tx/retryTxSender.js.map +1 -0
  109. package/src/tx/types.js +3 -0
  110. package/src/tx/types.js.map +1 -0
  111. package/src/tx/utils.js +9 -0
  112. package/src/tx/utils.js.map +1 -0
  113. package/src/types.js +1 -0
  114. package/src/types.js.map +1 -0
  115. package/src/util/computeUnits.js +17 -0
  116. package/src/util/computeUnits.js.map +1 -0
  117. package/src/util/tps.js +17 -0
  118. package/src/util/tps.js.map +1 -0
  119. package/src/wallet.js +23 -0
  120. package/src/wallet.js.map +1 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketUserAccountSubscriber = void 0;
4
+ const types_1 = require("./types");
5
+ const events_1 = require("events");
6
+ const addresses_1 = require("../addresses");
7
+ const webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
8
+ class WebSocketUserAccountSubscriber {
9
+ constructor(program, authority) {
10
+ this.type = 'websocket';
11
+ this.isSubscribed = false;
12
+ this.program = program;
13
+ this.authority = authority;
14
+ this.eventEmitter = new events_1.EventEmitter();
15
+ }
16
+ async subscribe() {
17
+ if (this.isSubscribed) {
18
+ return true;
19
+ }
20
+ const userPublicKey = await (0, addresses_1.getUserAccountPublicKey)(this.program.programId, this.authority);
21
+ this.userDataAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('user', this.program, userPublicKey);
22
+ await this.userDataAccountSubscriber.subscribe((data) => {
23
+ this.eventEmitter.emit('userAccountData', data);
24
+ this.eventEmitter.emit('update');
25
+ });
26
+ const userAccountData = this.userDataAccountSubscriber.data;
27
+ this.userPositionsAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('userPositions', this.program, userAccountData.positions);
28
+ await this.userPositionsAccountSubscriber.subscribe((data) => {
29
+ this.eventEmitter.emit('userPositionsData', data);
30
+ this.eventEmitter.emit('update');
31
+ });
32
+ const userOrdersPublicKey = await (0, addresses_1.getUserOrdersAccountPublicKey)(this.program.programId, userPublicKey);
33
+ this.userOrdersAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('userOrders', this.program, userOrdersPublicKey);
34
+ await this.userOrdersAccountSubscriber.subscribe((data) => {
35
+ this.eventEmitter.emit('userOrdersData', data);
36
+ this.eventEmitter.emit('update');
37
+ });
38
+ this.eventEmitter.emit('update');
39
+ this.isSubscribed = true;
40
+ return true;
41
+ }
42
+ async fetch() {
43
+ await Promise.all([
44
+ this.userDataAccountSubscriber.fetch(),
45
+ this.userPositionsAccountSubscriber.fetch(),
46
+ this.userOrdersAccountSubscriber.fetch(),
47
+ ]);
48
+ }
49
+ async unsubscribe() {
50
+ if (!this.isSubscribed) {
51
+ return;
52
+ }
53
+ await Promise.all([
54
+ this.userDataAccountSubscriber.unsubscribe(),
55
+ this.userPositionsAccountSubscriber.unsubscribe(),
56
+ await this.userOrdersAccountSubscriber.unsubscribe(),
57
+ ]);
58
+ this.isSubscribed = false;
59
+ }
60
+ assertIsSubscribed() {
61
+ if (!this.isSubscribed) {
62
+ throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
63
+ }
64
+ }
65
+ getUserAccount() {
66
+ this.assertIsSubscribed();
67
+ return this.userDataAccountSubscriber.data;
68
+ }
69
+ getUserPositionsAccount() {
70
+ this.assertIsSubscribed();
71
+ return this.userPositionsAccountSubscriber.data;
72
+ }
73
+ getUserOrdersAccount() {
74
+ return this.userOrdersAccountSubscriber.data;
75
+ }
76
+ }
77
+ exports.WebSocketUserAccountSubscriber = WebSocketUserAccountSubscriber;
78
+ //# sourceMappingURL=webSocketUserAccountSubscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webSocketUserAccountSubscriber.js","sourceRoot":"","sources":["webSocketUserAccountSubscriber.ts"],"names":[],"mappings":"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"}
package/src/addresses.js CHANGED
@@ -18,66 +18,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
21
  Object.defineProperty(exports, "__esModule", { value: true });
31
22
  exports.getUserOrdersAccountPublicKey = exports.getUserOrdersAccountPublicKeyAndNonce = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getClearingHouseStateAccountPublicKey = exports.getOrderStateAccountPublicKeyAndNonce = exports.getOrderStateAccountPublicKey = exports.getClearingHouseStateAccountPublicKeyAndNonce = void 0;
32
23
  const anchor = __importStar(require("@project-serum/anchor"));
33
- function getClearingHouseStateAccountPublicKeyAndNonce(programId) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('clearing_house'))], programId);
36
- });
24
+ async function getClearingHouseStateAccountPublicKeyAndNonce(programId) {
25
+ return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('clearing_house'))], programId);
37
26
  }
38
27
  exports.getClearingHouseStateAccountPublicKeyAndNonce = getClearingHouseStateAccountPublicKeyAndNonce;
39
- function getOrderStateAccountPublicKey(programId) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- return (yield getOrderStateAccountPublicKeyAndNonce(programId))[0];
42
- });
28
+ async function getOrderStateAccountPublicKey(programId) {
29
+ return (await getOrderStateAccountPublicKeyAndNonce(programId))[0];
43
30
  }
44
31
  exports.getOrderStateAccountPublicKey = getOrderStateAccountPublicKey;
45
- function getOrderStateAccountPublicKeyAndNonce(programId) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('order_state'))], programId);
48
- });
32
+ async function getOrderStateAccountPublicKeyAndNonce(programId) {
33
+ return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('order_state'))], programId);
49
34
  }
50
35
  exports.getOrderStateAccountPublicKeyAndNonce = getOrderStateAccountPublicKeyAndNonce;
51
- function getClearingHouseStateAccountPublicKey(programId) {
52
- return __awaiter(this, void 0, void 0, function* () {
53
- return (yield getClearingHouseStateAccountPublicKeyAndNonce(programId))[0];
54
- });
36
+ async function getClearingHouseStateAccountPublicKey(programId) {
37
+ return (await getClearingHouseStateAccountPublicKeyAndNonce(programId))[0];
55
38
  }
56
39
  exports.getClearingHouseStateAccountPublicKey = getClearingHouseStateAccountPublicKey;
57
- function getUserAccountPublicKeyAndNonce(programId, authority) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('user')), authority.toBuffer()], programId);
60
- });
40
+ async function getUserAccountPublicKeyAndNonce(programId, authority) {
41
+ return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('user')), authority.toBuffer()], programId);
61
42
  }
62
43
  exports.getUserAccountPublicKeyAndNonce = getUserAccountPublicKeyAndNonce;
63
- function getUserAccountPublicKey(programId, authority) {
64
- return __awaiter(this, void 0, void 0, function* () {
65
- return (yield getUserAccountPublicKeyAndNonce(programId, authority))[0];
66
- });
44
+ async function getUserAccountPublicKey(programId, authority) {
45
+ return (await getUserAccountPublicKeyAndNonce(programId, authority))[0];
67
46
  }
68
47
  exports.getUserAccountPublicKey = getUserAccountPublicKey;
69
- function getUserOrdersAccountPublicKeyAndNonce(programId, userAccount) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- return anchor.web3.PublicKey.findProgramAddress([
72
- Buffer.from(anchor.utils.bytes.utf8.encode('user_orders')),
73
- userAccount.toBuffer(),
74
- ], programId);
75
- });
48
+ async function getUserOrdersAccountPublicKeyAndNonce(programId, userAccount) {
49
+ return anchor.web3.PublicKey.findProgramAddress([
50
+ Buffer.from(anchor.utils.bytes.utf8.encode('user_orders')),
51
+ userAccount.toBuffer(),
52
+ ], programId);
76
53
  }
77
54
  exports.getUserOrdersAccountPublicKeyAndNonce = getUserOrdersAccountPublicKeyAndNonce;
78
- function getUserOrdersAccountPublicKey(programId, userAccount) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- return (yield getUserOrdersAccountPublicKeyAndNonce(programId, userAccount))[0];
81
- });
55
+ async function getUserOrdersAccountPublicKey(programId, userAccount) {
56
+ return (await getUserOrdersAccountPublicKeyAndNonce(programId, userAccount))[0];
82
57
  }
83
58
  exports.getUserOrdersAccountPublicKey = getUserOrdersAccountPublicKey;
59
+ //# sourceMappingURL=addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["addresses.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,8DAAgD;AAEzC,KAAK,UAAU,6CAA6C,CAClE,SAAoB;IAEpB,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC/D,SAAS,CACT,CAAC;AACH,CAAC;AAPD,sGAOC;AAEM,KAAK,UAAU,6BAA6B,CAClD,SAAoB;IAEpB,OAAO,CAAC,MAAM,qCAAqC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAJD,sEAIC;AAEM,KAAK,UAAU,qCAAqC,CAC1D,SAAoB;IAEpB,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAC5D,SAAS,CACT,CAAC;AACH,CAAC;AAPD,sFAOC;AAEM,KAAK,UAAU,qCAAqC,CAC1D,SAAoB;IAEpB,OAAO,CAAC,MAAM,6CAA6C,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAJD,sFAIC;AAEM,KAAK,UAAU,+BAA+B,CACpD,SAAoB,EACpB,SAAoB;IAEpB,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAC3E,SAAS,CACT,CAAC;AACH,CAAC;AARD,0EAQC;AAEM,KAAK,UAAU,uBAAuB,CAC5C,SAAoB,EACpB,SAAoB;IAEpB,OAAO,CAAC,MAAM,+BAA+B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AALD,0DAKC;AAEM,KAAK,UAAU,qCAAqC,CAC1D,SAAoB,EACpB,WAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC9C;QACC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1D,WAAW,CAAC,QAAQ,EAAE;KACtB,EACD,SAAS,CACT,CAAC;AACH,CAAC;AAXD,sFAWC;AAEM,KAAK,UAAU,6BAA6B,CAClD,SAAoB,EACpB,WAAsB;IAEtB,OAAO,CACN,MAAM,qCAAqC,CAAC,SAAS,EAAE,WAAW,CAAC,CACnE,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAPD,sEAOC"}
package/src/admin.js ADDED
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.Admin = void 0;
23
+ const web3_js_1 = require("@solana/web3.js");
24
+ const types_1 = require("./types");
25
+ const anchor_1 = require("@project-serum/anchor");
26
+ const anchor = __importStar(require("@project-serum/anchor"));
27
+ const addresses_1 = require("./addresses");
28
+ const spl_token_1 = require("@solana/spl-token");
29
+ const clearingHouse_1 = require("./clearingHouse");
30
+ const numericConstants_1 = require("./constants/numericConstants");
31
+ const trade_1 = require("./math/trade");
32
+ const amm_1 = require("./math/amm");
33
+ const clearingHouse_2 = require("./factory/clearingHouse");
34
+ class Admin extends clearingHouse_1.ClearingHouse {
35
+ static from(connection, wallet, clearingHouseProgramId, opts = anchor_1.Provider.defaultOptions()) {
36
+ const config = (0, clearingHouse_2.getWebSocketClearingHouseConfig)(connection, wallet, clearingHouseProgramId, opts);
37
+ return (0, clearingHouse_2.getAdmin)(config);
38
+ }
39
+ async initialize(usdcMint, adminControlsPrices) {
40
+ const stateAccountRPCResponse = await this.connection.getParsedAccountInfo(await this.getStatePublicKey());
41
+ if (stateAccountRPCResponse.value !== null) {
42
+ throw new Error('Clearing house already initialized');
43
+ }
44
+ const [collateralVaultPublicKey, collateralVaultNonce] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('collateral_vault'))], this.program.programId);
45
+ const [collateralVaultAuthority, _collateralVaultAuthorityNonce] = await web3_js_1.PublicKey.findProgramAddress([collateralVaultPublicKey.toBuffer()], this.program.programId);
46
+ const [insuranceVaultPublicKey, insuranceVaultNonce] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('insurance_vault'))], this.program.programId);
47
+ const [insuranceVaultAuthority, _insuranceVaultAuthorityNonce] = await web3_js_1.PublicKey.findProgramAddress([insuranceVaultPublicKey.toBuffer()], this.program.programId);
48
+ const markets = anchor.web3.Keypair.generate();
49
+ const depositHistory = anchor.web3.Keypair.generate();
50
+ const fundingRateHistory = anchor.web3.Keypair.generate();
51
+ const fundingPaymentHistory = anchor.web3.Keypair.generate();
52
+ const tradeHistory = anchor.web3.Keypair.generate();
53
+ const liquidationHistory = anchor.web3.Keypair.generate();
54
+ const curveHistory = anchor.web3.Keypair.generate();
55
+ const [clearingHouseStatePublicKey, clearingHouseNonce] = await (0, addresses_1.getClearingHouseStateAccountPublicKeyAndNonce)(this.program.programId);
56
+ const initializeTx = await this.program.transaction.initialize(clearingHouseNonce, collateralVaultNonce, insuranceVaultNonce, adminControlsPrices, {
57
+ accounts: {
58
+ admin: this.wallet.publicKey,
59
+ state: clearingHouseStatePublicKey,
60
+ collateralMint: usdcMint,
61
+ collateralVault: collateralVaultPublicKey,
62
+ collateralVaultAuthority: collateralVaultAuthority,
63
+ insuranceVault: insuranceVaultPublicKey,
64
+ insuranceVaultAuthority: insuranceVaultAuthority,
65
+ markets: markets.publicKey,
66
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
67
+ systemProgram: anchor.web3.SystemProgram.programId,
68
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
69
+ },
70
+ instructions: [
71
+ await this.program.account.markets.createInstruction(markets),
72
+ ],
73
+ });
74
+ const initializeTxSig = await this.txSender.send(initializeTx, [markets], this.opts);
75
+ const initializeHistoryTx = await this.program.transaction.initializeHistory({
76
+ accounts: {
77
+ admin: this.wallet.publicKey,
78
+ state: clearingHouseStatePublicKey,
79
+ depositHistory: depositHistory.publicKey,
80
+ fundingRateHistory: fundingRateHistory.publicKey,
81
+ fundingPaymentHistory: fundingPaymentHistory.publicKey,
82
+ tradeHistory: tradeHistory.publicKey,
83
+ liquidationHistory: liquidationHistory.publicKey,
84
+ curveHistory: curveHistory.publicKey,
85
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
86
+ systemProgram: anchor.web3.SystemProgram.programId,
87
+ },
88
+ instructions: [
89
+ await this.program.account.fundingRateHistory.createInstruction(fundingRateHistory),
90
+ await this.program.account.fundingPaymentHistory.createInstruction(fundingPaymentHistory),
91
+ await this.program.account.tradeHistory.createInstruction(tradeHistory),
92
+ await this.program.account.liquidationHistory.createInstruction(liquidationHistory),
93
+ await this.program.account.depositHistory.createInstruction(depositHistory),
94
+ await this.program.account.extendedCurveHistory.createInstruction(curveHistory),
95
+ ],
96
+ });
97
+ const initializeHistoryTxSig = await this.txSender.send(initializeHistoryTx, [
98
+ depositHistory,
99
+ fundingPaymentHistory,
100
+ tradeHistory,
101
+ liquidationHistory,
102
+ fundingRateHistory,
103
+ curveHistory,
104
+ ], this.opts);
105
+ const initializeOrderStateTxSig = await this.initializeOrderState();
106
+ return [initializeTxSig, initializeHistoryTxSig, initializeOrderStateTxSig];
107
+ }
108
+ async initializeOrderState() {
109
+ const orderHistory = anchor.web3.Keypair.generate();
110
+ const [orderStatePublicKey, orderStateNonce] = await (0, addresses_1.getOrderStateAccountPublicKeyAndNonce)(this.program.programId);
111
+ const clearingHouseStatePublicKey = await (0, addresses_1.getClearingHouseStateAccountPublicKey)(this.program.programId);
112
+ const initializeOrderStateTx = await this.program.transaction.initializeOrderState(orderStateNonce, {
113
+ accounts: {
114
+ admin: this.wallet.publicKey,
115
+ state: clearingHouseStatePublicKey,
116
+ orderHistory: orderHistory.publicKey,
117
+ orderState: orderStatePublicKey,
118
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
119
+ systemProgram: anchor.web3.SystemProgram.programId,
120
+ },
121
+ instructions: [
122
+ await this.program.account.orderHistory.createInstruction(orderHistory),
123
+ ],
124
+ });
125
+ return await this.txSender.send(initializeOrderStateTx, [orderHistory], this.opts);
126
+ }
127
+ async initializeMarket(marketIndex, priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = numericConstants_1.PEG_PRECISION, oracleSource = types_1.OracleSource.PYTH, marginRatioInitial = 2000, marginRatioPartial = 625, marginRatioMaintenance = 500) {
128
+ if (this.getMarketsAccount().markets[marketIndex.toNumber()].initialized) {
129
+ throw Error(`MarketIndex ${marketIndex.toNumber()} already initialized`);
130
+ }
131
+ const initializeMarketTx = await this.program.transaction.initializeMarket(marketIndex, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier, oracleSource, marginRatioInitial, marginRatioPartial, marginRatioMaintenance, {
132
+ accounts: {
133
+ state: await this.getStatePublicKey(),
134
+ admin: this.wallet.publicKey,
135
+ oracle: priceOracle,
136
+ markets: this.getStateAccount().markets,
137
+ },
138
+ });
139
+ return await this.txSender.send(initializeMarketTx, [], this.opts);
140
+ }
141
+ async moveAmmPrice(baseAssetReserve, quoteAssetReserve, marketIndex) {
142
+ const state = this.getStateAccount();
143
+ return await this.program.rpc.moveAmmPrice(baseAssetReserve, quoteAssetReserve, marketIndex, {
144
+ accounts: {
145
+ state: await this.getStatePublicKey(),
146
+ admin: this.wallet.publicKey,
147
+ markets: state.markets,
148
+ },
149
+ });
150
+ }
151
+ async updateK(sqrtK, marketIndex) {
152
+ const state = this.getStateAccount();
153
+ const markets = this.getMarketsAccount();
154
+ const marketData = markets.markets[marketIndex.toNumber()];
155
+ const ammData = marketData.amm;
156
+ return await this.program.rpc.updateK(sqrtK, marketIndex, {
157
+ accounts: {
158
+ state: await this.getStatePublicKey(),
159
+ admin: this.wallet.publicKey,
160
+ markets: state.markets,
161
+ curveHistory: state.extendedCurveHistory,
162
+ oracle: ammData.oracle,
163
+ },
164
+ });
165
+ }
166
+ async updateCurveHistory() {
167
+ const extendedCurveHistory = anchor.web3.Keypair.generate();
168
+ const state = this.getStateAccount();
169
+ return await this.program.rpc.updateCurveHistory({
170
+ accounts: {
171
+ state: await this.getStatePublicKey(),
172
+ admin: this.wallet.publicKey,
173
+ curveHistory: state.curveHistory,
174
+ extendedCurveHistory: extendedCurveHistory.publicKey,
175
+ },
176
+ instructions: [
177
+ await this.program.account.extendedCurveHistory.createInstruction(extendedCurveHistory),
178
+ ],
179
+ signers: [extendedCurveHistory],
180
+ });
181
+ }
182
+ async moveAmmToPrice(marketIndex, targetPrice) {
183
+ const market = this.getMarket(marketIndex);
184
+ const [direction, tradeSize, _] = (0, trade_1.calculateTargetPriceTrade)(market, targetPrice);
185
+ const [newQuoteAssetAmount, newBaseAssetAmount] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, 'quote', tradeSize, (0, amm_1.getSwapDirection)('quote', direction));
186
+ const state = this.getStateAccount();
187
+ return await this.program.rpc.moveAmmPrice(newBaseAssetAmount, newQuoteAssetAmount, marketIndex, {
188
+ accounts: {
189
+ state: await this.getStatePublicKey(),
190
+ admin: this.wallet.publicKey,
191
+ markets: state.markets,
192
+ },
193
+ });
194
+ }
195
+ async repegAmmCurve(newPeg, marketIndex) {
196
+ const state = this.getStateAccount();
197
+ const markets = this.getMarketsAccount();
198
+ const marketData = markets.markets[marketIndex.toNumber()];
199
+ const ammData = marketData.amm;
200
+ return await this.program.rpc.repegAmmCurve(newPeg, marketIndex, {
201
+ accounts: {
202
+ state: await this.getStatePublicKey(),
203
+ admin: this.wallet.publicKey,
204
+ oracle: ammData.oracle,
205
+ markets: state.markets,
206
+ curveHistory: state.extendedCurveHistory,
207
+ },
208
+ });
209
+ }
210
+ async updateAmmOracleTwap(marketIndex) {
211
+ const state = this.getStateAccount();
212
+ const markets = this.getMarketsAccount();
213
+ const marketData = markets.markets[marketIndex.toNumber()];
214
+ const ammData = marketData.amm;
215
+ return await this.program.rpc.updateAmmOracleTwap(marketIndex, {
216
+ accounts: {
217
+ state: await this.getStatePublicKey(),
218
+ admin: this.wallet.publicKey,
219
+ oracle: ammData.oracle,
220
+ markets: state.markets,
221
+ curveHistory: state.extendedCurveHistory,
222
+ },
223
+ });
224
+ }
225
+ async resetAmmOracleTwap(marketIndex) {
226
+ const state = this.getStateAccount();
227
+ const markets = this.getMarketsAccount();
228
+ const marketData = markets.markets[marketIndex.toNumber()];
229
+ const ammData = marketData.amm;
230
+ return await this.program.rpc.resetAmmOracleTwap(marketIndex, {
231
+ accounts: {
232
+ state: await this.getStatePublicKey(),
233
+ admin: this.wallet.publicKey,
234
+ oracle: ammData.oracle,
235
+ markets: state.markets,
236
+ curveHistory: state.extendedCurveHistory,
237
+ },
238
+ });
239
+ }
240
+ async withdrawFromInsuranceVault(amount, recipient) {
241
+ const state = await this.getStateAccount();
242
+ return await this.program.rpc.withdrawFromInsuranceVault(amount, {
243
+ accounts: {
244
+ admin: this.wallet.publicKey,
245
+ state: await this.getStatePublicKey(),
246
+ insuranceVault: state.insuranceVault,
247
+ insuranceVaultAuthority: state.insuranceVaultAuthority,
248
+ recipient: recipient,
249
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
250
+ },
251
+ });
252
+ }
253
+ async withdrawFees(marketIndex, amount, recipient) {
254
+ const state = await this.getStateAccount();
255
+ return await this.program.rpc.withdrawFees(marketIndex, amount, {
256
+ accounts: {
257
+ admin: this.wallet.publicKey,
258
+ state: await this.getStatePublicKey(),
259
+ markets: state.markets,
260
+ collateralVault: state.collateralVault,
261
+ collateralVaultAuthority: state.collateralVaultAuthority,
262
+ recipient: recipient,
263
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
264
+ },
265
+ });
266
+ }
267
+ async withdrawFromInsuranceVaultToMarket(marketIndex, amount) {
268
+ const state = await this.getStateAccount();
269
+ return await this.program.rpc.withdrawFromInsuranceVaultToMarket(marketIndex, amount, {
270
+ accounts: {
271
+ admin: this.wallet.publicKey,
272
+ state: await this.getStatePublicKey(),
273
+ markets: state.markets,
274
+ insuranceVault: state.insuranceVault,
275
+ insuranceVaultAuthority: state.insuranceVaultAuthority,
276
+ collateralVault: state.collateralVault,
277
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
278
+ },
279
+ });
280
+ }
281
+ async updateAdmin(admin) {
282
+ return await this.program.rpc.updateAdmin(admin, {
283
+ accounts: {
284
+ admin: this.wallet.publicKey,
285
+ state: await this.getStatePublicKey(),
286
+ },
287
+ });
288
+ }
289
+ async updateMarginRatio(marketIndex, marginRatioInitial, marginRatioPartial, marginRatioMaintenance) {
290
+ return await this.program.rpc.updateMarginRatio(marketIndex, marginRatioInitial, marginRatioPartial, marginRatioMaintenance, {
291
+ accounts: {
292
+ admin: this.wallet.publicKey,
293
+ state: await this.getStatePublicKey(),
294
+ markets: this.getStateAccount().markets,
295
+ },
296
+ });
297
+ }
298
+ async updatePartialLiquidationClosePercentage(numerator, denominator) {
299
+ return await this.program.rpc.updatePartialLiquidationClosePercentage(numerator, denominator, {
300
+ accounts: {
301
+ admin: this.wallet.publicKey,
302
+ state: await this.getStatePublicKey(),
303
+ },
304
+ });
305
+ }
306
+ async updatePartialLiquidationPenaltyPercentage(numerator, denominator) {
307
+ return await this.program.rpc.updatePartialLiquidationPenaltyPercentage(numerator, denominator, {
308
+ accounts: {
309
+ admin: this.wallet.publicKey,
310
+ state: await this.getStatePublicKey(),
311
+ },
312
+ });
313
+ }
314
+ async updateFullLiquidationPenaltyPercentage(numerator, denominator) {
315
+ return await this.program.rpc.updateFullLiquidationPenaltyPercentage(numerator, denominator, {
316
+ accounts: {
317
+ admin: this.wallet.publicKey,
318
+ state: await this.getStatePublicKey(),
319
+ },
320
+ });
321
+ }
322
+ async updatePartialLiquidationShareDenominator(denominator) {
323
+ return await this.program.rpc.updatePartialLiquidationLiquidatorShareDenominator(denominator, {
324
+ accounts: {
325
+ admin: this.wallet.publicKey,
326
+ state: await this.getStatePublicKey(),
327
+ },
328
+ });
329
+ }
330
+ async updateFullLiquidationShareDenominator(denominator) {
331
+ return await this.program.rpc.updateFullLiquidationLiquidatorShareDenominator(denominator, {
332
+ accounts: {
333
+ admin: this.wallet.publicKey,
334
+ state: await this.getStatePublicKey(),
335
+ },
336
+ });
337
+ }
338
+ async updateOrderFillerRewardStructure(orderFillerRewardStructure) {
339
+ return await this.program.rpc.updateOrderFillerRewardStructure(orderFillerRewardStructure, {
340
+ accounts: {
341
+ admin: this.wallet.publicKey,
342
+ state: await this.getStatePublicKey(),
343
+ orderState: await this.getOrderStatePublicKey(),
344
+ },
345
+ });
346
+ }
347
+ async updateFee(fees) {
348
+ return await this.program.rpc.updateFee(fees, {
349
+ accounts: {
350
+ admin: this.wallet.publicKey,
351
+ state: await this.getStatePublicKey(),
352
+ },
353
+ });
354
+ }
355
+ async updateOracleGuardRails(oracleGuardRails) {
356
+ return await this.program.rpc.updateOracleGuardRails(oracleGuardRails, {
357
+ accounts: {
358
+ admin: this.wallet.publicKey,
359
+ state: await this.getStatePublicKey(),
360
+ },
361
+ });
362
+ }
363
+ async updateMarketOracle(marketIndex, oracle, oracleSource) {
364
+ const state = this.getStateAccount();
365
+ return await this.program.rpc.updateMarketOracle(marketIndex, oracle, oracleSource, {
366
+ accounts: {
367
+ admin: this.wallet.publicKey,
368
+ state: await this.getStatePublicKey(),
369
+ markets: state.markets,
370
+ },
371
+ });
372
+ }
373
+ async updateMarketMinimumQuoteAssetTradeSize(marketIndex, minimumTradeSize) {
374
+ const state = this.getStateAccount();
375
+ return await this.program.rpc.updateMarketMinimumQuoteAssetTradeSize(marketIndex, minimumTradeSize, {
376
+ accounts: {
377
+ admin: this.wallet.publicKey,
378
+ state: await this.getStatePublicKey(),
379
+ markets: state.markets,
380
+ },
381
+ });
382
+ }
383
+ async updateMarketMinimumBaseAssetTradeSize(marketIndex, minimumTradeSize) {
384
+ const state = this.getStateAccount();
385
+ return await this.program.rpc.updateMarketMinimumBaseAssetTradeSize(marketIndex, minimumTradeSize, {
386
+ accounts: {
387
+ admin: this.wallet.publicKey,
388
+ state: await this.getStatePublicKey(),
389
+ markets: state.markets,
390
+ },
391
+ });
392
+ }
393
+ async updateWhitelistMint(whitelistMint) {
394
+ return await this.program.rpc.updateWhitelistMint(whitelistMint, {
395
+ accounts: {
396
+ admin: this.wallet.publicKey,
397
+ state: await this.getStatePublicKey(),
398
+ },
399
+ });
400
+ }
401
+ async updateDiscountMint(discountMint) {
402
+ return await this.program.rpc.updateDiscountMint(discountMint, {
403
+ accounts: {
404
+ admin: this.wallet.publicKey,
405
+ state: await this.getStatePublicKey(),
406
+ },
407
+ });
408
+ }
409
+ async updateMaxDeposit(maxDeposit) {
410
+ return await this.program.rpc.updateMaxDeposit(maxDeposit, {
411
+ accounts: {
412
+ admin: this.wallet.publicKey,
413
+ state: await this.getStatePublicKey(),
414
+ },
415
+ });
416
+ }
417
+ async updateFundingPaused(fundingPaused) {
418
+ return await this.program.rpc.updateFundingPaused(fundingPaused, {
419
+ accounts: {
420
+ admin: this.wallet.publicKey,
421
+ state: await this.getStatePublicKey(),
422
+ },
423
+ });
424
+ }
425
+ async updateExchangePaused(exchangePaused) {
426
+ return await this.program.rpc.updateExchangePaused(exchangePaused, {
427
+ accounts: {
428
+ admin: this.wallet.publicKey,
429
+ state: await this.getStatePublicKey(),
430
+ },
431
+ });
432
+ }
433
+ async disableAdminControlsPrices() {
434
+ return await this.program.rpc.disableAdminControlsPrices({
435
+ accounts: {
436
+ admin: this.wallet.publicKey,
437
+ state: await this.getStatePublicKey(),
438
+ },
439
+ });
440
+ }
441
+ }
442
+ exports.Admin = Admin;
443
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["admin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAMyB;AACzB,mCAMiB;AACjB,kDAAqD;AACrD,8DAAgD;AAChD,2CAIqB;AACrB,iDAAqD;AACrD,mDAAgD;AAChD,mEAA6D;AAC7D,wCAAyD;AACzD,oCAA6E;AAC7E,2DAGiC;AAEjC,MAAa,KAAM,SAAQ,6BAAa;IAChC,MAAM,CAAC,IAAI,CACjB,UAAsB,EACtB,MAAe,EACf,sBAAiC,EACjC,OAAuB,iBAAQ,CAAC,cAAc,EAAE;QAEhD,MAAM,MAAM,GAAG,IAAA,+CAA+B,EAC7C,UAAU,EACV,MAAM,EACN,sBAAsB,EACtB,IAAI,CACJ,CAAC;QACF,OAAO,IAAA,wBAAQ,EAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,UAAU,CACtB,QAAmB,EACnB,mBAA4B;QAI5B,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CACzE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAC9B,CAAC;QACF,IAAI,uBAAuB,CAAC,KAAK,KAAK,IAAI,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACtD;QAED,MAAM,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,GACrD,MAAM,mBAAS,CAAC,kBAAkB,CACjC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACjE,IAAI,CAAC,OAAO,CAAC,SAAS,CACtB,CAAC;QAEH,MAAM,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,GAC/D,MAAM,mBAAS,CAAC,kBAAkB,CACjC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,EACrC,IAAI,CAAC,OAAO,CAAC,SAAS,CACtB,CAAC;QAEH,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,GACnD,MAAM,mBAAS,CAAC,kBAAkB,CACjC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CACtB,CAAC;QAEH,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,GAC7D,MAAM,mBAAS,CAAC,kBAAkB,CACjC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EACpC,IAAI,CAAC,OAAO,CAAC,SAAS,CACtB,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1D,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpD,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEpD,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,GACtD,MAAM,IAAA,yDAA6C,EAClD,IAAI,CAAC,OAAO,CAAC,SAAS,CACtB,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAC7D,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,2BAA2B;gBAClC,cAAc,EAAE,QAAQ;gBACxB,eAAe,EAAE,wBAAwB;gBACzC,wBAAwB,EAAE,wBAAwB;gBAClD,cAAc,EAAE,uBAAuB;gBACvC,uBAAuB,EAAE,uBAAuB;gBAChD,OAAO,EAAE,OAAO,CAAC,SAAS;gBAC1B,IAAI,EAAE,4BAAkB;gBACxB,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS;gBAClD,YAAY,EAAE,4BAAgB;aAC9B;YACD,YAAY,EAAE;gBACb,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC;aAC7D;SACD,CACD,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC/C,YAAY,EACZ,CAAC,OAAO,CAAC,EACT,IAAI,CAAC,IAAI,CACT,CAAC;QAEF,MAAM,mBAAmB,GACxB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC;YAChD,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,2BAA2B;gBAClC,cAAc,EAAE,cAAc,CAAC,SAAS;gBACxC,kBAAkB,EAAE,kBAAkB,CAAC,SAAS;gBAChD,qBAAqB,EAAE,qBAAqB,CAAC,SAAS;gBACtD,YAAY,EAAE,YAAY,CAAC,SAAS;gBACpC,kBAAkB,EAAE,kBAAkB,CAAC,SAAS;gBAChD,YAAY,EAAE,YAAY,CAAC,SAAS;gBACpC,IAAI,EAAE,4BAAkB;gBACxB,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS;aAClD;YACD,YAAY,EAAE;gBACb,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAC9D,kBAAkB,CAClB;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,CACjE,qBAAqB,CACrB;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CACxD,YAAY,CACZ;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAC9D,kBAAkB,CAClB;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAC1D,cAAc,CACd;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAChE,YAAY,CACZ;aACD;SACD,CAAC,CAAC;QAEJ,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtD,mBAAmB,EACnB;YACC,cAAc;YACd,qBAAqB;YACrB,YAAY;YACZ,kBAAkB;YAClB,kBAAkB;YAClB,YAAY;SACZ,EACD,IAAI,CAAC,IAAI,CACT,CAAC;QAEF,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEpE,OAAO,CAAC,eAAe,EAAE,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAChC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAC3C,MAAM,IAAA,iDAAqC,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,2BAA2B,GAChC,MAAM,IAAA,iDAAqC,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,sBAAsB,GAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,eAAe,EAAE;YACpE,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,2BAA2B;gBAClC,YAAY,EAAE,YAAY,CAAC,SAAS;gBACpC,UAAU,EAAE,mBAAmB;gBAC/B,IAAI,EAAE,4BAAkB;gBACxB,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS;aAClD;YACD,YAAY,EAAE;gBACb,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CACxD,YAAY,CACZ;aACD;SACD,CAAC,CAAC;QAEJ,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC9B,sBAAsB,EACtB,CAAC,YAAY,CAAC,EACd,IAAI,CAAC,IAAI,CACT,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC5B,WAAe,EACf,WAAsB,EACtB,gBAAoB,EACpB,iBAAqB,EACrB,WAAe,EACf,gBAAoB,gCAAa,EACjC,eAA6B,oBAAY,CAAC,IAAI,EAC9C,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,GAAG,EACxB,sBAAsB,GAAG,GAAG;QAE5B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE;YACzE,MAAM,KAAK,CAAC,eAAe,WAAW,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;SACzE;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CACzE,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO;aACvC;SACD,CACD,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,YAAY,CACxB,gBAAoB,EACpB,iBAAqB,EACrB,WAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CACzC,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CACnB,KAAS,EACT,WAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;QAE/B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE;YACzD,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,oBAAoB;gBACxC,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC9B,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE5D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAChD,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,oBAAoB,EAAE,oBAAoB,CAAC,SAAS;aACpD;YACD,YAAY,EAAE;gBACb,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAChE,oBAAoB,CACpB;aACD;YACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAC/B,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,cAAc,CAC1B,WAAe,EACf,WAAe;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE3C,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,IAAA,iCAAyB,EAC1D,MAAM,EACN,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAC9C,IAAA,mCAA6B,EAC5B,MAAM,CAAC,GAAG,EACV,OAAO,EACP,SAAS,EACT,IAAA,sBAAgB,EAAC,OAAO,EAAE,SAAS,CAAC,CACpC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CACzC,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACzB,MAAU,EACV,WAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;QAE/B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE;YAChE,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,oBAAoB;aACxC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC/B,WAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;QAE/B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC9D,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,oBAAoB;aACxC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC9B,WAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;QAE/B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC7D,QAAQ,EAAE;gBACT,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,oBAAoB;aACxC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACtC,MAAU,EACV,SAAoB;QAEpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,MAAM,EAAE;YAChE,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;gBACtD,SAAS,EAAE,SAAS;gBACpB,YAAY,EAAE,4BAAgB;aAC9B;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CACxB,WAAe,EACf,MAAU,EACV,SAAoB;QAEpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE;YAC/D,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;gBACxD,SAAS,EAAE,SAAS;gBACpB,YAAY,EAAE,4BAAgB;aAC9B;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kCAAkC,CAC9C,WAAe,EACf,MAAU;QAEV,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAC/D,WAAW,EACX,MAAM,EACN;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;gBACtD,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,YAAY,EAAE,4BAAgB;aAC9B;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAgB;QACxC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE;YAChD,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC7B,WAAe,EACf,kBAA0B,EAC1B,kBAA0B,EAC1B,sBAA8B;QAE9B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAC9C,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO;aACvC;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,uCAAuC,CACnD,SAAa,EACb,WAAe;QAEf,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CACpE,SAAS,EACT,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,yCAAyC,CACrD,SAAa,EACb,WAAe;QAEf,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CACtE,SAAS,EACT,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,sCAAsC,CAClD,SAAa,EACb,WAAe;QAEf,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CACnE,SAAS,EACT,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,wCAAwC,CACpD,WAAe;QAEf,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAC/E,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qCAAqC,CACjD,WAAe;QAEf,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAC5E,WAAW,EACX;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,gCAAgC,CAC5C,0BAAsD;QAEtD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAC7D,0BAA0B,EAC1B;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,UAAU,EAAE,MAAM,IAAI,CAAC,sBAAsB,EAAE;aAC/C;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAkB;QACxC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;YAC7C,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAClC,gBAAkC;QAElC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;YACtE,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC9B,WAAe,EACf,MAAiB,EACjB,YAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAC/C,WAAW,EACX,MAAM,EACN,YAAY,EACZ;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,sCAAsC,CAClD,WAAe,EACf,gBAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CACnE,WAAW,EACX,gBAAgB,EAChB;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qCAAqC,CACjD,WAAe,EACf,gBAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAClE,WAAW,EACX,gBAAgB,EAChB;YACC,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACrC,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB;SACD,CACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC/B,aAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE;YAChE,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC9B,YAAuB;QAEvB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAAE;YAC9D,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAAc;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAC1D,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC/B,aAAsB;QAEtB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE;YAChE,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAChC,cAAuB;QAEvB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,cAAc,EAAE;YAClE,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,0BAA0B;QACtC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;YACxD,QAAQ,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC5B,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;aACrC;SACD,CAAC,CAAC;IACJ,CAAC;CACD;AA/qBD,sBA+qBC"}