pi-ghost-autocomplete 0.3.2 → 0.5.0

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 (170) hide show
  1. package/LICENSE +561 -0
  2. package/README.md +186 -4
  3. package/dist/bench-cli.js +1 -123
  4. package/dist/bench.d.ts +7 -3
  5. package/dist/bench.js +1 -522
  6. package/dist/config.d.ts +46 -3
  7. package/dist/context-aggregator.d.ts +4 -1
  8. package/dist/cycle-manager.d.ts +2 -21
  9. package/dist/entropy-stop.d.ts +4 -1
  10. package/dist/eval-dataset.d.ts +2 -13
  11. package/dist/fuzzy-matcher.d.ts +4 -1
  12. package/dist/ghost-editor.d.ts +11 -2
  13. package/dist/index.d.ts +7 -2
  14. package/dist/index.js +1 -289
  15. package/dist/intent.d.ts +179 -0
  16. package/dist/metrics.d.ts +4 -1
  17. package/dist/path-index.d.ts +4 -1
  18. package/dist/path-matcher.d.ts +4 -1
  19. package/dist/profile-store.d.ts +4 -1
  20. package/dist/profile.d.ts +2 -20
  21. package/dist/providers/cloud-provider.d.ts +4 -1
  22. package/dist/providers/local-provider.d.ts +4 -1
  23. package/dist/providers/openai-compat-chat-provider.d.ts +31 -0
  24. package/dist/providers/openai-compat-provider.d.ts +24 -1
  25. package/dist/providers/race.d.ts +4 -1
  26. package/dist/providers/router.d.ts +59 -0
  27. package/dist/providers/types.d.ts +13 -1
  28. package/dist/recent-paths.d.ts +4 -1
  29. package/dist/replay-cli.js +1 -166
  30. package/dist/replay.d.ts +2 -7
  31. package/package.json +10 -6
  32. package/dist/bench-cli.d.ts +0 -3
  33. package/dist/bench-cli.d.ts.map +0 -1
  34. package/dist/bench-cli.js.map +0 -1
  35. package/dist/bench.d.ts.map +0 -1
  36. package/dist/bench.js.map +0 -1
  37. package/dist/cache.d.ts +0 -124
  38. package/dist/cache.d.ts.map +0 -1
  39. package/dist/cache.js +0 -173
  40. package/dist/cache.js.map +0 -1
  41. package/dist/candidate-rerank.d.ts +0 -57
  42. package/dist/candidate-rerank.d.ts.map +0 -1
  43. package/dist/candidate-rerank.js +0 -78
  44. package/dist/candidate-rerank.js.map +0 -1
  45. package/dist/config.d.ts.map +0 -1
  46. package/dist/config.js +0 -317
  47. package/dist/config.js.map +0 -1
  48. package/dist/context-aggregator.d.ts.map +0 -1
  49. package/dist/context-aggregator.js +0 -87
  50. package/dist/context-aggregator.js.map +0 -1
  51. package/dist/context-selector.d.ts +0 -128
  52. package/dist/context-selector.d.ts.map +0 -1
  53. package/dist/context-selector.js +0 -300
  54. package/dist/context-selector.js.map +0 -1
  55. package/dist/cycle-manager.d.ts.map +0 -1
  56. package/dist/cycle-manager.js +0 -168
  57. package/dist/cycle-manager.js.map +0 -1
  58. package/dist/edit-history-ring.d.ts +0 -148
  59. package/dist/edit-history-ring.d.ts.map +0 -1
  60. package/dist/edit-history-ring.js +0 -262
  61. package/dist/edit-history-ring.js.map +0 -1
  62. package/dist/entropy-stop.d.ts.map +0 -1
  63. package/dist/entropy-stop.js +0 -141
  64. package/dist/entropy-stop.js.map +0 -1
  65. package/dist/eval-dataset.d.ts.map +0 -1
  66. package/dist/eval-dataset.js +0 -127
  67. package/dist/eval-dataset.js.map +0 -1
  68. package/dist/fast-path-engine.d.ts +0 -286
  69. package/dist/fast-path-engine.d.ts.map +0 -1
  70. package/dist/fast-path-engine.js +0 -341
  71. package/dist/fast-path-engine.js.map +0 -1
  72. package/dist/fuzzy-matcher.d.ts.map +0 -1
  73. package/dist/fuzzy-matcher.js +0 -162
  74. package/dist/fuzzy-matcher.js.map +0 -1
  75. package/dist/ghost-editor.d.ts.map +0 -1
  76. package/dist/ghost-editor.js +0 -1491
  77. package/dist/ghost-editor.js.map +0 -1
  78. package/dist/index.d.ts.map +0 -1
  79. package/dist/index.js.map +0 -1
  80. package/dist/keystroke-timer.d.ts +0 -59
  81. package/dist/keystroke-timer.d.ts.map +0 -1
  82. package/dist/keystroke-timer.js +0 -94
  83. package/dist/keystroke-timer.js.map +0 -1
  84. package/dist/metrics-builder.d.ts +0 -71
  85. package/dist/metrics-builder.d.ts.map +0 -1
  86. package/dist/metrics-builder.js +0 -71
  87. package/dist/metrics-builder.js.map +0 -1
  88. package/dist/metrics.d.ts.map +0 -1
  89. package/dist/metrics.js +0 -212
  90. package/dist/metrics.js.map +0 -1
  91. package/dist/path-index.d.ts.map +0 -1
  92. package/dist/path-index.js +0 -148
  93. package/dist/path-index.js.map +0 -1
  94. package/dist/path-matcher.d.ts.map +0 -1
  95. package/dist/path-matcher.js +0 -88
  96. package/dist/path-matcher.js.map +0 -1
  97. package/dist/profile-store.d.ts.map +0 -1
  98. package/dist/profile-store.js +0 -199
  99. package/dist/profile-store.js.map +0 -1
  100. package/dist/profile.d.ts.map +0 -1
  101. package/dist/profile.js +0 -434
  102. package/dist/profile.js.map +0 -1
  103. package/dist/providers/cloud-provider.d.ts.map +0 -1
  104. package/dist/providers/cloud-provider.js +0 -109
  105. package/dist/providers/cloud-provider.js.map +0 -1
  106. package/dist/providers/local-provider.d.ts.map +0 -1
  107. package/dist/providers/local-provider.js +0 -48
  108. package/dist/providers/local-provider.js.map +0 -1
  109. package/dist/providers/openai-compat-provider.d.ts.map +0 -1
  110. package/dist/providers/openai-compat-provider.js +0 -215
  111. package/dist/providers/openai-compat-provider.js.map +0 -1
  112. package/dist/providers/openai-completions-runner.d.ts +0 -52
  113. package/dist/providers/openai-completions-runner.d.ts.map +0 -1
  114. package/dist/providers/openai-completions-runner.js +0 -141
  115. package/dist/providers/openai-completions-runner.js.map +0 -1
  116. package/dist/providers/race.d.ts.map +0 -1
  117. package/dist/providers/race.js +0 -441
  118. package/dist/providers/race.js.map +0 -1
  119. package/dist/providers/truncate.d.ts +0 -7
  120. package/dist/providers/truncate.d.ts.map +0 -1
  121. package/dist/providers/truncate.js +0 -57
  122. package/dist/providers/truncate.js.map +0 -1
  123. package/dist/providers/types.d.ts.map +0 -1
  124. package/dist/providers/types.js +0 -60
  125. package/dist/providers/types.js.map +0 -1
  126. package/dist/provisional-manager.d.ts +0 -93
  127. package/dist/provisional-manager.d.ts.map +0 -1
  128. package/dist/provisional-manager.js +0 -98
  129. package/dist/provisional-manager.js.map +0 -1
  130. package/dist/provisional.d.ts +0 -150
  131. package/dist/provisional.d.ts.map +0 -1
  132. package/dist/provisional.js +0 -238
  133. package/dist/provisional.js.map +0 -1
  134. package/dist/recent-paths.d.ts.map +0 -1
  135. package/dist/recent-paths.js +0 -114
  136. package/dist/recent-paths.js.map +0 -1
  137. package/dist/regret-tracker.d.ts +0 -84
  138. package/dist/regret-tracker.d.ts.map +0 -1
  139. package/dist/regret-tracker.js +0 -145
  140. package/dist/regret-tracker.js.map +0 -1
  141. package/dist/replay-cli.d.ts +0 -13
  142. package/dist/replay-cli.d.ts.map +0 -1
  143. package/dist/replay-cli.js.map +0 -1
  144. package/dist/replay.d.ts.map +0 -1
  145. package/dist/replay.js +0 -225
  146. package/dist/replay.js.map +0 -1
  147. package/dist/reranker.d.ts +0 -181
  148. package/dist/reranker.d.ts.map +0 -1
  149. package/dist/reranker.js +0 -324
  150. package/dist/reranker.js.map +0 -1
  151. package/dist/session-trie.d.ts +0 -103
  152. package/dist/session-trie.d.ts.map +0 -1
  153. package/dist/session-trie.js +0 -280
  154. package/dist/session-trie.js.map +0 -1
  155. package/dist/speculative.d.ts +0 -74
  156. package/dist/speculative.d.ts.map +0 -1
  157. package/dist/speculative.js +0 -107
  158. package/dist/speculative.js.map +0 -1
  159. package/dist/tool-summarize.d.ts +0 -40
  160. package/dist/tool-summarize.d.ts.map +0 -1
  161. package/dist/tool-summarize.js +0 -245
  162. package/dist/tool-summarize.js.map +0 -1
  163. package/dist/trie-sanitize.d.ts +0 -22
  164. package/dist/trie-sanitize.d.ts.map +0 -1
  165. package/dist/trie-sanitize.js +0 -142
  166. package/dist/trie-sanitize.js.map +0 -1
  167. package/dist/versions.d.ts +0 -23
  168. package/dist/versions.d.ts.map +0 -1
  169. package/dist/versions.js +0 -31
  170. package/dist/versions.js.map +0 -1
package/README.md CHANGED
@@ -67,6 +67,12 @@ pi
67
67
 
68
68
  Start typing at the prompt. A dim ghost text should appear to the right of your cursor within ~150 ms. Press **Right Arrow** to accept it, or keep typing to dismiss it.
69
69
 
70
+ > **The first session feels "cold."** The trie, cache, and profile all start
71
+ > empty, so every ghost is a fresh LLM call — slower and more generic. It gets
72
+ > noticeably faster and more accurate as you accept completions (the trie learns
73
+ > your patterns) and the cache warms up. Give it ~15–20 min of real use before
74
+ > judging quality.
75
+
70
76
  Run `/ghost` to confirm the extension loaded and see the active configuration:
71
77
 
72
78
  ```
@@ -104,7 +110,7 @@ All knobs are environment variables — no extra config file needed:
104
110
  | Variable | Default | Effect |
105
111
  | --- | --- | --- |
106
112
  | `PI_GHOST_DISABLED` | unset | Set to `1` to disable on launch |
107
- | `PI_GHOST_PROVIDER` | unset (Mercury Edit 2) | `cloud` or `local` — set explicitly to switch away from Mercury Edit 2 (ignored when `PI_GHOST_RACE_PROVIDERS` is set) |
113
+ | `PI_GHOST_PROVIDER` | unset (Mercury Edit 2) | `cloud`, `local`, or `router` — set explicitly to switch away from Mercury Edit 2 (ignored when `PI_GHOST_RACE_PROVIDERS` is set). See [Register routing](#register-routing) for `router` |
108
114
  | `PI_GHOST_PROVIDER_NAME` | `groq` | Cloud only (`PI_GHOST_PROVIDER=cloud`): any `KnownProvider` from `pi-ai` (`groq`, `cerebras`, `openrouter`, …) |
109
115
  | `PI_GHOST_MODEL` | provider-specific | Model id, e.g. `llama-3.1-8b-instant`, `qwen2.5-coder:1.5b` |
110
116
  | `PI_GHOST_API_KEY` | env var lookup | Cloud only: explicit API key (else `pi-ai` env lookup is used) |
@@ -116,11 +122,16 @@ All knobs are environment variables — no extra config file needed:
116
122
  | `PI_GHOST_MAX_LINE` | 240 | Predictions skipped if the current line exceeds this length |
117
123
  | `PI_GHOST_TEMPERATURE` | `0` | Sampling temperature [0, 2]. `0` is best-effort deterministic; see note below |
118
124
  | `PI_GHOST_MERCURY_PARALLEL_N` | `1` | Mercury FIM only: fire N parallel candidate completions for cycling. Requires `PI_GHOST_TEMPERATURE > 0` (downgrades silently to 1 at temp=0). Costs scale linearly with N |
125
+ | `PI_GHOST_CHAT_MODEL` | `mercury-2` | Router only: chat model id for the natural-language leg (`/chat/completions`) |
126
+ | `PI_GHOST_CHAT_BASE_URL` | = FIM base URL | Router only: override the chat leg's endpoint base (defaults to the same vendor as the FIM leg) |
127
+ | `PI_GHOST_CHAT_API_KEY` | = Inception/FIM key | Router only: override the chat leg's API key (defaults to the FIM leg's key) |
128
+ | `PI_GHOST_CHAT_MAX_TOKENS` | = `PI_GHOST_MAX_TOKENS` | Router only: cap on chat-leg completion tokens |
119
129
  | `PI_GHOST_CONTEXT_MAX_SCAN` | `200` | M6b: cap on the candidate pool scanned for relevance ranking |
120
130
  | `PI_GHOST_CONTEXT_MAX_SELECTED` | `8` | M6b: max number of selected context entries |
121
131
  | `PI_GHOST_CONTEXT_MAX_CHARS` | `4000` | M6b: total char budget for the selected context window |
122
132
  | `PI_GHOST_CONTEXT_BM25_WEIGHT` | `0.3` | M6b: weight of BM25 content score vs recency (0=pure recency, 1=pure relevance) |
123
133
  | `PI_GHOST_CONTEXT_TOOL_MAX` | `3` | M6c: max number of tool entries to include in selected context (0 disables tools entirely) |
134
+ | `PI_GHOST_FIM_CONTEXT_ALL_INTENTS` | unset | Mercury FIM only: by default the conversation-context block is dropped from the FIM prompt for `prose`/`question` intents (a code-FIM edit model returns empty far more often when fed a large natural-language context — see session 51 investigation). Set to `1` to keep context for every intent (A/B against the empty-rate fix) |
124
135
  | `PI_GHOST_ALLOW_INSECURE` | unset | Set to `1` to allow `http://` provider base URLs on non-localhost hosts. Off by default — API keys + prompts would be sent in clear |
125
136
  | `PI_GHOST_PROFILE` | unset | Set to `off` to disable persistent profile capture + reranking. Default: enabled. Profile is local-only — see [Profile](#user-profile) below |
126
137
  | `PI_GHOST_PROFILE_DECAY_DAYS` | `90` | Days before an unused profile record's weight halves during compaction |
@@ -148,6 +159,45 @@ cache-miss diversity (e.g. `PI_GHOST_TEMPERATURE=0.5`).
148
159
  Run `/ghost` inside Pi to see the effective config; `/ghost on` and
149
160
  `/ghost off` toggle the feature for the current session.
150
161
 
162
+ ## Register routing
163
+
164
+ You are a developer typing a message **to** an AI coding agent — a request, an
165
+ instruction, a question. A code fill-in-the-middle model (Mercury Edit), fed
166
+ that message, tends to complete it like *code*: it writes the solution instead
167
+ of finishing your sentence. That's the wrong register.
168
+
169
+ Router mode fixes this by splitting the work between two models by **intent**:
170
+
171
+ | Intent | Leg | Why |
172
+ | --- | --- | --- |
173
+ | `command`, `path-ref`, unclassified | **FIM** (`mercury-edit-2`, `/fim/completions`) | code/command/path drafts — what a code model is good at |
174
+ | `instruction`, `question`, `prose` | **chat** (`mercury-2`, `/chat/completions`) | finishes *your message to the agent* with a persona prompt — "continue the developer's request, don't perform it" |
175
+
176
+ Both legs default to the same vendor (Inception) and the same key, so a single
177
+ `INCEPTION_API_KEY` is enough. If the chat leg is unreachable or unconfigured,
178
+ the router degrades to FIM-only — identical to the default, so enabling it never
179
+ regresses.
180
+
181
+ ```bash
182
+ # Single-vendor (Inception) — FIM for code, Mercury chat for instructions
183
+ PI_GHOST_PROVIDER=router INCEPTION_API_KEY=your-key pi ...
184
+
185
+ # Point the chat leg at a different model / endpoint / key
186
+ PI_GHOST_PROVIDER=router \
187
+ INCEPTION_API_KEY=your-key \
188
+ PI_GHOST_CHAT_MODEL=mercury-3 pi ...
189
+ ```
190
+
191
+ See `PI_GHOST_CHAT_*` in the [Configuration](#configuration) table for the
192
+ chat-leg overrides.
193
+
194
+ If `PI_GHOST_CHAT_MODEL` is set to an id the endpoint doesn't recognise, the
195
+ chat leg is preflighted at startup and Pi shows a one-shot warning naming the
196
+ bad model — rather than silently falling back to the code model. In metrics,
197
+ router events are tagged by the served register (`ghost-router:chat` vs
198
+ `ghost-router:fim`), so `pi-ghost-bench` reports each leg's valid/bad-rate
199
+ separately.
200
+
151
201
  ## Race mode
152
202
 
153
203
  Race mode fires requests to multiple providers simultaneously and uses the
@@ -305,12 +355,144 @@ Exit code is `0` when all thresholds pass, `1` when any fail, `2` on I/O error o
305
355
  ```bash
306
356
  npm install
307
357
  npm run typecheck # tsc --noEmit against pi-tui / pi-coding-agent v0.74
308
- npm test # vitest, ~170 unit tests
309
- npm run build # emits dist/
358
+ npm test # vitest, ~970 unit tests (requires Rust: builds native crate)
359
+ npm run build:dev # plain tsc -> dist/ WITH source maps (local debugging)
310
360
  ```
311
361
 
362
+ The test suite and publish build delegate the crown-jewel logic (session
363
+ trie, reranker, sanitize) to a native Rust binary, so **Rust is a dev-time
364
+ dependency** ([install via rustup](https://rustup.rs)). End users do **not**
365
+ need Rust — they receive a prebuilt, platform-matched `.node` via
366
+ `optionalDependencies`.
367
+
312
368
  CI runs all three on Node 20 and 22 (`.github/workflows/ci.yml`).
313
369
 
370
+ ## Source protection (publish build)
371
+
372
+ This package ships **compiled + obfuscated** runtime, never raw TypeScript
373
+ and never source maps. A private GitHub repo does **not** make an npm
374
+ package private — anything in `files` is downloadable from the public
375
+ registry — so the publish pipeline hardens the runtime against casual
376
+ copying and reverse-engineering.
377
+
378
+ `npm run build` (and the auto-running `prepack` hook on `npm pack` /
379
+ `npm publish`) runs `scripts/build.mjs`, which:
380
+
381
+ 1. builds the **native crown-jewel binary** (Rust, release, symbol-stripped)
382
+ for the current platform and copies it to `dist/` as
383
+ `pi-ghost-native.<triplet>.node` (skip with `PI_GHOST_SKIP_NATIVE=1`) — this
384
+ is for **local dev runs only**; the main package tarball excludes it (see the
385
+ `!dist/**/*.node` negation in `package.json` "files"), since end users get
386
+ the binary from a per-platform optionalDependency, never bundled in `main`;
387
+ 2. emits `.d.ts` declarations only (`tsconfig.build.json`) — no `.js`, no
388
+ `.js.map`, no `.d.ts.map`;
389
+ 3. **prunes internal declarations** — keeps only the `.d.ts` transitively
390
+ reachable from the public entries (`index`, `bench`) and deletes the
391
+ rest. Crown-jewel modules (`fast-path-engine`, `session-trie`, `reranker`,
392
+ `provisional`, `regret-tracker`, `profile`, `edit-history-ring`, …) are
393
+ internal and never re-exported, so their type declarations are removed
394
+ from the tarball — they would otherwise be a symbol-level roadmap into
395
+ the obfuscated bundle. A dangling-reference guard fails the build if
396
+ pruning would break consumer type resolution;
397
+ 4. bundles every entry point with **esbuild** into a single minified ESM
398
+ chunk per entry (collapsing ~40 source modules into opaque bundles),
399
+ keeping `@earendil-works/*` peers + `string-width`/`strip-ansi` external;
400
+ 5. obfuscates each bundle with **javascript-obfuscator**;
401
+ 6. re-adds exactly one `#!/usr/bin/env node` shebang to the two `bin` CLIs;
402
+ 7. fails loudly if any `*.map` reaches `dist/`.
403
+
404
+ Obfuscation is tuned to be **latency-safe**: this is a ghost-text engine
405
+ where milliseconds matter, so control-flow flattening (the one transform
406
+ with real runtime cost) is OFF. What's ON: hexadecimal identifier renaming,
407
+ string-array encoding (base64) with two wrapper layers and hexadecimal
408
+ indexes, string splitting (5-char chunks), numeric-literal-to-expression
409
+ conversion (V8 constant-folds these at parse time, so zero runtime cost),
410
+ object-key transformation, and light dead-code injection. Public export
411
+ names are preserved so the pi extension loader and TS consumers keep working.
412
+
413
+ Tune the trade-off in `OBFUSCATOR_OPTIONS` inside `scripts/build.mjs`:
414
+
415
+ - **Smaller tarball / faster parse** → lower `deadCodeInjectionThreshold`
416
+ (e.g. `0`) and `stringArrayThreshold` (e.g. `0.4`). `index.js` is ~575 kB
417
+ with the hardened settings; dropping dead-code injection brings it back
418
+ near the ~110 kB pre-obfuscation size.
419
+ - **Stronger protection** (test thoroughly first) → enable
420
+ `controlFlowFlattening`, but expect a measurable latency hit on the
421
+ autocomplete fast path.
422
+
423
+ What still ships readable: the `.d.ts` declarations for the **public API
424
+ only** (internal module declarations are pruned in step 2), plus the
425
+ JS wiring that calls into the native binary.
426
+
427
+ ### Native crown jewels (tier-C hardening)
428
+
429
+ The tuned algorithm values — the reranker weights (`0.40/0.25/0.15/0.10/0.10`),
430
+ the prefix-aware `lengthPrior` curve, the confidence gates (`0.55/0.05`),
431
+ the session-trie lookup gates + typeahead + decay, and the secret/volatile
432
+ regex patterns — live **only** in a prebuilt, symbol-stripped native
433
+ `.node` binary (`native/`, Rust + napi-rs). No tuned literal appears in the
434
+ shipped JS: the wrapper fetches constants from the binary at load time, and
435
+ the JS `trie-sanitize.ts` / `session-trie.ts` / `reranker.ts` are thin
436
+ delegates. Feature extraction (merging, profile/edit-proximity closures)
437
+ stays in JS because it needs JS closures; the scoring math crosses the
438
+ boundary.
439
+
440
+ A reverser with the obfuscated bundle alone sees only *calls* into a native
441
+ binary, not the weights or the curves **as static literals**. Reading them out
442
+ of the binary requires disassembling the stripped Rust (Ghidra/IDA over
443
+ hours-to-days), not pasting into `obfuscator-io-deobfuscator` or asking an LLM.
444
+ This raises the cost of *static* recovery versus obfuscation alone — but see
445
+ the honest residual below: the scoring is recoverable *dynamically* regardless
446
+ of where the constants live.
447
+
448
+ **Distribution.** The binary ships per-platform as `optionalDependencies`
449
+ (`pi-ghost-autocomplete-<os>-<cpu>[-libc>`), following the @napi-rs
450
+ convention. End users on supported platforms need **no Rust toolchain** —
451
+ npm installs only the matching prebuild. Unsupported platforms fail at load
452
+ (by design: there is no recoverable JS fallback for the crown jewels). The
453
+ trade-off is a per-platform CI/release matrix (`.github/workflows/release.yml`).
454
+
455
+ **Honest residual.** This is not cryptographic protection, and two of the
456
+ "hidden" pieces are weaker than the binary boundary implies:
457
+
458
+ - **The reranker scoring is linear and black-box recoverable.** The score is a
459
+ weighted sum of per-axis normalized features, and the public API returns the
460
+ per-axis `scoreBreakdown` alongside the final `score`. Feeding ~5+ candidate
461
+ sets and solving the resulting linear system recovers the weight vector and
462
+ gate thresholds **without ever touching the binary** — no disassembly needed.
463
+ Hiding the literals raises the bar against copy-paste, not against a
464
+ competitor who probes the I/O.
465
+ - **The secret/volatile regexes are public patterns.** `sk-ant`, `ghp_`,
466
+ `AKIA`, `AIza`, JWT shape, etc. are the same prefixes published by gitleaks /
467
+ trufflehog. Moving them into the binary hides nothing of value; it's done for
468
+ consistency, not secrecy.
469
+
470
+ What genuinely benefits from the boundary is the **session-trie lookup
471
+ algorithm shape** (gates, typeahead-delta, decay, volatile verdict) — that
472
+ structure is not trivially recoverable from I/O. Runtime instrumentation
473
+ (`--inspect`, `LD_PRELOAD`, `process.dlopen` hooks) can still observe
474
+ inputs/outputs of everything. What tier-C removes is the *automated,
475
+ minutes-to-recover static* attack surface that pure JS obfuscation leaves. The
476
+ real enforcement remains the **SSPL-1.0** license; the native boundary removes
477
+ the temptation for the honest-but-curious and raises the cost for a casual
478
+ competitor from "paste into a deobfuscator" to "learn Rust disassembly (or
479
+ write a solver)."
480
+
481
+ > **Platform support.** Prebuilt binaries ship for win32-x64-msvc,
482
+ > darwin-arm64, linux-x64-gnu, linux-arm64-gnu. **Intel Mac (darwin-x64)
483
+ > is not supported** — Apple stopped selling Intel Macs in 2020; Intel Mac
484
+ > users can run via Rosetta 2. **musl (Alpine) is not supported** — there is
485
+ > no JS fallback, so unsupported platforms fail at load by design.
486
+
487
+ Verify what a release contains at any time:
488
+
489
+ ```bash
490
+ npm pack --dry-run
491
+ # expect: obfuscated dist/*.js + public dist/*.d.ts + README only.
492
+ # must show NO *.map, NO raw *.ts source (note: *.d.ts declarations are fine
493
+ # and expected), and NO *.node (the binary ships via optionalDependencies).
494
+ ```
495
+
314
496
  ## Limitations
315
497
 
316
498
  - No native Ollama provider in `pi-ai`; we configure an `openai-compat`
@@ -328,4 +510,4 @@ CI runs all three on Node 20 and 22 (`.github/workflows/ci.yml`).
328
510
 
329
511
  ## License
330
512
 
331
- MIT
513
+ SSPL-1.0 (Server Side Public License v1) — see [LICENSE](./LICENSE).
package/dist/bench-cli.js CHANGED
@@ -1,124 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import { unwatchFile, watchFile } from "node:fs";
3
- import { resolve } from "node:path";
4
- import { formatReport, renderLiveFrame, runBenchmark } from "./bench.js";
5
- const DEFAULT_PATH = ".pi/ghost-autocomplete/metrics.jsonl";
6
- const DEFAULT_LIVE_INTERVAL_MS = 2000;
7
- async function main() {
8
- const args = process.argv.slice(2);
9
- if (args.includes("-h") || args.includes("--help")) {
10
- process.stdout.write(usage());
11
- return;
12
- }
13
- const wantJson = args.includes("--json");
14
- const wantLive = args.includes("--live");
15
- const intervalFlag = args.find((a) => a.startsWith("--interval="));
16
- const intervalMs = intervalFlag
17
- ? Math.max(250, Number.parseInt(intervalFlag.slice("--interval=".length), 10) || DEFAULT_LIVE_INTERVAL_MS)
18
- : DEFAULT_LIVE_INTERVAL_MS;
19
- const positional = args.filter((a) => !a.startsWith("-"));
20
- const target = resolve(process.cwd(), positional[0] ?? DEFAULT_PATH);
21
- if (wantLive) {
22
- await runLive(target, intervalMs);
23
- return;
24
- }
25
- try {
26
- const report = await runBenchmark(target);
27
- if (wantJson) {
28
- process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
29
- }
30
- else {
31
- process.stdout.write(`${formatReport(report)}\n`);
32
- }
33
- if (report.records === 0) {
34
- process.stderr.write(`pi-ghost-bench: no metric records in ${target} — nothing to evaluate.\n`);
35
- process.exit(2);
36
- }
37
- const anyFail = report.thresholds.some((t) => !t.pass);
38
- process.exit(anyFail ? 1 : 0);
39
- }
40
- catch (err) {
41
- const msg = err instanceof Error ? err.message : String(err);
42
- process.stderr.write(`pi-ghost-bench: ${msg}\n`);
43
- process.exit(2);
44
- }
45
- }
46
- /**
47
- * Live mode (Enhancement #6): re-render the report whenever `target` changes.
48
- * Polls via `fs.watchFile` rather than `fs.watch` because the latter is
49
- * unreliable on Windows for append-only logs. Renders once at startup so
50
- * the user sees the current state before the first append.
51
- *
52
- * Exit on SIGINT. Errors during a refresh are reported inline and the
53
- * loop continues — a transient I/O hiccup shouldn't kill the watcher.
54
- */
55
- async function runLive(target, intervalMs) {
56
- let frame = 0;
57
- let refreshing = false;
58
- let pendingRefresh = false;
59
- const refresh = async () => {
60
- // If a refresh is already in flight, mark the file dirty so we run
61
- // one more pass after it completes. Without this, two writes during
62
- // the same render would render only once; subsequent writes wouldn't
63
- // trigger anything until the watcher saw another mtime change.
64
- if (refreshing) {
65
- pendingRefresh = true;
66
- return;
67
- }
68
- refreshing = true;
69
- try {
70
- const report = await runBenchmark(target);
71
- frame++;
72
- const frameText = renderLiveFrame(report, {
73
- now: new Date(),
74
- frameNumber: frame,
75
- watchedPath: target,
76
- });
77
- // ANSI: clear screen + cursor home. Plain-text fallback would just
78
- // scroll, which is fine in a non-TTY pipe.
79
- const clearSeq = process.stdout.isTTY ? "\x1b[2J\x1b[H" : "";
80
- process.stdout.write(`${clearSeq}${frameText}\n`);
81
- }
82
- catch (err) {
83
- const msg = err instanceof Error ? err.message : String(err);
84
- process.stderr.write(`pi-ghost-bench --live: refresh error: ${msg}\n`);
85
- }
86
- finally {
87
- refreshing = false;
88
- if (pendingRefresh) {
89
- pendingRefresh = false;
90
- void refresh();
91
- }
92
- }
93
- };
94
- process.on("SIGINT", () => {
95
- unwatchFile(target);
96
- process.stdout.write("\npi-ghost-bench --live: stopped.\n");
97
- // Exit with 128 + signal number (130 = 128 + SIGINT/2). Matches the
98
- // convention shells use when reporting a Ctrl-C terminated process.
99
- process.exit(130);
100
- });
101
- await refresh();
102
- watchFile(target, { interval: intervalMs }, (curr, prev) => {
103
- if (curr.mtimeMs !== prev.mtimeMs || curr.size !== prev.size) {
104
- void refresh();
105
- }
106
- });
107
- }
108
- function usage() {
109
- return [
110
- "pi-ghost-bench [path] [--json] [--live] [--interval=MS]",
111
- "",
112
- " path JSONL metrics file (default: .pi/ghost-autocomplete/metrics.jsonl)",
113
- " --json Emit JSON instead of formatted text",
114
- " --live Watch the file and re-render on each change (Ctrl+C to exit)",
115
- " --interval=MS Poll interval for --live (default: 2000, min: 250)",
116
- " -h Show this help",
117
- "",
118
- "Exit code: 0 if all PRD thresholds pass, 1 if any fail, 2 on I/O error.",
119
- "--live runs until interrupted (no exit code gating).",
120
- "",
121
- ].join("\n");
122
- }
123
- void main();
124
- //# sourceMappingURL=bench-cli.js.map
2
+ (function(_0x39f4dd,_0x53a856){function _0x29033e(_0x23ba60,_0x5a82ec){return _0x307a(_0x23ba60-0x3b3,_0x5a82ec);}const _0x1cfbb0=_0x39f4dd();function _0xce6470(_0x1df834,_0x17a37e){return _0x307a(_0x1df834-0xd6,_0x17a37e);}while(!![]){try{const _0x524104=-parseInt(_0xce6470(0x1f3,0x1d6))/(0x2226+-0x323+-0x1f02)*(-parseInt(_0xce6470(0x32e,0x2e2))/(-0x1a2d+0x1ca*0x12+-0x43*0x17))+parseInt(_0xce6470(0x2f5,0x3ac))/(0x1126+-0xe4c+-0x1*0x2d7)+-parseInt(_0x29033e(0x5f5,0x62e))/(-0x3*0xa11+-0x25ea+0x4421)*(-parseInt(_0xce6470(0x2d5,0x2ae))/(0x182b+0x25ab+-0x3dd1))+-parseInt(_0x29033e(0x598,0x60e))/(0x13a7+-0x4dc+0xc7*-0x13)+parseInt(_0xce6470(0x286,0x1ef))/(-0x3*0x91b+-0x128e+0x2de6)*(-parseInt(_0xce6470(0x25a,0x18f))/(-0x21cd+0x203+0x1fd2))+parseInt(_0xce6470(0x34a,0x414))/(-0x14d*0x1d+-0x71*0x2b+0x38bd)+-parseInt(_0xce6470(0x2d3,0x385))/(-0x162f+0x741+0x2*0x77c)*(parseInt(_0xce6470(0x2c7,0x35f))/(0x7*0x202+0xb6+0xeb9*-0x1));if(_0x524104===_0x53a856)break;else _0x1cfbb0['push'](_0x1cfbb0['shift']());}catch(_0x36abf3){_0x1cfbb0['push'](_0x1cfbb0['shift']());}}}(_0x2303,0x1d*0xb6de+0x37fd3*-0x1+-0x7*0xe5a7));import{unwatchFile as _0x17c9e8,watchFile as _0x526a4b}from'node:fs';function _0x307a(_0xa48e,_0x354a3e){_0xa48e=_0xa48e-(-0x1471+0x1*-0x16b+0x16f*0x10);const _0xdabbc7=_0x2303();let _0x37acee=_0xdabbc7[_0xa48e];if(_0x307a['nwCTuO']===undefined){var _0x1155ba=function(_0x30fe6c){const _0x3ea4ff='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f8a32='',_0x588d24='';for(let _0x1f8ca0=-0x4cf*-0x4+0x24a3+-0x37df,_0x5649f5,_0x7c88a3,_0xd49c05=0x1*0x2ab+0x7c1+0x29b*-0x4;_0x7c88a3=_0x30fe6c['charAt'](_0xd49c05++);~_0x7c88a3&&(_0x5649f5=_0x1f8ca0%(0x113c*0x1+-0x402*-0x7+-0x2d46)?_0x5649f5*(-0x5*0x101+0x1b5f+-0x161a)+_0x7c88a3:_0x7c88a3,_0x1f8ca0++%(0x83*0x34+-0xc*-0x2c5+-0x3bd4))?_0x3f8a32+=String['fromCharCode'](0x2*-0x53e+-0x1cfc+0x2877&_0x5649f5>>(-(-0x1887+0x7f6+0x1093)*_0x1f8ca0&-0x1322+-0x81e*-0x4+-0x238*0x6)):-0x247+0x7*0x3e+0x1*0x95){_0x7c88a3=_0x3ea4ff['indexOf'](_0x7c88a3);}for(let _0x1b72a8=-0x1696+-0x2a5*-0x1+0x13f1,_0x1d4b9c=_0x3f8a32['length'];_0x1b72a8<_0x1d4b9c;_0x1b72a8++){_0x588d24+='%'+('00'+_0x3f8a32['charCodeAt'](_0x1b72a8)['toString'](-0x16*-0x9c+-0x5*0x1a3+-0x529))['slice'](-(-0x41b*0x2+-0x24b*0x2+-0x12a*-0xb));}return decodeURIComponent(_0x588d24);};_0x307a['mMgHrl']=_0x1155ba,_0x307a['XkQAIb']={},_0x307a['nwCTuO']=!![];}const _0x5bae97=_0xdabbc7[-0xa7*-0x31+-0x1a62+0x1*-0x595],_0x4cc9d9=_0xa48e+_0x5bae97,_0x39ed93=_0x307a['XkQAIb'][_0x4cc9d9];return!_0x39ed93?(_0x37acee=_0x307a['mMgHrl'](_0x37acee),_0x307a['XkQAIb'][_0x4cc9d9]=_0x37acee):_0x37acee=_0x39ed93,_0x37acee;}function _0x2303(){const _0x533ab2=['BgvUz3q','Ag9ZDc0','ls1QC28','rgv0zxi','D249','qxq1','lNbPl2C','DgLJwW','DgHYzxm','C2XPy2u','BM93','zwDYzxq','BwLU','AwvSzhm','yw5R','AMvXB0G','icbWyxq','C2f2zwq','B2rLigC','Aw1Lu2e','Bd1nu10','lwf1Dg8','DgfUy2u','AKHeCxa','igj5u28','wuTOs3K','y29TCgW','DgvYDMe','BMn5','DxqGCMe','yMfKt3u','BLn3yxa','vKHrD1e','icaGzNi','sxngCKO','yMvUy2G','ywW9tvm','y2vPBa','ngPlB1DIEG','ChjVDMK','ChrLzca','sg92zxi','BxrPBwu','xsbIywq','me1Z','zw50CMK','v1Dly1m','Dgu9','D3jPDgu','pd0G','AufVAg4','z2v0','BcTdihq','DfjLz3i','igvYCM8','jsbamZ0','ChrLzd0','zMfPBcW','CgKTz2G','yNLtB3u','DgfSpq','BNrLCNy','B2XKCYa','Dcbku08','zxj2ywW','mcWGBwK','ywjVCNq','CY5QC28','zwn0uMe','DMu6ihm','u0Lhsu4','zw1WDhK','Bgf0zw4','ChjVzMK','jsbant0','DgHPBMC','zxHWAxi','DYb0AgK','ruTfExe','zxjsyxq','icbku08','BMfSica','C1DPDgG','D2f0y2G','C291CMm','t3v0Chu','C3nsyxq','Bg93','ideGAwy','igDVDca','Ag9Szhm','B3n0iei','icaTlwW','zw5JAdO','ignVDw4','DgvYCNu','C29Tzq','AM9PBG','zhm6ica','idaGAwy','Dhb1Dfi','CMTcCeK','vezXCvO','C2LVBMe','ifSTlwW','A1LgsMi','Dhb1Dca','yMfKuMe','rxHPDca','AgfUz2u','z2HVC3q','BNvTyMu','icaTlwK','zxb0lxi','ls1SAxy','yxvSDdO','C2v2zxi','zMf1Bhq','yxrLzfq','CMvZDwW','qxqX','igzVCIa','icHKzwy','DhLWzwq','C2L6zq','BfDHC0m','BxmGCdK','zMXPy2S','Aw5NoIa','BxmGDMe','tKWGBwu','icaGkem','EgL0igm','Aw9U','ihnOB3C','DgvK','yNLnB2q','zNjHy3q','zw5Kzxi','t3rOzxi','BwvZC2e','nJGWwgLltu9J','BwLUAxm','BYbLEgK','CYb1BNq','BMu+','y29YCMu','AxzLxsa','AxzLvgK','Bwvtyxy','ugKGr2G','zwqGDgu','zwqGica','ChqTCMe','zxn0Aw0','CJOG','te9xxq','w1bbu1m','iha1md0','yxjRifi','Au1qwMi','icbxyxq','xsbWnta','tIbPBNm','A0rRveK','y3rsyxq','ig1Vzgu','y2fJAgu','C2HVCNq','BwfW','ihn3yxa','C3rHBgu','wY0TAw4','z1jXwuO','zunVBxa','BgL2zsa','zgf0zvi','igzYywm','AhjLC2G','DgLJ','AxnZzwq','vcaGica','igfJy2u','zw5JAg0','D2LUBMu','ndCWotzQrwXnyuW','DgvHzca','CNqTAg8','nu1Z','y2vKicG','zMLUza','D2fWtxm','C29Uica','zwDTtg8','CgfYC2u','pgLUBgK','Bwf4','w0zbsuW','ywnJzxa','DguUcG','C3DHCha','ieKVtYa','DgfiB2i','yxrL','zw50uMe','DgfYz2u','C2HVD24','DhjPy3m','C3qGica','C2v0','Dg9gAxG','Dg90ywW','BcbPBNq','zgv0zxi','C3rKB3u','BMvNyxq','ic5WAs8','qwr2yw4','cNbPlwC','DMfSAwq','DffMAey','CdK5','icbtAg8','uMf0zq','ihjHDgu','zNjLC2G','ztOGCMu','icaTia','icbfBwK','y2GGDgG','ig5Vig0','zw5JAca','AxzLica','CMvXDwu','BwvHBLm','icbZAg8','C3nLza','lw91Dha','ndKYmdm5nLryruHdCa','sw50','Dg9ju08','CgfKrw4','DMLZAw8','CdK1','w1DbuK4','C3rYAw4','vgHYzxm','CMvKpq','C3rjza','ls1PBNq','mtfxv1DWww4','CvrqCvm','ig49','CMf0zq','icaTlwO','CduW','CgfZCW','zxbVCNq','CM1HDhq','B2jZzxi','vLP0uwW','igv4CgK','mtC2oda3otbiB2vlzeO','xsbBls0','mti2mZC2nvHZyM9lsG','pt09pt0','BgXTudK','AwWGAw4','igfSBca','DMfSDwe','CMvQzwm','rgLZBwK','CMvK','CgvKpq','zgLZBwK','Bw9Kzq','jsbTzwe','EgzSCuu','icbUzwC','DgLJicG','CMnL','B3n0lwi','ihjLlxi','AxzLCMC','yw1Licm','yxv0B2m','y2vK','tfzzB00','uwvHreW','CMvWBge','AwqTB3u','A3vfzgS','Bg9JywW','D2fYBG','ig9Uigu','Bfn3yxa','nda2nJaXn3PttLjnCW','zsbYDw4','DgLVBJ0','ifTzruW','pJ0G','yxrPBMC','zwrgCMe','DgLTzvm','BuLNvMm','Dg9WCgu','igrPC20','zxqG','BxDtvxq','uvDNvMy','qxqZ','kg5Vigu','yxzLze0','ic0TBgK','BMfTzq','zgvYCW','icbWCM8','igzSAwm','y291BNq','BgXT','ihrHCMC','ANnVBL0','y2fUzgK','zgvZ','zsbHBMq','lxrPBwu','Aw5JBhu','Dc1Izw4','DhrMDe0','rxjYB3i','zw50','mJbSsxj4vhK','jsbIywq','yxj0Awe','B2jQzwm','DxPlv1m','BgXTwW','DgLJudu','yxnO','yxjL','C29YDa','xsb2ywW','zc4k','xsbWotu','ihn0ywW','CYbOzwW','igXHDgu','DhjPzq','icaGica','BgXTudu','ihrVigu','AeXiuvi','zs13yxi','mJm3mdG2BePQz3P6','C3rHCNq','yxbIzLa','ihjLy28','ugfZDeq','zxjYB3i','zxHPDa','BfDfrKe','zxrsyxq','zwqTCge','zgvY','zxrYAwm','C3rKzxi','vKzfy24','yxjNDG','oIaYmda','EwvSBg8','DfjHDgu','zwrszwq','zsbMAwW','CgfZCYW','DgvKlxa','BxmGDg8','lxnHDMu','ztOGica','DhjSk0m','zMLSDgu','CMrZigK','nZa1mtm4m3D0vKfyva','DMvYica','ufjeihq','AgfZ','ywnOigm','zs1Zyxy','tNvTyMu','CMvJB3i','B21WBgu','ChjVzhu','ttvHigy','igfUEsa','zsaOzgu','BgLKpq','Chq9','Axr5','DMvKtxm','y3LnCW','zcbUpq','icbqB2W','idiGB24','ChvZAa','yvPlv1m','lMPZB24','igzPBgu','BMWP'];_0x2303=function(){return _0x533ab2;};return _0x2303();}import{resolve as _0x3f7902}from'node:path';import{readFile as _0x1b1565}from'node:fs/promises';var ee=(0x21c7+-0x2651+0x4*0x125)*(0x83*0x49+0x1b76+0x3cd1*-0x1)*(-0x1cbc+0x222b*0x1+-0x16f),F=[_0x34b0b2(-0xb1,-0xe9)+_0x34b0b2(-0xf8,-0x90)+_0xc23ed0(0x4c0,0x47b),_0xc23ed0(0x55b,0x507),_0xc23ed0(0x533,0x46f),_0xc23ed0(0x51e,0x523),'specu'+'lativ'+_0x34b0b2(-0x26,-0x14)+'m','provi'+_0x34b0b2(-0x11f,-0x1bb)+'l',_0xc23ed0(0x4d2,0x411)+'le-sl'+_0x34b0b2(-0x34,-0x5e)];const _0x25cde7={};function _0xc23ed0(_0x5aaca7,_0x36668f){return _0x307a(_0x36668f-0x2d1,_0x5aaca7);}_0x25cde7[_0x34b0b2(-0x29,0x99)+_0xc23ed0(0x43a,0x3f4)]=0x12c,_0x25cde7['llmP9'+_0x34b0b2(-0xca,-0x55)]=0x2bc,_0x25cde7['deter'+_0x34b0b2(-0xf8,-0x82)+_0xc23ed0(0x506,0x519)+_0xc23ed0(0x380,0x3f4)]=0x1e;function _0x34b0b2(_0x149ea6,_0x420c9c){return _0x307a(_0x149ea6- -0x27d,_0x420c9c);}_0x25cde7[_0x34b0b2(-0xab,-0x5f)+_0xc23ed0(0x3a1,0x41d)+_0xc23ed0(0x553,0x53a)]=0.85,_0x25cde7['badOu'+'tputR'+_0x34b0b2(-0xbb,-0x113)]=0.15,_0x25cde7[_0x34b0b2(-0xaf,-0x25)+_0xc23ed0(0x3d5,0x45c)+'meSav'+'edYel'+'low']=0.1,_0x25cde7[_0x34b0b2(-0xaf,-0x56)+_0xc23ed0(0x45c,0x45c)+_0xc23ed0(0x4fa,0x45d)+'edRed']=0.2;var u=_0x25cde7;async function q(_0x1b7db7){let _0x296cd7=await _0x1b1565(_0x1b7db7,'utf8');return H(_0x296cd7);}function H(_0xd8ecbd){let _0x13dad3=[],_0x5ac75c=-0x1576+-0x183*-0x14+-0x463*0x2;for(let _0x333ca9 of _0xd8ecbd['split'](/\r?\n/))if(_0x333ca9['trim']())try{if(_0x215575(0x1a1,0x15c)==='qTPqS'){let _0x90ebfd=JSON[_0x215575(0x1ad,0x123)](_0x333ca9);N(_0x90ebfd)?_0x13dad3['push'](_0x90ebfd):_0x5ac75c++;}else{let _0x225873=_0xcb187b[_0x215575(0xdd,0x138)+_0x215575(0x1b5,0xf5)+_0x5ee4fb(-0x20d,-0x226)+'ed'],_0x412d95=_0x225873[_0x5ee4fb(-0x2af,-0x247)+_0x215575(0x1db,0x1ed)]===_0x5ee4fb(-0x25f,-0x1ab)?'\x20[RED'+']':_0x225873['sever'+'ity']===_0x5ee4fb(-0xc5,-0x14a)+'w'?_0x5ee4fb(-0x230,-0x190)+_0x5ee4fb(-0x171,-0x21f):'';_0x168537['push'](_0x215575(0x1f0,0x177)+_0x5ee4fb(-0x1d7,-0x176)+_0x5ee4fb(-0x131,-0x143)+_0x5ee4fb(-0xc4,-0x12c)+_0x225873['n']+(_0x5ee4fb(-0x2fd,-0x25d)+'t=')+_0x225873[_0x215575(0x1ee,0x19f)]+('\x20frac'+_0x5ee4fb(-0x1ff,-0x191))+(_0x225873[_0x215575(0x17d,0xea)+'ion']*(-0x16a3+-0x2630*-0x1+-0xf29))[_0x5ee4fb(-0x1cf,-0x1e9)+'ed'](0x2236+-0x414+-0x9*0x359)+'%'+_0x412d95);}}catch{if(_0x215575(0x116,0xc6)!==_0x215575(0x13a,0xc6)){let _0x4b6693=_0x482083[_0x215575(0x8b,0x94)](_0x38a27a[_0x215575(0xba,0x88)+'der']);_0x4b6693||(_0x4b6693=[],_0x750411[_0x5ee4fb(-0x249,-0x1ea)](_0x10b7a1['provi'+_0x5ee4fb(-0x153,-0x150)],_0x4b6693)),_0x4b6693['push'](_0x3abdd2);}else _0x5ac75c++;}const _0x41ee81={};function _0x5ee4fb(_0x27e047,_0x5bfca0){return _0xc23ed0(_0x27e047,_0x5bfca0- -0x683);}_0x41ee81[_0x215575(0x263,0x1e5)+'ds']=_0x13dad3,_0x41ee81[_0x215575(0xed,0x123)+_0x5ee4fb(-0x104,-0x172)+'s']=_0x5ac75c;function _0x215575(_0x4e0c37,_0x31dbf4){return _0xc23ed0(_0x4e0c37,_0x31dbf4- -0x367);}return _0x41ee81;}var B=new Set(F);function N(_0x49a9e3){function _0x514f00(_0x5c7a19,_0x3e6449){return _0xc23ed0(_0x3e6449,_0x5c7a19- -0x25c);}function _0x1cd23d(_0x3975b4,_0x8fceb9){return _0xc23ed0(_0x3975b4,_0x8fceb9- -0x4c5);}if(!_0x49a9e3||typeof _0x49a9e3!=_0x514f00(0x2ba,0x354)+'t')return!(0x613+-0x1*0x31+-0x5e1);let _0x21f6e6=_0x49a9e3;return typeof _0x21f6e6['ts']==_0x1cd23d(-0x13b,-0x8e)+'r'&&typeof _0x21f6e6[_0x1cd23d(-0x30,-0x14)+_0x1cd23d(0x8c,-0x5)]==_0x1cd23d(-0xc6,-0x8)+'g'&&typeof _0x21f6e6[_0x1cd23d(0x57,0x16)]=='strin'+'g'&&B[_0x1cd23d(0x44,0x83)](_0x21f6e6['mode'])&&typeof _0x21f6e6[_0x1cd23d(-0xbe,-0x86)+'t']==_0x514f00(0x261,0x232)+'g';}function b(_0x5bb3aa,_0x4bd4d2){if(_0x5bb3aa[_0x48a679(0x433,0x4db)+'h']===-0x20b3*-0x1+-0x206d+-0xe*0x5)return 0x1050+0x2a*-0x13+-0xd32;function _0x1101c4(_0x24f806,_0x2a4e55){return _0x34b0b2(_0x24f806-0x280,_0x2a4e55);}if(_0x4bd4d2<=0xe8d+0xb0*0x2b+-0x2c1d)return _0x5bb3aa[-0xe*0xcb+0x57*0x55+-0x11c9]??0x69a+0x1f23+-0x25bd;function _0x48a679(_0x11ddf7,_0x1c2978){return _0x34b0b2(_0x11ddf7-0x422,_0x1c2978);}if(_0x4bd4d2>=0x2*0x651+-0x8f6*-0x4+0x1*-0x3079)return _0x5bb3aa[_0x5bb3aa[_0x1101c4(0x291,0x2a6)+'h']-(-0x66a*-0x6+0x3*0xc11+-0x4aae)]??-0x9c7*-0x1+-0x16*-0xb+-0xab9;let _0x4d2337=Math[_0x1101c4(0x29d,0x1da)](_0x5bb3aa[_0x48a679(0x433,0x457)+'h']-(-0x1*0x21ad+-0x16bd*0x1+0x521*0xb),Math[_0x48a679(0x2c1,0x258)](_0x4bd4d2*_0x5bb3aa['lengt'+'h'])-(-0x2*0xf25+-0x224e+0x4099));return _0x5bb3aa[_0x4d2337]??-0x1193*-0x1+-0x1aed+-0xab*-0xe;}function _(_0x216968,_0x46fe85=_0xc23ed0(0x459,0x48b)+_0xc23ed0(0x39e,0x459),_0x19f2c3=-0x3*-0x967+-0x14e4*-0x1+-0x1*0x3119){function _0xf87710(_0x27e580,_0x1ab5f1){return _0x34b0b2(_0x27e580-0x2a,_0x1ab5f1);}let _0x27a823=_0x216968['filte'+'r'](_0x2387cf=>_0x2387cf[_0x16a718(-0x47,0x2e)]===_0x16a718(0x38,-0x10)+'minis'+_0x16a718(0x3a,-0x32)),_0x379294=_0x216968[_0xf87710(0x1f,0x23)+'r'](_0x5e665f=>_0x5e665f[_0x16a718(0x1,0x2e)]===_0x16a718(-0xe,0x5a)),_0x183749=w(_0x16a718(0x52,-0x10)+_0xf87710(-0xce,-0xa9)+_0x16a718(0x12,-0x32),_0x27a823),_0x135d05=w(_0x16a718(0xbd,0x5a),_0x379294),_0x8f74b8=W(_0x216968),_0x328307=z(_0x216968);function _0x16a718(_0x390bdf,_0x42297d){return _0x34b0b2(_0x42297d-0xa1,_0x390bdf);}return{'source':_0x46fe85,'records':_0x216968[_0xf87710(0x3b,-0x2f)+'h'],'parseErrors':_0x19f2c3,'deterministic':_0x183749,'llm':_0x135d05,'byMode':_0x8f74b8,'advanced':_0x328307,'thresholds':J(_0x183749,_0x135d05,_0x328307)};}function W(_0x4f5686){let _0x291a6e=new Map();for(let _0x5bc243 of _0x4f5686){if(_0x582f1f(0x5d8,0x62d)!=='ijRLf'){let _0x4b0ef4=_0x5bc243[_0x82f2be(0x1c,0xb0)],_0xb5a50c=_0x291a6e[_0x582f1f(0x4bc,0x4ce)](_0x4b0ef4);_0xb5a50c||(_0xb5a50c=[],_0x291a6e['set'](_0x4b0ef4,_0xb5a50c)),_0xb5a50c[_0x82f2be(0x9b,0x9d)](_0x5bc243);}else{if(_0x31c161[_0x82f2be(0xa0,0x42)+'h']===0x1e16+-0x4*-0x593+0x2*-0x1a31)return-0x6a7+-0x176c+-0x1e13*-0x1;if(_0x29e4eb<=0xc*-0x216+0x2*0x1310+-0xd18)return _0x507192[-0x4*0x7da+-0x230c+0x4274]??0x23da+0x3c3*-0x3+-0x1891;if(_0x3fa5fb>=0x5*0x4a9+0x2579+-0x3cc5)return _0x584059[_0x3f26a8[_0x582f1f(0x620,0x5bc)+'h']-(0x7*-0x265+-0x11f8+0x22bc)]??0x1*0x238+0x1882+-0x1aba;let _0x2c8ffe=_0x141f6d['min'](_0x32eb14[_0x582f1f(0x620,0x669)+'h']-(0x225c+0x21e8+-0x4443),_0x105e9d[_0x582f1f(0x4ae,0x574)](_0x456fa1*_0x101174['lengt'+'h'])-(0x11c6+0x14c8+0x268d*-0x1));return _0x243ce7[_0x2c8ffe]??0x1*0xa39+-0x401+-0x638;}}function _0x82f2be(_0x5025b6,_0xa380b3){return _0x34b0b2(_0x5025b6-0x8f,_0xa380b3);}let _0x552c75=[];for(let [_0x51addb,_0x53a491]of _0x291a6e)_0x552c75[_0x582f1f(0x61b,0x661)](w(_0x51addb,_0x53a491));function _0x582f1f(_0xa39295,_0x4bc50a){return _0x34b0b2(_0xa39295-0x60f,_0x4bc50a);}return _0x552c75[_0x582f1f(0x5dd,0x53e)]((_0x36a4dc,_0x5bbded)=>_0x36a4dc[_0x82f2be(0x1c,-0x74)][_0x582f1f(0x5ad,0x5d9)+'eComp'+_0x82f2be(0x5c,-0x55)](_0x5bbded[_0x82f2be(0x1c,0x27)])),_0x552c75;}function z(_0x1079b5){let _0x26d42f=[],_0x285aee=[],_0x3a1e1e=0x287+-0x1*-0x8fd+0x86*-0x16,_0xffecdc=0xc*0x102+0x2229+-0x2e41,_0x1045b8=0x5*-0x29+0x23f7+-0x2*0x1195,_0x1db89c=-0x26ad+-0x1*-0x1390+0x131d,_0x3ec0a5=-0x741+0x23c7+-0x1c86,_0x4d298a=-0xfc9+-0x17c7+-0x10*-0x279,_0x3b1537=-0xcaa*0x3+-0x15*0x185+0x45e7,_0x43e66d=0xf3a+0x74*-0x4+-0xd6a,_0x1c574c=-0x968*-0x1+0x167*0x13+-0x347*0xb,_0x483709=0x25f6+-0x16*-0x55+-0x2d44,_0x148f0=-0x4cc+-0xc6d*-0x1+-0x7a1,_0x52c5d4=-0x10d7+-0x1*-0x94d+0x3c5*0x2,_0x388525=0x1b73+0x31a+-0x1e8d,_0x3680ff=-0xd4b+0x1*-0x1862+0x1*0x25ad,_0x5dc50c={},_0x10db53=-0x2535+-0x2321+0x4856,_0x55b653=-0x153b+-0x1404+0x1*0x293f,_0x9eb79f=-0x88d+0x2ea*0x1+0x5a3,_0x3676e5=-0x37*0x13+0x5e*-0x42+0x1c51;for(let _0x4427ae of _0x1079b5){if(_0x376e66(0x631,0x6f7)!=='hLHQR'){let _0x309da6=-0x583*0x7+0x254f*0x1+0x1*0x146;for(let _0x29735a of _0x2f1b18)_0x29735a['accep'+_0x3edc08(0x3d2,0x406)]===_0x117dd4&&_0x309da6++;return _0x309da6;}else{typeof _0x4427ae[_0x376e66(0x61a,0x61e)+'s']==_0x3edc08(0x294,0x1f5)+'r'&&_0x26d42f[_0x376e66(0x664,0x6b7)](_0x4427ae[_0x376e66(0x61a,0x580)+'s']),typeof _0x4427ae[_0x3edc08(0x2bf,0x261)+'atedT'+'imeSa'+'vedMs']==_0x376e66(0x541,0x51f)+'r'&&(_0x285aee[_0x3edc08(0x3b7,0x3a9)](_0x4427ae[_0x3edc08(0x2bf,0x2cd)+'atedT'+_0x376e66(0x67c,0x610)+_0x3edc08(0x3b2,0x3ff)]),_0x3a1e1e+=_0x4427ae['estim'+'atedT'+_0x3edc08(0x3cf,0x30a)+_0x376e66(0x65f,0x728)],_0x4427ae[_0x3edc08(0x2bf,0x2f5)+_0x3edc08(0x29b,0x250)+_0x3edc08(0x3cf,0x3a9)+_0x3edc08(0x3b2,0x44c)]<0x1*-0x1212+0x1d55+-0x3*0x3c1&&_0xffecdc++);let _0x28a0c4=_0x4427ae[_0x3edc08(0x2eb,0x235)+_0x376e66(0x67f,0x65a)]==='accep'+'ted'||_0x4427ae[_0x3edc08(0x2eb,0x2c2)+'tance']===_0x376e66(0x598,0x4d7)+_0x376e66(0x648,0x5b3)+_0x376e66(0x61f,0x5bb)+'l';if(_0x28a0c4&&(_0x3b1537++,_0x4427ae['accep'+_0x376e66(0x507,0x51e)+'et']===!(-0x1*-0x10a5+-0x1aed+0xa48)&&_0x43e66d++),_0x4427ae[_0x376e66(0x598,0x4fb)+_0x3edc08(0x3d2,0x38e)]===_0x376e66(0x5e4,0x5f6)+_0x3edc08(0x311,0x2d8)&&(_0x10db53++,_0x4427ae[_0x376e66(0x57a,0x518)+_0x3edc08(0x24e,0x18e)+_0x376e66(0x5e1,0x61b)+'ss']===!(0x1fd1+-0x1*0x212f+0x15e)&&_0x55b653++),_0x4427ae[_0x376e66(0x598,0x5d8)+_0x376e66(0x67f,0x5ff)]===_0x3edc08(0x2d0,0x2f0)&&(_0x9eb79f++,_0x4427ae[_0x376e66(0x54d,0x596)+_0x3edc08(0x38a,0x3c1)+_0x376e66(0x5ed,0x525)+_0x376e66(0x61c,0x6d9)]===!(-0xe2*0xf+-0xb27+0x1865)&&_0x3676e5++),_0x4427ae[_0x376e66(0x5e5,0x543)]===_0x3edc08(0x24c,0x2f0)+'siona'+'l'&&_0x4427ae[_0x3edc08(0x2f3,0x2f8)]){if('kYFJb'!==_0x376e66(0x53b,0x4df)){let _0x313a0e=_0x1387b6['entri'+'es'](_0x1665f3['provi'+'siona'+'l'][_0x376e66(0x50d,0x59b)+_0x376e66(0x5ea,0x6ab)])[_0x376e66(0x626,0x6ed)]((_0x1e9679,_0xd6e73a)=>_0xd6e73a[-0x2b*0x89+-0x1*-0x2413+-0xd0f*0x1]-_0x1e9679[0xc+-0x1d6c+0x1d61])['map'](([_0x22731d,_0x3c1ddc])=>_0x22731d+'='+_0x3c1ddc)[_0x376e66(0x533,0x469)]('\x20');_0x36c8c9[_0x3edc08(0x3b7,0x323)](_0x3edc08(0x381,0x318)+'\x20\x20\x20\x20\x20'+_0x376e66(0x62e,0x56d)+_0x3edc08(0x3d4,0x3f1)+'urce:'+'\x20'+_0x313a0e);}else{_0x1c574c++,_0x28a0c4&&_0x483709++;let _0x4420d3=_0x4427ae[_0x376e66(0x58a,0x5a9)+'r']??'';if(_0x4420d3['start'+_0x376e66(0x524,0x559)](_0x3edc08(0x24c,0x2e6)+_0x376e66(0x539,0x4b5)+'l-')){if(_0x3edc08(0x393,0x45e)===_0x376e66(0x640,0x59f)){let _0x3b4e2c=_0x4420d3['slice'](-0x3*-0x39+0x560+-0x133*0x5);_0x5dc50c[_0x3b4e2c]=(_0x5dc50c[_0x3b4e2c]??-0x1*0x413+0x3d*0x9b+0x2*-0x106e)+(-0x1310+-0x25ed+0x38fe);}else{let _0x4e17fc=_0x3267c4[_0x3edc08(0x3c5,0x459)](-0x2554+-0x86*-0x20+0x14a0);_0x48910b[_0x4e17fc]=(_0x27ac18[_0x4e17fc]??0x1052+-0x25bc+-0x156a*-0x1)+(0x1ec2+0x47d+-0x233e);}}}}if(typeof _0x4427ae[_0x376e66(0x4f9,0x4b8)+'siona'+_0x3edc08(0x34c,0x363)+'Ms']=='numbe'+'r'&&(_0x148f0++,_0x388525+=_0x4427ae[_0x3edc08(0x24c,0x282)+_0x376e66(0x539,0x4c8)+'lSwap'+'Ms'],_0x4427ae[_0x3edc08(0x24c,0x2e1)+_0x376e66(0x539,0x5ea)+_0x3edc08(0x2a2,0x2a3)+'orrec'+'t']===!(0x1502*-0x1+0x26c1+0x11bf*-0x1)&&_0x52c5d4++,_0x4427ae[_0x3edc08(0x24c,0x30d)+_0x376e66(0x539,0x5ec)+_0x3edc08(0x34c,0x352)+'Flick'+'er']===!(0x24b+-0x17*0x1b+0x22)&&_0x3680ff++),_0x4427ae[_0x376e66(0x5a0,0x4dd)]&&(_0x1045b8++,_0x28a0c4)){if(_0x376e66(0x5f1,0x5d2)===_0x376e66(0x5f1,0x57f)){let _0x26dfe0=_0x4427ae[_0x3edc08(0x367,0x2e6)+_0x376e66(0x582,0x5ee)+'ank']??0x7b4+0x1*0xf07+-0x16bb;_0x26dfe0<-0x1729+-0x1b80+0x1955*0x2&&_0x1db89c++,_0x26dfe0<-0x2283*0x1+-0x1694+0x391a&&_0x3ec0a5++,_0x26dfe0<0x13fb+0x1*0xe53+0x43*-0x83&&_0x4d298a++;}else{_0x3ab520=!(0x117b+-0x5*0x710+0x11d5);return;}}}}function _0x3edc08(_0xe28a11,_0x44d2b9){return _0xc23ed0(_0x44d2b9,_0xe28a11- -0x1a3);}let _0x5c1ee1={};function _0x376e66(_0x346841,_0x489eb2){return _0xc23ed0(_0x489eb2,_0x346841-0x10a);}if(_0x26d42f[_0x376e66(0x669,0x5e0)+'h']>0x1*0xf0b+-0x199+0x1*-0xd72&&(_0x26d42f[_0x3edc08(0x379,0x2d1)]((_0x30ef9c,_0xd90e81)=>_0x30ef9c-_0xd90e81),_0x5c1ee1['ttftM'+'s']={'p50':b(_0x26d42f,0x214d+-0x1f16+0x1*-0x237+0.5),'p95':b(_0x26d42f,-0x2122+0x9f9+0x1729+0.95),'n':_0x26d42f[_0x376e66(0x669,0x69b)+'h']}),_0x285aee['lengt'+'h']>-0x31d*-0x4+-0x1*-0x1835+-0x24a9){if('oACJW'!=='JIxJE'){_0x285aee[_0x376e66(0x626,0x684)]((_0x4691f,_0x3b7c29)=>_0x4691f-_0x3b7c29),_0x5c1ee1[_0x3edc08(0x354,0x388)+'avedM'+'s']={'p50':b(_0x285aee,-0x1*0x2154+-0x26c7+0x481b+0.5),'p95':b(_0x285aee,0x13*-0xce+0x2195*0x1+0x124b*-0x1+0.95),'total':_0x3a1e1e,'n':_0x285aee['lengt'+'h']};let _0x16099e=_0xffecdc/_0x285aee[_0x3edc08(0x3bc,0x338)+'h'];const _0x171a62={};_0x171a62[_0x376e66(0x610,0x56a)]=_0xffecdc,_0x171a62[_0x376e66(0x55b,0x5c4)+'ion']=_0x16099e,_0x171a62['n']=_0x285aee['lengt'+'h'],_0x171a62[_0x3edc08(0x299,0x273)+_0x376e66(0x65e,0x5ec)]=_0x16099e>=u[_0x3edc08(0x2fc,0x3bd)+_0x3edc08(0x2b9,0x24f)+_0x376e66(0x567,0x4ea)+'edRed']?_0x3edc08(0x335,0x3d2):_0x16099e>=u['negat'+_0x376e66(0x566,0x5d6)+_0x3edc08(0x2ba,0x2c5)+'edYel'+_0x376e66(0x529,0x46c)]?_0x376e66(0x643,0x59f)+'w':'ok',_0x5c1ee1['negat'+'iveTi'+_0x3edc08(0x2ba,0x256)+'ed']=_0x171a62;}else _0xbc03d2(_0x87b190),_0x37ae19[_0x3edc08(0x2fb,0x262)+'t']['write'](_0x376e66(0x5ac,0x4e7)+_0x376e66(0x66a,0x66a)+_0x3edc08(0x248,0x272)+_0x3edc08(0x35e,0x314)+_0x3edc08(0x26a,0x2b0)+'toppe'+'d.\x0a'),_0x40cc8f[_0x3edc08(0x38c,0x2ed)](-0x108a+-0xe1b+-0x113*-0x1d);}return _0x3b1537>-0x12f*-0xf+-0xddd+-0x3e4&&(_0x5c1ee1[_0x376e66(0x598,0x4e3)+_0x3edc08(0x25a,0x288)+_0x3edc08(0x38e,0x3dc)+'e']={'rate':_0x43e66d/_0x3b1537,'n':_0x3b1537}),_0x10db53>0x131d+0x1049*0x1+-0x11b3*0x2&&(_0x5c1ee1['short'+'Hover'+_0x376e66(0x5e1,0x5bf)+'ssRat'+'e']={'rate':_0x55b653/_0x10db53,'n':_0x10db53}),_0x9eb79f>0x17e0+-0x409+-0x13d7&&(_0x5c1ee1[_0x3edc08(0x2a0,0x228)+_0x376e66(0x637,0x614)+'iverg'+_0x376e66(0x59e,0x546)+'te']={'rate':_0x3676e5/_0x9eb79f,'n':_0x9eb79f}),(_0x1c574c>0x354+-0x1f82+0x1c2e||_0x148f0>-0x20e4+0x13a7+0xd3d*0x1)&&(_0x5c1ee1[_0x376e66(0x4f9,0x599)+'siona'+'l']={'shown':_0x1c574c,'swapped':_0x148f0,'correctRate':_0x148f0>0x83*0xa+-0x187a+0x135c?_0x52c5d4/_0x148f0:0x5*-0x577+0x6e1*-0x4+0x36d7,'meanSwapMs':_0x148f0>-0x111*-0x7+0x2f*-0x25+0xac*-0x1?_0x388525/_0x148f0:0x1a2f+-0x1*0x1e05+0x3d6,..._0x148f0>-0x411*-0x5+0x1d93+-0x31e8?{'flickerRate':_0x3680ff/_0x148f0}:{},...Object['keys'](_0x5dc50c)[_0x3edc08(0x3bc,0x3e3)+'h']>0x2d2+0x149c*-0x1+-0x2*-0x8e5?{'bySource':_0x5dc50c}:{},..._0x1c574c>0xaf3+-0x122e+0x73b?{'acceptRate':_0x483709/_0x1c574c}:{}}),_0x1045b8>-0x2e5*-0x7+-0x62f*0x1+-0x70a*0x2&&(_0x5c1ee1['saved'+'At1']=_0x1db89c/_0x1045b8,_0x5c1ee1[_0x376e66(0x67a,0x5d4)+_0x3edc08(0x35b,0x352)]=_0x3ec0a5/_0x1045b8,_0x5c1ee1[_0x3edc08(0x3cd,0x3dd)+_0x3edc08(0x3c1,0x316)]=_0x4d298a/_0x1045b8),_0x5c1ee1;}function w(_0x162870,_0x229226){function _0x539c9f(_0x4068a4,_0x16f84b){return _0xc23ed0(_0x16f84b,_0x4068a4-0xc8);}let _0x2bc063=new Map();for(let _0x4f1a17 of _0x229226)if(_0x4f1a17[_0xcb05d7(-0x236,-0x1af)+_0xcb05d7(-0x13e,-0x9b)])for(let _0x52b0d5 of _0x4f1a17[_0xcb05d7(-0x1ee,-0x1af)+'ders']){if('tQfhF'!==_0xcb05d7(-0x154,-0xfa)){_0x302815++,_0x2d5446&&_0x262647++;let _0x570bba=_0x582fbe['winne'+'r']??'';if(_0x570bba['start'+_0xcb05d7(-0x16c,-0x184)](_0x539c9f(0x4b7,0x422)+_0x539c9f(0x4f7,0x520)+'l-')){let _0x4e279e=_0x570bba[_0x539c9f(0x630,0x5e2)](-0x16f*-0x8+0x92f+0x149b*-0x1);_0x4f7ac6[_0x4e279e]=(_0x480a25[_0x4e279e]??-0x2f*0x6b+0x34e*-0x5+0x242b)+(-0x10b+-0x1a36+0x1b42);}}else{let _0x4459c7=_0x2bc063[_0xcb05d7(-0x113,-0x1a3)](_0x52b0d5[_0xcb05d7(-0xf4,-0x1af)+_0x539c9f(0x5fb,0x587)]);_0x4459c7||(_0x4459c7=[],_0x2bc063[_0x539c9f(0x561,0x55d)](_0x52b0d5[_0xcb05d7(-0x14f,-0x1af)+_0xcb05d7(-0xf0,-0x6b)],_0x4459c7)),_0x4459c7['push'](_0x52b0d5);}}let _0x3c37fb=[];for(let [_0x5cac6d,_0x181cdc]of _0x2bc063)_0x3c37fb[_0xcb05d7(-0xc0,-0x44)](G(_0x5cac6d,_0x181cdc));function _0xcb05d7(_0x57201b,_0x40261e){return _0xc23ed0(_0x57201b,_0x40261e- -0x59e);}_0x3c37fb[_0xcb05d7(0x14,-0x82)]((_0x39ce3e,_0x57e825)=>_0x39ce3e[_0x539c9f(0x4b7,0x46c)+_0xcb05d7(0x9,-0x6b)][_0xcb05d7(-0x5e,-0xb2)+_0x539c9f(0x53e,0x4a6)+'are'](_0x57e825[_0x539c9f(0x4b7,0x3ee)+_0xcb05d7(0x47,-0x6b)]));let _0x49ed47=_0x229226[_0xcb05d7(-0x27,-0x5b)+'r'](_0x2a0271=>_0x2a0271[_0x539c9f(0x55e,0x4cd)])[_0xcb05d7(-0x1a,-0x3f)+'h'],_0x18367b=S(_0x229226,_0x539c9f(0x556,0x507)+'ted'),_0x13fe0f=S(_0x229226,_0x539c9f(0x5a2,0x53b)+_0x539c9f(0x57c,0x589)),_0x560ed8=S(_0x229226,'stale'),_0x2f2a5e=S(_0x229226,_0x539c9f(0x4dc,0x453)+'ed');const _0x3ab386={};return _0x3ab386[_0xcb05d7(-0x31,-0xc3)]=_0x162870,_0x3ab386['count']=_0x229226[_0x539c9f(0x627,0x55c)+'h'],_0x3ab386['shown']=_0x49ed47,_0x3ab386[_0xcb05d7(-0x84,-0x110)+_0x539c9f(0x517,0x46b)]=_0x18367b,_0x3ab386[_0xcb05d7(-0x4,-0xc4)+_0xcb05d7(-0x164,-0xea)]=_0x13fe0f,_0x3ab386[_0x539c9f(0x53b,0x5b0)]=_0x560ed8,_0x3ab386[_0x539c9f(0x4dc,0x44d)+'ed']=_0x2f2a5e,_0x3ab386[_0xcb05d7(-0xb8,-0x110)+_0xcb05d7(-0x1b,-0x29)+_0xcb05d7(-0xb3,-0xf7)]=_0x49ed47>0xb14+0x4ab+-0xfbf?_0x18367b/_0x49ed47:-0x1d94+0x121f+-0xb75*-0x1,_0x3ab386[_0xcb05d7(-0x1fb,-0x1af)+_0x539c9f(0x5cb,0x5d0)]=_0x3c37fb,_0x3ab386;}function S(_0x5de307,_0x4f5ec6){let _0x4ed282=-0xf51+-0x14*-0x2d+0x39*0x35;function _0x27095e(_0xbf635e,_0x4129cb){return _0x34b0b2(_0x4129cb-0x586,_0xbf635e);}function _0x560279(_0x331ce8,_0x4e0f99){return _0x34b0b2(_0x4e0f99-0xe1,_0x331ce8);}for(let _0x26bf84 of _0x5de307)_0x26bf84[_0x560279(0x88,0x21)+_0x27095e(0x62f,0x5ad)]===_0x4f5ec6&&_0x4ed282++;return _0x4ed282;}function G(_0x149ecd,_0x42fe11){const _0x5c8dd5={};_0x5c8dd5[_0x178a94(0x653,0x5d6)+_0x4373d6(-0xfd,-0xd1)]=0x0;function _0x178a94(_0x59b7e6,_0x2bfc60){return _0xc23ed0(_0x2bfc60,_0x59b7e6-0x105);}_0x5c8dd5[_0x4373d6(-0x1d4,-0x120)]=0x0,_0x5c8dd5[_0x178a94(0x5db,0x5d7)+_0x178a94(0x554,0x5e6)]=0x0,_0x5c8dd5[_0x178a94(0x50f,0x55f)+'ed']=0x0,_0x5c8dd5['error']=0x0;let _0x56aeec=_0x42fe11['map'](_0x346b3f=>_0x346b3f['laten'+_0x178a94(0x65b,0x6df)])['sort']((_0x48b755,_0x3d380d)=>_0x48b755-_0x3d380d),_0x151f7d=_0x5c8dd5;for(let _0x304d70 of _0x42fe11)_0x151f7d[_0x304d70[_0x178a94(0x544,0x60f)+'t']]++;function _0x4373d6(_0xed847c,_0x106736){return _0xc23ed0(_0x106736,_0xed847c- -0x5e3);}let _0x43a535=_0x151f7d['produ'+'ced'],_0x401b92=_0x151f7d[_0x178a94(0x514,0x476)]+_0x151f7d[_0x178a94(0x5db,0x68d)+_0x178a94(0x554,0x533)]+_0x151f7d['error'],_0x53244f=_0x43a535+_0x401b92;return{'provider':_0x149ecd,'count':_0x42fe11[_0x178a94(0x664,0x6bc)+'h'],'produced':_0x151f7d['produ'+'ced'],'empty':_0x151f7d['empty'],'rejected':_0x151f7d['rejec'+_0x4373d6(-0x194,-0x212)],'aborted':_0x151f7d[_0x178a94(0x50f,0x51f)+'ed'],'error':_0x151f7d['error'],'latencyMs':{'p50':b(_0x56aeec,0x19cd*-0x1+0x241*0x1+0x2*0xbc6+0.5),'p95':b(_0x56aeec,-0xe2a+0x1758+-0x2f*0x32+0.95),'p99':b(_0x56aeec,-0xc95*-0x3+0x19*0x166+-0xa63*0x7+0.99)},'validRate':_0x53244f>-0x1fef+-0x1817+0x3806?_0x43a535/_0x53244f:-0xec3+0x597*0x2+-0x1*-0x395,'badRate':_0x53244f>0x1b1c+0xa*0x2e3+-0x1bfd*0x2?_0x401b92/_0x53244f:0x1174+-0x2378+0x1204};}function J(_0x1b9c9b,_0x56abcc,_0x6ab8db){let _0x32f8b3=[];for(let _0x4f4bfc of _0x1b9c9b[_0x2cba3a(-0x1c0,-0x103)+_0x2cba3a(-0xac,-0xf3)])_0x32f8b3[_0x2cba3a(-0x55,0x60)]({'name':_0x2cba3a(-0x112,-0x54)+_0x312cb7(0x3c7,0x384)+_0x312cb7(0x3cf,0x494)+_0x4f4bfc[_0x2cba3a(-0x1c0,-0x24a)+_0x2cba3a(-0x7c,-0x63)]+(_0x312cb7(0x3cd,0x398)+'\x20late'+_0x312cb7(0x4fa,0x4a9)),'target':'<\x20'+u[_0x312cb7(0x301,0x3cb)+_0x2cba3a(-0x159,-0xb4)+'ticP5'+_0x2cba3a(-0x1bb,-0x19f)]+'ms','observed':_0x4f4bfc[_0x312cb7(0x401,0x33e)+'cyMs'][_0x312cb7(0x332,0x3f5)]+'ms','pass':_0x4f4bfc['laten'+'cyMs'][_0x2cba3a(-0xe8,-0xc3)]<u['deter'+_0x2cba3a(-0x159,-0xb1)+'ticP5'+'0Ms']});function _0x312cb7(_0x158000,_0x1d1475){return _0x34b0b2(_0x1d1475-0x47c,_0x158000);}for(let _0x23d44b of _0x56abcc['provi'+_0x2cba3a(-0xac,-0x170)])_0x32f8b3['push']({'name':_0x312cb7(0x4fe,0x446)+_0x23d44b[_0x312cb7(0x2fa,0x31d)+_0x312cb7(0x482,0x461)]+(_0x312cb7(0x346,0x398)+'\x20late'+'ncy'),'target':'<\x20'+u[_0x2cba3a(-0x8a,-0x82)+_0x312cb7(0x370,0x322)]+'ms','observed':_0x23d44b[_0x2cba3a(-0x19f,-0xdd)+_0x312cb7(0x436,0x484)][_0x312cb7(0x453,0x3f5)]+'ms','pass':_0x23d44b[_0x312cb7(0x32e,0x33e)+_0x312cb7(0x3ee,0x484)]['p50']<u[_0x312cb7(0x4c9,0x453)+'0Ms']}),_0x32f8b3[_0x2cba3a(-0x55,0x10)]({'name':_0x2cba3a(-0x97,0x9)+_0x23d44b[_0x312cb7(0x31d,0x31d)+'der']+(_0x312cb7(0x507,0x44d)+_0x312cb7(0x4f5,0x450)+'ncy'),'target':'<\x20'+u['llmP9'+'5Ms']+'ms','observed':_0x23d44b[_0x2cba3a(-0x19f,-0x212)+'cyMs'][_0x2cba3a(-0xf4,-0x5a)]+'ms','pass':_0x23d44b[_0x2cba3a(-0x19f,-0x164)+_0x312cb7(0x3bb,0x484)][_0x2cba3a(-0xf4,-0x1ae)]<u['llmP9'+_0x2cba3a(-0x12b,-0xce)]}),_0x32f8b3[_0x312cb7(0x437,0x488)]({'name':_0x2cba3a(-0x97,-0xe)+_0x23d44b[_0x2cba3a(-0x1c0,-0x13d)+_0x312cb7(0x4e4,0x461)]+(_0x312cb7(0x41d,0x44b)+_0x2cba3a(-0xc5,-0x167)+_0x2cba3a(-0x17d,-0x224)+_0x2cba3a(-0xea,-0x10c)),'target':_0x312cb7(0x4ac,0x422)+(u[_0x2cba3a(-0x10c,-0xc7)+_0x2cba3a(-0x192,-0x173)+_0x312cb7(0x425,0x468)]*(-0xd3c+0x1*0x1543+-0x55*0x17))[_0x2cba3a(-0x115,-0x159)+'ed'](-0xdd3+-0x1cb0+0x2a83)+'%','observed':(_0x23d44b[_0x2cba3a(-0x10c,-0xf1)+_0x2cba3a(-0x108,-0x183)]*(0x75*-0xa+-0x1a*-0x17f+0x2*-0x10f8))[_0x2cba3a(-0x115,-0x128)+'ed'](0x461*0x7+-0xd95+-0x11*0x101)+'%','pass':_0x23d44b[_0x312cb7(0x447,0x3d1)+_0x2cba3a(-0x108,-0xf5)]>=u['valid'+_0x312cb7(0x332,0x34b)+'tRate']}),_0x32f8b3[_0x2cba3a(-0x55,0x6e)]({'name':_0x312cb7(0x4aa,0x446)+_0x23d44b[_0x312cb7(0x31a,0x31d)+_0x312cb7(0x3cf,0x461)]+(_0x312cb7(0x2c2,0x321)+'-outp'+_0x312cb7(0x27b,0x313)+'te'),'target':_0x312cb7(0x36e,0x327)+(u[_0x2cba3a(-0x1c9,-0x1a2)+_0x312cb7(0x393,0x35a)+_0x2cba3a(-0x11c,-0x115)]*(0x149*0x1+0x971*0x1+-0xa56))[_0x312cb7(0x48a,0x3c8)+'ed'](0x7b*-0x4f+-0xdc+0x1*0x26d1)+'%','observed':(_0x23d44b['badRa'+'te']*(-0x62+-0x4*0x527+0x22*0xa1))['toFix'+'ed'](-0xc06+0x1f*0xb2+-0x987)+'%','pass':_0x23d44b[_0x312cb7(0x2f8,0x361)+'te']<=u[_0x312cb7(0x2fc,0x314)+_0x2cba3a(-0x183,-0x1f3)+_0x2cba3a(-0x11c,-0x12e)]});function _0x2cba3a(_0x28eca3,_0x273767){return _0x34b0b2(_0x28eca3- -0x61,_0x273767);}if(_0x6ab8db[_0x2cba3a(-0x110,-0x181)+_0x2cba3a(-0x153,-0x8d)+_0x312cb7(0x3c2,0x38b)+'ed']){if(_0x312cb7(0x3d8,0x416)!==_0x2cba3a(-0xc7,-0xe1)){let _0x3332c5=_0x57e06b[_0x312cb7(0x32c,0x3f6)]?_0x2b9e43['sever'+_0x312cb7(0x4b7,0x482)]===_0x312cb7(0x498,0x41b)?_0x2cba3a(-0xf3,-0xa3)+']':_0x2cba3a(-0x14a,-0x1d1)+']':'[FAIL'+']';_0x1582f4['push']('\x20\x20'+_0x3332c5+'\x20'+_0x41d6a8['name']['padEn'+'d'](-0xa08+0x8*-0x269+0x1d78)+('\x20targ'+_0x312cb7(0x3e6,0x429))+_0x571721[_0x2cba3a(-0x11a,-0x14a)+'t'][_0x2cba3a(-0xf6,-0x118)+'d'](0x1fa4+-0x1f98+-0x2)+'\x20got\x20'+_0x9d0bef[_0x312cb7(0x487,0x3f9)+'ved']);}else{let _0x52343=_0x6ab8db[_0x2cba3a(-0x110,-0x11c)+'iveTi'+_0x2cba3a(-0x152,-0x204)+'ed'],_0x577e32=(_0x52343[_0x2cba3a(-0x15e,-0x15f)+'ion']*(-0x1*-0xec9+0x1e*-0x110+0x117b))[_0x312cb7(0x447,0x3c8)+'ed'](-0x7*0x1bb+0x2084*0x1+-0x1466)+'%',_0x695bbc={'name':'negat'+_0x2cba3a(-0x153,-0xf5)+_0x312cb7(0x308,0x38b)+_0x2cba3a(-0xb9,-0x11f)+'ction','target':'<\x20'+(u[_0x2cba3a(-0x110,-0x5a)+'iveTi'+_0x312cb7(0x403,0x38b)+_0x2cba3a(-0x74,-0x56)]*(0x1521+0x1*0x21cb+0xa*-0x574))['toFix'+'ed'](0x23c+-0xa74+-0x1*-0x838)+'%','observed':_0x577e32,'pass':_0x52343[_0x312cb7(0x30d,0x36a)+_0x312cb7(0x43a,0x482)]!==_0x312cb7(0x386,0x406)};_0x52343[_0x312cb7(0x340,0x36a)+_0x312cb7(0x511,0x482)]===_0x312cb7(0x421,0x467)+'w'&&(_0x695bbc['sever'+_0x2cba3a(-0x5b,-0x17)]=_0x2cba3a(-0xc2,-0xdf)),_0x32f8b3[_0x312cb7(0x545,0x488)](_0x695bbc);}}return _0x32f8b3;}function $(_0x584081){let _0x27e4ec=[];_0x27e4ec[_0x33a760(0xd0,0x166)](_0x1a0d6d(0x3c6,0x33c)+_0x1a0d6d(0x38b,0x2eb)+_0x1a0d6d(0x3e7,0x351)+_0x33a760(0x5d,0x73)+_0x33a760(0x52,0xd5)),_0x27e4ec['push'](_0x1a0d6d(0x439,0x4c7)+_0x1a0d6d(0x439,0x3e3)+_0x33a760(0x142,0xdd)+'====='+_0x33a760(0x1f,0xdd)),_0x27e4ec['push'](_0x1a0d6d(0x384,0x3e8)+_0x33a760(0xbb,0x14d)+_0x1a0d6d(0x48c,0x421)+_0x584081[_0x33a760(0xd2,0x28)+'e']),_0x27e4ec['push']('recor'+_0x1a0d6d(0x392,0x3be)+_0x33a760(0x162,0x130)+_0x584081['recor'+'ds']),_0x584081[_0x1a0d6d(0x3f2,0x329)+_0x33a760(0x78,0x11d)+'s']>-0x2040+-0xcf*0x9+-0x2787*-0x1&&_0x27e4ec[_0x1a0d6d(0x4c2,0x497)]('parse'+_0x33a760(-0xbe,0xa)+'rs:\x20\x20'+_0x584081[_0x1a0d6d(0x3f2,0x37b)+_0x33a760(0x119,0x11d)+'s']),_0x27e4ec['push'](''),_0x27e4ec[_0x1a0d6d(0x4c2,0x4e2)](_0x1a0d6d(0x4ca,0x49b)+'minis'+_0x33a760(0x162,0xeb)+'n='+_0x584081['deter'+'minis'+'tic'][_0x1a0d6d(0x46e,0x432)]+')'),_0x27e4ec['push']('\x20\x20sho'+_0x33a760(0x126,0x16f)+_0x584081[_0x33a760(-0x18,0xa9)+'minis'+_0x1a0d6d(0x3e3,0x389)][_0x1a0d6d(0x3fe,0x4a9)]+('\x20acce'+'pted=')+_0x584081['deter'+_0x33a760(0x3b,0x62)+_0x1a0d6d(0x3e3,0x483)][_0x33a760(0x89,0x9a)+'ted']+(_0x33a760(0xe5,0x106)+'issed'+'=')+_0x584081[_0x33a760(0x77,0xa9)+_0x1a0d6d(0x3be,0x3b9)+_0x1a0d6d(0x3e3,0x482)][_0x1a0d6d(0x442,0x3c2)+_0x33a760(0x16a,0xc0)]+('\x20stal'+'e=')+_0x584081['deter'+_0x33a760(0xb8,0x62)+_0x33a760(0x2e,0x87)][_0x1a0d6d(0x3db,0x3b4)]+(_0x33a760(0x6c,0xd9)+'red=')+_0x584081[_0x33a760(0xf3,0xa9)+_0x1a0d6d(0x3be,0x3a9)+_0x33a760(0x14d,0x87)]['expir'+'ed']+(_0x33a760(0x146,0x8a)+_0x1a0d6d(0x3c9,0x3c9)+_0x1a0d6d(0x35f,0x413))+(_0x584081['deter'+_0x1a0d6d(0x3be,0x35b)+_0x33a760(0x12d,0x87)][_0x1a0d6d(0x3f6,0x430)+_0x1a0d6d(0x4dd,0x4ec)+'Rate']*(-0x1e09+0xeed*-0x1+0x2*0x16ad))['toFix'+'ed'](0x71*-0x52+0x22b*0x9+0x10b0)+'%');for(let _0x1589bf of _0x584081[_0x1a0d6d(0x405,0x48f)+'minis'+_0x1a0d6d(0x3e3,0x35e)][_0x1a0d6d(0x357,0x423)+_0x33a760(0x17e,0x10f)])_0x27e4ec[_0x1a0d6d(0x4c2,0x3fc)](_0x33a760(0x130,0xb7)+_0x1589bf['provi'+'der'][_0x33a760(0x18d,0xc5)+'d'](0x1ed0+0x10cd+0x3*-0xfd9)+'\x20'+L(_0x1589bf));_0x27e4ec['push'](''),_0x27e4ec[_0x33a760(0x17a,0x166)]('LLM\x20('+'n='+_0x584081[_0x33a760(0x1a6,0x113)][_0x33a760(0x91,0x112)]+')'),_0x27e4ec[_0x33a760(0xa0,0x166)]('\x20\x20sho'+_0x33a760(0x10b,0x16f)+_0x584081[_0x1a0d6d(0x46f,0x3ae)]['shown']+(_0x1a0d6d(0x3e6,0x4a2)+_0x33a760(0xc8,0xc))+_0x584081[_0x1a0d6d(0x46f,0x44b)][_0x33a760(0xd,0x9a)+_0x33a760(0x35,0x5b)]+('\x20dism'+_0x1a0d6d(0x3e4,0x467)+'=')+_0x584081['llm']['dismi'+_0x1a0d6d(0x41c,0x4bd)]+(_0x33a760(0x158,0x12c)+'e=')+_0x584081['llm'][_0x1a0d6d(0x3db,0x48f)]+('\x20expi'+_0x33a760(0x23,0xcb))+_0x584081[_0x33a760(0x149,0x113)][_0x1a0d6d(0x37c,0x335)+'ed']+(_0x1a0d6d(0x3e6,0x49e)+_0x33a760(0x10c,0x6d)+_0x1a0d6d(0x35f,0x2f7))+(_0x584081[_0x33a760(0xe4,0x113)][_0x33a760(0x10e,0x9a)+'tance'+_0x33a760(0x17,0xb3)]*(0x3*-0x388+-0x11d*-0x5+0x56b))[_0x1a0d6d(0x402,0x366)+'ed'](-0x2fd*-0x3+-0x4d*-0x7+-0xb11)+'%');for(let _0x197193 of _0x584081[_0x1a0d6d(0x46f,0x4e8)]['provi'+'ders'])_0x27e4ec[_0x1a0d6d(0x4c2,0x4f6)](_0x1a0d6d(0x413,0x349)+_0x197193['provi'+_0x1a0d6d(0x49b,0x46f)][_0x1a0d6d(0x421,0x4c2)+'d'](-0x2*-0xe9c+0x12aa*0x1+-0x2fd0)+'\x20'+L(_0x197193));let _0x4e4693=_0x584081[_0x33a760(-0x38,0x5c)+'e'][_0x1a0d6d(0x4ab,0x575)+'r'](_0x3a6f78=>_0x3a6f78[_0x33a760(0x36,0xe7)]!==_0x33a760(0xe6,0xa9)+_0x33a760(-0x19,0x62)+_0x33a760(0x10d,0x87)&&_0x3a6f78[_0x1a0d6d(0x443,0x50d)]!==_0x33a760(0xa5,0x113)&&_0x3a6f78['count']>0x1295+-0x2129+0xe94);if(_0x4e4693[_0x33a760(0x18c,0x16b)+'h']>0x5*-0x61f+0x18f5+-0x2d3*-0x2){if(_0x33a760(-0x65,0x3a)!=='TFqqZ'){const _0x20079e={};_0x20079e['produ'+'ced']=0x0,_0x20079e['empty']=0x0,_0x20079e[_0x1a0d6d(0x43e,0x3c9)+'ted']=0x0,_0x20079e['abort'+'ed']=0x0,_0x20079e['error']=0x0;let _0x289151=_0x42ccaf['map'](_0x22e9b9=>_0x22e9b9[_0x33a760(-0x4a,0x1c)+_0x1a0d6d(0x4be,0x571)])['sort']((_0x1ccd16,_0x4d058e)=>_0x1ccd16-_0x4d058e),_0x460ef5=_0x20079e;for(let _0x317abc of _0x1e73da)_0x460ef5[_0x317abc[_0x33a760(-0x13,0x4b)+'t']]++;let _0x2b7cd1=_0x460ef5[_0x1a0d6d(0x4b6,0x440)+_0x1a0d6d(0x44e,0x38f)],_0x336254=_0x460ef5[_0x33a760(-0x1e,0x1b)]+_0x460ef5['rejec'+_0x1a0d6d(0x3b7,0x339)]+_0x460ef5['error'],_0x518d1f=_0x2b7cd1+_0x336254;return{'provider':_0x56ec37,'count':_0x184c29['lengt'+'h'],'produced':_0x460ef5['produ'+_0x1a0d6d(0x44e,0x434)],'empty':_0x460ef5[_0x1a0d6d(0x377,0x349)],'rejected':_0x460ef5[_0x33a760(0x6b,0xe2)+'ted'],'aborted':_0x460ef5[_0x33a760(-0x9f,0x16)+'ed'],'error':_0x460ef5['error'],'latencyMs':{'p50':_0x577cb7(_0x289151,-0x5f8*-0x1+0x58f*0x3+0xbb*-0x1f+0.5),'p95':_0x27aba7(_0x289151,0x2187+-0x201a+0x16d*-0x1+0.95),'p99':_0x289287(_0x289151,-0x15c5+-0x20cc+0x3691+0.99)},'validRate':_0x518d1f>-0x3a9*-0x6+0x612+-0x256*0xc?_0x2b7cd1/_0x518d1f:-0x1c9+-0x1b67+-0x2*-0xe98,'badRate':_0x518d1f>-0xbc*-0x22+0x1*0xadd+0x23d5*-0x1?_0x336254/_0x518d1f:-0xcee*0x1+-0x120b+0x1ef9};}else{_0x27e4ec[_0x1a0d6d(0x4c2,0x48f)](''),_0x27e4ec[_0x1a0d6d(0x4c2,0x577)]('Other'+'\x20mode'+'s:');for(let _0x970282 of _0x4e4693)_0x27e4ec[_0x33a760(0x230,0x166)]('\x20\x20'+_0x970282[_0x1a0d6d(0x443,0x37c)]['padEn'+'d'](0x6a7+-0xda1+-0x4*-0x1c3)+_0x1a0d6d(0x42c,0x42c)+_0x970282[_0x1a0d6d(0x46e,0x4b6)]+(_0x1a0d6d(0x3b6,0x310)+'n=')+_0x970282[_0x33a760(0x68,0xa2)]+('\x20acce'+_0x1a0d6d(0x368,0x3b2))+_0x970282[_0x1a0d6d(0x3f6,0x3cc)+_0x1a0d6d(0x3b7,0x42a)]+(_0x33a760(0xb8,0x8a)+_0x1a0d6d(0x3c9,0x425)+_0x1a0d6d(0x35f,0x39f))+(_0x970282[_0x1a0d6d(0x3f6,0x47a)+_0x1a0d6d(0x4dd,0x4e6)+_0x1a0d6d(0x40f,0x4a3)]*(0x2*0x10eb+0x1918+-0x3a8a))['toFix'+'ed'](0x1898+0x750+-0x1fe7)+'%');}}let _0x31fdb8=_0x584081['advan'+_0x33a760(0x14f,0xf2)];function _0x33a760(_0xf11e96,_0x4ce752){return _0x34b0b2(_0x4ce752-0x15a,_0xf11e96);}if(_0x31fdb8[_0x33a760(0x1cb,0x11c)+'s']||_0x31fdb8[_0x1a0d6d(0x45f,0x511)+_0x33a760(0xf8,0x10c)+'s']||_0x31fdb8[_0x1a0d6d(0x407,0x38e)+_0x33a760(0xe6,0x68)+_0x1a0d6d(0x3c5,0x3d0)+'ed']||_0x31fdb8[_0x1a0d6d(0x3f6,0x421)+_0x1a0d6d(0x365,0x2fc)+_0x1a0d6d(0x499,0x3d8)+'e']||_0x31fdb8['short'+_0x1a0d6d(0x359,0x2d1)+_0x1a0d6d(0x43f,0x3b2)+_0x33a760(-0x47,0x2a)+'e']||_0x31fdb8[_0x33a760(0x9f,0x4f)+_0x1a0d6d(0x495,0x4b5)+_0x1a0d6d(0x44b,0x43f)+_0x1a0d6d(0x3fc,0x363)+'te']||_0x31fdb8[_0x1a0d6d(0x357,0x29a)+_0x1a0d6d(0x397,0x2e2)+'l']||_0x31fdb8[_0x1a0d6d(0x4d8,0x479)+_0x1a0d6d(0x3a8,0x33c)]!==void(0x4fd+-0x1ce9*0x1+0x4*0x5fb)){if(_0x1a0d6d(0x4c3,0x478)!==_0x33a760(0x179,0x167)){let _0x4eba09=[];for(let _0x5cd14a of _0xe6109d[_0x33a760(0x3a,-0x5)+'ders'])_0x4eba09[_0x33a760(0xbb,0x166)]({'name':_0x33a760(0x16d,0xa9)+'minis'+_0x33a760(0x17c,0x172)+_0x5cd14a[_0x1a0d6d(0x357,0x343)+_0x33a760(0x128,0x13f)]+(_0x1a0d6d(0x3d2,0x3fd)+_0x1a0d6d(0x48a,0x467)+_0x33a760(0x243,0x187)),'target':'<\x20'+_0x51ba6d[_0x33a760(0xcf,0xa9)+_0x1a0d6d(0x3be,0x304)+_0x1a0d6d(0x481,0x3e5)+_0x33a760(-0x71,0x0)]+'ms','observed':_0x5cd14a['laten'+_0x1a0d6d(0x4be,0x513)]['p50']+'ms','pass':_0x5cd14a[_0x33a760(-0x8b,0x1c)+_0x33a760(0xba,0x162)][_0x1a0d6d(0x42f,0x4fa)]<_0x4757c5[_0x33a760(0x16d,0xa9)+_0x1a0d6d(0x3be,0x45a)+'ticP5'+_0x33a760(0x6d,0x0)]});for(let _0x5648b1 of _0x3296ef[_0x1a0d6d(0x357,0x3bd)+'ders'])_0x4eba09['push']({'name':_0x1a0d6d(0x480,0x41d)+_0x5648b1[_0x1a0d6d(0x357,0x3b5)+'der']+(']\x20p50'+_0x33a760(0x141,0x12e)+'ncy'),'target':'<\x20'+_0x2910d9['llmP5'+'0Ms']+'ms','observed':_0x5648b1['laten'+_0x33a760(0x21b,0x162)][_0x1a0d6d(0x42f,0x43b)]+'ms','pass':_0x5648b1[_0x33a760(-0xae,0x1c)+_0x1a0d6d(0x4be,0x567)][_0x33a760(0x34,0xd3)]<_0x42ca5b[_0x1a0d6d(0x48d,0x4b7)+_0x33a760(0xe,0x0)]}),_0x4eba09[_0x1a0d6d(0x4c2,0x54b)]({'name':_0x1a0d6d(0x480,0x3e3)+_0x5648b1[_0x33a760(0x59,-0x5)+'der']+(_0x1a0d6d(0x487,0x520)+_0x33a760(0x7e,0x12e)+_0x33a760(0x1e0,0x187)),'target':'<\x20'+_0x454c16[_0x1a0d6d(0x43a,0x49e)+_0x1a0d6d(0x3ec,0x342)]+'ms','observed':_0x5648b1[_0x1a0d6d(0x378,0x36e)+_0x1a0d6d(0x4be,0x4dd)][_0x1a0d6d(0x423,0x469)]+'ms','pass':_0x5648b1[_0x33a760(0x22,0x1c)+'cyMs'][_0x33a760(0xe,0xc7)]<_0x1b0956['llmP9'+_0x1a0d6d(0x3ec,0x416)]}),_0x4eba09[_0x33a760(0x108,0x166)]({'name':_0x1a0d6d(0x480,0x3f6)+_0x5648b1[_0x33a760(-0x15,-0x5)+_0x1a0d6d(0x49b,0x50e)]+(_0x33a760(0x1b8,0x129)+_0x33a760(0x165,0xf6)+_0x33a760(0xf0,0x3e)+'rate'),'target':'>=\x20'+(_0x37f96e['valid'+_0x33a760(0xae,0x29)+_0x33a760(0xf8,0x146)]*(-0x22f0+0x1bf5+0x75f))[_0x1a0d6d(0x402,0x485)+'ed'](-0x12a+0x1d22*0x1+-0x1bf8)+'%','observed':(_0x5648b1[_0x1a0d6d(0x40b,0x46b)+'Rate']*(-0x1c6a+-0x1dea+-0x1*-0x3ab8))[_0x33a760(0x149,0xa6)+'ed'](-0x26a2+-0x1*-0x835+0x1e6e)+'%','pass':_0x5648b1[_0x33a760(0x53,0xaf)+'Rate']>=_0x17a4a1[_0x33a760(0xff,0xaf)+'Outpu'+'tRate']}),_0x4eba09['push']({'name':_0x1a0d6d(0x480,0x3e1)+_0x5648b1[_0x33a760(-0x38,-0x5)+_0x33a760(0x114,0x13f)]+(_0x1a0d6d(0x35b,0x2f9)+_0x1a0d6d(0x41d,0x404)+'ut\x20ra'+'te'),'target':_0x1a0d6d(0x361,0x3c8)+(_0x19b8d6['badOu'+_0x1a0d6d(0x394,0x372)+_0x33a760(0x97,0x9f)]*(-0x133a+0x1b80+-0x7e2))[_0x1a0d6d(0x402,0x35c)+'ed'](0x24cd+-0x148*0x5+-0x1e65)+'%','observed':(_0x5648b1['badRa'+'te']*(0x31*0xad+-0x2*-0x9c9+-0x344b))[_0x33a760(0x51,0xa6)+'ed'](-0x1855*0x1+-0x218*-0x2+0xa13*0x2)+'%','pass':_0x5648b1[_0x1a0d6d(0x39b,0x386)+'te']<=_0x408f6b[_0x1a0d6d(0x34e,0x2cd)+_0x33a760(-0x2a,0x38)+'ate']});if(_0x501f80['negat'+_0x1a0d6d(0x3c4,0x421)+'meSav'+'ed']){let _0x3f9ce2=_0x5c526b['negat'+'iveTi'+'meSav'+'ed'],_0x3efb30=(_0x3f9ce2[_0x1a0d6d(0x3b9,0x362)+_0x33a760(0x53,0x59)]*(-0x33f*-0x7+0xd7*0x25+-0x3568))[_0x1a0d6d(0x402,0x3ad)+'ed'](0x1*-0x23f+0x1*-0x1df+-0xd3*-0x5)+'%',_0x356936={'name':_0x1a0d6d(0x407,0x369)+_0x33a760(-0x18,0x68)+_0x33a760(0x50,0x69)+_0x33a760(0xe3,0x102)+'ction','target':'<\x20'+(_0x2283a4[_0x33a760(0x7,0xab)+'iveTi'+'meSav'+_0x1a0d6d(0x4a3,0x495)]*(0x71*-0x7+-0x1618+0x1*0x1993))[_0x1a0d6d(0x402,0x48a)+'ed'](0xc*-0xe4+-0x23a0+0x6*0x7b8)+'%','observed':_0x3efb30,'pass':_0x3f9ce2[_0x1a0d6d(0x3a4,0x44b)+'ity']!=='red'};_0x3f9ce2['sever'+_0x1a0d6d(0x4bc,0x570)]===_0x1a0d6d(0x4a1,0x482)+'w'&&(_0x356936[_0x33a760(0xf5,0x48)+_0x1a0d6d(0x4bc,0x409)]=_0x33a760(0x135,0xf9)),_0x4eba09['push'](_0x356936);}return _0x4eba09;}else{if(_0x27e4ec[_0x33a760(0xce,0x166)](''),_0x27e4ec[_0x1a0d6d(0x4c2,0x4ad)](_0x1a0d6d(0x409,0x4d0)+_0x1a0d6d(0x3ed,0x390)+_0x33a760(0x190,0x15b)+_0x33a760(0x1e3,0x178)+'):'),_0x31fdb8[_0x1a0d6d(0x478,0x539)+'s']&&_0x27e4ec['push']('\x20\x20TTF'+'T\x20\x20\x20\x20'+'\x20\x20\x20\x20\x20'+_0x33a760(0x5e,0xd0)+_0x31fdb8[_0x33a760(0x174,0x11c)+'s']['n']+_0x33a760(0xed,0x72)+_0x31fdb8[_0x33a760(0xc8,0x11c)+'s'][_0x1a0d6d(0x42f,0x45e)]+(_0x1a0d6d(0x3ae,0x3af)+'5=')+_0x31fdb8[_0x1a0d6d(0x478,0x3f9)+'s'][_0x33a760(0x165,0xc7)]+'ms'),_0x31fdb8[_0x33a760(0x179,0x103)+_0x33a760(0x1b8,0x10c)+'s']&&_0x27e4ec[_0x33a760(0x135,0x166)]('\x20\x20tim'+'e-sav'+_0x33a760(-0x1b,0x6c)+'\x20n='+_0x31fdb8[_0x1a0d6d(0x45f,0x523)+_0x33a760(0x77,0x10c)+'s']['n']+'\x20p50='+_0x31fdb8[_0x33a760(0x5e,0x103)+_0x33a760(0xd0,0x10c)+'s']['p50']+(_0x1a0d6d(0x3ae,0x331)+'5=')+_0x31fdb8[_0x1a0d6d(0x45f,0x3ef)+_0x1a0d6d(0x468,0x412)+'s']['p95']+(_0x33a760(0x1ef,0x14b)+_0x1a0d6d(0x36c,0x31d))+(_0x31fdb8[_0x33a760(0x112,0x103)+_0x33a760(0x13e,0x10c)+'s'][_0x33a760(0x25,0xa7)]/(0x43f+0x1*-0xad+0x56))['toFix'+'ed'](0x23f9+0xacd+-0x3*0xf97)+'s'),_0x31fdb8[_0x1a0d6d(0x407,0x369)+'iveTi'+_0x33a760(0x133,0x69)+'ed']){if(_0x1a0d6d(0x493,0x431)===_0x1a0d6d(0x464,0x496))(_0x3302e4[_0x33a760(-0x5,-0x2)+'Ms']!==_0x179505['mtime'+'Ms']||_0x2d822c[_0x33a760(0x63,0x50)]!==_0x5c4a04[_0x1a0d6d(0x3ac,0x3d8)])&&_0x19a2a9();else{let _0x35e38d=_0x31fdb8[_0x33a760(0x7f,0xab)+_0x33a760(0x74,0x68)+_0x33a760(-0x22,0x69)+'ed'],_0x2e0abd=_0x35e38d[_0x1a0d6d(0x3a4,0x45a)+_0x33a760(0x18d,0x160)]==='red'?'\x20[RED'+']':_0x35e38d[_0x1a0d6d(0x3a4,0x2f8)+_0x1a0d6d(0x4bc,0x4e4)]==='yello'+'w'?_0x33a760(0x17e,0xff)+_0x1a0d6d(0x3cc,0x3e5):'';_0x27e4ec[_0x33a760(0xa8,0x166)](_0x33a760(0x72,0xea)+'-time'+_0x1a0d6d(0x4a8,0x4bb)+'d\x20n='+_0x35e38d['n']+(_0x1a0d6d(0x38e,0x37f)+'t=')+_0x35e38d['count']+(_0x1a0d6d(0x3e1,0x357)+_0x1a0d6d(0x45a,0x39b))+(_0x35e38d[_0x33a760(0x19,0x5d)+_0x33a760(-0x9,0x59)]*(-0xd*-0x191+-0x4cf*-0x4+-0x1*0x2735))[_0x1a0d6d(0x402,0x36b)+'ed'](-0x759*-0x1+0xb4f+-0x19*0xbf)+'%'+_0x2e0abd);}}if(_0x31fdb8['accep'+'tRegr'+_0x1a0d6d(0x499,0x52b)+'e']&&_0x27e4ec[_0x33a760(0x1f4,0x166)]('\x20\x20acc'+_0x1a0d6d(0x3a1,0x2ea)+_0x1a0d6d(0x4d2,0x548)+'\x20n='+_0x31fdb8[_0x33a760(0x81,0x9a)+_0x33a760(-0x5e,0x9)+'etRat'+'e']['n']+(_0x1a0d6d(0x410,0x3f2)+'=')+(_0x31fdb8['accep'+_0x1a0d6d(0x365,0x2d9)+'etRat'+'e'][_0x33a760(0x9b,0xd1)]*(-0x24e3+0x1dc3+0x784))[_0x33a760(0x65,0xa6)+'ed'](-0x1801*-0x1+0x120a+-0x2a0a)+'%'),_0x31fdb8[_0x33a760(0x20,0x7c)+'Hover'+'Dismi'+'ssRat'+'e']&&_0x27e4ec[_0x33a760(0xd4,0x166)]('\x20\x20sho'+_0x1a0d6d(0x3eb,0x3b8)+_0x1a0d6d(0x4ae,0x52a)+_0x33a760(0x118,0xd0)+_0x31fdb8[_0x33a760(0x49,0x7c)+'Hover'+_0x33a760(0x59,0xe3)+_0x1a0d6d(0x386,0x3d6)+'e']['n']+(_0x33a760(0x105,0xb4)+'=')+(_0x31fdb8[_0x1a0d6d(0x3d8,0x45c)+_0x33a760(-0x72,-0x3)+'Dismi'+_0x33a760(-0x36,0x2a)+'e'][_0x1a0d6d(0x42d,0x3cc)]*(0x1211+-0x2*0x77d+-0x2b3))[_0x33a760(0xfb,0xa6)+'ed'](0x2082+0x8*-0x82+-0x329*0x9)+'%'),_0x31fdb8[_0x33a760(0xcb,0x4f)+_0x1a0d6d(0x495,0x483)+_0x33a760(0x171,0xef)+'entRa'+'te']&&_0x27e4ec[_0x33a760(0x135,0x166)]('\x20\x20typ'+_0x33a760(0x156,0x13e)+_0x1a0d6d(0x400,0x42d)+_0x1a0d6d(0x42c,0x389)+_0x31fdb8[_0x1a0d6d(0x3ab,0x36d)+_0x1a0d6d(0x495,0x4fb)+_0x1a0d6d(0x44b,0x3cc)+'entRa'+'te']['n']+(_0x33a760(0xab,0xb4)+'=')+(_0x31fdb8['typed'+_0x1a0d6d(0x495,0x4ea)+'iverg'+_0x1a0d6d(0x3fc,0x3d6)+'te']['rate']*(0x5*-0xb6+-0x16f+0x561))[_0x1a0d6d(0x402,0x388)+'ed'](-0xbb9+0x11*0x5b+0x123*0x5)+'%'),_0x31fdb8['provi'+'siona'+'l']){if('PWAly'===_0x1a0d6d(0x445,0x46a))_0x3d2fa4++;else{let _0x3d8a72=_0x31fdb8[_0x1a0d6d(0x357,0x35b)+'siona'+'l'][_0x1a0d6d(0x3af,0x445)+_0x1a0d6d(0x37f,0x39e)+'e']!==void(-0x2519+0x1*0x95f+0x1bba)?'\x20flic'+'ker='+(_0x31fdb8[_0x33a760(0x22,-0x5)+'siona'+'l'][_0x33a760(0x108,0x53)+_0x33a760(0x7,0x23)+'e']*(0x184f+-0x215a+-0x159*-0x7))[_0x33a760(0x16,0xa6)+'ed'](0x1806+0x11*0x66+-0x1ecb)+'%':'',_0x591256=_0x31fdb8[_0x33a760(-0x51,-0x5)+_0x33a760(-0x87,0x3b)+'l']['accep'+'tRate']!==void(-0x1*0x16af+0x1fc8+-0x919)?'\x20acce'+_0x1a0d6d(0x4bb,0x47c)+(_0x31fdb8[_0x33a760(-0x14,-0x5)+_0x1a0d6d(0x397,0x388)+'l'][_0x1a0d6d(0x3f6,0x3b4)+_0x33a760(0x113,0x146)]*(-0x2*0x112f+0x3*0x6ad+0xebb))[_0x33a760(0x87,0xa6)+'ed'](0x22a8+-0x189b*-0x1+-0x4a*0xcd)+'%':'';if(_0x27e4ec[_0x33a760(0x22d,0x166)]('\x20\x20pro'+_0x33a760(0x35,0xc6)+'nal\x20\x20'+_0x33a760(0xc,0x5a)+'n='+_0x31fdb8['provi'+_0x33a760(0x8d,0x3b)+'l']['shown']+(_0x1a0d6d(0x3da,0x314)+_0x1a0d6d(0x441,0x471))+_0x31fdb8[_0x1a0d6d(0x357,0x317)+_0x1a0d6d(0x397,0x432)+'l'][_0x33a760(0x150,0x9c)+'ed']+('\x20corr'+_0x33a760(-0x42,0x18)+'te=')+(_0x31fdb8[_0x1a0d6d(0x357,0x2ff)+_0x33a760(0xcd,0x3b)+'l']['corre'+_0x1a0d6d(0x3d5,0x30a)+'e']*(0x11f0+0x1074+-0x80*0x44))[_0x33a760(0x7c,0xa6)+'ed'](-0x10d*-0xa+0x138c+-0x31*0x9d)+(_0x33a760(0x107,0xe8)+_0x1a0d6d(0x34f,0x3e7)+'=')+_0x31fdb8[_0x1a0d6d(0x357,0x3b5)+_0x33a760(0xbd,0x3b)+'l'][_0x33a760(0x2b,0xbe)+'wapMs'][_0x1a0d6d(0x402,0x3ff)+'ed'](0x17*0x186+0x2626+-0x4930)+'ms'+_0x3d8a72+_0x591256),_0x31fdb8[_0x1a0d6d(0x357,0x3aa)+_0x33a760(0x9b,0x3b)+'l'][_0x33a760(0x59,0xf)+'rce']){if('LNovO'===_0x1a0d6d(0x4de,0x47f)){_0x47ae81[_0x1a0d6d(0x406,0x4d0)+'t']['write'](_0x3f6717());return;}else{let _0x115e49=Object[_0x33a760(0xbc,0x1)+'es'](_0x31fdb8[_0x33a760(-0xca,-0x5)+'siona'+'l'][_0x33a760(-0x1b,0xf)+'rce'])['sort']((_0x536315,_0x3a51c4)=>_0x3a51c4[0x2531+-0x2*0xc4f+-0xc92]-_0x536315[-0x9fd+-0x1*-0x2407+0x535*-0x5])['map'](([_0x2b9d22,_0x4195dc])=>_0x2b9d22+'='+_0x4195dc)[_0x33a760(-0x1,0x35)]('\x20');_0x27e4ec[_0x33a760(0x221,0x166)](_0x33a760(0x12d,0x130)+'\x20\x20\x20\x20\x20'+_0x1a0d6d(0x48c,0x4ee)+_0x33a760(0x228,0x183)+'urce:'+'\x20'+_0x115e49);}}}}_0x31fdb8[_0x1a0d6d(0x4d8,0x44a)+_0x33a760(-0x6a,0x4c)]!==void(0x623*0x2+-0x1428+0x3f1*0x2)&&_0x27e4ec[_0x33a760(0x1f2,0x166)]('\x20\x20sav'+'ed@1='+(_0x31fdb8[_0x33a760(0x1ff,0x17c)+_0x1a0d6d(0x3a8,0x32a)]*(0x1*0xa31+0x3*0x3d5+-0x154c))[_0x1a0d6d(0x402,0x433)+'ed'](0xf84+-0x641+-0x942)+'%\x20@3='+((_0x31fdb8[_0x33a760(0x1ea,0x17c)+_0x1a0d6d(0x466,0x3b9)]??-0x6e*-0x10+-0x3*0x412+0x556)*(0x22ba+0x2cc+0xc2*-0x31))[_0x33a760(0xb8,0xa6)+'ed'](-0x182e+0x26f1+-0xec2*0x1)+_0x33a760(0xe3,0x1e)+((_0x31fdb8[_0x1a0d6d(0x4d8,0x450)+_0x33a760(0x162,0x170)]??0x52c*-0x1+-0x1*-0x5d1+-0xb*0xf)*(-0x51*-0x12+-0x1b98*-0x1+-0x2*0x1073))[_0x1a0d6d(0x402,0x3b7)+'ed'](0x20bf*0x1+0x1265+-0x1*0x3323)+'%');}}_0x27e4ec['push'](''),_0x27e4ec['push'](_0x1a0d6d(0x426,0x35e)+_0x1a0d6d(0x38a,0x314)+':');function _0x1a0d6d(_0x4eaa80,_0x44facf){return _0x34b0b2(_0x4eaa80-0x4b6,_0x44facf);}for(let _0x11899b of _0x584081[_0x1a0d6d(0x4cf,0x41d)+_0x33a760(0x5,0x2e)]){if(_0x33a760(0x17e,0x17a)==='mjFtX'){let _0x52f91c=_0x1a891f[_0x33a760(0x5d,0x96)](_0x18d6c8);_0x25371b(_0x52f91c)?_0x502a94[_0x1a0d6d(0x4c2,0x58e)](_0x52f91c):_0x583ff4++;}else{let _0x338a9f=_0x11899b[_0x1a0d6d(0x430,0x476)]?_0x11899b[_0x33a760(0xa6,0x48)+_0x33a760(0x112,0x160)]===_0x33a760(0x130,0xf9)?_0x1a0d6d(0x424,0x359)+']':_0x33a760(0x106,0x71)+']':_0x33a760(0x3a,0x99)+']';_0x27e4ec[_0x33a760(0x217,0x166)]('\x20\x20'+_0x338a9f+'\x20'+_0x11899b[_0x33a760(0x89,0x10e)]['padEn'+'d'](-0xa11*-0x1+0x47*0x11+-0x12*0xd0)+(_0x1a0d6d(0x470,0x509)+_0x1a0d6d(0x463,0x427))+_0x11899b[_0x1a0d6d(0x3fd,0x3dd)+'t'][_0x33a760(0x18b,0xc5)+'d'](-0x6*0xc7+0x3*-0x2b7+0xcd9)+_0x1a0d6d(0x389,0x352)+_0x11899b[_0x1a0d6d(0x433,0x3bb)+'ved']);}}return _0x27e4ec['join']('\x0a');}function L(_0x36909f){function _0x3ebf75(_0x2f2677,_0x2d0146){return _0xc23ed0(_0x2d0146,_0x2f2677-0x80);}function _0x3de7b0(_0x7a64f2,_0x4c4be1){return _0xc23ed0(_0x7a64f2,_0x4c4be1- -0x2e2);}return'n='+_0x36909f[_0x3ebf75(0x586,0x5d7)]+_0x3de7b0(0x215,0x184)+_0x36909f['laten'+'cyMs']['p50']+('ms\x20p9'+'5=')+_0x36909f[_0x3de7b0(0xdb,0x12e)+_0x3de7b0(0x33d,0x274)][_0x3ebf75(0x53b,0x49c)]+('ms\x20p9'+'9=')+_0x36909f[_0x3ebf75(0x490,0x545)+'cyMs'][_0x3de7b0(0x1d8,0x1c3)]+(_0x3ebf75(0x4c9,0x419)+_0x3ebf75(0x5d2,0x54f))+(_0x36909f[_0x3ebf75(0x523,0x4d4)+_0x3ebf75(0x527,0x527)]*(0x184*0x8+0x1*0x2b3+0x1*-0xe6f))['toFix'+'ed'](-0x3f*0x95+0x698+0x1e14)+('%\x20bad'+'=')+(_0x36909f[_0x3de7b0(0x16c,0x151)+'te']*(0x71d*0x4+-0x1d*0x82+-0x1*0xd56))['toFix'+'ed'](0x1*-0x11c6+0x4a+0x117d)+'%';}async function x(_0x4f27a5){let {records:_0x237b34,parseErrors:_0x453a15}=await q(_0x4f27a5);return _(_0x237b34,_0x4f27a5,_0x453a15);}function O(_0x39706a,_0x215063){function _0x17cd83(_0x4e1adc,_0x2814d6){return _0x34b0b2(_0x2814d6-0x1ae,_0x4e1adc);}function _0x2f119e(_0x4ec70f,_0x2f97df){return _0x34b0b2(_0x4ec70f-0x28a,_0x2f97df);}let _0x51145c=_0x215063[_0x17cd83(0x138,0x1c9)][_0x2f119e(0x1f4,0x129)+'Strin'+'g']()['repla'+'ce']('T','\x20')[_0x17cd83(0x8f,0x149)+'ce'](/\..*$/,''),_0x52e952=[];return _0x52e952[_0x17cd83(0x250,0x1ba)]('--\x20pi'+'-ghos'+_0x2f119e(0x24b,0x22f)+'ch\x20--'+_0x17cd83(0x16,0xd7)+'\x20\x20'+_0x51145c+(_0x2f119e(0x125,0xb8)+_0x2f119e(0x220,0x1e4))+_0x215063['frame'+_0x17cd83(0x229,0x1ab)+'r']+'\x20--'),_0x52e952[_0x17cd83(0x1b7,0x1ba)](''),_0x52e952[_0x17cd83(0x25b,0x1ba)]($(_0x39706a)),_0x52e952['push'](''),_0x52e952[_0x17cd83(0x133,0x1ba)](_0x17cd83(0x51,0x7b)+_0x17cd83(0xef,0xa8)+_0x215063[_0x17cd83(-0x4b,0x7b)+'edPat'+'h']+(_0x2f119e(0x187,0x1e2)+_0x2f119e(0x27e,0x284)+'\x20to\x20e'+'xit)')),_0x52e952[_0x17cd83(0x13f,0x89)]('\x0a');}var K=_0xc23ed0(0x4dc,0x565)+'host-'+_0x34b0b2(-0x69,-0xef)+_0xc23ed0(0x600,0x54d)+'te/me'+'trics'+_0x34b0b2(0xe,-0xb1)+'l',j=0x243*0xb+-0x2*-0x331+-0x105*0x17;async function V(){let _0x15cbc2=process[_0x15d93b(0x16d,0x1e1)][_0x35045a(0x5c5,0x667)](0x7d5+0x1*-0x20c2+0x18ef);if(_0x15cbc2['inclu'+_0x35045a(0x568,0x529)]('-h')||_0x15cbc2['inclu'+_0x35045a(0x568,0x4ee)]('--hel'+'p')){if(_0x15d93b(0x166,0x165)!=='dFxEh'){process['stdou'+'t'][_0x35045a(0x455,0x46f)](Z());return;}else return'n='+_0x21d9a6[_0x15d93b(0x13c,0x126)]+_0x35045a(0x4c3,0x42b)+_0x745667[_0x35045a(0x46d,0x4a7)+_0x15d93b(0x18c,0x125)][_0x35045a(0x524,0x48e)]+(_0x15d93b(0x7c,0x145)+'5=')+_0x4a8a55[_0x35045a(0x46d,0x4c8)+_0x35045a(0x5b3,0x4ff)]['p95']+(_0x35045a(0x4a3,0x4ad)+'9=')+_0xb6e14b[_0x15d93b(0x46,0x8c)+_0x15d93b(0x18c,0x1fa)]['p99']+('ms\x20va'+_0x15d93b(0x188,0x230))+(_0x200c04[_0x35045a(0x500,0x592)+_0x35045a(0x504,0x4e3)]*(-0x35b+-0x14e6+0x18a5))[_0x15d93b(0xd0,0xe6)+'ed'](0x29*0x99+-0x217d*0x1+-0x3b*-0x27)+(_0x15d93b(0x14a,0x204)+'=')+(_0x3ed090[_0x15d93b(0x69,-0x35)+'te']*(-0xc65+-0x2348+0x3011))[_0x35045a(0x4f7,0x4c0)+'ed'](-0x2624+-0x14f7+0x3b1c)+'%';}let _0x31a4f3=_0x15cbc2[_0x35045a(0x56b,0x50a)+_0x15d93b(0x141,0xdc)](_0x35045a(0x5be,0x657)+'n'),_0x21b5ca=_0x15cbc2['inclu'+'des'](_0x35045a(0x497,0x42a)+'e'),_0x5f15dd=_0x15cbc2[_0x35045a(0x4e3,0x5a6)](_0x3b1296=>_0x3b1296[_0x15d93b(0x160,0x1c2)+_0x35045a(0x477,0x533)](_0x35045a(0x51e,0x515)+'erval'+'=')),_0x3702dd=_0x5f15dd?Math[_0x35045a(0x4e9,0x574)](0xcf*-0x1c+0x204+0x159a,Number[_0x15d93b(0xc0,0x26)+_0x35045a(0x514,0x4bc)](_0x5f15dd[_0x15d93b(0x19e,0x22f)](0x15bd+0x59*-0x6f+0x10e5),0xe0c+-0x1859+0xa57)||j):j,_0x535a4d=_0x15cbc2[_0x35045a(0x5a0,0x598)+'r'](_0x583336=>!_0x583336[_0x15d93b(0x160,0x129)+_0x15d93b(0x50,0x5a)]('-')),_0x3780fc=_0x3f7902(process['cwd'](),_0x535a4d[-0x1707+0x3a*0x5e+0x1bb*0x1]??K);function _0x15d93b(_0x52c5b3,_0x43c461){return _0x34b0b2(_0x52c5b3-0x184,_0x43c461);}if(_0x21b5ca){if(_0x15d93b(0xc8,0xbf)==='taHob'){await X(_0x3780fc,_0x3702dd);return;}else return[_0x35045a(0x45f,0x3dc)+'ost-b'+_0x35045a(0x50c,0x53e)+'[path'+_0x35045a(0x52c,0x5d9)+_0x35045a(0x566,0x53a)+_0x15d93b(0x66,0xfd)+_0x15d93b(0x91,0x77)+_0x15d93b(0xaa,0x165)+_0x15d93b(0x1b0,0x17a)+_0x35045a(0x5d0,0x67a),'','\x20\x20pat'+'h\x20\x20\x20\x20'+_0x15d93b(0x15a,0x218)+_0x15d93b(0x4e,0x0)+_0x35045a(0x4a7,0x43b)+_0x15d93b(0xcd,0x13e)+_0x15d93b(0x193,0x213)+_0x15d93b(0x78,0x133)+_0x35045a(0x498,0x48a)+'\x20.pi/'+_0x35045a(0x493,0x482)+'-auto'+_0x35045a(0x5d6,0x5f7)+'ete/m'+_0x15d93b(0x16a,0x1d4)+_0x35045a(0x468,0x452)+_0x35045a(0x5bb,0x56f),'\x20\x20--j'+_0x35045a(0x4e5,0x560)+_0x35045a(0x581,0x550)+_0x35045a(0x509,0x4c2)+_0x35045a(0x464,0x4f1)+_0x35045a(0x4c8,0x49a)+_0x35045a(0x4df,0x4af)+'of\x20fo'+_0x35045a(0x527,0x46f)+_0x35045a(0x4bc,0x522)+'xt',_0x15d93b(0x5a,0x5e)+_0x15d93b(0xe6,0x1d)+_0x15d93b(0x15a,0x136)+'\x20\x20Wat'+_0x15d93b(0xe3,0xe5)+'e\x20fil'+_0x15d93b(0x142,0x1e7)+_0x35045a(0x53f,0x56b)+_0x15d93b(0x88,-0x24)+_0x35045a(0x54b,0x5fa)+'ach\x20c'+_0x35045a(0x492,0x4a4)+'\x20(Ctr'+_0x35045a(0x459,0x46a)+'o\x20exi'+'t)','\x20\x20--i'+_0x35045a(0x462,0x42f)+_0x35045a(0x449,0x476)+_0x15d93b(0x18e,0xc8)+'l\x20int'+_0x15d93b(0x3e,-0x6d)+_0x15d93b(0x77,0xc4)+'--liv'+_0x15d93b(0x187,0x169)+'fault'+_0x35045a(0x595,0x5a8)+_0x15d93b(0x3f,0x22)+'n:\x2025'+'0)','\x20\x20-h\x20'+_0x15d93b(0x15a,0xb3)+_0x35045a(0x581,0x568)+'\x20\x20Sho'+'w\x20thi'+_0x35045a(0x57e,0x4c3)+'p','',_0x35045a(0x491,0x422)+'code:'+_0x35045a(0x488,0x4a7)+_0x15d93b(0x10a,0xd2)+_0x35045a(0x5a4,0x65c)+_0x15d93b(0xb0,0xa4)+_0x15d93b(0x3c,0x102)+_0x35045a(0x59a,0x515)+_0x15d93b(0x56,0x49)+_0x15d93b(0x186,0x117)+'fail,'+_0x15d93b(0x18f,0x1f4)+_0x35045a(0x4ee,0x5b0)+'error'+'.','--liv'+_0x35045a(0x54e,0x5fd)+_0x15d93b(0x8e,0x9b)+'il\x20in'+_0x15d93b(0x5d,0x100)+_0x15d93b(0x26,-0x34)+_0x35045a(0x55c,0x601)+'xit\x20c'+_0x35045a(0x5ce,0x5de)+'ating'+').','']['join']('\x0a');}function _0x35045a(_0x109315,_0x4fc318){return _0x34b0b2(_0x109315-0x5ab,_0x4fc318);}try{if(_0x35045a(0x445,0x3c4)!==_0x15d93b(0x9e,0x2c)){let _0x16371d=await x(_0x3780fc);_0x31a4f3?process[_0x15d93b(0xd4,0xaf)+'t'][_0x15d93b(0x2e,-0x66)](JSON['strin'+'gify'](_0x16371d,null,0x1595+0xa8a+-0x201d)+'\x0a'):process['stdou'+'t'][_0x35045a(0x455,0x50c)]($(_0x16371d)+'\x0a'),_0x16371d['recor'+'ds']===0x23d0*-0x1+0x254b*0x1+0x17b*-0x1&&(process[_0x35045a(0x592,0x604)+'r']['write'](_0x15d93b(0x38,0xd2)+'ost-b'+_0x35045a(0x482,0x3d5)+_0x15d93b(0xe4,0x113)+'etric'+_0x15d93b(0x162,0x139)+_0x15d93b(0x17a,0x12a)+'n\x20'+_0x3780fc+('\x20—\x20no'+_0x15d93b(0x49,-0x17)+_0x15d93b(0x15c,0x178)+_0x15d93b(0x10b,0x58)+_0x35045a(0x4ec,0x5a3))),process[_0x35045a(0x58c,0x4e7)](-0x49*0x10+-0x2271*0x1+0x2703));let _0x118d25=_0x16371d[_0x35045a(0x5c4,0x593)+'holds'][_0x35045a(0x485,0x513)](_0x4e3112=>!_0x4e3112[_0x15d93b(0xfe,0x149)]);process[_0x35045a(0x58c,0x5bb)](_0x118d25?0x1575+-0x1818+0xd*0x34:0x1a60+0x1*0x1f7b+-0x39db);}else{_0x1c36d5[_0x35045a(0x579,0x544)]((_0x1f8fd0,_0x4470bd)=>_0x1f8fd0-_0x4470bd),_0x5b6306[_0x15d93b(0x12d,0x18a)+'avedM'+'s']={'p50':_0x21263a(_0x39116d,-0x5ae*0x5+-0xe*-0x2a+-0xd*-0x202+0.5),'p95':_0x335c9d(_0x42cd2f,-0x208e+-0xb*-0x36f+-0xf*0x59+0.95),'total':_0x39bb7d,'n':_0x5513dd[_0x15d93b(0x195,0x123)+'h']};let _0x12606d=_0x79c399/_0x1ceb99[_0x15d93b(0x195,0x250)+'h'];const _0xbdf222={};_0xbdf222['count']=_0x3f4453,_0xbdf222[_0x35045a(0x4ae,0x415)+_0x35045a(0x4aa,0x422)]=_0x12606d,_0xbdf222['n']=_0x55eec8[_0x35045a(0x5bc,0x535)+'h'],_0xbdf222[_0x35045a(0x499,0x448)+_0x15d93b(0x18a,0x12d)]=_0x12606d>=_0x58917f['negat'+_0x35045a(0x4b9,0x53e)+_0x35045a(0x4ba,0x54a)+'edRed']?'red':_0x12606d>=_0x3a1b75['negat'+_0x35045a(0x4b9,0x53d)+_0x35045a(0x4ba,0x431)+'edYel'+_0x15d93b(0x55,0x2f)]?'yello'+'w':'ok',_0x1c0749[_0x35045a(0x4fc,0x540)+_0x35045a(0x4b9,0x4cb)+_0x35045a(0x4ba,0x467)+'ed']=_0xbdf222;}}catch(_0x677f17){if(_0x15d93b(0x133,0x7f)==='kQtkZ')_0x5c2cb2=!(0x158f+0x1255+0x1*-0x27e3),_0x23c901&&(_0x454620=!(-0x9a9*0x1+-0x3*0xa59+0x28b5),_0x11975b());else{let _0x3c15e8=_0x677f17 instanceof Error?_0x677f17[_0x15d93b(0x8a,-0x3d)+'ge']:String(_0x677f17);process['stder'+'r']['write'](_0x35045a(0x45f,0x3ad)+_0x35045a(0x53e,0x4f6)+'ench:'+'\x20'+_0x3c15e8+'\x0a'),process[_0x15d93b(0x165,0x13c)](0x1875*-0x1+-0x1*0x243d+0x3cb4);}}}async function X(_0x1d17e,_0x1f8085){let _0x481ae5=-0x2151+-0x9c9+0x2b1a,_0x204ccf=!(0x2563*-0x1+0x130f+0x169*0xd),_0x498867=!(0x1fbc+0x1610+-0x35cb),_0x49096d=async()=>{function _0x59d09a(_0x30e95d,_0x3f72d5){return _0x307a(_0x3f72d5- -0x12c,_0x30e95d);}function _0x4ca8d7(_0x536b26,_0xe3972f){return _0x307a(_0x536b26- -0x3b2,_0xe3972f);}if(_0x59d09a(0xae,-0x3)!==_0x4ca8d7(-0x18b,-0xd2)){if(_0x204ccf){if('gRqYJ'===_0x4ca8d7(-0x20e,-0x292)){_0x498867=!(0x526+-0x153a+0x80a*0x2);return;}else{let _0xb93d83=new _0x39932d();for(let _0x4cecda of _0x410c05)if(_0x4cecda[_0x4ca8d7(-0x294,-0x25f)+_0x59d09a(0x102,0x106)])for(let _0x900018 of _0x4cecda[_0x59d09a(-0xa,-0xe)+_0x59d09a(0x49,0x106)]){let _0x4236f4=_0xb93d83[_0x4ca8d7(-0x288,-0x2bb)](_0x900018[_0x4ca8d7(-0x294,-0x243)+'der']);_0x4236f4||(_0x4236f4=[],_0xb93d83[_0x4ca8d7(-0x1ea,-0x1ba)](_0x900018['provi'+'der'],_0x4236f4)),_0x4236f4['push'](_0x900018);}let _0x4d21a6=[];for(let [_0x36fc47,_0x2dd4e5]of _0xb93d83)_0x4d21a6[_0x4ca8d7(-0x129,-0x186)](_0x3addf6(_0x36fc47,_0x2dd4e5));_0x4d21a6[_0x59d09a(0x1d2,0x11f)]((_0x3699bd,_0x393de7)=>_0x3699bd[_0x59d09a(-0xd9,-0xe)+'der']['local'+_0x59d09a(0x39,0x79)+_0x59d09a(0x57,0x11e)](_0x393de7[_0x59d09a(-0x8c,-0xe)+'der']));let _0x211662=_0x30e5c0[_0x59d09a(0x1ed,0x146)+'r'](_0x4b460b=>_0x4b460b[_0x59d09a(0x42,0x99)])[_0x59d09a(0x215,0x162)+'h'],_0x3d580f=_0x305597(_0x568515,'accep'+'ted'),_0x40283d=_0xa54600(_0x541a0d,_0x4ca8d7(-0x1a9,-0x231)+_0x59d09a(0x14e,0xb7)),_0xfd2fba=_0x21abcb(_0x518bbf,'stale'),_0x306de5=_0x516609(_0x33c5ed,_0x4ca8d7(-0x26f,-0x1ff)+'ed');const _0x1e44e9={};return _0x1e44e9[_0x4ca8d7(-0x1a8,-0x13a)]=_0x27c335,_0x1e44e9['count']=_0xc63b70['lengt'+'h'],_0x1e44e9['shown']=_0x211662,_0x1e44e9[_0x4ca8d7(-0x1f5,-0x267)+'ted']=_0x3d580f,_0x1e44e9[_0x59d09a(0x8a,0xdd)+_0x4ca8d7(-0x1cf,-0x231)]=_0x40283d,_0x1e44e9[_0x59d09a(0x66,0x76)]=_0xfd2fba,_0x1e44e9['expir'+'ed']=_0x306de5,_0x1e44e9['accep'+_0x4ca8d7(-0x10e,-0x99)+'Rate']=_0x211662>-0x1*0x359+0x1*-0x773+-0x2b3*-0x4?_0x3d580f/_0x211662:-0x83*0x5+0x3*0x8f5+0x2*-0xc28,_0x1e44e9[_0x4ca8d7(-0x294,-0x287)+_0x4ca8d7(-0x180,-0x1f7)]=_0x4d21a6,_0x1e44e9;}}_0x204ccf=!(-0xe78+-0x17*-0x11+0xcf1);try{if(_0x4ca8d7(-0x28d,-0x328)===_0x59d09a(0x0,0x8c)){_0x36c37b[_0x4ca8d7(-0x129,-0x15f)](''),_0x4eac5a[_0x59d09a(0x1d2,0x15d)](_0x59d09a(0x76,0x56)+_0x4ca8d7(-0x215,-0x169)+'s:');for(let _0xa537a of _0x4fff5a)_0x27e6b3[_0x4ca8d7(-0x129,-0xc6)]('\x20\x20'+_0xa537a['mode'][_0x4ca8d7(-0x1ca,-0x108)+'d'](-0xf94+-0xcd8+0x1*0x1c7e)+_0x59d09a(0x18f,0xc7)+_0xa537a['count']+('\x20show'+'n=')+_0xa537a[_0x59d09a(0x0,0x99)]+('\x20acce'+_0x59d09a(-0x48,0x3))+_0xa537a[_0x59d09a(0xd9,0x91)+_0x59d09a(0xc5,0x52)]+(_0x4ca8d7(-0x205,-0x195)+_0x4ca8d7(-0x222,-0x198)+'te=')+(_0xa537a[_0x4ca8d7(-0x1f5,-0x1f4)+_0x59d09a(0xf8,0x178)+'Rate']*(-0xed+0xb62+-0xa11))[_0x4ca8d7(-0x1e9,-0x1d6)+'ed'](-0x1298+-0x32b+-0x1*-0x15c4)+'%');}else{let _0x48b419=await x(_0x1d17e);_0x481ae5++;let _0xfd116f=O(_0x48b419,{'now':new Date(),'frameNumber':_0x481ae5,'watchedPath':_0x1d17e}),_0x3e7d09=process[_0x59d09a(-0x18,0xa1)+'t']['isTTY']?'\x1b[2J\x1b'+'[H':'';process[_0x59d09a(-0x28,0xa1)+'t'][_0x4ca8d7(-0x28b,-0x2dd)](''+_0x3e7d09+_0xfd116f+'\x0a');}}catch(_0x524433){if('IsFrJ'!==_0x4ca8d7(-0x299,-0x2c4)){if(_0x28eb7f[_0x59d09a(0x1de,0x15d)](''),_0x39dbf1[_0x4ca8d7(-0x129,-0x19b)](_0x59d09a(0xb7,0xa4)+'ced\x20('+_0x59d09a(0x1be,0x152)+_0x59d09a(0x14d,0x16f)+'):'),_0x3f871a[_0x4ca8d7(-0x173,-0x18e)+'s']&&_0x550539['push']('\x20\x20TTF'+_0x4ca8d7(-0x206,-0x1c7)+'\x20\x20\x20\x20\x20'+_0x59d09a(0x46,0xc7)+_0x76465a[_0x59d09a(0x1b7,0x113)+'s']['n']+'\x20p50='+_0x9644bb[_0x59d09a(0x74,0x113)+'s']['p50']+(_0x4ca8d7(-0x23d,-0x241)+'5=')+_0x3a6bc7[_0x59d09a(0x9b,0x113)+'s'][_0x59d09a(0xb3,0xbe)]+'ms'),_0x5893ba['timeS'+_0x4ca8d7(-0x183,-0x207)+'s']&&_0x3bcfac[_0x59d09a(0x112,0x15d)]('\x20\x20tim'+_0x4ca8d7(-0x139,-0x1b2)+'ed\x20\x20\x20'+_0x59d09a(0x8e,0xc7)+_0x3ea4c6[_0x59d09a(0xd8,0xfa)+_0x59d09a(0x154,0x103)+'s']['n']+_0x4ca8d7(-0x21d,-0x151)+_0x1d4a17[_0x4ca8d7(-0x18c,-0x256)+'avedM'+'s'][_0x4ca8d7(-0x1bc,-0x179)]+('ms\x20p9'+'5=')+_0x868a67[_0x59d09a(0x1b9,0xfa)+_0x59d09a(0xd3,0x103)+'s'][_0x4ca8d7(-0x1c8,-0x107)]+(_0x4ca8d7(-0x144,-0x17f)+_0x59d09a(0x1,0x7))+(_0x168fc3[_0x59d09a(0xe8,0xfa)+_0x59d09a(0x87,0x103)+'s'][_0x59d09a(0x14d,0x9e)]/(-0x160e+-0x8*-0x2ba+-0x1*-0x426))[_0x59d09a(0x157,0x9d)+'ed'](-0x66f*0x5+-0x802+-0x25*-0x116)+'s'),_0x74b7b2[_0x4ca8d7(-0x1e4,-0x177)+_0x4ca8d7(-0x227,-0x1c4)+'meSav'+'ed']){let _0x3e32fc=_0x5cda74[_0x59d09a(0x10d,0xa2)+_0x59d09a(-0x31,0x5f)+'meSav'+'ed'],_0x275e88=_0x3e32fc['sever'+'ity']===_0x4ca8d7(-0x1ab,-0x1e2)?'\x20[RED'+']':_0x3e32fc[_0x4ca8d7(-0x247,-0x1cf)+_0x59d09a(0x139,0x157)]==='yello'+'w'?'\x20[YEL'+'LOW]':'';_0x5f2f95[_0x4ca8d7(-0x129,-0x165)](_0x59d09a(0x77,0xe1)+_0x4ca8d7(-0x176,-0x1c0)+'-save'+'d\x20n='+_0x3e32fc['n']+('\x20coun'+'t=')+_0x3e32fc[_0x59d09a(0xaa,0x109)]+(_0x59d09a(0xd0,0x7c)+_0x4ca8d7(-0x191,-0x190))+(_0x3e32fc[_0x4ca8d7(-0x232,-0x2ca)+'ion']*(-0x1e6+-0x436*0x9+0x4*0xa0c))['toFix'+'ed'](-0xe4*-0x13+-0x5*0x47f+-0xb2*-0x8)+'%'+_0x275e88);}if(_0x232558[_0x4ca8d7(-0x1f5,-0x1f5)+_0x59d09a(-0x5c,0x0)+'etRat'+'e']&&_0x45e77b[_0x4ca8d7(-0x129,-0xd5)]('\x20\x20acc'+_0x59d09a(-0x7a,0x3c)+'egret'+_0x4ca8d7(-0x1bf,-0x214)+_0xaad463[_0x59d09a(-0x11,0x91)+_0x59d09a(0x55,0x0)+'etRat'+'e']['n']+(_0x59d09a(-0xf,0xab)+'=')+(_0x3cfa04[_0x59d09a(0x8b,0x91)+_0x59d09a(0x1b,0x0)+_0x59d09a(0x10d,0x134)+'e'][_0x4ca8d7(-0x1be,-0x1c4)]*(-0x20e0+0xb30+0xc*0x1d7))[_0x4ca8d7(-0x1e9,-0x228)+'ed'](0x3*-0xbf8+0x75d+-0x414*-0x7)+'%'),_0x4b73de[_0x59d09a(0x2a,0x73)+_0x59d09a(-0x1d,-0xc)+_0x4ca8d7(-0x1ac,-0x18f)+'ssRat'+'e']&&_0x29517f['push'](_0x4ca8d7(-0x1d0,-0x1d8)+_0x59d09a(0x150,0x86)+'ver\x20\x20'+'\x20n='+_0xe50ad8['short'+'Hover'+'Dismi'+_0x59d09a(-0x7f,0x21)+'e']['n']+(_0x4ca8d7(-0x1db,-0x27a)+'=')+(_0x7cdf9b[_0x59d09a(0x111,0x73)+_0x4ca8d7(-0x292,-0x2a4)+_0x4ca8d7(-0x1ac,-0x254)+_0x4ca8d7(-0x265,-0x2a3)+'e'][_0x4ca8d7(-0x1be,-0x20b)]*(-0x7dc+0x12bc+-0xa7c*0x1))['toFix'+'ed'](0xf46+0x1e67+-0x2dac)+'%'),_0x3dc6a9[_0x4ca8d7(-0x240,-0x1ab)+_0x4ca8d7(-0x156,-0x206)+'iverg'+'entRa'+'te']&&_0x8dcfe0[_0x4ca8d7(-0x129,-0x1e6)]('\x20\x20typ'+_0x59d09a(0x71,0x135)+_0x4ca8d7(-0x1eb,-0x28c)+'\x20n='+_0x325519[_0x59d09a(0xc3,0x46)+_0x4ca8d7(-0x156,-0x114)+_0x59d09a(0x31,0xe6)+_0x4ca8d7(-0x1ef,-0x162)+'te']['n']+('\x20rate'+'=')+(_0x4f7863[_0x59d09a(0x8,0x46)+_0x4ca8d7(-0x156,-0xa1)+'iverg'+_0x59d09a(0xd4,0x97)+'te']['rate']*(0x8*-0x1c6+0x1bb*0x2+-0xb1e*-0x1))[_0x59d09a(0x1a,0x9d)+'ed'](-0x1*-0x1979+0xa33*-0x1+-0xf45*0x1)+'%'),_0x5c321e['provi'+_0x59d09a(-0x2d,0x32)+'l']){let _0x228662=_0x564fb2['provi'+_0x59d09a(0x6b,0x32)+'l'][_0x59d09a(0x68,0x4a)+'erRat'+'e']!==void(-0x2*-0x3e4+-0x161a+0xe52)?_0x59d09a(0x96,0x108)+'ker='+(_0x2db307[_0x59d09a(-0xb,-0xe)+'siona'+'l']['flick'+_0x4ca8d7(-0x26c,-0x2a1)+'e']*(0x1*0x1087+0x1a4a+-0x2a6d))['toFix'+'ed'](-0x21f8+0x22d6+-0x11*0xd)+'%':'',_0x57c2d3=_0x3e78ee['provi'+'siona'+'l'][_0x4ca8d7(-0x1f5,-0x1bf)+'tRate']!==void(0x204e+-0x8*-0x4bd+-0x4636)?_0x59d09a(0x79,0x81)+_0x4ca8d7(-0x130,-0x109)+(_0x462211[_0x4ca8d7(-0x294,-0x2d4)+_0x4ca8d7(-0x254,-0x19f)+'l'][_0x4ca8d7(-0x1f5,-0x140)+_0x4ca8d7(-0x149,-0x8d)]*(-0x14*0x15+0x1fa4+-0x1d9c))[_0x59d09a(0xbb,0x9d)+'ed'](0x260f+0x3a*-0x5c+0x1136*-0x1)+'%':'';if(_0x397870[_0x59d09a(0x1b8,0x15d)](_0x4ca8d7(-0x17f,-0x1f6)+_0x59d09a(0xe6,0xbd)+_0x59d09a(0x3a,0x1c)+_0x59d09a(-0x50,0x51)+'n='+_0x44d02d[_0x59d09a(-0x9c,-0xe)+'siona'+'l'][_0x4ca8d7(-0x1ed,-0x2ae)]+('\x20swap'+_0x4ca8d7(-0x1aa,-0x1d4))+_0x27a641[_0x59d09a(-0x71,-0xe)+_0x59d09a(0x1b,0x32)+'l']['swapp'+'ed']+('\x20corr'+_0x4ca8d7(-0x277,-0x287)+_0x59d09a(-0xa1,-0x6))+(_0x1d71fc['provi'+'siona'+'l'][_0x59d09a(0x8f,0x5d)+_0x4ca8d7(-0x216,-0x290)+'e']*(-0x1222*0x2+-0x23bf*0x1+0x151*0x37))[_0x59d09a(0x13b,0x9d)+'ed'](0x471+-0x9c7*0x1+0x557)+(_0x59d09a(0xc1,0xdf)+'nSwap'+'=')+_0x5b98ba['provi'+_0x59d09a(0x5f,0x32)+'l']['meanS'+_0x4ca8d7(-0x1fc,-0x134)][_0x4ca8d7(-0x1e9,-0x27c)+'ed'](-0xdcd*0x1+-0xb*-0x89+-0x3f5*-0x2)+'ms'+_0x228662+_0x57c2d3),_0xa09585[_0x4ca8d7(-0x294,-0x333)+_0x59d09a(0x3b,0x32)+'l'][_0x4ca8d7(-0x280,-0x2c9)+_0x4ca8d7(-0x1a3,-0x1eb)]){let _0x2dd345=_0x118b1c[_0x4ca8d7(-0x28e,-0x1d3)+'es'](_0x38f7fd[_0x4ca8d7(-0x294,-0x2dd)+_0x59d09a(0xb3,0x32)+'l']['bySou'+'rce'])[_0x59d09a(0x169,0x11f)]((_0x565286,_0x545743)=>_0x545743[0x1*0x1b41+0x16fd+-0x323d]-_0x565286[-0x22dd+-0x3*0x6a+0x241c])[_0x4ca8d7(-0x212,-0x1b3)](([_0x1f8c7b,_0x5cd774])=>_0x1f8c7b+'='+_0x5cd774)[_0x59d09a(-0x59,0x2c)]('\x20');_0x4fdc8a[_0x4ca8d7(-0x129,-0x17c)]('\x20\x20\x20\x20\x20'+'\x20\x20\x20\x20\x20'+_0x4ca8d7(-0x15f,-0xb2)+_0x59d09a(0x20b,0x17a)+'urce:'+'\x20'+_0x2dd345);}}_0x501c13['saved'+_0x59d09a(-0x78,0x43)]!==void(-0x7b*-0x43+0x1baf+0xef8*-0x4)&&_0x18fdb1[_0x59d09a(0x11f,0x15d)]('\x20\x20sav'+'ed@1='+(_0x54ea52[_0x4ca8d7(-0x113,-0x6b)+'At1']*(0x11e2+-0x25c7*-0x1+-0x3745))['toFix'+'ed'](-0x171+-0x1*0x1379+0x14eb)+_0x4ca8d7(-0x284,-0x34b)+((_0x361b1c[_0x4ca8d7(-0x113,-0xf8)+'At3']??0x176+-0x5dd*0x4+-0x466*-0x5)*(0x1*-0xb5+0x746+0x3*-0x20f))['toFix'+'ed'](-0x11d*-0x13+-0x1952+0x216*0x2)+_0x4ca8d7(-0x271,-0x284)+((_0x5a492f['saved'+_0x59d09a(0xcf,0x167)]??0x6d*0x29+-0x1379*-0x2+-0x3867)*(-0x13be+0x8cc*-0x3+0x18d*0x1e))[_0x59d09a(0x93,0x9d)+'ed'](-0xf9b+0x1*0x22d+0xd6f)+'%');}else{let _0x406a24=_0x524433 instanceof Error?_0x524433['messa'+'ge']:String(_0x524433);process[_0x4ca8d7(-0x14e,-0x1ee)+'r']['write']('pi-gh'+_0x59d09a(0xb1,0xe4)+'ench\x20'+_0x59d09a(-0x71,0x3d)+'e:\x20re'+_0x59d09a(0x160,0xac)+_0x4ca8d7(-0x285,-0x1ff)+_0x59d09a(-0x2e,0x66)+_0x406a24+'\x0a');}}finally{if(_0x59d09a(0x5c,0x19)!==_0x59d09a(0x16f,0xcf))_0x204ccf=!(-0x2*0xcce+0x9*0x215+-0xa*-0xb0),_0x498867&&(_0x498867=!(-0xa7*0x29+0x157a+0x546),_0x49096d());else{let _0x528abe=_0x4fdd15 instanceof _0x5310c3?_0x178c86['messa'+'ge']:_0x18ca9a(_0x4d78fc);_0x275245[_0x59d09a(0x1f2,0x138)+'r'][_0x4ca8d7(-0x28b,-0x32d)](_0x4ca8d7(-0x281,-0x1bf)+_0x4ca8d7(-0x1a2,-0x1f7)+_0x59d09a(0xc1,0xb2)+_0x59d09a(0xac,0x3d)+_0x4ca8d7(-0x1d9,-0x152)+_0x59d09a(0x100,0xac)+_0x59d09a(-0x4e,0x1)+'r:\x20'+_0x528abe+'\x0a');}}}else{let _0x157de7=_0x420499[_0x4ca8d7(-0x179,-0x17b)+'dateR'+'ank']??0x1329+0x2431+-0x375a;_0x157de7<-0x431*-0x3+-0x18e0+0xc4e&&_0x42ed18++,_0x157de7<0x1329+0x225c+-0x3582&&_0x3258a8++,_0x157de7<-0x5*0x21c+0x1baf+-0xe*0x139&&_0x22e3bd++;}};function _0x4f48d6(_0x5763d4,_0x1fb12e){return _0xc23ed0(_0x1fb12e,_0x5763d4- -0x50c);}process['on'](_0x4f48d6(-0xfe,-0x41)+'T',()=>{function _0xd74ff3(_0x1a6454,_0x27b8f5){return _0x4f48d6(_0x27b8f5-0x3da,_0x1a6454);}function _0x344289(_0x38226d,_0x3eb681){return _0x4f48d6(_0x3eb681- -0x86,_0x38226d);}if(_0xd74ff3(0x4ed,0x446)===_0xd74ff3(0x368,0x3b9)){let _0xb1aa61=_0x578b8a[_0x344289(-0x88,-0xb7)],_0x1051d8=_0x5c7902[_0x344289(-0x14a,-0x197)](_0xb1aa61);_0x1051d8||(_0x1051d8=[],_0x8ef064[_0xd74ff3(0x369,0x367)](_0xb1aa61,_0x1051d8)),_0x1051d8['push'](_0x2dc895);}else _0x17c9e8(_0x1d17e),process[_0xd74ff3(0x406,0x36c)+'t'][_0xd74ff3(0x235,0x2c6)](_0xd74ff3(0x318,0x370)+'host-'+_0x344289(-0x204,-0x1a7)+_0x344289(-0x14c,-0x91)+'ve:\x20s'+_0x344289(0x22,-0x99)+_0x344289(0x26,-0x74)),process[_0x344289(-0x108,-0x63)](0x2*-0x4fc+0x1a35+-0x1*0xfbb);}),await _0x49096d(),_0x526a4b(_0x1d17e,{'interval':_0x1f8085},(_0x2e0866,_0x55fd59)=>{function _0x35df69(_0x7a8b9b,_0x2b2bae){return _0x4f48d6(_0x2b2bae-0x22a,_0x7a8b9b);}function _0x2c5562(_0x4cdefa,_0x19b8d4){return _0x4f48d6(_0x19b8d4-0x607,_0x4cdefa);}if(_0x35df69(0xe7,0x18a)!==_0x35df69(0x125,0x18a)){typeof _0x266502[_0x2c5562(0x604,0x60b)+'s']=='numbe'+'r'&&_0x48914e[_0x35df69(0x2a2,0x278)](_0x137eed[_0x35df69(0x1bc,0x22e)+'s']),typeof _0x571e2b['estim'+_0x35df69(0x20a,0x15c)+'imeSa'+'vedMs']==_0x2c5562(0x47a,0x532)+'r'&&(_0x44f78b[_0x2c5562(0x71e,0x655)](_0x250c9a['estim'+'atedT'+_0x2c5562(0x601,0x66d)+_0x2c5562(0x65a,0x650)]),_0x51b5f0+=_0x18dbec['estim'+_0x2c5562(0x5d7,0x539)+_0x35df69(0x2a4,0x290)+'vedMs'],_0x12ca2c['estim'+_0x2c5562(0x481,0x539)+'imeSa'+_0x2c5562(0x5d4,0x650)]<0x10a2+0x1b42+-0x2be4&&_0x1c85da++);let _0x4630dc=_0x45098[_0x2c5562(0x63a,0x589)+'tance']===_0x35df69(0x174,0x1ac)+'ted'||_0x26d673[_0x35df69(0x1ba,0x1ac)+_0x35df69(0x293,0x293)]===_0x35df69(0x147,0x1ac)+'ted-p'+_0x2c5562(0x5f4,0x610)+'l';if(_0x4630dc&&(_0x2ea5e2++,_0x46c1b7[_0x2c5562(0x5fb,0x589)+'tRegr'+'et']===!(0x1*-0x100d+0x8b1+0x75c)&&_0x1a873a++),_0x556326['accep'+_0x35df69(0x2b0,0x293)]===_0x2c5562(0x5f0,0x5d5)+_0x35df69(0x213,0x1d2)&&(_0x2f2064++,_0x879488[_0x2c5562(0x4b0,0x56b)+'Hover'+_0x2c5562(0x5e2,0x5d2)+'ss']===!(-0x2*0x83d+0x259a+-0xa9*0x20)&&_0xa1efa++),_0x47ada6[_0x2c5562(0x4d3,0x589)+_0x35df69(0x2d2,0x293)]===_0x35df69(0x227,0x191)&&(_0x11a75d++,_0xae01bb[_0x35df69(0x163,0x161)+_0x35df69(0x2c9,0x24b)+_0x2c5562(0x64c,0x5de)+_0x2c5562(0x57b,0x60d)]===!(-0x2e*-0x34+-0xf9*0x25+0x1aa5)&&_0x4d0ed3++),_0x5ddb53[_0x2c5562(0x676,0x5d6)]==='provi'+_0x2c5562(0x4b5,0x52a)+'l'&&_0x5ed2a6['shown']){_0x50a577++,_0x4630dc&&_0x34afb8++;let _0x1c9808=_0x263c4b[_0x35df69(0x216,0x19e)+'r']??'';if(_0x1c9808[_0x35df69(0x2e7,0x248)+_0x35df69(0x6d,0x138)](_0x35df69(0xb0,0x10d)+_0x2c5562(0x557,0x52a)+'l-')){let _0x571bc0=_0x1c9808[_0x2c5562(0x60c,0x663)](-0x2168+0xb5f+-0x1*-0x1615);_0x2daef7[_0x571bc0]=(_0x3eb70d[_0x571bc0]??-0x1*0xbe3+-0x1632+0x2215)+(-0xfd+0x4f1+-0x3f3);}}if(typeof _0x5e8574[_0x2c5562(0x4b1,0x4ea)+'siona'+_0x35df69(0x233,0x20d)+'Ms']=='numbe'+'r'&&(_0x54bf96++,_0x4a2afc+=_0xf1a6bf[_0x35df69(0x108,0x10d)+'siona'+_0x2c5562(0x607,0x5ea)+'Ms'],_0x1f2e9f[_0x2c5562(0x4f4,0x4ea)+_0x2c5562(0x4ad,0x52a)+_0x2c5562(0x477,0x540)+'orrec'+'t']===!(-0x5bc+-0x394+0x2*0x4a8)&&_0x5f3594++,_0x5a56c8[_0x35df69(0x137,0x10d)+'siona'+_0x2c5562(0x5a6,0x5ea)+'Flick'+'er']===!(0x6f8+-0x1*0x1ca3+-0x3*-0x739)&&_0x345f36++),_0xab9368['shown']&&(_0x38bd32++,_0x4630dc)){let _0x3a306c=_0xb292f5[_0x35df69(0x272,0x228)+_0x35df69(0x1bd,0x196)+_0x35df69(0x2ee,0x28b)]??0x1755+-0x41f*-0x5+-0x1*0x2bf0;_0x3a306c<0x7*-0x47f+0x1*-0x2c1+0x223b&&_0x3d2b15++,_0x3a306c<-0x69+0x3b8+-0x34c&&_0x57954a++,_0x3a306c<0x36*0x7+0xc07+-0xd7c&&_0x309946++;}}else(_0x2e0866['mtime'+'Ms']!==_0x55fd59[_0x2c5562(0x535,0x4ed)+'Ms']||_0x2e0866[_0x35df69(0x1de,0x162)]!==_0x55fd59[_0x2c5562(0x48c,0x53f)])&&_0x49096d();});}function Z(){function _0x2a7233(_0x16dac3,_0x29aca2){return _0xc23ed0(_0x16dac3,_0x29aca2- -0x3e1);}function _0x17c21e(_0x4ab112,_0x1b3dc6){return _0xc23ed0(_0x1b3dc6,_0x4ab112- -0x5ec);}return[_0x2a7233(-0x2c,0x21)+_0x17c21e(-0x10b,-0x85)+'ench\x20'+'[path'+_0x2a7233(0x15f,0xee)+_0x17c21e(-0xe3,-0x4b)+_0x17c21e(-0x1bc,-0x174)+'ive]\x20'+_0x2a7233(0x146,0x93)+_0x17c21e(-0x72,0x5)+_0x17c21e(-0x79,-0x4f),'',_0x17c21e(-0x7d,-0x44)+'h\x20\x20\x20\x20'+_0x2a7233(0x138,0x143)+'\x20\x20JSO'+_0x2a7233(0x21,0x69)+_0x2a7233(0x1e,0xb6)+'\x20file'+'\x20(def'+_0x2a7233(0x8e,0x5a)+_0x2a7233(0x5c,0xbf)+_0x17c21e(-0x1b6,-0x114)+_0x17c21e(-0x78,-0xd0)+_0x17c21e(-0x73,-0xc6)+'ete/m'+_0x17c21e(-0xb8,-0xe4)+'s.jso'+_0x2a7233(0x20a,0x17d),_0x2a7233(0x14a,0xe5)+'son\x20\x20'+_0x17c21e(-0xc8,-0x190)+_0x2a7233(0x15f,0xcb)+'t\x20JSO'+_0x17c21e(-0x181,-0xde)+_0x17c21e(-0x16a,-0x11a)+'of\x20fo'+'rmatt'+_0x17c21e(-0x18d,-0x1ee)+'xt',_0x2a7233(0x56,0x43)+_0x17c21e(-0x13c,-0xd3)+_0x2a7233(0x117,0x143)+_0x2a7233(0x61,0x88)+'ch\x20th'+_0x17c21e(-0xb0,-0xbe)+'e\x20and'+_0x17c21e(-0x10a,-0x10d)+_0x2a7233(-0x27,0x71)+_0x2a7233(0x193,0x10d)+_0x17c21e(-0xa3,-0xb8)+_0x2a7233(0xd2,0x54)+'\x20(Ctr'+_0x17c21e(-0x1f0,-0x191)+_0x17c21e(-0x195,-0x151)+'t)',_0x17c21e(-0x1b4,-0x12f)+_0x17c21e(-0x1e7,-0x204)+_0x17c21e(-0x200,-0x2a2)+_0x17c21e(-0x94,-0x11b)+_0x2a7233(0x114,0xbb)+_0x2a7233(-0x29,0x27)+'\x20for\x20'+'--liv'+_0x2a7233(0xdb,0x170)+_0x2a7233(-0x9,0x5c)+':\x20200'+'0,\x20mi'+'n:\x2025'+'0)','\x20\x20-h\x20'+_0x2a7233(0x1c2,0x143)+_0x17c21e(-0xc8,-0x10)+_0x2a7233(0x16b,0xc5)+_0x17c21e(-0x1d7,-0x18d)+'s\x20hel'+'p','','Exit\x20'+'code:'+'\x200\x20if'+_0x17c21e(-0x118,-0x1cf)+_0x2a7233(0x131,0x166)+'hresh'+_0x17c21e(-0x1e6,-0x182)+_0x2a7233(0x1ec,0x15c)+_0x17c21e(-0x1cc,-0x283)+_0x17c21e(-0x9c,0xe)+_0x2a7233(-0x87,0x20)+'\x202\x20on'+'\x20I/O\x20'+_0x17c21e(-0xbe,-0xdd)+'.','--liv'+_0x2a7233(0x1d6,0x110)+'s\x20unt'+_0x2a7233(0x182,0xf2)+_0x2a7233(0x6f,0x46)+_0x2a7233(0x4,0xf)+'(no\x20e'+_0x17c21e(-0x1a0,-0x12a)+_0x2a7233(0xe1,0x190)+_0x17c21e(-0xf7,-0x97)+').',''][_0x17c21e(-0x1c3,-0x1a7)]('\x0a');}V();
package/dist/bench.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ /**
2
+ * SPDX-License-Identifier: SSPL-1.0
3
+ * SPDX-FileCopyrightText: 2025 Alessandro Pungitore <alessandro@pungitore.ch>
4
+ */
1
5
  import { type MetricsRecord } from "./metrics.js";
2
6
  /**
3
7
  * PRD §Success Metrics initial candidate thresholds. These are red/green
@@ -32,9 +36,10 @@ export interface ProviderStats {
32
36
  p95: number;
33
37
  p99: number;
34
38
  };
35
- /** produced / count */
39
+ /** produced / judged, where judged = produced + empty + rejected + error
40
+ * (excludes `aborted` — the user out-typed the race, no model verdict). */
36
41
  validRate: number;
37
- /** (empty + rejected + error) / count */
42
+ /** (empty + rejected + error) / judged (same aborted-excluded denominator). */
38
43
  badRate: number;
39
44
  }
40
45
  export type AnyMode = "deterministic" | "llm" | "cache" | "trie" | "speculative-warm" | "provisional";
@@ -218,4 +223,3 @@ export declare function renderLiveFrame(report: BenchmarkReport, opts: {
218
223
  frameNumber: number;
219
224
  watchedPath: string;
220
225
  }): string;
221
- //# sourceMappingURL=bench.d.ts.map