@resvary/sdk 0.5.0-alpha.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 (171) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +17 -0
  3. package/dist/billing/index.d.ts +3 -0
  4. package/dist/billing/index.d.ts.map +1 -0
  5. package/dist/billing/index.js +3 -0
  6. package/dist/billing/index.js.map +1 -0
  7. package/dist/billing/meter.d.ts +97 -0
  8. package/dist/billing/meter.d.ts.map +1 -0
  9. package/dist/billing/meter.js +109 -0
  10. package/dist/billing/meter.js.map +1 -0
  11. package/dist/billing/plans.d.ts +77 -0
  12. package/dist/billing/plans.d.ts.map +1 -0
  13. package/dist/billing/plans.js +65 -0
  14. package/dist/billing/plans.js.map +1 -0
  15. package/dist/client/buyer.d.ts +82 -0
  16. package/dist/client/buyer.d.ts.map +1 -0
  17. package/dist/client/buyer.js +168 -0
  18. package/dist/client/buyer.js.map +1 -0
  19. package/dist/client/index.d.ts +2 -0
  20. package/dist/client/index.d.ts.map +1 -0
  21. package/dist/client/index.js +2 -0
  22. package/dist/client/index.js.map +1 -0
  23. package/dist/constants.d.ts +36 -0
  24. package/dist/constants.d.ts.map +1 -0
  25. package/dist/constants.js +42 -0
  26. package/dist/constants.js.map +1 -0
  27. package/dist/credits/amount.d.ts +7 -0
  28. package/dist/credits/amount.d.ts.map +1 -0
  29. package/dist/credits/amount.js +36 -0
  30. package/dist/credits/amount.js.map +1 -0
  31. package/dist/credits/errors.d.ts +20 -0
  32. package/dist/credits/errors.d.ts.map +1 -0
  33. package/dist/credits/errors.js +35 -0
  34. package/dist/credits/errors.js.map +1 -0
  35. package/dist/credits/index.d.ts +7 -0
  36. package/dist/credits/index.d.ts.map +1 -0
  37. package/dist/credits/index.js +6 -0
  38. package/dist/credits/index.js.map +1 -0
  39. package/dist/credits/ledger.d.ts +175 -0
  40. package/dist/credits/ledger.d.ts.map +1 -0
  41. package/dist/credits/ledger.js +705 -0
  42. package/dist/credits/ledger.js.map +1 -0
  43. package/dist/credits/store.d.ts +104 -0
  44. package/dist/credits/store.d.ts.map +1 -0
  45. package/dist/credits/store.js +420 -0
  46. package/dist/credits/store.js.map +1 -0
  47. package/dist/credits/types.d.ts +234 -0
  48. package/dist/credits/types.d.ts.map +1 -0
  49. package/dist/credits/types.js +2 -0
  50. package/dist/credits/types.js.map +1 -0
  51. package/dist/credits/webhooks.d.ts +5 -0
  52. package/dist/credits/webhooks.d.ts.map +1 -0
  53. package/dist/credits/webhooks.js +13 -0
  54. package/dist/credits/webhooks.js.map +1 -0
  55. package/dist/funding/arc-worker.d.ts +55 -0
  56. package/dist/funding/arc-worker.d.ts.map +1 -0
  57. package/dist/funding/arc-worker.js +133 -0
  58. package/dist/funding/arc-worker.js.map +1 -0
  59. package/dist/funding/arc.d.ts +38 -0
  60. package/dist/funding/arc.d.ts.map +1 -0
  61. package/dist/funding/arc.js +83 -0
  62. package/dist/funding/arc.js.map +1 -0
  63. package/dist/funding/index.d.ts +3 -0
  64. package/dist/funding/index.d.ts.map +1 -0
  65. package/dist/funding/index.js +3 -0
  66. package/dist/funding/index.js.map +1 -0
  67. package/dist/gateway/client.d.ts +51 -0
  68. package/dist/gateway/client.d.ts.map +1 -0
  69. package/dist/gateway/client.js +59 -0
  70. package/dist/gateway/client.js.map +1 -0
  71. package/dist/gateway/index.d.ts +2 -0
  72. package/dist/gateway/index.d.ts.map +1 -0
  73. package/dist/gateway/index.js +2 -0
  74. package/dist/gateway/index.js.map +1 -0
  75. package/dist/index.d.ts +21 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +20 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/middleware/express.d.ts +25 -0
  80. package/dist/middleware/express.d.ts.map +1 -0
  81. package/dist/middleware/express.js +61 -0
  82. package/dist/middleware/express.js.map +1 -0
  83. package/dist/middleware/index.d.ts +4 -0
  84. package/dist/middleware/index.d.ts.map +1 -0
  85. package/dist/middleware/index.js +4 -0
  86. package/dist/middleware/index.js.map +1 -0
  87. package/dist/middleware/next.d.ts +27 -0
  88. package/dist/middleware/next.d.ts.map +1 -0
  89. package/dist/middleware/next.js +67 -0
  90. package/dist/middleware/next.js.map +1 -0
  91. package/dist/middleware/paywall.d.ts +54 -0
  92. package/dist/middleware/paywall.d.ts.map +1 -0
  93. package/dist/middleware/paywall.js +102 -0
  94. package/dist/middleware/paywall.js.map +1 -0
  95. package/dist/pricing/index.d.ts +3 -0
  96. package/dist/pricing/index.d.ts.map +1 -0
  97. package/dist/pricing/index.js +2 -0
  98. package/dist/pricing/index.js.map +1 -0
  99. package/dist/pricing/rating.d.ts +21 -0
  100. package/dist/pricing/rating.d.ts.map +1 -0
  101. package/dist/pricing/rating.js +109 -0
  102. package/dist/pricing/rating.js.map +1 -0
  103. package/dist/receipts/amount.d.ts +8 -0
  104. package/dist/receipts/amount.d.ts.map +1 -0
  105. package/dist/receipts/amount.js +27 -0
  106. package/dist/receipts/amount.js.map +1 -0
  107. package/dist/receipts/index.d.ts +16 -0
  108. package/dist/receipts/index.d.ts.map +1 -0
  109. package/dist/receipts/index.js +15 -0
  110. package/dist/receipts/index.js.map +1 -0
  111. package/dist/receipts/invoice.d.ts +18 -0
  112. package/dist/receipts/invoice.d.ts.map +1 -0
  113. package/dist/receipts/invoice.js +112 -0
  114. package/dist/receipts/invoice.js.map +1 -0
  115. package/dist/receipts/ledger.d.ts +30 -0
  116. package/dist/receipts/ledger.d.ts.map +1 -0
  117. package/dist/receipts/ledger.js +109 -0
  118. package/dist/receipts/ledger.js.map +1 -0
  119. package/dist/receipts/memo-payment.d.ts +100 -0
  120. package/dist/receipts/memo-payment.d.ts.map +1 -0
  121. package/dist/receipts/memo-payment.js +91 -0
  122. package/dist/receipts/memo-payment.js.map +1 -0
  123. package/dist/receipts/memo.d.ts +14 -0
  124. package/dist/receipts/memo.d.ts.map +1 -0
  125. package/dist/receipts/memo.js +39 -0
  126. package/dist/receipts/memo.js.map +1 -0
  127. package/dist/receipts/persistent-ledger.d.ts +27 -0
  128. package/dist/receipts/persistent-ledger.d.ts.map +1 -0
  129. package/dist/receipts/persistent-ledger.js +111 -0
  130. package/dist/receipts/persistent-ledger.js.map +1 -0
  131. package/dist/receipts/persistent-webhook-inbox.d.ts +32 -0
  132. package/dist/receipts/persistent-webhook-inbox.d.ts.map +1 -0
  133. package/dist/receipts/persistent-webhook-inbox.js +93 -0
  134. package/dist/receipts/persistent-webhook-inbox.js.map +1 -0
  135. package/dist/receipts/proof.d.ts +80 -0
  136. package/dist/receipts/proof.d.ts.map +1 -0
  137. package/dist/receipts/proof.js +223 -0
  138. package/dist/receipts/proof.js.map +1 -0
  139. package/dist/receipts/serialization.d.ts +3 -0
  140. package/dist/receipts/serialization.d.ts.map +1 -0
  141. package/dist/receipts/serialization.js +24 -0
  142. package/dist/receipts/serialization.js.map +1 -0
  143. package/dist/receipts/store.d.ts +69 -0
  144. package/dist/receipts/store.d.ts.map +1 -0
  145. package/dist/receipts/store.js +85 -0
  146. package/dist/receipts/store.js.map +1 -0
  147. package/dist/receipts/types.d.ts +134 -0
  148. package/dist/receipts/types.d.ts.map +1 -0
  149. package/dist/receipts/types.js +5 -0
  150. package/dist/receipts/types.js.map +1 -0
  151. package/dist/receipts/watcher.d.ts +92 -0
  152. package/dist/receipts/watcher.d.ts.map +1 -0
  153. package/dist/receipts/watcher.js +323 -0
  154. package/dist/receipts/watcher.js.map +1 -0
  155. package/dist/receipts/webhook-inbox.d.ts +34 -0
  156. package/dist/receipts/webhook-inbox.d.ts.map +1 -0
  157. package/dist/receipts/webhook-inbox.js +101 -0
  158. package/dist/receipts/webhook-inbox.js.map +1 -0
  159. package/dist/receipts/webhook-route.d.ts +22 -0
  160. package/dist/receipts/webhook-route.d.ts.map +1 -0
  161. package/dist/receipts/webhook-route.js +37 -0
  162. package/dist/receipts/webhook-route.js.map +1 -0
  163. package/dist/receipts/webhooks.d.ts +20 -0
  164. package/dist/receipts/webhooks.d.ts.map +1 -0
  165. package/dist/receipts/webhooks.js +72 -0
  166. package/dist/receipts/webhooks.js.map +1 -0
  167. package/dist/types.d.ts +101 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/types.js +5 -0
  170. package/dist/types.js.map +1 -0
  171. package/package.json +116 -0
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Signed webhook helpers for invoice and receipt events.
3
+ */
4
+ import type { WebhookEvent, WebhookEventType } from './types.js';
5
+ export interface WebhookSignature {
6
+ timestamp: number;
7
+ signature: string;
8
+ header: string;
9
+ }
10
+ export declare function createWebhookEvent<TData>(type: WebhookEventType, data: TData, createdAt?: number): WebhookEvent<TData>;
11
+ export declare function signWebhookEvent(event: WebhookEvent, secret: string, timestamp?: number): WebhookSignature;
12
+ export declare function verifyWebhookSignature(params: {
13
+ payload: WebhookEvent | string;
14
+ header: string;
15
+ secret: string;
16
+ toleranceSeconds?: number;
17
+ now?: number;
18
+ }): boolean;
19
+ export declare function serializeWebhookPayload(event: WebhookEvent): string;
20
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/receipts/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EACtC,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,KAAK,EACX,SAAS,SAAa,GACrB,YAAY,CAAC,KAAK,CAAC,CAOrB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,SAAgC,GACxC,gBAAgB,CASlB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAkBV;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Signed webhook helpers for invoice and receipt events.
3
+ */
4
+ import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
5
+ import { serializeReceiptStoreValue } from './serialization.js';
6
+ export function createWebhookEvent(type, data, createdAt = Date.now()) {
7
+ return {
8
+ id: `evt_${randomBytes(12).toString('hex')}`,
9
+ type,
10
+ createdAt,
11
+ data,
12
+ };
13
+ }
14
+ export function signWebhookEvent(event, secret, timestamp = Math.floor(Date.now() / 1000)) {
15
+ const payload = serializeWebhookPayload(event);
16
+ const signature = createWebhookSignature(payload, secret, timestamp);
17
+ return {
18
+ timestamp,
19
+ signature,
20
+ header: `t=${timestamp},v1=${signature}`,
21
+ };
22
+ }
23
+ export function verifyWebhookSignature(params) {
24
+ const parsed = parseWebhookSignatureHeader(params.header);
25
+ if (!parsed) {
26
+ return false;
27
+ }
28
+ const now = params.now ?? Math.floor(Date.now() / 1000);
29
+ const toleranceSeconds = params.toleranceSeconds ?? 300;
30
+ if (Math.abs(now - parsed.timestamp) > toleranceSeconds) {
31
+ return false;
32
+ }
33
+ const payload = typeof params.payload === 'string'
34
+ ? params.payload
35
+ : serializeWebhookPayload(params.payload);
36
+ const expected = createWebhookSignature(payload, params.secret, parsed.timestamp);
37
+ return timingSafeStringEqual(expected, parsed.signature);
38
+ }
39
+ export function serializeWebhookPayload(event) {
40
+ return serializeReceiptStoreValue(event);
41
+ }
42
+ function createWebhookSignature(payload, secret, timestamp) {
43
+ return createHmac('sha256', secret)
44
+ .update(`${timestamp}.${payload}`)
45
+ .digest('hex');
46
+ }
47
+ function parseWebhookSignatureHeader(header) {
48
+ const parts = Object.fromEntries(header.split(',').map((part) => {
49
+ const [key, value] = part.split('=');
50
+ return [key, value];
51
+ }));
52
+ if (!parts.t || !parts.v1) {
53
+ return null;
54
+ }
55
+ const timestamp = Number(parts.t);
56
+ if (!Number.isSafeInteger(timestamp)) {
57
+ return null;
58
+ }
59
+ return {
60
+ timestamp,
61
+ signature: parts.v1,
62
+ };
63
+ }
64
+ function timingSafeStringEqual(a, b) {
65
+ const aBuffer = Buffer.from(a);
66
+ const bBuffer = Buffer.from(b);
67
+ if (aBuffer.length !== bBuffer.length) {
68
+ return false;
69
+ }
70
+ return timingSafeEqual(aBuffer, bBuffer);
71
+ }
72
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/receipts/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Core type definitions for Resvary.
3
+ */
4
+ /** Supported x402 protocol versions */
5
+ export type X402Version = 1 | 2;
6
+ /** Supported payment schemes */
7
+ export type PaymentScheme = 'exact' | 'upto';
8
+ /** Network configuration for Arc or other EVM chains */
9
+ export interface NetworkConfig {
10
+ /** Chain ID (e.g., 5042002 for Arc Testnet) */
11
+ readonly chainId: number;
12
+ /** RPC endpoint URL */
13
+ readonly rpcUrl: string;
14
+ /** Human-readable network name */
15
+ readonly name: string;
16
+ /** USDC contract address on this network */
17
+ readonly usdcAddress: `0x${string}`;
18
+ /** Block explorer URL */
19
+ readonly explorerUrl: string;
20
+ /** CCTP Domain ID for cross-chain operations */
21
+ readonly cctpDomainId?: number;
22
+ }
23
+ /** Payment requirements returned in 402 response */
24
+ export interface PaymentRequirements {
25
+ /** x402 protocol version */
26
+ x402Version: X402Version;
27
+ /** Payment scheme type */
28
+ scheme: PaymentScheme;
29
+ /** Target network identifier */
30
+ network: string;
31
+ /** Payment amount in USDC (human-readable, e.g., "0.001") */
32
+ maxAmountRequired: string;
33
+ /** Seller's payment receiving address */
34
+ payTo: `0x${string}`;
35
+ /** Human-readable description of what's being purchased */
36
+ description?: string;
37
+ /** Additional resource metadata */
38
+ resource?: string;
39
+ /** MIME type of the resource */
40
+ mimeType?: string;
41
+ /** Expiration timestamp (Unix seconds) */
42
+ expiry?: number;
43
+ }
44
+ /** Payment payload sent in X-PAYMENT header */
45
+ export interface PaymentPayload {
46
+ /** x402 protocol version */
47
+ x402Version: X402Version;
48
+ /** Payment scheme */
49
+ scheme: PaymentScheme;
50
+ /** Target network */
51
+ network: string;
52
+ /** Signed payment authorization */
53
+ payload: {
54
+ /** EIP-3009 transferWithAuthorization signature */
55
+ signature: `0x${string}`;
56
+ /** Authorization details */
57
+ authorization: {
58
+ /** Buyer's address */
59
+ from: `0x${string}`;
60
+ /** Seller's address */
61
+ to: `0x${string}`;
62
+ /** Payment amount in smallest unit (6 decimals for USDC) */
63
+ value: string;
64
+ /** Authorization valid-after timestamp */
65
+ validAfter: string;
66
+ /** Authorization valid-before timestamp */
67
+ validBefore: string;
68
+ /** Unique nonce to prevent replay */
69
+ nonce: `0x${string}`;
70
+ };
71
+ };
72
+ }
73
+ /** Result of a payment verification */
74
+ export interface PaymentResult {
75
+ /** Whether payment was successfully verified */
76
+ success: boolean;
77
+ /** Transaction hash if settled on-chain */
78
+ transactionHash?: `0x${string}`;
79
+ /** Settlement status */
80
+ settlementStatus: 'pending' | 'batched' | 'settled' | 'failed';
81
+ /** Amount paid in USDC */
82
+ amount: string;
83
+ /** Buyer's address */
84
+ from: `0x${string}`;
85
+ /** Timestamp of payment */
86
+ timestamp: number;
87
+ }
88
+ /** Configuration for a paywalled endpoint */
89
+ export interface EndpointConfig {
90
+ /** Price in USDC per unit (depends on pricing model) */
91
+ price: string;
92
+ /** Network identifier (default: 'arc-testnet') */
93
+ network?: string;
94
+ /** Human-readable endpoint description */
95
+ description?: string;
96
+ /** Payment scheme (default: 'exact') */
97
+ scheme?: PaymentScheme;
98
+ /** Custom payment verification function */
99
+ verifyPayment?: (payload: PaymentPayload) => Promise<PaymentResult>;
100
+ }
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core type definitions for Resvary.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,116 @@
1
+ {
2
+ "name": "@resvary/sdk",
3
+ "version": "0.5.0-alpha.1",
4
+ "description": "Prepaid credits and usage billing SDK for AI products",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./middleware": {
14
+ "types": "./dist/middleware/index.d.ts",
15
+ "import": "./dist/middleware/index.js"
16
+ },
17
+ "./client": {
18
+ "types": "./dist/client/index.d.ts",
19
+ "import": "./dist/client/index.js"
20
+ },
21
+ "./billing": {
22
+ "types": "./dist/billing/index.d.ts",
23
+ "import": "./dist/billing/index.js"
24
+ },
25
+ "./credits": {
26
+ "types": "./dist/credits/index.d.ts",
27
+ "import": "./dist/credits/index.js"
28
+ },
29
+ "./pricing": {
30
+ "types": "./dist/pricing/index.d.ts",
31
+ "import": "./dist/pricing/index.js"
32
+ },
33
+ "./funding/arc": {
34
+ "types": "./dist/funding/arc.d.ts",
35
+ "import": "./dist/funding/arc.js"
36
+ },
37
+ "./funding": {
38
+ "types": "./dist/funding/index.d.ts",
39
+ "import": "./dist/funding/index.js"
40
+ },
41
+ "./gateway": {
42
+ "types": "./dist/gateway/index.d.ts",
43
+ "import": "./dist/gateway/index.js"
44
+ },
45
+ "./receipts": {
46
+ "types": "./dist/receipts/index.d.ts",
47
+ "import": "./dist/receipts/index.js"
48
+ }
49
+ },
50
+ "files": [
51
+ "dist",
52
+ "README.md",
53
+ "LICENSE"
54
+ ],
55
+ "publishConfig": {
56
+ "access": "public",
57
+ "tag": "alpha"
58
+ },
59
+ "scripts": {
60
+ "build": "tsc",
61
+ "dev": "tsc --watch",
62
+ "clean": "node -e \"const fs=require('node:fs');fs.rmSync('dist',{recursive:true,force:true});fs.rmSync('tsconfig.tsbuildinfo',{force:true})\"",
63
+ "test": "vitest run",
64
+ "typecheck": "tsc --noEmit"
65
+ },
66
+ "keywords": [
67
+ "ai-credits",
68
+ "prepaid-credits",
69
+ "usage-metering",
70
+ "ledger",
71
+ "arc",
72
+ "circle",
73
+ "usdc",
74
+ "nanopayments",
75
+ "x402",
76
+ "billing",
77
+ "middleware",
78
+ "paid-api",
79
+ "micropayments",
80
+ "usage-based-billing",
81
+ "receipts",
82
+ "invoices",
83
+ "webhooks"
84
+ ],
85
+ "author": "horn111",
86
+ "license": "Apache-2.0",
87
+ "repository": {
88
+ "type": "git",
89
+ "url": "https://github.com/horn111/resvary.git",
90
+ "directory": "packages/sdk"
91
+ },
92
+ "homepage": "https://github.com/horn111/resvary#readme",
93
+ "bugs": {
94
+ "url": "https://github.com/horn111/resvary/issues"
95
+ },
96
+ "dependencies": {
97
+ "viem": "^2.55.8"
98
+ },
99
+ "peerDependencies": {
100
+ "express": ">=4.0.0",
101
+ "next": ">=14.0.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "express": {
105
+ "optional": true
106
+ },
107
+ "next": {
108
+ "optional": true
109
+ }
110
+ },
111
+ "devDependencies": {
112
+ "@types/express": "^5.0.0",
113
+ "typescript": "^5.6.0",
114
+ "vitest": "^4.1.10"
115
+ }
116
+ }