@pact-foundation/pact 16.3.0 → 16.3.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.
- package/CHANGELOG.md +9 -3
- package/README.md +6 -2
- package/package.json +13 -8
- package/src/pact.integration.spec.js +52 -0
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/ffi.d.ts +2 -2
- package/src/v3/ffi.js +4 -2
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.d.ts +1 -0
- package/src/v3/ffi.spec.js +50 -0
- package/src/v3/ffi.spec.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [16.3.1](https://github.com/pact-foundation/pact-js/compare/v16.3.0...v16.3.1) (2026-04-29)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Fixes and Improvements
|
|
9
|
+
|
|
10
|
+
* extract content type from matchers ([5913a8e](https://github.com/pact-foundation/pact-js/commit/5913a8eb2a0c1520bd4e2f46be7a738d14782ab0))
|
|
11
|
+
|
|
5
12
|
## [16.3.0](https://github.com/pact-foundation/pact-js/compare/v16.2.0...v16.3.0) (2026-03-11)
|
|
6
13
|
|
|
7
14
|
|
|
@@ -56,7 +63,7 @@ All notable changes to this project will be documented in this file. See [commit
|
|
|
56
63
|
|
|
57
64
|
* **deps:** update dependency ramda to ^0.32.0 ([#1578](https://github.com/pact-foundation/pact-js/issues/1578)) ([efb267f](https://github.com/pact-foundation/pact-js/commit/efb267fb41ae006b192ba602a224fd6565972e60))
|
|
58
65
|
* Pact-JS Verifier Proxy Cannot Handle Root Path ([#1582](https://github.com/pact-foundation/pact-js/issues/1582)) ([983f5b3](https://github.com/pact-foundation/pact-js/commit/983f5b3db96454ea0c0be72f7f2cc5bef14d4669)), closes [#1581](https://github.com/pact-foundation/pact-js/issues/1581)
|
|
59
|
-
* use
|
|
66
|
+
* use `/{*splat}` for express proxy routes to match root and wildcard subpaths ([cf95657](https://github.com/pact-foundation/pact-js/commit/cf95657294aaab9bf8500f29d5419c22c9b7fe60))
|
|
60
67
|
|
|
61
68
|
## [16.0.0](https://github.com/pact-foundation/pact-js/compare/v15.0.1...v16.0.0) (2025-10-07)
|
|
62
69
|
|
|
@@ -1707,14 +1714,13 @@ different state phases.
|
|
|
1707
1714
|
|
|
1708
1715
|
### Fixes and Improvements
|
|
1709
1716
|
|
|
1710
|
-
<<<<<<< HEAD
|
|
1711
1717
|
* **pact-node:** bump dependency on pact-node ([a200414](https://github.com/pact-foundation/pact-js/commit/a2004143782be418b59a8266834c6aa8e6d2a1ef))
|
|
1712
1718
|
|
|
1713
1719
|
### [9.15.1](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.31...v9.15.1) (2021-02-23)
|
|
1714
1720
|
* Bump pact-node version to get vulnerability fixes ([bc0e7f0](https://github.com/pact-foundation/pact-js/commit/bc0e7f019ef8585d4fc5c980575e0ec0a72f1b65))
|
|
1715
1721
|
|
|
1716
1722
|
### [9.15.3](https://github.com/pact-foundation/pact-js/compare/v9.15.2...v9.15.3) (2021-03-10)
|
|
1717
|
-
|
|
1723
|
+
|
|
1718
1724
|
* package.json & package-lock.json to reduce vulnerabilities ([aa8036c](https://github.com/pact-foundation/pact-js/commit/aa8036c2dd424d351d2afab003c1e539e2bc6e85))
|
|
1719
1725
|
|
|
1720
1726
|
## [9.15.0](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.29...v9.15.0) (2021-02-02)
|
package/README.md
CHANGED
|
@@ -246,7 +246,9 @@ It's best to run Pact verification tests as part of your unit testing suite, so
|
|
|
246
246
|
|
|
247
247
|
## Compatibility
|
|
248
248
|
|
|
249
|
-
<details
|
|
249
|
+
<details>
|
|
250
|
+
|
|
251
|
+
<summary>Specification Compatibility</summary>
|
|
250
252
|
|
|
251
253
|
| Version | Stable | [Spec] Compatibility | Install |
|
|
252
254
|
| ------- | ------ | -------------------- | ------------------ |
|
|
@@ -258,7 +260,9 @@ _\*_ v3 support is limited to the subset of functionality required to enable lan
|
|
|
258
260
|
|
|
259
261
|
</details>
|
|
260
262
|
|
|
261
|
-
<details
|
|
263
|
+
<details>
|
|
264
|
+
|
|
265
|
+
<summary>Supported Platforms</summary>
|
|
262
266
|
|
|
263
267
|
| OS | Architecture | Supported | Pact-JS Version |
|
|
264
268
|
| ------------- | ------------ | --------- | ---------------- |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pact-foundation/pact",
|
|
3
|
-
"version": "16.3.
|
|
3
|
+
"version": "16.3.1",
|
|
4
4
|
"description": "Pact for all things Javascript",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"devDependencies": {
|
|
123
123
|
"@babel/cli": "7.28.6",
|
|
124
124
|
"@babel/core": "7.29.0",
|
|
125
|
-
"@babel/preset-env": "7.29.
|
|
125
|
+
"@babel/preset-env": "7.29.2",
|
|
126
126
|
"@pact-foundation/pact-js-prettier-config": "1.0.0",
|
|
127
127
|
"@types/chai": "5.2.3",
|
|
128
128
|
"@types/chai-as-promised": "8.0.2",
|
|
@@ -131,35 +131,40 @@
|
|
|
131
131
|
"@types/lodash": "4.17.24",
|
|
132
132
|
"@types/mocha": "10.0.10",
|
|
133
133
|
"@types/nock": "11.1.0",
|
|
134
|
-
"@types/node": "24.12.
|
|
134
|
+
"@types/node": "24.12.2",
|
|
135
135
|
"@types/ramda": "0.31.1",
|
|
136
|
-
"@types/sinon": "21.0.
|
|
136
|
+
"@types/sinon": "21.0.1",
|
|
137
137
|
"@types/sinon-chai": "4.0.0",
|
|
138
138
|
"@types/stack-utils": "2.0.3",
|
|
139
139
|
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
140
140
|
"@typescript-eslint/parser": "5.62.0",
|
|
141
141
|
"chai": "6.2.2",
|
|
142
142
|
"chai-as-promised": "8.0.2",
|
|
143
|
-
"commit-and-tag-version": "12.
|
|
143
|
+
"commit-and-tag-version": "12.7.1",
|
|
144
144
|
"copyfiles": "2.4.1",
|
|
145
145
|
"eslint": "8.57.1",
|
|
146
146
|
"eslint-config-airbnb-base": "15.0.0",
|
|
147
147
|
"eslint-config-airbnb-typescript": "17.1.0",
|
|
148
148
|
"eslint-config-prettier": "10.1.8",
|
|
149
149
|
"eslint-import-resolver-typescript": "4.4.2",
|
|
150
|
-
"eslint-plugin-chai-friendly": "1.
|
|
150
|
+
"eslint-plugin-chai-friendly": "1.2.0",
|
|
151
151
|
"eslint-plugin-import": "2.32.0",
|
|
152
152
|
"eslint-plugin-mocha": "10.5.0",
|
|
153
153
|
"mocha": "11.7.5",
|
|
154
|
-
"nock": "14.0.
|
|
154
|
+
"nock": "14.0.13",
|
|
155
155
|
"nyc": "18.0.0",
|
|
156
156
|
"prettier": "3.6.2",
|
|
157
157
|
"proxyquire": "2.1.3",
|
|
158
158
|
"rimraf": "6.1.3",
|
|
159
|
-
"sinon": "21.
|
|
159
|
+
"sinon": "21.1.2",
|
|
160
160
|
"sinon-chai": "4.0.1",
|
|
161
161
|
"source-map-support": "0.5.21",
|
|
162
162
|
"tsx": "4.21.0",
|
|
163
163
|
"typescript": "5.9.3"
|
|
164
|
+
},
|
|
165
|
+
"pnpm": {
|
|
166
|
+
"onlyBuiltDependencies": [
|
|
167
|
+
"@pact-foundation/pact-core"
|
|
168
|
+
]
|
|
164
169
|
}
|
|
165
170
|
}
|
|
@@ -82,6 +82,7 @@ var net = require("net");
|
|
|
82
82
|
var path = require("path");
|
|
83
83
|
// eslint-disable-next-line import/first
|
|
84
84
|
var v4_1 = require("./v4");
|
|
85
|
+
var v3_1 = require("./v3");
|
|
85
86
|
var expect = chai.expect;
|
|
86
87
|
chai.use(sinon_chai_1.default);
|
|
87
88
|
chai.use(chai_as_promised_1.default);
|
|
@@ -197,6 +198,57 @@ describe('V4 Pact', function () {
|
|
|
197
198
|
}
|
|
198
199
|
});
|
|
199
200
|
}); });
|
|
201
|
+
it('supports regex matcher for response content-type with optional charset', function () {
|
|
202
|
+
return pact
|
|
203
|
+
.addInteraction()
|
|
204
|
+
.uponReceiving('a response with regex content-type header matcher')
|
|
205
|
+
.withRequest('GET', '/')
|
|
206
|
+
.willRespondWith(200, function (builder) {
|
|
207
|
+
builder
|
|
208
|
+
.headers({
|
|
209
|
+
'Content-Type': v3_1.MatchersV3.regex(/^application\/json(;\s?charset=[\w-]+)?$/i, 'application/json'),
|
|
210
|
+
})
|
|
211
|
+
.jsonBody({
|
|
212
|
+
foo: 'bar',
|
|
213
|
+
});
|
|
214
|
+
})
|
|
215
|
+
.executeTest(function (server) { return __awaiter(void 0, void 0, void 0, function () {
|
|
216
|
+
var response;
|
|
217
|
+
return __generator(this, function (_a) {
|
|
218
|
+
switch (_a.label) {
|
|
219
|
+
case 0: return [4 /*yield*/, axios_1.default.get(server.url)];
|
|
220
|
+
case 1:
|
|
221
|
+
response = _a.sent();
|
|
222
|
+
expect(response.data).to.deep.equal({ foo: 'bar' });
|
|
223
|
+
return [2 /*return*/];
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}); });
|
|
227
|
+
});
|
|
228
|
+
it('supports regex matcher for request content-type with optional charset', function () {
|
|
229
|
+
return pact
|
|
230
|
+
.addInteraction()
|
|
231
|
+
.uponReceiving('a request with regex content-type header matcher')
|
|
232
|
+
.withRequest('POST', '/', function (builder) {
|
|
233
|
+
builder
|
|
234
|
+
.headers({
|
|
235
|
+
'Content-Type': v3_1.MatchersV3.regex(/^application\/json(;\s?charset=[\w-]+)?$/i, 'application/json'),
|
|
236
|
+
})
|
|
237
|
+
.jsonBody({
|
|
238
|
+
foo: 'bar',
|
|
239
|
+
});
|
|
240
|
+
})
|
|
241
|
+
.willRespondWith(200, function (builder) {
|
|
242
|
+
builder.jsonBody({
|
|
243
|
+
ok: true,
|
|
244
|
+
});
|
|
245
|
+
})
|
|
246
|
+
.executeTest(function (server) {
|
|
247
|
+
return axios_1.default.post(server.url, {
|
|
248
|
+
foo: 'bar',
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
});
|
|
200
252
|
});
|
|
201
253
|
describe('Asynchronous message contract', function () {
|
|
202
254
|
it('generates a pact with interaction metadata', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pact.integration.spec.js","sourceRoot":"","sources":["../../src/pact.integration.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAkD;AAClD,yCAA6B;AAC7B,sEAA8C;AAC9C,0DAAmC;AACnC,gDAA0B;AAC1B,uBAA0B;AAC1B,yBAA4B;AAC5B,2BAA8B;AAE9B,wCAAwC;AACxC,2BAA8B;
|
|
1
|
+
{"version":3,"file":"pact.integration.spec.js","sourceRoot":"","sources":["../../src/pact.integration.spec.ts"],"names":[],"mappings":"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"}
|
package/src/v3/ffi.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
-
import { TemplateHeaders, V3Request, V3Response } from './types';
|
|
1
|
+
import type { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
+
import type { TemplateHeaders, V3Request, V3Response } from './types';
|
|
3
3
|
export declare const setRequestDetails: (interaction: ConsumerInteraction, req: V3Request) => void;
|
|
4
4
|
export declare const setResponseDetails: (interaction: ConsumerInteraction, res: V3Response) => void;
|
|
5
5
|
export declare const contentTypeFromHeaders: (headers: TemplateHeaders | undefined, defaultContentType: string) => string;
|
package/src/v3/ffi.js
CHANGED
|
@@ -74,12 +74,14 @@ var setResponseDetails = function (interaction, res) {
|
|
|
74
74
|
}, res.headers);
|
|
75
75
|
};
|
|
76
76
|
exports.setResponseDetails = setResponseDetails;
|
|
77
|
-
// TODO: this might need to consider an array of values
|
|
78
77
|
var contentTypeFromHeaders = function (headers, defaultContentType) {
|
|
79
78
|
var contentType = defaultContentType;
|
|
80
79
|
(0, ramda_1.forEachObjIndexed)(function (v, k) {
|
|
81
80
|
if ("".concat(k).toLowerCase() === 'content-type') {
|
|
82
|
-
|
|
81
|
+
var headerValue = Array.isArray(v) ? v[0] : v;
|
|
82
|
+
contentType = MatchersV3.isMatcher(headerValue)
|
|
83
|
+
? MatchersV3.matcherValueOrString(headerValue.value)
|
|
84
|
+
: MatchersV3.matcherValueOrString(headerValue);
|
|
83
85
|
}
|
|
84
86
|
}, headers || {});
|
|
85
87
|
return contentType;
|
package/src/v3/ffi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../../../src/v3/ffi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA0C;AAG1C,qDAAyC;AAIlC,IAAM,iBAAiB,GAAG,UAC/B,WAAgC,EAChC,GAAc;IAEd,WAAW,CAAC,WAAW,CACrB,GAAG,CAAC,MAAM,EACV,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1C,CAAC;IACF,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,CAA8B,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,KAAK;gBACpD,WAAW,CAAC,iBAAiB,CAC3B,CAAC,EACD,KAAK,EACL,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CACxC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAEhB,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,CAAe,CAAC,OAAO,CAAC,UAAC,EAAE,EAAE,CAAC;gBAC7B,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAChB,CAAC,CAAC;AA/BW,QAAA,iBAAiB,qBA+B5B;AAEK,IAAM,kBAAkB,GAAG,UAChC,WAAgC,EAChC,GAAe;IAEf,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEnC,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,CAA8B,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,KAAK;gBACpD,WAAW,CAAC,kBAAkB,CAC5B,CAAC,EACD,KAAK,EACL,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CACxC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B;
|
|
1
|
+
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../../../src/v3/ffi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
var chai = __importStar(require("chai"));
|
|
37
|
+
var ffi_1 = require("./ffi");
|
|
38
|
+
var matchers_1 = require("./matchers");
|
|
39
|
+
var expect = chai.expect;
|
|
40
|
+
describe('V3 Pact FFI', function () {
|
|
41
|
+
describe('#contentTypeFromHeaders', function () {
|
|
42
|
+
it('uses matcher example value when content-type header is a matcher', function () {
|
|
43
|
+
var headers = {
|
|
44
|
+
'Content-Type': (0, matchers_1.regex)(/^application\/json(;\s?charset=[\w-]+)?$/i, 'application/json'),
|
|
45
|
+
};
|
|
46
|
+
expect((0, ffi_1.contentTypeFromHeaders)(headers, 'application/json')).to.eq('application/json');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=ffi.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffi.spec.js","sourceRoot":"","sources":["../../../src/v3/ffi.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA6B;AAC7B,6BAA+C;AAC/C,uCAAmC;AAE3B,IAAA,MAAM,GAAK,IAAI,OAAT,CAAU;AAExB,QAAQ,CAAC,aAAa,EAAE;IACtB,QAAQ,CAAC,yBAAyB,EAAE;QAClC,EAAE,CAAC,kEAAkE,EAAE;YACrE,IAAM,OAAO,GAAG;gBACd,cAAc,EAAE,IAAA,gBAAK,EACnB,2CAA2C,EAC3C,kBAAkB,CACnB;aACF,CAAC;YAEF,MAAM,CAAC,IAAA,4BAAsB,EAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAC/D,kBAAkB,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|