@prosopo/provider 5.1.2 → 5.1.3

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 (43) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +9 -8
  2. package/.turbo/turbo-build$colon$tsc.log +24 -24
  3. package/.turbo/turbo-build.log +10 -9
  4. package/CHANGELOG.md +78 -0
  5. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
  6. package/dist/api/admin/apiAdminRoutesProvider.js +3 -1
  7. package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
  8. package/dist/api/admin/apiGetSessionEndpoint.d.ts +14 -0
  9. package/dist/api/admin/apiGetSessionEndpoint.d.ts.map +1 -0
  10. package/dist/api/admin/apiGetSessionEndpoint.js +52 -0
  11. package/dist/api/admin/apiGetSessionEndpoint.js.map +1 -0
  12. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  13. package/dist/api/captcha/getImageCaptchaChallenge.js +0 -9
  14. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  15. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  16. package/dist/api/captcha/getPoWCaptchaChallenge.js +0 -9
  17. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  18. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  19. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +0 -9
  20. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  21. package/dist/api/captcha/trafficFilterRequestTime.d.ts +1 -4
  22. package/dist/api/captcha/trafficFilterRequestTime.d.ts.map +1 -1
  23. package/dist/api/captcha/trafficFilterRequestTime.js +18 -35
  24. package/dist/api/captcha/trafficFilterRequestTime.js.map +1 -1
  25. package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +3 -1
  26. package/dist/cjs/api/admin/apiGetSessionEndpoint.cjs +52 -0
  27. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +0 -9
  28. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +0 -9
  29. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +0 -9
  30. package/dist/cjs/api/captcha/trafficFilterRequestTime.cjs +17 -34
  31. package/dist/tests/integration/trafficFilterHierarchy.integration.test.js +4 -4
  32. package/dist/tests/integration/trafficFilterHierarchy.integration.test.js.map +1 -1
  33. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js +154 -0
  34. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js.map +1 -1
  35. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js +14 -24
  36. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js.map +1 -1
  37. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +38 -0
  38. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  39. package/dist/tests/unit/tasks/captchaManager.unit.test.js +182 -1
  40. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  41. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js +45 -0
  42. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js.map +1 -1
  43. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EAGvB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7C;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;CAC7D,CAAC;AAeL,eAAO,MAAM,+BAA+B,WACnC,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,WACzC,MAAM,KACb,yBAwCF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACzC;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,yBAAyB,CAAC;IACnC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,eAAO,MAAM,+BAA+B,UACpC,8BAA8B,OAChC,QAAQ,KACX,OAAO,CAAC,gCAAgC,CAgE1C,CAAC"}
1
+ {"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAG5B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;CAC7D,CAAC;AAeL,eAAO,MAAM,+BAA+B,WACnC,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,WACzC,MAAM,KACb,yBAgCF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACzC;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,yBAAyB,CAAC;IACnC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,eAAO,MAAM,+BAA+B,UACpC,8BAA8B,OAChC,QAAQ,KACX,OAAO,CAAC,gCAAgC,CAyD1C,CAAC"}
@@ -1,36 +1,22 @@
1
1
  import { checkTrafficFilter, resolveChallengePolicy } from "../../tasks/spam/checkTrafficFilter.js";
2
- import { CaptchaType, TrafficFilterAction } from "@prosopo/types";
2
+ import { CaptchaType } from "@prosopo/types";
3
3
  //#region src/api/captcha/trafficFilterRequestTime.ts
4
4
  /**
5
5
  * Evaluate the site's `trafficFilter` against the current request's IP info
6
- * at challenge-request time. Runs before captcha issuance so that a matched
7
- * `block` policy short-circuits with 401 (no captcha issued, mirroring the
8
- * `blockMiddleware` semantics) and a matched `challenge` policy hands back
9
- * an override bundle for the caller to fold into its captcha-type +
10
- * parameter selection.
11
- *
12
- * The verdict is authoritative for the request-time gate. Callers still run
13
- * `resolveTrafficFilterCheck` at submit time to catch `block` policies that
14
- * apply to the current (verify-time) IP even when the challenge-time IP
15
- * passed.
6
+ * at challenge-request time. Only `challenge` matches contribute at this
7
+ * point — a matched `challenge` policy hands back an override bundle for
8
+ * the caller to fold into its captcha-type + parameter selection. `block`
9
+ * matches are deliberately ignored here; the enforcement of block policies
10
+ * is deferred to submit / verify time (via `resolveTrafficFilterCheck` in
11
+ * PoW / image / puzzle task classes) so that blocked users still receive a
12
+ * captcha and produce a billable interaction. Removing this deferral
13
+ * previously turned every blocked request into a request-time 401, which
14
+ * the widget mis-handled into an INCORRECT_CAPTCHA_TYPE cascade — see
15
+ * `evaluateFrictionlessResult` in `@prosopo/procaptcha-frictionless`.
16
16
  */
17
17
  var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
18
18
  if (!trafficFilter) return { kind: "pass" };
19
- const result = checkTrafficFilter(ipInfo, {
20
- abuser: { action: TrafficFilterAction.Block },
21
- ...trafficFilter
22
- });
23
- if (result.isBlocked) {
24
- logger?.info(() => ({
25
- msg: "Traffic filter rejected challenge request",
26
- data: { reason: result.reason }
27
- }));
28
- return {
29
- kind: "block",
30
- reason: result.reason
31
- };
32
- }
33
- const resolved = resolveChallengePolicy(result.matches);
19
+ const resolved = resolveChallengePolicy(checkTrafficFilter(ipInfo, trafficFilter).matches);
34
20
  if (!resolved) return { kind: "pass" };
35
21
  logger?.info(() => ({
36
22
  msg: "Traffic filter applied challenge overrides",
@@ -53,19 +39,16 @@ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
53
39
  };
54
40
  /**
55
41
  * Frictionless-flow companion to `applyTrafficFilterAtRequestTime`. When the
56
- * verdict is `block`, respond 401 and short-circuit. When the verdict is
57
- * `challenge` and names a concrete captchaType, dispatch to the matching
58
- * `send{Image,Pow,Puzzle}Captcha` helper with the resolved parameter
59
- * overrides. Otherwise returns `{ handled: false }` so the caller falls
60
- * through to the normal decision machine.
42
+ * verdict is `challenge` and names a concrete captchaType, dispatch to the
43
+ * matching `send{Image,Pow,Puzzle}Captcha` helper with the resolved
44
+ * parameter overrides. Otherwise returns `{ handled: false }` so the
45
+ * caller falls through to the normal decision machine. Block matches are
46
+ * not represented in the verdict at all — they're enforced at submit /
47
+ * verify time (see the comment on `applyTrafficFilterAtRequestTime`).
61
48
  */
62
49
  var handleFrictionlessTrafficFilter = async (input, res) => {
63
50
  const { verdict } = input;
64
51
  if (verdict.kind === "pass") return { handled: false };
65
- if (verdict.kind === "block") return {
66
- handled: true,
67
- response: res.status(401).json({ error: "Unauthorized" })
68
- };
69
52
  const baseParams = {
70
53
  userSitekeyIpHash: input.userSitekeyIpHash,
71
54
  siteKey: input.dapp,
@@ -1 +1 @@
1
- {"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ const require_apiClearAllCountersEndpoint = require("./apiClearAllCountersEndpoi
3
3
  const require_apiDnsEventEndpoint = require("./apiDnsEventEndpoint.cjs");
4
4
  const require_apiGetAllDecisionMachinesEndpoint = require("./apiGetAllDecisionMachinesEndpoint.cjs");
5
5
  const require_apiGetDecisionMachineEndpoint = require("./apiGetDecisionMachineEndpoint.cjs");
6
+ const require_apiGetSessionEndpoint = require("./apiGetSessionEndpoint.cjs");
6
7
  const require_apiRegisterSiteKeyEndpoint = require("./apiRegisterSiteKeyEndpoint.cjs");
7
8
  const require_apiRegisterSiteKeysEndpoint = require("./apiRegisterSiteKeysEndpoint.cjs");
8
9
  const require_apiRemoveAllDecisionMachinesEndpoint = require("./apiRemoveAllDecisionMachinesEndpoint.cjs");
@@ -31,7 +32,8 @@ var ApiAdminRoutesProvider = class {
31
32
  [_prosopo_types.AdminApiPaths.SiteKeysRemove]: new require_apiRemoveSiteKeysEndpoint.ApiRemoveSiteKeysEndpoint(this.tasks.clientTaskManager),
32
33
  [_prosopo_types.AdminApiPaths.ToggleMaintenanceMode]: new require_apiToggleMaintenanceModeEndpoint.ApiToggleMaintenanceModeEndpoint(),
33
34
  [_prosopo_types.AdminApiPaths.DnsEvent]: new require_apiDnsEventEndpoint.ApiDnsEventEndpoint(this.tasks.db, this.tasks.env.ipInfoService),
34
- [_prosopo_types.AdminApiPaths.ReplaceDetectorPool]: new require_apiReplaceDetectorPoolEndpoint.ApiReplaceDetectorPoolEndpoint()
35
+ [_prosopo_types.AdminApiPaths.ReplaceDetectorPool]: new require_apiReplaceDetectorPoolEndpoint.ApiReplaceDetectorPoolEndpoint(),
36
+ [_prosopo_types.AdminApiPaths.GetSession]: new require_apiGetSessionEndpoint.ApiGetSessionEndpoint(this.tasks)
35
37
  };
36
38
  }
37
39
  };
@@ -0,0 +1,52 @@
1
+ let _prosopo_logger = require("@prosopo/logger");
2
+ let _prosopo_types = require("@prosopo/types");
3
+ let _prosopo_api_route = require("@prosopo/api-route");
4
+ //#region src/api/admin/apiGetSessionEndpoint.ts
5
+ /**
6
+ * Diagnostic-only. Reads a session record from both Mongo (authoritative)
7
+ * and Redis (fast-path cache) and returns both views verbatim so tests
8
+ * can assert `captchaType`, `bundleId`, `deleted`, `originSessionId` etc.
9
+ * agree between the two stores at each stage of a captcha flow.
10
+ *
11
+ * Deliberately does not touch either store. Not called from any client-
12
+ * facing widget path; the cypress consistency suite is the only current
13
+ * consumer.
14
+ */
15
+ var ApiGetSessionEndpoint = class {
16
+ constructor(tasks) {
17
+ this.tasks = tasks;
18
+ }
19
+ async processRequest(args, logger) {
20
+ logger = logger ? logger.with({}, "admin:session:get") : (0, _prosopo_logger.getLogger)("info", "provider:admin:session:get");
21
+ try {
22
+ const { sessionId } = args;
23
+ logger.info(() => ({
24
+ msg: "Getting session state from Mongo and Redis",
25
+ data: { sessionId }
26
+ }));
27
+ const mongo = await this.tasks.db.getSessionRecordBySessionId(sessionId);
28
+ const cached = this.tasks.writeQueue ? await this.tasks.writeQueue.getCachedSession(sessionId) : void 0;
29
+ return {
30
+ status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
31
+ data: {
32
+ mongo: mongo ?? null,
33
+ redis: cached ?? null
34
+ }
35
+ };
36
+ } catch (error) {
37
+ logger.error(() => ({
38
+ msg: "Error reading session state",
39
+ err: error
40
+ }));
41
+ return {
42
+ status: _prosopo_api_route.ApiEndpointResponseStatus.FAIL,
43
+ error: error.message
44
+ };
45
+ }
46
+ }
47
+ getRequestArgsSchema() {
48
+ return _prosopo_types.GetSessionBody;
49
+ }
50
+ };
51
+ //#endregion
52
+ exports.ApiGetSessionEndpoint = ApiGetSessionEndpoint;
@@ -85,15 +85,6 @@ var getImageCaptchaChallenge_default = (env, userAccessRulesStorage) => async (r
85
85
  logger: req.logger
86
86
  }));
87
87
  const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientRecord.settings?.trafficFilter, req.logger);
88
- if (trafficVerdict.kind === "block") return next(new _prosopo_common.ProsopoApiError(trafficVerdict.reason, {
89
- context: {
90
- code: 401,
91
- siteKey: dapp,
92
- user
93
- },
94
- i18n: req.i18n,
95
- logger: req.logger
96
- }));
97
88
  const trafficSolvedImagesCount = trafficVerdict.kind === "challenge" ? trafficVerdict.solvedImagesCount : void 0;
98
89
  const captchaConfig = {
99
90
  solved: { count: Math.min(trafficSolvedImagesCount || solvedImagesCount || userAccessPolicy?.solvedImagesCount || env.config.captchas.solved.count, clientRecord.settings.imageMaxRounds ?? _prosopo_types.imageMaxRoundsDefault) },
@@ -79,15 +79,6 @@ var getPoWCaptchaChallenge_default = (env, userAccessRulesStorage) => async (req
79
79
  logger: req.logger
80
80
  }));
81
81
  const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
- if (trafficVerdict.kind === "block") return next(new _prosopo_common.ProsopoApiError(trafficVerdict.reason, {
83
- context: {
84
- code: 401,
85
- siteKey: dapp,
86
- user
87
- },
88
- i18n: req.i18n,
89
- logger: req.logger
90
- }));
91
82
  const difficulty = (trafficVerdict.kind === "challenge" ? trafficVerdict.powDifficulty : void 0) || powDifficulty || userAccessPolicy?.powDifficulty || clientSettings?.settings?.powDifficulty;
92
83
  const challenge = await tasks.powCaptchaManager.getPowCaptchaChallenge(user, dapp, origin, difficulty);
93
84
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
@@ -79,15 +79,6 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
79
79
  logger: req.logger
80
80
  }));
81
81
  const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
- if (trafficVerdict.kind === "block") return next(new _prosopo_common.ProsopoApiError(trafficVerdict.reason, {
83
- context: {
84
- code: 401,
85
- siteKey: dapp,
86
- user
87
- },
88
- i18n: req.i18n,
89
- logger: req.logger
90
- }));
91
82
  const tolerance = (trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleTolerance : void 0) ?? clientSettings?.settings?.puzzleTolerance;
92
83
  const challenge = await tasks.puzzleCaptchaManager.getPuzzleCaptchaChallenge(user, dapp, origin, tolerance);
93
84
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
@@ -3,34 +3,20 @@ let _prosopo_types = require("@prosopo/types");
3
3
  //#region src/api/captcha/trafficFilterRequestTime.ts
4
4
  /**
5
5
  * Evaluate the site's `trafficFilter` against the current request's IP info
6
- * at challenge-request time. Runs before captcha issuance so that a matched
7
- * `block` policy short-circuits with 401 (no captcha issued, mirroring the
8
- * `blockMiddleware` semantics) and a matched `challenge` policy hands back
9
- * an override bundle for the caller to fold into its captcha-type +
10
- * parameter selection.
11
- *
12
- * The verdict is authoritative for the request-time gate. Callers still run
13
- * `resolveTrafficFilterCheck` at submit time to catch `block` policies that
14
- * apply to the current (verify-time) IP even when the challenge-time IP
15
- * passed.
6
+ * at challenge-request time. Only `challenge` matches contribute at this
7
+ * point — a matched `challenge` policy hands back an override bundle for
8
+ * the caller to fold into its captcha-type + parameter selection. `block`
9
+ * matches are deliberately ignored here; the enforcement of block policies
10
+ * is deferred to submit / verify time (via `resolveTrafficFilterCheck` in
11
+ * PoW / image / puzzle task classes) so that blocked users still receive a
12
+ * captcha and produce a billable interaction. Removing this deferral
13
+ * previously turned every blocked request into a request-time 401, which
14
+ * the widget mis-handled into an INCORRECT_CAPTCHA_TYPE cascade — see
15
+ * `evaluateFrictionlessResult` in `@prosopo/procaptcha-frictionless`.
16
16
  */
17
17
  var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
18
18
  if (!trafficFilter) return { kind: "pass" };
19
- const effective = {
20
- abuser: { action: _prosopo_types.TrafficFilterAction.Block },
21
- ...trafficFilter
22
- };
23
- const result = require_checkTrafficFilter.checkTrafficFilter(ipInfo, effective);
24
- if (result.isBlocked) {
25
- logger?.info(() => ({
26
- msg: "Traffic filter rejected challenge request",
27
- data: { reason: result.reason }
28
- }));
29
- return {
30
- kind: "block",
31
- reason: result.reason
32
- };
33
- }
19
+ const result = require_checkTrafficFilter.checkTrafficFilter(ipInfo, trafficFilter);
34
20
  const resolved = require_checkTrafficFilter.resolveChallengePolicy(result.matches);
35
21
  if (!resolved) return { kind: "pass" };
36
22
  logger?.info(() => ({
@@ -54,19 +40,16 @@ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
54
40
  };
55
41
  /**
56
42
  * Frictionless-flow companion to `applyTrafficFilterAtRequestTime`. When the
57
- * verdict is `block`, respond 401 and short-circuit. When the verdict is
58
- * `challenge` and names a concrete captchaType, dispatch to the matching
59
- * `send{Image,Pow,Puzzle}Captcha` helper with the resolved parameter
60
- * overrides. Otherwise returns `{ handled: false }` so the caller falls
61
- * through to the normal decision machine.
43
+ * verdict is `challenge` and names a concrete captchaType, dispatch to the
44
+ * matching `send{Image,Pow,Puzzle}Captcha` helper with the resolved
45
+ * parameter overrides. Otherwise returns `{ handled: false }` so the
46
+ * caller falls through to the normal decision machine. Block matches are
47
+ * not represented in the verdict at all — they're enforced at submit /
48
+ * verify time (see the comment on `applyTrafficFilterAtRequestTime`).
62
49
  */
63
50
  var handleFrictionlessTrafficFilter = async (input, res) => {
64
51
  const { verdict } = input;
65
52
  if (verdict.kind === "pass") return { handled: false };
66
- if (verdict.kind === "block") return {
67
- handled: true,
68
- response: res.status(401).json({ error: "Unauthorized" })
69
- };
70
53
  const baseParams = {
71
54
  userSitekeyIpHash: input.userSitekeyIpHash,
72
55
  siteKey: input.dapp,
@@ -177,13 +177,13 @@ describe("Captcha type + params selection hierarchy (integration)", () => {
177
177
  expect(status).toBe(200);
178
178
  expect(body.difficulty).toBe(8);
179
179
  });
180
- it("returns 401 when the request IP matches a block category", async () => {
180
+ it("passes at request time when the IP matches a block category (block deferred to verify for billing)", async () => {
181
181
  currentIpInfo = vpn();
182
182
  const siteKey = await registerSite({
183
183
  vpn: { action: TrafficFilterAction.Block },
184
184
  });
185
185
  const { status } = await getPow(siteKey);
186
- expect(status).toBe(401);
186
+ expect(status).toBe(200);
187
187
  });
188
188
  it("falls through to site default when the request IP does not match the trafficFilter category", async () => {
189
189
  currentIpInfo = clean();
@@ -198,7 +198,7 @@ describe("Captcha type + params selection hierarchy (integration)", () => {
198
198
  expect(status).toBe(200);
199
199
  expect(body.difficulty).toBe(3);
200
200
  });
201
- it("applies the abuser default (implicit block) even without an explicit trafficFilter entry", async () => {
201
+ it("does NOT apply the abuser default at request time (abuser default only fires at submit time)", async () => {
202
202
  const abuser = {
203
203
  ...clean(),
204
204
  isAbuser: true,
@@ -208,7 +208,7 @@ describe("Captcha type + params selection hierarchy (integration)", () => {
208
208
  currentIpInfo = abuser;
209
209
  const siteKey = await registerSite({});
210
210
  const { status } = await getPow(siteKey);
211
- expect(status).toBe(401);
211
+ expect(status).toBe(200);
212
212
  });
213
213
  });
214
214
  });
@@ -1 +1 @@
1
- {"version":3,"file":"trafficFilterHierarchy.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/trafficFilterHierarchy.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trafficFilterHierarchy.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/trafficFilterHierarchy.integration.test.ts"],"names":[],"mappings":"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"}
@@ -126,5 +126,159 @@ describe("submitPoWCaptchaSolution.buildEscalation", () => {
126
126
  expect(env.spies.cacheSessionEscalation).not.toHaveBeenCalled();
127
127
  expect(env.spies.createSession).not.toHaveBeenCalled();
128
128
  });
129
+ const CAPTCHA_TYPE_IDX = 5;
130
+ const SITE_KEY_IDX = 6;
131
+ const SIMD_READINGS_IDX = 19;
132
+ const BUNDLE_ID_IDX = 24;
133
+ const ORIGIN_SESSION_ID_IDX = 31;
134
+ it("passes captchaType=image and the origin sessionId when escalating to image", async () => {
135
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
136
+ sessionId: "origin-id",
137
+ dappAccount: "dapp",
138
+ });
139
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(makeOriginSession());
140
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.image } }, "challenge");
141
+ expect(env.spies.createSession).toHaveBeenCalledTimes(1);
142
+ const args = env.spies.createSession.mock.calls[0];
143
+ if (!args)
144
+ throw new Error("expected createSession to be called");
145
+ expect(args[CAPTCHA_TYPE_IDX]).toBe(CaptchaType.image);
146
+ expect(args[ORIGIN_SESSION_ID_IDX]).toBe("origin-id");
147
+ expect(args[SITE_KEY_IDX]).toBe("site");
148
+ });
149
+ it("passes captchaType=puzzle and the origin sessionId when escalating to puzzle", async () => {
150
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
151
+ sessionId: "origin-id",
152
+ dappAccount: "dapp",
153
+ });
154
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(makeOriginSession());
155
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.puzzle } }, "challenge");
156
+ expect(env.spies.createSession).toHaveBeenCalledTimes(1);
157
+ const args = env.spies.createSession.mock.calls[0];
158
+ if (!args)
159
+ throw new Error("expected createSession to be called");
160
+ expect(args[CAPTCHA_TYPE_IDX]).toBe(CaptchaType.puzzle);
161
+ expect(args[ORIGIN_SESSION_ID_IDX]).toBe("origin-id");
162
+ });
163
+ it("carries the origin's simdReadings onto the image escalation at creation time (so the DM verify path doesn't have to lean on chain fallback for the common case)", async () => {
164
+ const originSimd = {
165
+ supported: true,
166
+ schema: 1,
167
+ timerResolutionMs: 0.005,
168
+ runsPerOp: 500,
169
+ durationMs: 42,
170
+ ops: [
171
+ {
172
+ name: "f32x4_add",
173
+ category: "arith",
174
+ bestNs: 1.1,
175
+ medianNs: 1.2,
176
+ iters: 100,
177
+ resultLane: 0,
178
+ },
179
+ ],
180
+ };
181
+ const origin = {
182
+ ...makeOriginSession(),
183
+ simdReadings: originSimd,
184
+ };
185
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
186
+ sessionId: "origin-id",
187
+ dappAccount: "dapp",
188
+ });
189
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(origin);
190
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.image } }, "challenge");
191
+ const args = env.spies.createSession.mock.calls[0];
192
+ if (!args)
193
+ throw new Error("expected createSession to be called");
194
+ expect(args[SIMD_READINGS_IDX]).toBe(originSimd);
195
+ });
196
+ it("carries the origin's simdReadings onto the puzzle escalation at creation time", async () => {
197
+ const originSimd = {
198
+ supported: true,
199
+ schema: 1,
200
+ timerResolutionMs: 0.005,
201
+ runsPerOp: 500,
202
+ durationMs: 42,
203
+ ops: [
204
+ {
205
+ name: "i32x4_add",
206
+ category: "arith",
207
+ bestNs: 0.9,
208
+ medianNs: 1.0,
209
+ iters: 100,
210
+ resultLane: 0,
211
+ },
212
+ ],
213
+ };
214
+ const origin = {
215
+ ...makeOriginSession(),
216
+ simdReadings: originSimd,
217
+ };
218
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
219
+ sessionId: "origin-id",
220
+ dappAccount: "dapp",
221
+ });
222
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(origin);
223
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.puzzle } }, "challenge");
224
+ const args = env.spies.createSession.mock.calls[0];
225
+ if (!args)
226
+ throw new Error("expected createSession to be called");
227
+ expect(args[SIMD_READINGS_IDX]).toBe(originSimd);
228
+ });
229
+ it("carries the origin's bundleId onto the image escalation so the (same-origin) behavioural payload can be decrypted at solve time", async () => {
230
+ const origin = {
231
+ ...makeOriginSession(),
232
+ bundleId: "bundle-42",
233
+ };
234
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
235
+ sessionId: "origin-id",
236
+ dappAccount: "dapp",
237
+ });
238
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(origin);
239
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.image } }, "challenge");
240
+ const args = env.spies.createSession.mock.calls[0];
241
+ if (!args)
242
+ throw new Error("expected createSession to be called");
243
+ expect(args[BUNDLE_ID_IDX]).toBe("bundle-42");
244
+ });
245
+ it("carries the origin's bundleId onto the puzzle escalation for the same reason", async () => {
246
+ const origin = {
247
+ ...makeOriginSession(),
248
+ bundleId: "bundle-17",
249
+ };
250
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
251
+ sessionId: "origin-id",
252
+ dappAccount: "dapp",
253
+ });
254
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(origin);
255
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.puzzle } }, "challenge");
256
+ const args = env.spies.createSession.mock.calls[0];
257
+ if (!args)
258
+ throw new Error("expected createSession to be called");
259
+ expect(args[BUNDLE_ID_IDX]).toBe("bundle-17");
260
+ });
261
+ it("does NOT carry behavioural data (BDP) onto the escalation session — BDP lives only in the pow-solve request payload", async () => {
262
+ const origin = {
263
+ ...makeOriginSession(),
264
+ behavioralDataPacked: {
265
+ c1: [{ t: 1, x: 2, y: 3 }],
266
+ c2: [],
267
+ c3: [],
268
+ },
269
+ };
270
+ env.spies.getPowCaptchaRecordByChallenge.mockResolvedValue({
271
+ sessionId: "origin-id",
272
+ dappAccount: "dapp",
273
+ });
274
+ env.spies.getSessionRecordBySessionId.mockResolvedValue(origin);
275
+ await buildEscalation(env.tasks, { verified: true, routingOutput: { captchaType: CaptchaType.image } }, "challenge");
276
+ const args = env.spies.createSession.mock.calls[0];
277
+ if (!args)
278
+ throw new Error("expected createSession to be called");
279
+ expect(args.some((a) => a ===
280
+ origin
281
+ .behavioralDataPacked)).toBe(false);
282
+ });
129
283
  });
130
284
  //# sourceMappingURL=submitPoWCaptchaSolution.escalation.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submitPoWCaptchaSolution.escalation.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submitPoWCaptchaSolution.escalation.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAgB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAC;AAOtF,MAAM,SAAS,GAAG,GAAG,EAAE;IACtB,MAAM,sBAAsB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7D,SAAS,EAAE,eAAe;KAC1B,CAAC,CAAC,CAAC;IACJ,MAAM,8BAA8B,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/C,MAAM,2BAA2B,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG;QACb,EAAE,EAAE;YACH,8BAA8B;YAC9B,2BAA2B;SAC3B;QACD,mBAAmB,EAAE;YACpB,aAAa;SACb;QACD,UAAU,EAAE;YACX,sBAAsB;SACtB;KACmD,CAAC;IAEtD,OAAO;QACN,KAAK;QACL,KAAK,EAAE;YACN,sBAAsB;YACtB,aAAa;YACb,8BAA8B;YAC9B,2BAA2B;SAC3B;KACD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,GAAY,EAAE,CACvC,CAAC;IACA,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;IACnC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACpC,WAAW,EAAE,WAAW,CAAC,GAAG;IAC5B,OAAO,EAAE,MAAM;IACf,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,iBAAiB,EAAE,UAAU;IAC7B,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,SAAS;CACvB,CAAuB,CAAC;AAE1B,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACzD,IAAI,GAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE;QACf,GAAG,GAAG,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,EAC5C,WAAW,CACX,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT;YACC,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE;SACjD,EACD,WAAW,CACX,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,EACnE,WAAW,CACX,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACxF,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CACtD,iBAAiB,EAAE,CACnB,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,WAAW,CAAC,KAAK;YAC9B,SAAS,EAAE,eAAe;SAC1B,CAAC,CAAC;QAIH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAC5D,WAAW,EACX,eAAe,CACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC9E,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CACtD,iBAAiB,EAAE,CACnB,CAAC;QAEF,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EACtE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAC5D,WAAW,EACX,eAAe,CACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAK7F,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CACtD,iBAAiB,EAAE,CACnB,CAAC;QACD,GAAG,CAAC,KAA4C,CAAC,UAAU,GAAG,IAAI,CAAC;QAEpE,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,WAAW,CAAC,KAAK;YAC9B,SAAS,EAAE,eAAe;SAC1B,CAAC,CAAC;QAGH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QAClG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACvG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEnE,MAAM,GAAG,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAMH,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAC3B,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,qBAAqB,GAAG,EAAE,CAAC;IAEjC,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC3F,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CACtD,iBAAiB,EAAE,CACnB,CAAC;QAEF,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAGtD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC7F,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CACtD,iBAAiB,EAAE,CACnB,CAAC;QAEF,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EACtE,WAAW,CACX,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iKAAiK,EAAE,KAAK,IAAI,EAAE;QAChL,MAAM,UAAU,GAAG;YAClB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC;YACT,iBAAiB,EAAE,KAAK;YACxB,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,EAAE;YACd,GAAG,EAAE;gBACJ;oBACC,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,GAAG;oBACX,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,GAAG;oBACV,UAAU,EAAE,CAAC;iBACb;aACD;SACD,CAAC;QACF,MAAM,MAAM,GAAG;YACd,GAAG,iBAAiB,EAAE;YACtB,YAAY,EAAE,UAAU;SACxB,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,UAAU,GAAG;YAClB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC;YACT,iBAAiB,EAAE,KAAK;YACxB,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,EAAE;YACd,GAAG,EAAE;gBACJ;oBACC,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,GAAG;oBACX,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,GAAG;oBACV,UAAU,EAAE,CAAC;iBACb;aACD;SACD,CAAC;QACF,MAAM,MAAM,GAAG;YACd,GAAG,iBAAiB,EAAE;YACtB,YAAY,EAAE,UAAU;SACxB,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EACtE,WAAW,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iIAAiI,EAAE,KAAK,IAAI,EAAE;QAChJ,MAAM,MAAM,GAAG;YACd,GAAG,iBAAiB,EAAE;YACtB,QAAQ,EAAE,WAAW;SACrB,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,MAAM,GAAG;YACd,GAAG,iBAAiB,EAAE;YACtB,QAAQ,EAAE,WAAW;SACrB,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EACtE,WAAW,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAOH,EAAE,CAAC,qHAAqH,EAAE,KAAK,IAAI,EAAE;QAGpI,MAAM,MAAM,GAAG;YACd,GAAG,iBAAiB,EAAE;YACtB,oBAAoB,EAAE;gBACrB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1B,EAAE,EAAE,EAAE;gBACN,EAAE,EAAE,EAAE;aACN;SACqB,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,eAAe,CACpB,GAAG,CAAC,KAAK,EACT,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,EACrE,WAAW,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAElE,MAAM,CACL,IAAI,CAAC,IAAI,CACR,CAAC,CAAU,EAAE,EAAE,CACd,CAAC;YACA,MAAuD;iBACtD,oBAAoB,CACvB,CACD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}