@polymarket/clob-client-v2 1.0.0 → 1.0.1

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 (148) hide show
  1. package/dist/index.cjs +2495 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +1000 -0
  4. package/dist/index.d.ts +1000 -8
  5. package/dist/index.js +2437 -8
  6. package/dist/index.js.map +1 -1
  7. package/package.json +12 -5
  8. package/dist/client.d.ts +0 -139
  9. package/dist/client.js +0 -973
  10. package/dist/client.js.map +0 -1
  11. package/dist/config.d.ts +0 -14
  12. package/dist/config.js +0 -32
  13. package/dist/config.js.map +0 -1
  14. package/dist/constants.d.ts +0 -6
  15. package/dist/constants.js +0 -10
  16. package/dist/constants.js.map +0 -1
  17. package/dist/endpoints.d.ts +0 -60
  18. package/dist/endpoints.js +0 -75
  19. package/dist/endpoints.js.map +0 -1
  20. package/dist/errors.d.ts +0 -7
  21. package/dist/errors.js +0 -13
  22. package/dist/errors.js.map +0 -1
  23. package/dist/headers/index.d.ts +0 -4
  24. package/dist/headers/index.js +0 -38
  25. package/dist/headers/index.js.map +0 -1
  26. package/dist/http-helpers/index.d.ts +0 -18
  27. package/dist/http-helpers/index.js +0 -124
  28. package/dist/http-helpers/index.js.map +0 -1
  29. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.d.ts +0 -5
  30. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +0 -37
  31. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +0 -1
  32. package/dist/order-builder/helpers/buildOrder.d.ts +0 -14
  33. package/dist/order-builder/helpers/buildOrder.js +0 -29
  34. package/dist/order-builder/helpers/buildOrder.js.map +0 -1
  35. package/dist/order-builder/helpers/buildOrderCreationArgs.d.ts +0 -5
  36. package/dist/order-builder/helpers/buildOrderCreationArgs.js +0 -39
  37. package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +0 -1
  38. package/dist/order-builder/helpers/calculateBuyMarketPrice.d.ts +0 -8
  39. package/dist/order-builder/helpers/calculateBuyMarketPrice.js +0 -34
  40. package/dist/order-builder/helpers/calculateBuyMarketPrice.js.map +0 -1
  41. package/dist/order-builder/helpers/calculateSellMarketPrice.d.ts +0 -8
  42. package/dist/order-builder/helpers/calculateSellMarketPrice.js +0 -34
  43. package/dist/order-builder/helpers/calculateSellMarketPrice.js.map +0 -1
  44. package/dist/order-builder/helpers/createMarketOrder.d.ts +0 -5
  45. package/dist/order-builder/helpers/createMarketOrder.js +0 -33
  46. package/dist/order-builder/helpers/createMarketOrder.js.map +0 -1
  47. package/dist/order-builder/helpers/createOrder.d.ts +0 -5
  48. package/dist/order-builder/helpers/createOrder.js +0 -33
  49. package/dist/order-builder/helpers/createOrder.js.map +0 -1
  50. package/dist/order-builder/helpers/getMarketOrderRawAmounts.d.ts +0 -6
  51. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +0 -37
  52. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +0 -1
  53. package/dist/order-builder/helpers/getOrderRawAmounts.d.ts +0 -6
  54. package/dist/order-builder/helpers/getOrderRawAmounts.js +0 -37
  55. package/dist/order-builder/helpers/getOrderRawAmounts.js.map +0 -1
  56. package/dist/order-builder/helpers/index.d.ts +0 -10
  57. package/dist/order-builder/helpers/index.js +0 -11
  58. package/dist/order-builder/helpers/index.js.map +0 -1
  59. package/dist/order-builder/helpers/roundingConfig.d.ts +0 -2
  60. package/dist/order-builder/helpers/roundingConfig.js +0 -23
  61. package/dist/order-builder/helpers/roundingConfig.js.map +0 -1
  62. package/dist/order-builder/index.d.ts +0 -1
  63. package/dist/order-builder/index.js +0 -2
  64. package/dist/order-builder/index.js.map +0 -1
  65. package/dist/order-builder/orderBuilder.d.ts +0 -28
  66. package/dist/order-builder/orderBuilder.js +0 -52
  67. package/dist/order-builder/orderBuilder.js.map +0 -1
  68. package/dist/order-utils/abi/ExchangeV1.d.ts +0 -1444
  69. package/dist/order-utils/abi/ExchangeV1.js +0 -1853
  70. package/dist/order-utils/abi/ExchangeV1.js.map +0 -1
  71. package/dist/order-utils/abi/ExchangeV2.d.ts +0 -1259
  72. package/dist/order-utils/abi/ExchangeV2.js +0 -1614
  73. package/dist/order-utils/abi/ExchangeV2.js.map +0 -1
  74. package/dist/order-utils/exchangeOrderBuilderV1.d.ts +0 -42
  75. package/dist/order-utils/exchangeOrderBuilderV1.js +0 -148
  76. package/dist/order-utils/exchangeOrderBuilderV1.js.map +0 -1
  77. package/dist/order-utils/exchangeOrderBuilderV2.d.ts +0 -42
  78. package/dist/order-utils/exchangeOrderBuilderV2.js +0 -119
  79. package/dist/order-utils/exchangeOrderBuilderV2.js.map +0 -1
  80. package/dist/order-utils/index.d.ts +0 -2711
  81. package/dist/order-utils/index.js +0 -13
  82. package/dist/order-utils/index.js.map +0 -1
  83. package/dist/order-utils/model/abi.d.ts +0 -21
  84. package/dist/order-utils/model/abi.js +0 -2
  85. package/dist/order-utils/model/abi.js.map +0 -1
  86. package/dist/order-utils/model/ctfExchangeV1TypedData.d.ts +0 -6
  87. package/dist/order-utils/model/ctfExchangeV1TypedData.js +0 -17
  88. package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +0 -1
  89. package/dist/order-utils/model/ctfExchangeV2TypedData.d.ts +0 -6
  90. package/dist/order-utils/model/ctfExchangeV2TypedData.js +0 -16
  91. package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +0 -1
  92. package/dist/order-utils/model/eip712.d.ts +0 -29
  93. package/dist/order-utils/model/eip712.js +0 -7
  94. package/dist/order-utils/model/eip712.js.map +0 -1
  95. package/dist/order-utils/model/order.d.ts +0 -2
  96. package/dist/order-utils/model/order.js +0 -2
  97. package/dist/order-utils/model/order.js.map +0 -1
  98. package/dist/order-utils/model/orderDataV1.d.ts +0 -111
  99. package/dist/order-utils/model/orderDataV1.js +0 -2
  100. package/dist/order-utils/model/orderDataV1.js.map +0 -1
  101. package/dist/order-utils/model/orderDataV2.d.ts +0 -110
  102. package/dist/order-utils/model/orderDataV2.js +0 -2
  103. package/dist/order-utils/model/orderDataV2.js.map +0 -1
  104. package/dist/order-utils/model/side.d.ts +0 -4
  105. package/dist/order-utils/model/side.js +0 -6
  106. package/dist/order-utils/model/side.js.map +0 -1
  107. package/dist/order-utils/model/signatureTypeV1.d.ts +0 -14
  108. package/dist/order-utils/model/signatureTypeV1.js +0 -16
  109. package/dist/order-utils/model/signatureTypeV1.js.map +0 -1
  110. package/dist/order-utils/model/signatureTypeV2.d.ts +0 -18
  111. package/dist/order-utils/model/signatureTypeV2.js +0 -20
  112. package/dist/order-utils/model/signatureTypeV2.js.map +0 -1
  113. package/dist/order-utils/utils.d.ts +0 -1
  114. package/dist/order-utils/utils.js +0 -4
  115. package/dist/order-utils/utils.js.map +0 -1
  116. package/dist/signing/constants.d.ts +0 -14
  117. package/dist/signing/constants.js +0 -16
  118. package/dist/signing/constants.js.map +0 -1
  119. package/dist/signing/eip712.d.ts +0 -9
  120. package/dist/signing/eip712.js +0 -40
  121. package/dist/signing/eip712.js.map +0 -1
  122. package/dist/signing/hmac.d.ts +0 -9
  123. package/dist/signing/hmac.js +0 -27
  124. package/dist/signing/hmac.js.map +0 -1
  125. package/dist/signing/index.d.ts +0 -3
  126. package/dist/signing/index.js +0 -4
  127. package/dist/signing/index.js.map +0 -1
  128. package/dist/signing/signer.d.ts +0 -22
  129. package/dist/signing/signer.js +0 -50
  130. package/dist/signing/signer.js.map +0 -1
  131. package/dist/types/clob.d.ts +0 -398
  132. package/dist/types/clob.js +0 -28
  133. package/dist/types/clob.js.map +0 -1
  134. package/dist/types/index.d.ts +0 -4
  135. package/dist/types/index.js +0 -5
  136. package/dist/types/index.js.map +0 -1
  137. package/dist/types/ordersV1.d.ts +0 -108
  138. package/dist/types/ordersV1.js +0 -24
  139. package/dist/types/ordersV1.js.map +0 -1
  140. package/dist/types/ordersV2.d.ts +0 -99
  141. package/dist/types/ordersV2.js +0 -25
  142. package/dist/types/ordersV2.js.map +0 -1
  143. package/dist/types/unifiedOrder.d.ts +0 -38
  144. package/dist/types/unifiedOrder.js +0 -9
  145. package/dist/types/unifiedOrder.js.map +0 -1
  146. package/dist/utilities.d.ts +0 -13
  147. package/dist/utilities.js +0 -47
  148. package/dist/utilities.js.map +0 -1
@@ -1,99 +0,0 @@
1
- import type { SignatureTypeV2, SignedOrderV2 } from "../order-utils/index.js";
2
- import type { OrderType, Side } from "./clob.js";
3
- export declare function orderToJsonV2<T extends OrderType>(order: SignedOrderV2, owner: string, orderType: T, postOnly?: boolean, deferExec?: boolean): NewOrderV2<T>;
4
- export interface PostOrdersV2Args {
5
- order: SignedOrderV2;
6
- orderType: OrderType;
7
- }
8
- export interface NewOrderV2<T extends OrderType> {
9
- readonly order: {
10
- readonly salt: number;
11
- readonly maker: string;
12
- readonly signer: string;
13
- readonly taker: string;
14
- readonly tokenId: string;
15
- readonly makerAmount: string;
16
- readonly takerAmount: string;
17
- readonly side: string;
18
- readonly signatureType: SignatureTypeV2;
19
- readonly timestamp: string;
20
- readonly expiration: string;
21
- readonly metadata: string;
22
- readonly builder: string;
23
- readonly signature: string;
24
- };
25
- readonly owner: string;
26
- readonly orderType: T;
27
- readonly deferExec: boolean;
28
- readonly postOnly: boolean;
29
- }
30
- export interface UserOrderV2 {
31
- /**
32
- * TokenID of the Conditional token asset being traded
33
- */
34
- tokenID: string;
35
- /**
36
- * Price used to create the order
37
- */
38
- price: number;
39
- /**
40
- * Size in terms of the ConditionalToken
41
- */
42
- size: number;
43
- /**
44
- * Side of the order
45
- */
46
- side: Side;
47
- /**
48
- * Metadata (bytes32)
49
- */
50
- metadata?: string;
51
- /**
52
- * Builder code (bytes32)
53
- */
54
- builderCode?: string;
55
- /**
56
- * Expiration timestamp (unix seconds). Defaults to 0 (no expiration).
57
- */
58
- expiration?: number;
59
- }
60
- export interface UserMarketOrderV2 {
61
- /**
62
- * TokenID of the Conditional token asset being traded
63
- */
64
- tokenID: string;
65
- /**
66
- * Price used to create the order
67
- * If it is not present the market price will be used.
68
- */
69
- price?: number;
70
- /**
71
- * BUY orders: $$$ Amount to buy
72
- * SELL orders: Shares to sell
73
- */
74
- amount: number;
75
- /**
76
- * Side of the order
77
- */
78
- side: Side;
79
- /**
80
- * Specifies the type of order execution:
81
- * - FOK (Fill or Kill): The order must be filled entirely or not at all.
82
- * - FAK (Fill and Kill): The order can be partially filled, and any unfilled portion is canceled.
83
- */
84
- orderType?: OrderType.FOK | OrderType.FAK;
85
- /**
86
- * User's USDC balance. If provided and sufficient to cover amount + fees, the order
87
- * amount is used as-is. Otherwise fees are deducted from the amount.
88
- * If this field is left empty, the default flow is to use the order amount as-is
89
- */
90
- userUSDCBalance?: number;
91
- /**
92
- * Metadata (bytes32)
93
- */
94
- metadata?: string;
95
- /**
96
- * Builder code (bytes32)
97
- */
98
- builderCode?: string;
99
- }
@@ -1,25 +0,0 @@
1
- export function orderToJsonV2(order, owner, orderType, postOnly = false, deferExec = false) {
2
- return {
3
- deferExec,
4
- postOnly,
5
- order: {
6
- salt: parseInt(order.salt, 10),
7
- maker: order.maker,
8
- signer: order.signer,
9
- taker: order.taker,
10
- tokenId: order.tokenId,
11
- makerAmount: order.makerAmount,
12
- takerAmount: order.takerAmount,
13
- side: order.side,
14
- signatureType: order.signatureType,
15
- timestamp: order.timestamp,
16
- expiration: order.expiration,
17
- metadata: order.metadata,
18
- builder: order.builder,
19
- signature: order.signature,
20
- },
21
- owner,
22
- orderType,
23
- };
24
- }
25
- //# sourceMappingURL=ordersV2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ordersV2.js","sourceRoot":"","sources":["../../src/types/ordersV2.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,aAAa,CAC5B,KAAoB,EACpB,KAAa,EACb,SAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK;IAEjB,OAAO;QACN,SAAS;QACT,QAAQ;QACR,KAAK,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC1B;QACD,KAAK;QACL,SAAS;KACQ,CAAC;AACpB,CAAC"}
@@ -1,38 +0,0 @@
1
- import type { SignedOrderV1, SignedOrderV2 } from "../order-utils/index.js";
2
- import type { OrderType } from "./clob.js";
3
- import type { PostOrdersV1Args, UserMarketOrderV1, UserOrderV1 } from "./ordersV1.js";
4
- import type { PostOrdersV2Args, UserMarketOrderV2, UserOrderV2 } from "./ordersV2.js";
5
- export type SignedOrder = SignedOrderV1 | SignedOrderV2;
6
- export type PostOrdersArgs = {
7
- order: SignedOrder;
8
- orderType: OrderType;
9
- };
10
- export type VersionedSignedOrder = {
11
- version: 1;
12
- order: SignedOrderV1;
13
- } | {
14
- version: 2;
15
- order: SignedOrderV2;
16
- };
17
- export type VersionedUserOrder = {
18
- version: 1;
19
- order: UserOrderV1;
20
- } | {
21
- version: 2;
22
- order: UserOrderV2;
23
- };
24
- export type VersionedUserMarketOrder = {
25
- version: 1;
26
- order: UserMarketOrderV1;
27
- } | {
28
- version: 2;
29
- order: UserMarketOrderV2;
30
- };
31
- export type VersionedPostOrdersArgs = {
32
- version: 1;
33
- args: PostOrdersV1Args;
34
- } | {
35
- version: 2;
36
- args: PostOrdersV2Args;
37
- };
38
- export declare function isV2Order(order: SignedOrder | VersionedSignedOrder): order is SignedOrderV2;
@@ -1,9 +0,0 @@
1
- export function isV2Order(order) {
2
- if ("version" in order && "order" in order) {
3
- // VersionedSignedOrder type
4
- return order.version === 2;
5
- }
6
- // Check for V2-specific fields
7
- return "timestamp" in order && "metadata" in order && "builder" in order;
8
- }
9
- //# sourceMappingURL=unifiedOrder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unifiedOrder.js","sourceRoot":"","sources":["../../src/types/unifiedOrder.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,SAAS,CAAC,KAAyC;IAClE,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5C,4BAA4B;QAC5B,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,+BAA+B;IAC/B,OAAO,WAAW,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC;AAC1E,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { OrderBookSummary, TickSize } from "./types/index.js";
2
- export declare const roundNormal: (num: number, decimals: number) => number;
3
- export declare const roundDown: (num: number, decimals: number) => number;
4
- export declare const roundUp: (num: number, decimals: number) => number;
5
- export declare const decimalPlaces: (num: number) => number;
6
- /**
7
- * Calculates the hash for the given orderbook
8
- * @param orderbook
9
- * @returns
10
- */
11
- export declare const generateOrderBookSummaryHash: (orderbook: OrderBookSummary) => string;
12
- export declare const isTickSizeSmaller: (a: TickSize, b: TickSize) => boolean;
13
- export declare const priceValid: (price: number, tickSize: TickSize) => boolean;
package/dist/utilities.js DELETED
@@ -1,47 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- export const roundNormal = (num, decimals) => {
3
- if (decimalPlaces(num) <= decimals) {
4
- return num;
5
- }
6
- return Math.round((num + Number.EPSILON) * 10 ** decimals) / 10 ** decimals;
7
- };
8
- export const roundDown = (num, decimals) => {
9
- if (decimalPlaces(num) <= decimals) {
10
- return num;
11
- }
12
- return Math.floor(num * 10 ** decimals) / 10 ** decimals;
13
- };
14
- export const roundUp = (num, decimals) => {
15
- if (decimalPlaces(num) <= decimals) {
16
- return num;
17
- }
18
- return Math.ceil(num * 10 ** decimals) / 10 ** decimals;
19
- };
20
- export const decimalPlaces = (num) => {
21
- if (Number.isInteger(num)) {
22
- return 0;
23
- }
24
- const arr = num.toString().split(".");
25
- if (arr.length <= 1) {
26
- return 0;
27
- }
28
- return arr[1].length;
29
- };
30
- /**
31
- * Calculates the hash for the given orderbook
32
- * @param orderbook
33
- * @returns
34
- */
35
- export const generateOrderBookSummaryHash = (orderbook) => {
36
- orderbook.hash = "";
37
- const hash = createHash("sha1").update(JSON.stringify(orderbook)).digest("hex");
38
- orderbook.hash = hash;
39
- return hash;
40
- };
41
- export const isTickSizeSmaller = (a, b) => {
42
- return parseFloat(a) < parseFloat(b);
43
- };
44
- export const priceValid = (price, tickSize) => {
45
- return price >= parseFloat(tickSize) && price <= 1 - parseFloat(tickSize);
46
- };
47
- //# sourceMappingURL=utilities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IACpE,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IAClE,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IAChE,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAU,EAAE;IACpD,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,SAA2B,EAAU,EAAE;IACnF,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;IACpB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChF,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,CAAW,EAAW,EAAE;IACtE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAW,EAAE;IACxE,OAAO,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC,CAAC"}